Связки

Связка (сохраненные платежные данные, CoF, credential on file) — это уникальный защищенный токен, который связывает данные карты плательщика с его идентификатором в системе магазина. Связку можно использовать для будущих покупок, чтобы держателю карты не пришлось вводить данные карты в следующий раз. Такие транзакции называются транзакциями по связкам.

Платежный сервис Роутер предоставляет функциональность привязки карты клиентом для последующего использования как в CIT, так и в MIT-платежах.

Типы связок

Тип связки можно узнать из запроса getBindings.do.

Платежный сервис позволяет создавать и использовать три типа связок:

Одна карта может иметь связки разных типов. Более того, у карты может быть несколько связок для разных рассрочек.

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

Тип связки Метод API Оплата на платежной странице
null paymentOrderBinding.do или recurrentPayment.do да
C paymentOrderBinding.do да
R recurrentPayment.do нет
I installmentPayment.do нет

Типы транзакций

Транзакции по связкам принадлежат к одной из двух групп в зависимости от инициатора транзакции:

Хранение данных связки

В зависимости от разрешений Партнера связки могут храниться:

Маршрутизация

При создании связки Платежный сервис Роутер маршрутизирует оплату согласно установленным на данный момент правилам маршрутизации.

При дальнейших платежах по связке есть следующие варианты маршрутизации:

Тип связки Способ оплаты Маршрутизация Необходимость CVC/3DS
null (без типа) или C Платежная страница, API paymentOrderBinding.do При оплате eCom-связкой Платежный сервис Роутер получает данные карты из связки и направляет оплату в банк согласно текущим правилам маршрутизации. Платеж может быть направлен не в тот банк, где хранится связка. Если оплата направляется в тот банк, где хранится связка, то проводится оплата связкой. Может потребоваться, если оплата направлена в другой банк как оплата картой
null (без типа) или R API recurrentPayment.do Платежный сервис Роутер получает данные карты из связки и направляет оплату в банк согласно текущим правилам маршрутизации. Платеж может быть направлен не в тот банк, где хранится связка. Не требуется
I API installmentPayment.do Оплата всегда направляется в тот же Банк, в котором была создана связка для данного clientId Не требуется

Изменить разрешения и способ хранения связок можно при обращении в службу поддержки. Текущие настройки можно узнать, отправив запрос /settings/getRouterParams.do.

eCom-связки на стороне банка

eCom-связки предназначены для одноразовых онлайн-транзакций, в которых покупатель использует сохраненные данные карты для оплаты конкретного заказа. С использованием eCom связки можно осуществлять как CIT, так и MIT-платежи. При этом eCom-связки нельзя использовать для рекуррентных платежей и платежей в рассрочку.

Создание eCom-связки

Создать eCom-связку можно при наличии у Партнера соответствующих разрешений в банках.

Платежный сервис Роутер поддерживает следующие способы создания связок:

Создание связки на платежной странице Платежного сервиса

Для реализации данного варианта используется обычная регистрация заказа register.do или registerPreAuth.do и стандартная платежная страница Платежного сервиса, описанная на странице Интеграция через редирект. В запросе на регистрацию обязательно нужно передать clientId, а если нужно создать связку для рекуррентных платежей или для рассрочки, то дополнительно параметры для этих видов связок (см. соответствующие разделы).

Пример регистрации заказа для создания обычной (eCom) связки:

curl -X POST 'https://api.router.rbsuat.com/v1/register.do' -H 'Content-Type: application/json' \
--data-raw '{
    "orderNumber": "order_123463",
    "amount": 10000,
    "currency": "643",
    "language": "en",
    "returnUrl": "https://mybestmerchantreturnurl.com/",
    "userName": "test_user",
    "password": "test_user_password_",
    "clientId": 1010123
}'

Пример ответа:

{
    "errorCode": "0",
    "formUrl": "https://router.rbsuat.com/wl/payment.html?mdOrder=2dc811e7-8d1c-407a-bd25-a4f41f96cc60&language=en",
    "orderId": "2dc811e7-8d1c-407a-bd25-a4f41f96cc60",
    "orderNumber": "order_123457"
}

После регистрации заказа партнер перенаправляет клиента на страницу оплаты по URL из параметра formUrl:

Связка будет создана в зависимости от того, установлен ли флажок Запомнить карту на платежной странице. При этом связка будет "обычной" (eCom-связка) и не сможет использоваться для рекуррентных списаний.

