MadBrains / Tinkoff-Acquiring-SDK-Flutter

Flutter Tinkoff Acquiring SDK is a simple way to integrate payments into your mobile application.
https://pub.dev/packages/tinkoff_acquiring
MIT License
48 stars 15 forks source link

Какова последовательность вызова методов для привязки карты с использованием 3ds? #30

Open vazh2100miura opened 2 years ago

vazh2100miura commented 2 years ago
  1. Вызывается метод addCard - возвращается AddCardResponse.
  2. Вызывается метод attachCard - возвращается AttachCardResponse.
  3. Далее необходимо открыть ваше webview. Но есть несостыковки. Виджет WebView3DS, принимает в качестве обязательного параметра is3DsVersion2. Мы можем его предоставить проверив версию 3DS с помощью метода check3DSVersion. Но этот метод принимает в качестве обязательного параметра paymentId, но его негде взять. AddCardResponse и AttachCardResponse не содержат такого поля. Кроме того, Виджет Webview3DS принимает в качестве необязательных параметров serverTransId, acsTransId, но в AddCardResponse и AttachCardResponse таких полей нет. Кроме того, в комментарии к serverTransId написано, что он является обязательным для 3ds версии 2.

    Отсюда возникает вопрос. Как привязывать карты с типом привязки threeDS и threeDSHold?

mit-73 commented 2 years ago

Здравствуйте, после успешного AttachCard ваша карта добавляется в Тинькофф, список карт можно запросить через метод GetCardList. Дальше с помощью PaymentSource токен вашей карты используется в Check3DSVersion и FinishAuthorize. В примере есть правильная последовательность проверки карты.

vazh2100miura commented 2 years ago

Здравствуйте, после успешного AttachCard ваша карта добавляется в Тинькофф.

Немного неправильно поняли вопрос. Есть 4 типа проверки карты при привязке. /// Тип проверки карты enum CheckType { no, hold, threeDS, threeDSHold, }

Я имею в виду, что при послених двух, при процессе привязки должна происходить проверка 3ds. Как я выяснил метод AttachCard возвращает paymentId, но из ответа не переводится во внутренyюю модель, к которой мы обращаемся после ответа. Если бы она переводилась, то после этого можно было бы по paymentId сделать проверку версии 3ds, отправить пользователя в вебвью. Нет в ответе paymentId, просто добавьте в модель ответа.

mit-73 commented 1 year ago

Я проверил несколько раз и не заметил чтобы AttachCard возвращал paymentId:

{"Success":true,"ErrorCode":"0","TerminalKey":"TestSDK","RequestKey":"64de1723-6c7a-423b-b3f2-6ee48d4bda98","CustomerKey":"madbrains-user-key","CardId":"425608051"}

По документации также ничего нет: https://acdn.tinkoff.ru/static/documents/merchant_api_protocoI_eacq_pci_dss.pdf

Вы можете использовать paymentId из InitResponse для проверки 3ds в вебвью. Посмотрите пожалуйста пример кода внимательно.