Повторяемая оплата по токену

Gate позволяет осуществлять повторное списание средств с банковской карты пользователя, используя предварительно сгенерированный токен. Списание средств происходит без повторного ввода реквизитов карты, то есть пользователю не нужно заполнять реквизиты карты, а сам токен может храниться на сервере мерчанта.

У повторяемой оплаты по токену есть ряд преимуществ перед другими способами повторяемой оплаты:
  • Возможность повторно использовать сохраненные карты в других проектах. В стандартном механизме повторяемая оплата регистрируется только в одном проекте и доступна только в нем. Повторяемая оплата по токену позволяет выполнить первую оплату в одном проекте, а затем использовать полученный токен для оплаты в других проектах. Такая возможность может быть полезной мерчантам, у которых имеется несколько проектов в платежной платформе Rocketpay и есть необходимость выполнять оплату в проектах, отличных от того, в котором была выполнена начальная оплата.
  • Снижается вероятность отказа в оплате из-за недоступности провайдера за счет возможности переключения на других провайдеров. В стандартном механизме повторяемая оплата регистрируется только у одного провайдера и провести ее можно только через этого провайдера. При повторяемой оплате по токену платежная платформа может провести оплату через одного из доступных провайдеров, если исходный провайдер недоступен.

Основной сценарий

Базовая схема оплаты по токену выглядит так (Подробнее о работе с токенами см. Использование токенов.):

  1. Пользователь выполняет оплату или проверку действительности (верификацию) карты в веб-сервисе мерчанта первый раз — операция проходит через Payment Page или Gate.
    Внимание: Этот первый шаг очень важен и обязателен для работоспособности повторяемой оплаты по токену. Без выполнения изначальной успешной оплаты или проверки подлинности карты повторяемая оплата работать не будет!
  2. После успешной оплаты в ответном оповещении мерчант получает токен карты пользователя.
  3. При последующих оплатах мерчант использует полученный токен для выполнения повторных оплат. Для повторяемой оплаты никакой дополнительной информации о карте кроме токена не требуется.

Техническая реализация

Исходная оплата по карте или проверка подлинности карты
  1. Выполните исходную (первую) оплату с проверкой действительности карты или операцию по проверке действительности карты. Оплата или проверка действительности карты может выполняться как через Payment Page, так и через Gate.

    Подробнее о разовой оплате через Payment Page см. Оплата с использованием Payment Page, о разовой оплате через Gate см. Оплата в одну стадию. Подробнее о проверке действительности платежных инструментов см. Проверка платежной карты.

  2. В случае успешной оплаты или проверки действительности примите оповещение с токеном карты и сохраните этот токен.
    Вот пример такого оповещения:

    Рис.: Пример оповещения с токеном карты

    {
        "account": {
            "number": "424242******4243",
            "token": "f365bb1729f9b72fd9c09703a751c979f3becc679f29c3e35c91d18070d15654",
            "type": "visa",
            "card_holder": "JOHN SMITH",
            "id": 45678,
            "expiry_month": "08",
            "expiry_year": "2025"
        },
        "customer": {
            "id": "customer_12",
            "phone": "44991234567"
        },
        "payment": {
            "date": "2019-01-11T13:02:42+0000",
            "id": "456789",
            "method": "card",
            "status": "success",
            "sum": {
                "amount": 400000,
                "currency": "USD"
            },
            "type": "purchase",
            "description": ""
        },
        "project_id": 42,
        "operation": {
            "id": 969000002636,
            "type": "sale",
            "status": "success",
            "date": "2019-01-11T13:02:42+0000",
            "created_date": "2019-01-11T13:01:45+0000",
            "request_id": "c6eed1eb14c629b4ef20b3b8086d...d04132c34b0088cbc0be4667c",
            "sum_initial": {
                "amount": 400000,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 400000,
                "currency": "USD"
            },
            "provider": {
                "id": 408,
                "payment_id": "330157196",
                "date": "2019-01-11T13:02:32+0000",
                "auth_code": "",
                "endpoint_id": "612266625"
            },
            "code": "0",
            "message": "Success",
            "eci": "07"
        },
        "signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm...=="
    }

    Этот токен нужен для повторяемых оплат, поэтому его надо сохранить для дальнейшего использования.

Повторная оплата с использованием токена
  1. Создайте и отправьте запрос на повторную оплату с использованием токена в конечную точку /v2/payment/card/sale/token методом POST. Помимо обязательных параметров, предусмотренных спецификацией API, запрос в обязательном порядке должен содержать следующие параметры:
    • token — токен карты, полученный в оповещении при выполнение исходной оплаты;
    • payment — объект со сведениями о платеже:
      • extra_param — этот параметр обязательно должен присутствовать в запросе и иметь значение recurring.

    Вот пример запроса на выполнение повторной оплаты с использованием токена:

    Рис.: Пример запроса на выполнение повторной оплаты с использованием токена

    {
      "general": {
        "project_id": 111,
        "payment_id": "45611111",
        "signature": "s2eoM1aloGxDhYsLCpfwnnbL0FQ.....tnrMsFsc9gH"
      },
      "customer": {
        "ip_address": "248.1.1.1",
        "id": "1"
      },
      "payment": {
        "amount": 1000,
        "currency": "KZT",
        "extra_param": "recurring"
      },
      "token": "f365bb1729f9b72fd9c09703a751c979f3becc679f29c3e35c91d18070d15654",
      "card": {
        "save": false
      }
    }

    При выполнении такого запроса никаких дополнительных сведений о карте не потребуется.

Подробную информацию о подключении и настройке повторяемой оплаты по токену уточняйте у своего курирующего менеджера.