Платежный сервис Роутер не накладывает ограничений на авторизацию или верификацию с нулевой суммой платежа. Успех данных способов создания связки зависит от поддержки этих методов ПЦ банка.

Создание связки через специальную страницу для сохранения карты

В этом варианте для регистрации заказа должен использоваться отдельный логин партнера, предназначенный для создания связок. Этот логин имеет отдельные настройки в Платежном сервисе, которые изменяют обычную платежную страницу на страницу привязки карты.

Сценарий с отдельным логином партнера и специальной страницей можно использовать вместо создания связки без оплаты, если банк не поддерживает эту функцию.

При регистрации заказа используется либо registerPreAuth.do (тогда будет выполнено холдирование), либо register.do (тогда будет выполнено списание средств). При создании связки через специальную страницу Партнер самостоятельно принимает решение, какой способ использовать. Наиболее типичным способом использования является холдирование 1..10 руб с использованием registerPreAuth.do.

При создании связки с использованием специального логина:

Создание связки при оплате по API

Связка будет создана при оплате по API при соблюдении следующих условий:

Порядок оплаты см. в разделе Прямые платежи через API. После завершения процесса оплаты будет создана связка.

Чтобы не создавать связку при оплате, нужно в методе paymentOrder.do или instantPayment.do передать параметр bindingNotNeeded = true.

Создание связки без оплаты

Чтобы создать связку без оплаты, необходимо отправить запрос на регистрацию заказа register.do, registerPreAuth.do или instantPayment.do с параметром "features": ["VERIFY"].

Функция VERIFY предназначена для проверки того, что платежная карта используется ее законным владельцем (non-payment authentication, NPA).

Параметр amount верифицирующего запроса может быть равен 0. Даже если некоторая сумма платежа будет передана в запросе, она не будет списана со счета клиента.

После успешной проверки заказ сразу переводится в статус REVERSED (отменен).

Пример запроса:

curl -X POST 'https://api.router.rbsuat.com/v1/register.do' -H 'Content-Type: application/json' \
--data-raw '{
    "features": ["VERIFY"], 
    "orderNumber":"order_123556",
    "amount":1234,
    "currency":"643",
    "language":"ru",
    "returnUrl":"https://mybestmerchantreturnurl.com/",
    "userName":"test_user",    
    "password":"test_user_password", 
    "clientId":"123"
}'

Затем Клиент может ввести данные карты следующим образом:

Связка будет создана после завершения проверки карты.

Получение идентификатора созданной связки

Независимо от способа создания связки, ее идентификатор возвращается партнеру при запросе статуса заказа getOrderStatusExtended.do в параметре bindingId.

Пример запроса:

curl -X POST 'https://api.router.rbsuat.com/v1/getOrderStatusExtended.do' -H 'Content-Type: application/json' \
--data-raw '{
    "orderId": "5ab8fb6a-421e-4396-9bf8-d7d77cc1e706",
    "userName": "test_user",
    "password": "test_user_password"
}'

Фрагмент примера ответа:

...
"bindingInfo": {
    "bindingId": "baa2c8b4-afc3-7190-b05f-d17d08a8cc00",
    "clientId": "1010123"
}
...

Также можно получить список всех связок с помощью метода getBindings.do.

Оплата eCom-связкой

Оплата eCom-связкой на платежной странице Платежного сервиса

Для оплаты обычной (eCom) связкой на платежной странице используется сценарий Интеграция через редирект. На платежной странице можно выбрать ранее сохраненную карту для оплаты.

Оплата eCom-связкой по API

Для оплаты обычной (eCom) связкой по API можно использовать один из следующих способов:

  1. Зарегистрировать новый заказ методом register.do или registerPreAuth.do и использовать для оплаты этого заказа метод paymentOrderBinding.do, передав в него bindingId — идентификатор связки, полученный из статуса заказа. Схему оплаты см. в разделе Схема интеграции с двумя запросами
  2. Использовать для регистрации и оплаты заказа метод instantPayment.do с указанием bindingId. Подробнее об этом методе см. в разделе Схема интеграции с одним запросом

Пример запроса paymentOrderBinding.do:

curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrderBinding.do' --header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "bindingId": "b86f5197-e8a1-724e-b2c1-54fe00a878e8",
    "amount": 10000,
    "clientId": 1010123,
    "mdOrder": "3f1f91bd-2924-44b2-a32a-b8c39b8b1c0c",
    "cvc": "123"
}'

