Ошибка отправки данных токенизированной карты в API платежей Intuit/Quickbooks.Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Ошибка отправки данных токенизированной карты в API платежей Intuit/Quickbooks.

Сообщение Anonymous »

Я интегрирую API платежей Intuit/Quickbooks в существующий веб-сайт электронной коммерции. Из-за требований PCI мне необходимо токенизировать данные карты с помощью JavaScript до того, как они достигнут сервера, а затем отправить платеж с помощью этого токена вместо реальных данных карты.
Почему я получаю сообщение Ошибка «токен недействителен» в API платежей?
Первая попытка
Я следовал инструкциям на этой странице, в которых описано, как использовать JavaScript. файл, предоставленный инуитами для токенизации данных карты.

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


intuit.ipp.payments.tokenize(
qbAppToken, {
card: {
number: $("#tokenize_cc-number").val(),
expMonth: $("#tokenize_cc-expmonth").val(),
expYear: $("#tokenize_cc-expyear").val(),
cvc: $("#tokenize_cc-cvc").val(),
address: {
streetAddress: $("#tokenize_cc-address-street").val(),
city: $("#tokenize_cc-address-city").val(),
region: $("#tokenize_cc-address-region").val(),
country: $("#tokenize_cc-address-country").val(),
postalCode: $("#tokenize_cc-address-postalcode").val()
}
}
},
function(token, response) {
console.log(response);
if (token != null) {
console.log(token);
$cardToken.val(token);
$paymentForm[0].submit();
} else {
console.log("Error during tokenization " + response.code + "; " + response.message + "; " + response.detail + "; " + response.moreinfo);
}
});
Я получаю обратно то, что выглядит как жетон карты:

f9e7a378-c3f2-4343-b0a8-ee376d4ed472< /p>

Я вставляю этот токен в свою форму и отправляю форму на свой сервер, который затем отправляет платеж в API платежей через CURL, используя токен карты.< /p>
Я отправляю в конечную точку:

https://sandbox.api.intuit.com/quickbooks/ v4/платежи/списания

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

Array
(
[amount] => 6992.83
[currency] => USD
[capture] => true
[token] => f9e7a378-c3f2-4343-b0a8-ee376d4ed472
[context] => Array
(
[mobile] => false
[isEcommerce] => true
)

)
Однако в ответе, который я получаю от API платежей, говорится, что «токен недействителен»:

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

{
"errors": [{
"code": "PMT-4000",
"type": "invalid_request",
"message": "token is invalid.",
"detail": "token",
"infoLink": "https://developer.intuit.com/v2/docs?redirectID=PayErrors"
}]
}
Вот полный ответ:

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

HTTP/1.1 400 Bad Request
Server: nginx
Date: Wed, 05 Jun 2019 18:13:20 GMT
Content-Type: application/json;charset=utf-8
Content-Length: 175
Connection: keep-alive
Keep-Alive: timeout=5
Strict-Transport-Security: max-age=15552000
intuit_tid: [redacted]
Set-Cookie: ADRUM_BT=R:0|clientRequestGUID:9ae895d4-44ee-4175-bb47-4e37e95162a819|btId:755|backendSnapshotType:f; Expires=Wed,  5-Jun-2019 18:13:49 GMT; Path=/

{"errors":[{"code":"PMT-4000","type":"invalid_request","message":"token is invalid.","detail":"token","infoLink":"https://developer.intuit.com/v2/docs?redirectID=PayErrors"}]}
Я заметил, что в инструкциях по токенизации карт JavaScript написано: «Этот раздел применим только к приложениям OAuth 1.0». Это может быть проблемой. Но я не вижу упоминания о том, как токенизировать данные карты для приложений OAuth 2.0.
Интерпретация ошибки
Я предполагаю, что «токен недействителен». ошибка относится к токену моей карты, а не к токену аутентификации моего приложения. Я основываю это предположение на двух вещах:
  • Когда я меняю токен аутентификации приложения, я получаю другую ошибку:

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

    {
    "code": "AuthenticationFailed",
    "type": "INPUT",
    "message": null,
    "detail": null,
    "moreInfo": null
    }
    
  • Сотрудники Intuit по связям с разработчиками заявили, что конечная точка токена в файле JavaScript Intuit является «неправильной», что указывает на проблему с токеном карты, который я Получаю.
Связь с разработчиками
Связь с разработчиками компании Intuit сообщила:

Причина, по которой вы получаете эту ошибку, заключается в том, что файл javascript неправильно создал токен в правильной среде.
API QuickBooks Payments имеет две разные среды. Одна называется «песочницей», другая — «производственной средой». Для создания токена для изолированной среды вам необходимо будет использовать этот URL-адрес: https://sandbox.api.intuit.com/quickboo ... ays/tokens
Однако в этом javascript, URL-адрес токена: https://transaction-api-e2e.pays.intuit.net/v2/tokens, что неверно. Мы использовали внутреннюю среду тестирования. Токен, созданный в e2e, не будет работать в песочнице. Вот почему вы получаете сообщение о том, что токен недействителен.

Еще одна попытка
После проверки API Explorer и tokens, я попытался создать токен карты без библиотеки JavaScript Intuit.
При этом используется та же конечная точка, что и в API Explorer, на который ссылаются отношения с разработчиками, хотя sandbox.api.intuit.com /v4/pays/tokens не существует, поэтому я предполагаю, что это опечатка.

POST v4/pays/tokens

FOR IE8/IE9 – POST/quickbooks/v4/pays/tokens/ie

Тип контента: application/json

Производственный базовый URL-адрес: https://api.intuit.com

Базовый URL-адрес песочницы: https://sandbox.api.intuit.com

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

jQuery.ajax({
url: "https://sandbox.api.intuit.com/quickbooks/v4/payments/tokens",
type: "POST",
contentType: 'application/json',
dataType: "json",
data: JSON.stringify(cardData)
}).done(function(msg) {

...

});
Результаты те же.

Я получаю то, что выглядит как токен карты, но когда я отправляю платеж через CURL, я все равно получаю:

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

{
"errors": [{
"code": "PMT-4000",
"type": "invalid_request",
"message": "token is invalid.",
"detail": "token",
"infoLink": "https://developer.intuit.com/v2/docs?redirectID=PayErrors"
}]
}
Что происходит не так?
У меня есть открытая заявка в Intuit в дополнение к сообщению на форумах сообщества разработчиков. Я обновлю этот пост, если получу от них дополнительную информацию.

Подробнее здесь: https://stackoverflow.com/questions/564 ... yments-api
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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