Использование https POST для транзакции, но я не понимаю, как перейти от MD5 к transHashSHA2 в моем коде - PullRequest
0 голосов
/ 11 января 2019

Сегодня я получил электронное письмо со словами:

Authorize.Net постепенно вытесняет элемент transHash на основе MD5 в пользу transHashSHA2 на основе SHA-256. Настройка в Merchant Interface, которая управляет опцией MD5 Hash, будет удалена к концу января 2019 года, и элемент transHash перестанет возвращать значения в более позднюю дату, которая будет определена.

Мы определили, что у вас настроена эта функция, и вы можете полагаться на transHash на основе MD5 в ответах на транзакции для проверки отправителя Authorize.Net.

Я использую метод http POST для отправки своей транзакции и проверяю ответ MD5, используя немного кода C, который был написан давно. Что мне делать с моим POST для перехода и как обрабатывать вещи с transHasSHA2? В настоящее время в C я связываю libssl и использую функции MD5_.

Черт, я так давно все сделал, и крайний срок в январе 2019 года ужасно близок!

1 Ответ

0 голосов
/ 12 января 2019

Письмо, отправленное Authorze.Net, содержало ссылку на страницу, объясняющую , как перейти к новому хешу :

Руководство по обновлению хеша транзакций

Authorize.Net постепенно вытесняет элемент transHash на основе MD5 в пользу transHashSHA2 на основе SHA-512. Настройки в Merchant Interface, который управляет опцией MD5 Hash, будет удалено к концу января 2019 года, и элемент transHash прекратить возвращать значения на более поздний срок, который будет определен.

Когда вы получаете ответ на транзакцию от Authorize.Net, он включает в себя элемент transHashSHA2 . transHashSHA2 содержит хеш HMAC-SHA512, созданный Authorize.Net для транзакции. Чтобы использовать его, создайте хэш HMAC-SHA512, используя свой ключ подписи, преобразован в байтовый формат, как ключ HMAC, и сообщение построено из вашего идентификатора входа API, идентификатора транзакции и транзакции количество. Сравните ваш результат хеширования с transHashSHA2 . Если два значения совпадают, ответ на транзакцию поступил от Authorize.Net.

Примечание: значение transHashSHA2 будет нулевым, если вы этого не сделаете сначала сгенерируйте ключ подписи .

Использование ключа подписи для проверки значения transHashSHA2 :

Шаг 1. Сгенерируйте ключ подписи и сохраните его в безопасном месте на вашем сервере.

Шаг 2. Преобразование ключа подписи в байтовый массив.

Шаг 3. Создайте строку сообщения, которая начинается с каретки ("^"), за которой следуют три следующих поля, разделенных каретками, и завершается другой кареткой:

• Идентификатор входа в API, который вы отправляете в createTransactionRequest в name element.

• Идентификатор транзакции, который мы отправляем в createTransactionResponse в элементе transId .

• Сумма транзакции, которую мы отправляем createTransactionResponse в элементе amount .

Например, если ваш идентификатор входа API равен «ANet123», значение transId равно "20987654321", а значение сумма равно "9,99", строка сообщения будет выглядеть следующим образом:

^ ANet123 ^ 20987654321 ^ 9,99 ^

Шаг 4. Используйте HMAC-SHA512 для хэширования формы массива байтов ключа подписи из шага 2 со строкой сообщения из шага 3.

Шаг 5. Сравните значение transHashSHA2 с выводом из хэша HMAC-SHA512, упомянутым в шаге 4.

...