tinkoff-mobile-tech / tinkoff-asdk-ios-old

Tinkoff Acquiring SDK for iOS
Other
36 stars 17 forks source link

ApplePay - web версия. Не работает. #22

Closed mamashin closed 4 years ago

mamashin commented 5 years ago

Приветствую ! Немного оффтопик, т.к. не мобильный SDK, но больше не знаю у кого спросить, менеджеры ваши "зависли" и ничего толком пока сказать не могут. Заканчиваем процесс интеграции кнопки Apple Pay у себя на сайте, прошли все этапы подключения и на самом последнем получаем ошибку, а именно в тот момент когда от Apple мы получаем подтверждение о платеже, включая event.payment.token.paymentData, согласно вашей документации, мы создаем платеж на стороне API Тинькофф вызывая метод https://securepay.tinkoff.ru/v2/Init который у нас проходит без ошибок, мы вызываем метод https://securepay.tinkoff.ru/v2/FinishAuthorize на который шлем следующие данные, включая ответ от Apple закодированный в base64:

{
"PaymentId":"54806233",
"DATA":{
"ApplePayWeb":true
},
"TerminalKey":"1496667497923",
"EncryptedPaymentData":"eyJ2ZXJz..........."
}

И на этот запрос мы получаем ошибку:

{
"Success":false,
"ErrorCode":"4",
"Message":"Запрашиваемое состояние транзакции является неверным.",
"Details":"Изменение статуса недопустимо."
}

Подскажите, что с этим делать ? Проблемы у вас или у нас ? Спасибо.

dimasibirak commented 5 years ago

Такая же проблема, а ответа нигде нет

mamashin commented 5 years ago

Такая же проблема, а ответа нигде нет

В нашем случае проблема решилась созданием нового терминала с типом - мобильное приложение. Хотя позже разработчики писали, что пофиксили это и в обычном не в мобильном варианте..

maxkvoronin commented 4 years ago

Та же проблема

romap0 commented 4 years ago

У меня немного другая проблема. Если передавать в DATA: {ApplePayWeb: true}, то приходит Ошибка шифрования карточных данных. Если не передавать этот параметр, то Изменение статуса недопустимо.

romap0 commented 4 years ago

@mamashin

В нашем случае проблема решилась созданием нового терминала с типом - мобильное приложение. Хотя позже разработчики писали, что пофиксили это и в обычном не в мобильном варианте..

А как вы создали новый терминал? Через техподдержку?

slavabuv commented 4 years ago

для web версии попробуйте добавить параметры: "Route" = "ACQ" и "Source" = "ApplePay" EncryptedPaymentData = "sd...."; PaymentId = 1....2; Route = ACQ; SendEmail = false; Source = ApplePay; TerminalKey = 1...2; Token = 2......8;

romap0 commented 4 years ago

Оказалось, что проблема в том, что я не передавал в запросе поле Token. Плохо, что в таком случае приходит 9999 Ошибка шифрования карточных данных, а не 204 Неверный токен. Проверьте пару TerminalKey/SecretKey, так сразу было бы понятно, в чем проблема.

Также странно, что в документации к интеграции ApplePay Web (v1.3.1) предполагается, что запрос FinishAuthorize отправляет браузер, и соответственно токен там рассчитаться не может.

В общем, вот рабочие примеры запросов для ApplePay Web:

POST https://securepay.tinkoff.ru/v2/Init
{
  TerminalKey: '149...524',
  Amount: 500,
  OrderId: '7db96ffd-2451-4b80-a004-cffc207678e3',
  DATA: { ApplePayWeb: true },
  Token: 'd3a1...4954'
}
{
  Success: true,
  ErrorCode: '0',
  TerminalKey: '149...524',
  Status: 'NEW',
  PaymentId: '223033129',
  OrderId: '7db96ffd-2451-4b80-a004-cffc207678e3',
  Amount: 500,
  PaymentURL: 'https://securepay.tinkoff.ru/new/ikI...iQ'
}

POST https://securepay.tinkoff.ru/v2/FinishAuthorize
{
  EncryptedPaymentData: 'eyJ...In19',
  TerminalKey: '149...524',
  PaymentId: '223033129',
  Route: 'ACQ',
  Source: 'ApplePay',
  DATA: { ApplePayWeb: true },
  Token: 'c34c...6fd9'
}
{
  Success: true,
  BackUrl: 'https://securepay.tinkoff.ru/new/ikI...iQ'
}