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 17 forks source link

Оплата привязанной картой #18

Closed simhali closed 3 years ago

simhali commented 3 years ago

Здравствуйте. Можете подсказать, как осуществлять платеж с привязанной карты?

mit-73 commented 3 years ago

Здравствуйте @simhali. В таком порядке нужно выполнять привязку карты:

  1. Выполняется метод AddCustomer (Метод регистрирует покупателя и его данные в системе продавца)
  2. Выполняется Метод AddCard для получения RequestKey
  3. Выполняется Метод AttachCard для привязки карты.
  4. Если в запросе Метод AddCard параметр CheckType имеет значение: a. NO – сохранить карту без проверок. RebillId для рекуррентных платежей не возвращается. b. HOLD – при сохранении сделать списание и затем отмену на 1 руб. RebillId для рекуррентных платежей возвращается в ответе. c. 3DS – при сохранении карты выполнить проверку 3DS. Если карта поддерживает 3DS, выполняется списание и последующая отмена на 1 руб. В этом случае RebillId будет только для 3DS карт. Карты, не поддерживающие 3DS, привязаны не будут. d. 3DSHOLD – при привязке карты выполнить проверку поддержки картой 3DS. Если карта поддерживает 3DS, выполняется списание и последующая отмена на 1 руб. Если карта не поддерживает 3DS, выполняется списание и последующая отмена на произвольную сумму от 100 до 199 копеек. Клиент будет перенаправлен на экран для ввода списанной суммы, где должен корректно указать случайную сумму (paymentURL из AddCardResponse). В случае успешного подтверждения случайной суммы карта будет привязана и возвращен RebillId.

В результате ввода данных, к параметру CustomerKey (его получаем из метода AddCustomer или GetCustomer) будет привязана CardId.


Чтобы оплачивать сохраненной картой нужно выполнить рекуррентный платеж:

  1. Выполняется метод Init c параметром DATA с ключом chargeFlag: true (Если был передан additionalData, параметр добавляется к уже существующим данным).
  2. Вместо вызова метода FinishAuthorize, нужно вызвать метод Charge с параметром RebillId (его можно получить из метода GetCardList)

Вот документация из Android где можно прочитать подробнее как это можно сделать.

simhali commented 3 years ago

Большое вам спасибо!