Если ответ на запрос оплаты содержит параметры, свидетельствующие о необходимости проверки 3DS ("is3DSVer2": true или acsUrl и paReq), нужно выполнить шаги для прохождения 3DS.

Удаление eCom-связки

Способ удаления eCom-связки зависит от варианта интеграции (простая или расширенная):

Автоплатежи eCom-связками

Автоплатеж — это списание по сохраненным данным карты без участия клиента. Автоплатеж является MIT-транзакцией по обычной eCom-связке, и для такой транзакции tii (transaction initiation indicator) имеет тип U, см. Типы транзакций.

Для проведения автоплатежей требуется специальное разрешение.

Чтобы провести автоплатеж, необходимо передать параметр "tii": "U" в запросе на оплату связкой paymentOrderBinding.do. При этом CVC не передается, и после вызова метода 3DS не требуется:

curl --request POST \
--url 'https://api.router.rbsuat.com/v1/paymentOrderBinding.do' \
--header 'Content-Type: application/json' \
--data-raw '{
  "userName":"test_user",
  "password":"test_user_password",
  "bindingId":"fb334d1a-a753-7a80-a1ee-98d94aec9e55",
  "amount":345,
  "clientId":123,
  "mdOrder":"dbcfebe8-109a-11f0-a2c0-ad696c237a94",
  "tii":"U"
}'

Особенности:

Связки для рекуррентных платежей на стороне банка

Рекуррентными называют периодические платежи по фиксированному графику на заранее оговоренную сумму. Например, ежемесячные платежи за коммунальные услуги или платежи по подписке. В отличие от платежей в рассрочку, рекуррентные платежи не имеют фиксированного периода.

Создание рекуррентной связки

Чтобы создать рекуррентную связку, Партнер должен:

  1. В методе register.do, registerPreAuth.do или instantPayment.do передать параметры:

    • recurringFrequency — минимальное количество дней между рекуррентными платежами.
    • recurringExpiry — дата в формате YYYYMMDD, после которой дальнейшие авторизации не должны выполняться.

    Пример регистрации заказа для создания рекуррентной связки:

    curl -X POST 'https://api.router.rbsuat.com/v1/register.do' -H 'Content-Type: application/json' \
    --data-raw '{
        "orderNumber": "order_123463",
        "amount": 10000,
        "currency": "643",
        "language": "en",
        "returnUrl": "https://mybestmerchantreturnurl.com/success",
        "userName": "test_user",
        "password": "test_user_password_",
        "clientId": 1010123,
        "jsonParams": {
            "recurringFrequency": 10,
            "recurringExpiry": "20241018"
        }
    }'
  2. При схеме оплаты с двумя запросами после вызова метода register.do или registerPreAuth.do нужно провести оплату через редирект или API:

    • Через редирект: перенаправить клиента на страницу оплаты по URL из параметра formUrl в ответе на запрос (так же, как и при создании eCom-связки). Когда клиент оплатит заказ в форме, связка будет создана независимо от того, установлен ли флажок Запомнить карту на платежной странице. При этом связка будет рекуррентной, т.е. может использоваться в дальнейшем только для рекуррентных списаний.
    • Через API: порядок оплаты см. в разделе Прямые платежи через API.

Связка типа R будет создаваться каждый раз при инициирующем платеже, даже если рекуррентная связка с такой картой уже существует в банке. Рекуррентные связки с типом null не дублируются.

Оплата рекуррентной связкой

Для оплаты рекуррентной связкой используется запрос recurrentPayment.do с параметром bindingId — идентификатором связки, полученным как описано в разделе Получение идентификатора созданной связки.

Особенности:

Пример запроса:

curl --request POST --url 'https://api.router.rbsuat.com/v1/recurrentPayment.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "bindingId": "a3f5873b-bda8-7623-b19c-c3f64a87c214",
    "amount": 345,
    "clientId": 1010123,
    "orderNumber": "order_123481"
}'

Оплата производится в тот банк, куда был направлен инициирующий платеж.

Связки для платежей в рассрочку на стороне банка

Платежи в рассрочку — это транзакции, которые обрабатываются через регулярные фиксированные интервалы в соответствии с планом платежей. Например, когда клиент ежемесячно оплачивает счет небольшими частями. В отличие от рекуррентных платежей, платежи в рассрочку осуществляются в течение фиксированного периода времени.

