API риска Cybersource не удастся с ошибкой «аутентификация не удалась»Javascript

Форум по Javascript
Ответить
Anonymous
 API риска Cybersource не удастся с ошибкой «аутентификация не удалась»

Сообщение Anonymous »

Я использую вызов JavaScript через бессонницу (например, почтальон), чтобы сделать сообщение вызов https://apitest.cybersource.com/risk/v1/decisions. Ref Doc: Cybersource < /p>

Код: Выделить всё

const crypto = require('crypto-js');
const merchantId = insomnia.environment.get('MERCHANT_ID');
const merchantKeyId = insomnia.environment.get('VISA_KEY');
const merchantSecretKey = insomnia.environment.get('VISA_SECRET');
const requestHost = 'apitest.cybersource.com';
const requestMethod = '/risk/v1/decisions';

// Request body
const requestBody = insomnia.request.body;

// Digest
const digest = `SHA-256=${crypto.enc.Base64.stringify(crypto.SHA256(crypto.enc.Utf8.parse(requestBody)))}`;
insomnia.environment.set("bodyDigest",digest);

// Date
// const date = new Date(Date.now()).toUTCString();
var date = 'Fri, 12 Sep 2025 17:29:42 GMT';
insomnia.environment.set("date", date);

// Signature
const string = `host: ${requestHost}\ndate: ${date}\nrequest-target: ${requestMethod}\ndigest: ${digest}\nv-c-merchant-id: ${merchantId}`;
const signature = `keyid="${merchantKeyId}", algorithm="HmacSHA256", headers="host date (request-target) digest v-c-merchant-id", signature="${crypto.enc.Base64.stringify(crypto.HmacSHA256(crypto.enc.Utf8.parse(string), crypto.enc.Base64.parse(merchantSecretKey)))}"`;
insomnia.environment.set("signature", signature);
< /code>
У меня есть следующие заголовки, а также документация Cybersource: < /p>
Content-Type: application/json
digest: SHA-256={{ _.bodyDigest }}
signature: {{ _.signature }}
v-c-date: {{ _.date }}
v-c-merchant-id: {{ _.MERCHANT_ID }}
Accept: application/json
< /code>
Но по какой -то причине я все еще получаю следующий ответ от Cybersource: < /p>
{
"response": {
"rmsg": "Authentication Failed"
}
}
Несколько вещей, которые я пытался заставить его работать для Cybersource:

Я вижу, что в документации говорится, что поле заголовка как дата , но когда я перехватил звонок, сделанный из живого терминала, я вижу, что поле заголовка-V-C-дат . Это имеет значение? Я попробовал оба. /> Я использовал песочницу, чтобы проверить мои учетные данные, и они работают в живом терминале песочницы. Я упускаю некоторые данные при создании подписи?

Подробнее здесь: https://stackoverflow.com/questions/797 ... ion-failed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»