Генерация подписи HMA C - PullRequest
1 голос
/ 30 мая 2020

Я пытаюсь создать подпись 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#, используя объекты.

любая помощь будет принята с благодарностью.

1 Ответ

1 голос
/ 03 июня 2020

Если вы используете Visual Studio, вы можете создать JSON, перейдя в меню «Правка» и вставив JSON как класс. Это создаст для вас все классы, а затем вы сможете присвоить значения классам, создав их экземпляры

...