Создание связки для рассрочки

Чтобы создать связку для рассрочки, Партнер должен:

  1. В методе register.do, registerPreAuth.do или instantPayment.do передать параметры:

    • installments — максимальное количество платежей по рассрочке.
    • recurringFrequency — минимальное количество дней между платежами.
    • recurringExpiry — дата в формате YYYYMMDD, после которой дальнейшие авторизации не должны выполняться.

    Пример регистрации заказа для создания связки для рассрочки

    curl -X POST 'https://api.router.rbsuat.com/v1/register.do' -H 'Content-Type: application/json' \
    --data-raw '{
        "orderNumber": "order_123463",
        "amount": 10000,
        "currency": "643",
        "language": "en",
        "returnUrl": "https://mybestmerchantreturnurl.com/success",
        "userName": "test_user",
        "password": "test_user_password_",
        "clientId": 1010123,
        "jsonParams": {
            "recurringFrequency": 15,
            "recurringExpiry": "20241018",
            "installments": "12"
        }
    }'
  2. При схеме оплаты с двумя запросами после вызова метода register.do' или 'registerPreAuth.do нужно провести оплату через редирект или API:

    • Через редирект: перенаправить клиента на страницу оплаты по URL из параметра formUrl в ответе на запрос (так же, как и при создании eCom-связки). Когда клиент оплатит заказ в форме, связка будет создана независимо от того, установлен ли флажок Запомнить карту на платежной странице. При этом связка будет предназначена для рассрочки, т.е. может использоваться в дальнейшем только для платежей по рассрочке.
    • Через API: порядок оплаты см. в разделе Прямые платежи через API.

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

Оплата связкой для рассрочки

При оплате связкой для рассрочки используется запрос installmentPayment.do с параметром bindingId — идентификатором связки, полученным как описано в разделе Получение идентификатора созданной связки.

Особенности:

Пример запроса:

curl --request POST --url 'https://api.router.rbsuat.com/v1/installmentPayment.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "bindingId": "a3f5873b-bda8-7623-b19c-c3f64a87c214",
    "amount": 345,
    "clientId": 1010123,
    "orderNumber": "order_123481"
}'

Оплата производится в тот банк, куда был направлен инициирующий платеж.

Хранение связок на стороне Партнера

Хранение связок на стороне Партнера возможно при условии соблюдения PCI DSS.

Основные отличия данного способа хранения связок:

e-Com связки на стороне партнера

Создание eCom-связки на стороне Партнера

Чтобы провести инициирующий платеж для создания eCom-связки, хранящейся на стороне Партнера, нужно:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметр инициирующего платежа "tii": "CI"

    Пример инициирующего платежа для создания связки, хранящейся на стороне Партнера:

    curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "userName": "test_user",
        "password": "test_user_password",
        "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
        "cardholderName": "TEST CARDHOLDER",
        "cvc": "123",
        "month": "12",
        "pan": "4343821200124342",
        "year": "2024",
        "tii": "CI"
    }'
  3. При создании связки прохождение 3DS является обязательным, поэтому ответ на запрос оплаты будет содержать параметры "is3DSVer2": true или acsUrl и paReq. Нужно выполнить шаги для прохождения 3DS.

Оплата eCom-связкой на стороне Партнера

Для последующей оплаты созданной связкой Партнер должен:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметр tii со значением U или F:

    • F — транзакция с участием клиента (CIT), например, если клиент выбрал связку для оплаты на платежной странице Партнера.
    • U — транзакция без участия клиента (MIT), если Партнер проводит внеплановое списание по eCom связке.

    В этом методе Партнер должен передать хранящиеся у него данные карты из связки. Метод paymentOrderBinding.do использовать нельзя, поскольку в Платежном сервисе и банках нет данных о связке, которую Партнер хранит в своей системе.

Пример запроса:

curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
    "cardholderName": "TEST CARDHOLDER",
    "cvc": "123",
    "month": "12",
    "pan": "4343821200124342",
    "year": "2024",
    "tii": "U"
}'

Рекуррентные связки на стороне Партнера

Создание рекуррентной связки на стороне Партнера

