yoomoney / yookassa-payments-swift

This library allows implementing payment acceptance into mobile apps on iOS and works as an extension to the YooMoney API
https://yookassa.ru/developers
MIT License
41 stars 41 forks source link

SDK отдает токен для невалидной платежной карты #23

Closed aminbenarieb closed 6 years ago

aminbenarieb commented 6 years ago

Фейковая карта, подобрал случайно при тесте: 5280 3800 5555 5888 MM/YY: 08/22, CVC: 123

Ее вводим во ViewController из TokenizationAssembly и получаем токен в реализованном делегате TokenizationModuleOutput:

func tokenizationModule(_ module: TokenizationModuleInput,
                            didTokenize token: Tokens,
                            paymentMethodType: PaymentMethodType)

В API когда отдаем этот токен он конечно валится, статус платежа сразу приходит как canceled:

object(YandexCheckout\Request\Payments\CreatePaymentResponse)#691 (17) {
 [“_id”:“YandexCheckout\Model\Payment”:private]=>
 string(36) “23592e46-000f-5000-a000-1be239929c27”
 [“_status”:“YandexCheckout\Model\Payment”:private]=>
 string(8) “canceled”
 [“_recipient”:“YandexCheckout\Model\Payment”:private]=>
 object(YandexCheckout\Model\Recipient)#689 (3) {
   [“_accountId”:“YandexCheckout\Model\Recipient”:private]=>
   string(5) “18344”
   [“_gatewayId”:“YandexCheckout\Model\Recipient”:private]=>
   string(6) “118743"
   [“unknownProperties”:“YandexCheckout\Common\AbstractObject”:private]=>
   array(0) {
   }
 }
...

Это запланированное поведение? В TokenizationModuleOutput непредусмотрено даже какого-то каллбека на случай ошибки или невалидной карты. Как нам такой токен проверять на валидность, каждый раз слать на бек?

aminbenarieb commented 6 years ago

Тут подсказали, что это возможно это защита от перебора, закрываю тогда :)