Я пытаюсь создать подпись HMA C. Это для проверки с помощью кредитной карты. Ниже приведен мой код для генерации подписи HMA C:
public string APISecurityKey(Identity postParameters)
{
String secretAccessKey = "secretkey";
string data = "message";
byte[] secretKey = Encoding.UTF8.GetBytes(secretAccessKey);
HMACSHA256 hmac = new HMACSHA256(secretKey);
hmac.Initialize();
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] rawHmac = hmac.ComputeHash(bytes);
return Convert.ToBase64String(rawHmac);
}
Они просят меня заменить поле сообщения запросом JSON (при поставке JSON должны быть заменены все последовательности новой строки возврата каретки с пробелом). Мой объект выглядит так:
public class Identity
{
public List<Header> header { get; set; }
public string firstName { get; set; }
public string LastName { get; set; }
public string middleName { get; set; }
public string address { get; set; }
public string mothersName { get; set; }
public string DriversLic { get; set; }
public DateTime insertTime { get; set; }
public string Status { get; set; }
public string city { get; set; }
public string state { get; set; }
public string zip { get; set; }
public DateTime UpdatedOn { get; set; }
}
}
public class Header
{
public string tenantId { get; set; }
public string requestType { get; set; }
public string clientReferenceId { get; set; }
public string expRequestId { get; set; }
public string txnId { get; set; }
public string messageTime { get; set; }
public string options { get; set; }
}
Пример, данный мне для сообщения, выглядит следующим образом:
{"tenantId": "TENANT1","request Type": "Simulator","clientRefere
nceId": "Hunter + ProveID","expRequestId": "333","messageTim
e": "2016-08-04T22:13:07Z","options": {"workflow": "wf1","model
Type":"mt1","responseType":1,"Responses": {…}}}
Я не уверен, как включить tenantId, tenantId, expRequestId, параметры как часть моего сообщения JSON. Я очень новичок в JSON. У меня есть этот частичный код:
public static async Task createJSON( Identity postParameters)
{
var tmpRequest = new HttpRequestMessage();
tmpRequest.Content = new StringContent(JsonConvert.SerializeObject(postParameters));
tmpRequest.Content.Headers.Add("tenantId", "V123456");
tmpRequest.Content.Headers.Add("requestType", "PreciseIdOnly");
}
postParameters - это мой объект Identity со значениями. Как я могу создать этот JSON, который включает tenantId, tenantId, expRequestId и объект, чтобы я мог поместить это значение JSON в сообщение метода APISecurityKey. Ниже приведен тестовый JSON файл, который мне нужно создать:
{
"header": {
"tenantId": "V123456",
"requestType": "Precise",
"clientReferenceId": "11111111",
"RequestId": "",
"txnId": "",
"messageTime": "2020-05-28T00:00:02Z",
"options": {}
},
"payload": {
"control": [
{
"option": "SUBSCRIBER_PREAMBLE",
"value": "wer"
},
{
"option": "SUBSCRIBER_OPERATOR_INITIAL",
"value": "WS"
},
{
"option": "SUBSCRIBER_SUB_CODE",
"value": "1111111"
},
{
"option": "PID_USERNAME",
"value": "demo"
},
{
"option": "PID_PASSWORD",
"value": "password"
},
{
"option": "PRODUCT_OPTION",
"value": "11"
}
],
"contacts": [{
"id": "APPLICANT_CONTACT_ID_1",
"person": {
"typeOfPerson": "",
"personIdentifier": "",
"personDetails": {
"dateOfBirth": "1990-12-11",
"yearOfBirth": "",
"age": "",
"gender": "",
"noOfDependents": "",
"occupancyStatus": "",
"mothersMaidenName": "",
"spouseName": ""
},
"names": [{
"id": "",
"firstName": "Test1",
"middleNames": "D",
"surName": "Test2",
"nameSuffix": ""
}]
},
"addresses": [{
"id": "Main_Contact_Address_0",
"addressType": "CURRENT",
"poBoxNumber": "",
"street": "2312 Test Drve",
"street2": "",
"postTown": "test",
"postal": "49548",
"stateProvinceCode": "CA"
}],
"identityDocuments": [{
"documentNumber": "123456789",
"hashedDocumentNumber": "",
"documentType": "SSN"
}]
}]
}
}
Я хочу сгенерировать тот же JSOn, что и в примере выше в C#, используя объекты.
любая помощь будет принята с благодарностью.