Чтобы провести инициирующий платеж для создания рекуррентной связки, хранящейся на стороне Партнера, нужно:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметры инициирующего платежа:

    • recurringFrequency — минимальное количество дней между платежами.
    • recurringExpiry — дата в формате YYYYMMDD, после которой дальнейшие авторизации не должны выполняться.
    • "tii": "RI" — тип транзакции: инициирующая для рекуррентных платежей.

    Пример инициирующего платежа для создания связки, хранящейся на стороне Партнера:

    curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "userName": "test_user",
        "password": "test_user_password",
        "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
        "cardholderName": "TEST CARDHOLDER",
        "cvc": "123",
        "month": "12",
        "pan": "4343821200124342",
        "year": "2024",
        "tii": "RI",
        "jsonParams": {
            "recurringFrequency": 15,
            "recurringExpiry": "20241018"
        }
    }'
  3. При создании связки прохождение 3DS является обязательным, поэтому ответ на запрос оплаты будет содержать параметры "is3DSVer2": true или acsUrl и paReq. Нужно выполнить шаги для прохождения 3DS.

  4. Запросить статус заказа getOrderStatusExtended.do для получения параметров paymentNetRefNum и date.

Оплата рекуррентной связкой на стороне Партнера

Для последующей оплаты созданной связкой Партнер должен:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметры:
    • хранящиеся у Партнера данные карты из связки;
    • tii со значением R;
    • originalPaymentNetRefNum и originalPaymentDate, полученные в статусе заказа при инициирующем платеже в параметрах paymentNetRefNum и date соответственно.

Пример запроса:

curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
    "cardholderName": "TEST CARDHOLDER",
    "cvc": "123",
    "month": "12",
    "pan": "4343821200124342",
    "year": "2024",
    "tii": "R",
    "originalPaymentNetRefNum": "10435fbc-8f9c-4f22-aeee-c9daa77741eb",
    "originalPaymentDate": "1726752975535"
}'

Связки для рассрочки на стороне Партнера

Создание связки для рассрочки на стороне Партнера

Чтобы провести инициирующий платеж для создания связки для рассрочки, хранящейся на стороне Партнера, нужно:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметры инициирующего платежа:

    • installments — максимальное количество платежей по рассрочке.
    • recurringFrequency — минимальное количество дней между платежами.
    • recurringExpiry — дата в формате YYYYMMDD, после которой дальнейшие авторизации не должны выполняться.
    • "tii": "II" — тип транзакции: инициирующая для платежей по рассрочке.

    Пример инициирующего платежа для создания связки, хранящейся на стороне Партнера:

    curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
    --header 'Content-Type: application/json' \
    --data-raw '{
        "userName": "test_user",
        "password": "test_user_password",
        "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
        "cardholderName": "TEST CARDHOLDER",
        "cvc": "123",
        "month": "12",
        "pan": "4343821200124342",
        "year": "2024",
        "tii": "II",
        "jsonParams": {
            "recurringFrequency": 15,
            "recurringExpiry": "20241018",
            "installments": "12"
        }
    }'
  3. При создании связки прохождение 3DS является обязательным, поэтому ответ на запрос оплаты будет содержать параметры "is3DSVer2": true или acsUrl и paReq. Нужно выполнить шаги для прохождения 3DS.

  4. Запросить статус заказа getOrderStatusExtended.do для получения параметров paymentNetRefNum и date.

Оплата связкой для рассрочки на стороне Партнера

Для последующей оплаты созданной связкой Партнер должен:

  1. Следовать одной из схем интеграции в разделе Прямые платежи через API.
  2. В методе paymentOrder.do или instantPayment.do передать параметры:
    • хранящиеся у Партнера данные карты из связки;
    • tii со значением I;
    • originalPaymentNetRefNum и originalPaymentDate, полученные в статусе заказа при инициирующем платеже в параметрах paymentNetRefNum и date соответственно.

Пример запроса:

curl --request POST --url 'https://api.router.rbsuat.com/v1/paymentOrder.do' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userName": "test_user",
    "password": "test_user_password",
    "mdOrder": "ec52096f-f9c5-42bc-8676-910c4066f1c1",
    "cardholderName": "TEST CARDHOLDER",
    "cvc": "123",
    "month": "12",
    "pan": "4343821200124342",
    "year": "2024",
    "tii": "I",
    "originalPaymentNetRefNum": "10435fbc-8f9c-4f22-aeee-c9daa77741eb",
    "originalPaymentDate": "1726752975535"
}'
Категории:
router API V1
Категории
Результаты поиска