Не удалось сгенерировать правильный хэш HMAC 256 для заголовков Cybersource Signature.
Я работаю над этим несколько дней и могу легко заставить его работать в .Net, используя предоставленный образец кода для создания правильной подписи HMAC. Однако я не могу заставить CryptoJS работать, я полагаю, что это связано с тем, что CryptoJS интерпретирует «\ n» как LRCF внутри и, таким образом, отключает шифрование. Имейте в виду, что я ограничен ECMA5 и представил CryptoJS как минимизированную функцию.
var data = "host: api.cybersource.com\ndate: Mon, 10 Jun 2019 20:41:05 GMT\n(request-target): get /reporting/v3/report-downloads?organizationId = {OrgId}&reportDate=2019-06-06&reportName=PaymentBatchDetailReport\nv-c-merchant-id: {MerchId}";
var hash = CryptoJS.HmacSHA256(data, "{SecretKey}");
var base64 = CryptoJS.enc.Base64.stringify(hash);
document.write(base64);
Любая помощь будет принята с благодарностью!
Нет, это не то место, где он будет использоваться, у нас есть интеграционное устройство, которое позволяет вам создавать собственные функции Javascript для пользовательской логики. Он не покидает прибор. Хотя спасибо за замечание.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Убедитесь, что ваш секретный ключ декодирован с помощью Base64, прежде чем передавать его в CryptoJS.HmacSHA256.
Например
var words = CryptoJS.enc.Base64.parse({SecretKey});
var hash = CryptoJS.HmacSHA256(data, words);
Большое спасибо! Это то, чего мне не хватало, отличная работа.
Эй, Крис, если это JavaScript, предназначенный для работы в браузере, то выкладывать секретный ключ на всеобщее обозрение — очень плохая идея. Это вместе с нашим идентификатором продавца позволит любому провести любую транзакцию, которую он хочет, включая зачисление кредитных карт (отправку денег себе)!