Проведение оплаты со списаниями по запросам
Общая информация
Повторяемая оплата со списаниями по запросам — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется один (повторяемый) перевод денежных средств от пользователя к мерчанту с использованием сохранённых платёжных данных и без подтверждения подлинности платёжного инструмента пользователя (такого, как ввод кода проверки подлинности карты).
В рамках платёжной платформы оплаты со списаниями по запросу проводятся в соответствии с моделью проведения платежей (Повторяемая оплата со списаниями по запросам).
Схема проведения
Для проведения повторяемой оплаты со списаниями по запросам необходимо:
- Зарегистрировать повторяемую оплату.
- Передать запрос на проведение повторяемой оплаты с идентификатором записи о серии списаний.
- Принять от платёжной платформы оповещение о результате списания.
Для каждого последующего списания необходимо повторно передавать запросы на проведение повторяемой оплаты и принимать оповещения о результате.
- Пользователь на стороне веб-сервиса инициирует списание.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на списание.
- Этот запрос поступает в платёжную платформу.
- В платёжной платформе выполняется обработка запроса.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- От платёжной платформы к платёжной системе направляется запрос на оплату.
- В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платёжной системе направляется уведомление о результате оплаты.
- От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны пользователя инициируются последующие списания и для каждого из них повторяются шаги 1—12.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на списание.
- Этот запрос поступает в платёжную платформу.
- В платёжной платформе выполняется обработка запроса.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- От платёжной платформы к платёжной системе направляется запрос на оплату.
- В платёжной системе выполняется дальнейшая обработка запроса и его отправка эмитенту.
- На стороне эмитента выполняется обработка платежа и списание средств пользователя.
- От эмитента к платёжной системе направляется уведомление о результате оплаты.
- От платёжной системы к платёжной платформе направляется уведомление о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате списания.
- От веб-сервиса пользователю направляется результат списания.
- Далее со стороны веб-сервиса инициируются последующие списания и для каждого из них повторяются шаги 1—11.
Информация о форматах запросов и оповещений приведена далее; общая информация о работе с API — в разделе Организация взаимодействия. Информацию о возможных статусах такой оплаты можно найти в соответствующей статье.
Формат запроса
Формат запросов в этом разделе представлен для инициирования повторяемых оплат со списаниями по запросу с использованием платёжных карт. При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к одной из следующих конечных точек:
- /v2/payment/card/recurring — для всех категорий повторяемых оплат, вне зависимости от места хранения платёжных данных (на стороне платёжной платформы или на стороне веб-сервиса);
- /v2/payment/card/sale — только для автооплат и регулярных оплат при хранении платёжных данных на стороне веб-сервиса;
- /v2/payment/card/account_verification/token — только для автооплат при хранении платёжных данных на стороне веб-сервиса.
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от ecommpay при интеграции;payment_id— идентификатор платежа, уникальный в рамках проекта;signature— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным).
customer— объект, содержащий сведения о пользователе:ip_address— IP-адрес пользователя, актуальный для инициируемой операции;id— идентификатор пользователя, уникальный в рамках проекта и имеющий то же значение, которое было использовано при регистрации данной повторяемой оплаты;Внимание: Использование разных идентификаторов пользователя для операций в рамках одной повторяемой оплаты не допускается
payment— объект, содержащий сведения о платеже:amount— сумма платежа в дробных единицах валюты;currency— валюта платежа в формате ISO-4217 alpha-3.cryptocurrency_type— указатель категории цифровой валюты, обязательный при выполнении операций, связанных с использованием криптовалют через платёжную систему Visa, и допускающий одно из следующих значений:cbdc— цифровая валюта центрального банка или токенизированный депозит, выпущенные определённым государством;-
stablecoins_fiat_backed— цифровая валюта (в виде стейблкоина), чья стабильность обеспечивается за счёт резервов в определённой фиатной валюте; native_tokens— цифровая валюта определённого блокчейна, необходимая для выполнения операций в его сети, в том числе для оплаты комиссий;other— нефиатная валюта, которая заведомо не относится ни к одной из других категорий либо не может быть отнесена ни к одной из категорий при инициировании операции.
- В зависимости от конечной точки, к которой направляется запрос, в запросе также должны использоваться следующие объекты и параметры:
- В запросах к конечной точке /v2/payment/card/recurring — идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации, в параметре
idобъектаrecurring. - В запросах к конечной точке /v2/payment/card/sale — объект
cardсо следующими параметрами:pan— номер карты;year— год окончания срока действия карты;month— месяц окончания срока действия карты;card_holder— имя держателя карты, если этот параметр обязателен для используемого проекта (это имя должно указываться в соответствии с написанием на карте, а исключить его из числа обязательных параметров можно только по согласованию с курирующим менеджером ecommpay после анализа и оценки рисков);stored_card_type— указатель категории, к которой относится повторяемая оплата (4для автооплаты и6для регулярной оплаты).
- В запросах к конечной точке /v2/payment/card/account_verification/token — параметр
stored_card_typeобъектаcardсо значением4(автооплата).
- В запросах к конечной точке /v2/payment/card/recurring — идентификатор записи о серии списаний, полученный в оповещении с данными о регистрации, в параметре
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму проведения платежа, а также идентификатор записи о серии списаний или данные платёжной карты и указатель категории повторяемой оплаты.
В зависимости от особенностей провайдеров, участвующих в проведении платежа, набор обязательных параметров может варьироваться. Подробную информацию о требованиях провайдеров можно уточнить у курирующего менеджера ecommpay.
{
"general":{
"project_id":42,
"payment_id":"456789",
"signature":"v7KNMp5D/aZAeb0VMdeR+CqGSm...=="
},
"customer":{
"ip_address":"202.144.196.0",
"id":"customer_12"
},
"payment":{
"amount":400,
"currency":"USD"
},
"recurring":{
"id":1079 // Идентификатор записи о серии списаний
}
}
{
"general":{
"project_id":42,
"payment_id":"456789",
"signature":"v7KftZ5D/aZAdeR+qGrNxY...=="
},
"customer":{
"ip_address":"202.144.196.0",
"id":"customer_12"
},
"payment":{
"amount":400,
"currency":"USD"
},
"card": {
"pan": "4314220000000056",
"year": 2025,
"month": 8,
"card_holder": "JOHN SMITH",
"stored_card_type": 4 // Проведение автооплаты
}
}
{
"general":{
"project_id":42,
"payment_id":"456789",
"signature":"v7KftZ5D/aZAdeR+qGrNxY...=="
},
"customer":{
"ip_address":"202.144.196.0",
"id":"customer_12"
},
"payment":{
"amount":400,
"currency":"USD"
},
"token":"pkmawa3khb7wninntq8g8q3592fjjxwvzfebwbegqkl1c16akpgo6sgxac6wulz7",
"card":{
"stored_card_type": 4 // Проведение автооплаты
}
}
Формат оповещений
От платёжной платформы к веб-сервису передаётся оповещение с данными о регистрации повторяемой оплаты. Для этого оповещения используется стандартный формат, описание которого представлено в разделе Работа с оповещениями.
В данном случае оповещение свидетельствует о том, что в рамках проекта 42 было выполнено списание в размере 4,00 USD с платёжной карты № 424242******4243.
{
"project_id":42,
"payment":{
"id":"456789",
"type":"recurring",
"status":"success",
"date":"2019-09-04T12:57:57+0000",
"method":"card",
"sum":{
"amount":400,
"currency":"USD"
},
"description":""
},
"account":{
"number":"431422******0056",
"type":"visa",
"card_holder":"JUDY DOE",
"id":45678,
"expiry_month":"08",
"expiry_year":"2025"
},
"recurring":{
"id":1079,
"currency":"USD",
"valid_thru":"2022-10-31T00:00:00+0000"
},
"operation":{
"id":39690002636,
"type":"recurring",
"status":"success",
"date":"2019-09-04T12:57:57+0000",
"created_date":"2019-09-04T12:57:53+0000",
"request_id":"0b9f9e57a50-61da119c",
"sum_initial":{
"amount":400,
"currency":"USD"
},
"sum_converted":{
"amount":400,
"currency":"USD"
},
"provider":{
"id":414,
"payment_id":"0020000000072964",
"date":"2019-09-04T12:58:03+0000",
"auth_code":"634R",
"endpoint_id":414
},
"code":"0",
"message":"Success"
},
"signature":"MpfogAxZ5D/b0VMdeR+xYyilUwSm...=="
}