Использование сервисов Mastercard MoneySend и Visa Direct
Общая информация
В платёжной платформе ecommpay поддерживается возможность использования сервисов Mastercard MoneySend и Visa Direct, которые упрощают проведение денежных переводов между пользователями и мерчантами. В рамках этих сервисов доступны операции, позволяющие списывать средства с пользователей-„отправителей“ и зачислять средства пользователям-„получателям“. Такие списания и зачисления могут выполняться по отдельности и в различных комбинациях, при этом поступление средств на целевые счета согласно требованиям платёжных систем должно занимать не более 30 минут, что обеспечивает довольно высокую скорость переводов и удобство пользователей.
Основные свойства этих операций можно представить следующим образом.
| Списание | Зачисление | |
|---|---|---|
| Операция в сервисе Mastercard MoneySend | Funding transaction (FT) | Payment transaction (PT) |
| Операция в сервисе Visa Direct | Account Funding Transaction (AFT) | Original Credit Transaction (OCT) |
| Техническая операция в платформе ecommpay | sale |
payout |
| Допустимые платёжные методы |
|
Карточные платежи |
| Допустимые платёжные инструменты пользователей | Платёжные карты Mastercard или Visa | Платёжные карты Mastercard или Visa |
| Возможность отмены операции после её выполнения | + (с ограничениями по времени) |
– |
| Примеры использования |
|
|
Поскольку в платформе ecommpay эти операции выполняются как sale и payout (с определённым набором параметров), для их инициирования могут использоваться любые подходящие интерфейсы: для оплат не только Gate, но и Payment Page и SDK для мобильных приложений, а для выплат Gate и Dashboard.
По вопросам, касающимся ограничений в применении сервисов Mastercard MoneySend и Visa Direct и подключения к ним, можно обращаться к курирующему менеджеру ecommpay.
Схемы выполнения операций
Общий порядок работы
Схемы работы с отдельными операциями списаний и зачислений при работе через Gate в целом соответствуют схемам проведения одностадийных оплат и выплат: со стороны веб-сервиса по каждой операции необходимо отправить соответствующий запрос, выполнить, если потребуется, промежуточные действия согласно предписывающим оповещениям от платформы и принять итоговое уведомительное оповещение. При этом для перевода средств с карты на карту необходимо последовательно инициировать две операции — сначала операцию списания и после её выполнения операцию зачисления.
Способы указания платёжных реквизитов
Как и с другими видами оплат и выплат в платёжной платформе ecommpay, при При работе со списаниями и зачислениями в рамках сервисов Mastercard MoneySend и Visa Direct можно использовать разные способы указания реквизитов платёжных карт. Это:
- Реквизиты (в явном виде) — с указанием номера карты, срока её действия, держателя и кода проверки подлинности;
- Произвольный идентификатор реквизитов — с указанием идентификатора, ранее ассоциированного в платёжной платформе с реквизитами используемой карты (подробнее);
- Стандартизированный токен реквизитов — с указанием токена, ранее ассоциированного в платёжной платформе с реквизитами используемой карты (подробнее).
Списания
Чтобы выполнить списание средств через Gate, со стороны веб-сервиса необходимо:
- Отправить запрос к конечной точке
/v2/payment/{название метода}/sale[/форма указания реквизитов платёжного инструмента]. - При необходимости выполнить аутентификацию пользователя с использованием протокола 3-D Secure (подробнее).
- Принять от платёжной платформы оповещение о результате списания.
Формат запроса на списание описан далее, в разделе Форматы запросов этой статьи.
Отмены списаний
В некоторых случаях может быть актуальной отмена списания. Технически в платформе такая отмена выполняется как возврат и инициируется через запрос к конечной точке /v2/payment/{указатель метода}/refund. При этом следует учитывать, что согласно требованиям платёжных систем отменить списание можно только на полную сумму и только в установленные сроки.
Для карт платёжной системы Visa запрос на такую отмену допустимо отправлять в течение первых суток с момента списания, для карт платёжной системы Mastercard настоятельно рекомендуется делать это в течение трёх рабочих дней. По истечении этих сроков с вопросами об отмене списаний следует обращаться к сотрудникам технической поддержки ecommpay.
Зачисления
Чтобы выполнить зачисление средств через Gate, со стороны веб-сервиса необходимо:
- Отправить запрос к конечной точке
/v2/payment/card/payout[/token]. - Принять от платёжной платформы оповещение о результате зачисления.
Формат запроса на зачисление описан далее, в разделе Форматы запросов этой статьи.
Форматы запросов
Запрос на списание
При формировании запросов на списание необходимо учитывать следующее:
- POST-запрос должен отправляться к одной из следующих конечных точек:
- при передаче реквизитов карты в явном виде — к /v2/payment/card/sale;
- при передаче идентификаторов сохранённых данных — к /v2/payment/card/sale/saved;
- при передаче токенов сохранённых данных — к /v2/payment/card/sale/token;
- при использовании методов Apple Pay и Google Pay — к /v2/payment/applepay/sale и /v2/payment/googlepay/sale cоответственно.
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от ecommpay;payment_id— идентификатор платежа, уникальный в рамках проекта;signature— подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным);
payment— объект, содержащий сведения о списании:amount— сумма списания с платёжной карты отправителя (пользователя), в дробных единицах валюты;currency— код валюты списания в формате ISO-4217 alpha-3;cryptocurrency_type— указатель категории цифровой валюты, обязательный при выполнении операций, связанных с использованием криптовалют через платёжную систему Visa, и допускающий одно из следующих значений:cbdc— цифровая валюта центрального банка или токенизированный депозит, выпущенные определённым государством;-
stablecoins_fiat_backed— цифровая валюта (в виде стейблкоина), чья стабильность обеспечивается за счёт резервов в определённой фиатной валюте; native_tokens— цифровая валюта определённого блокчейна, необходимая для выполнения операций в его сети, в том числе для оплаты комиссий;other— нефиатная валюта, которая заведомо не относится ни к одной из других категорий либо не может быть отнесена ни к одной из категорий при инициировании операции.
customer— объект, содержащий сведения об отправителе (пользователе):id— идентификатор пользователя в рамках проекта;ip_address— IP-адрес пользователя;country— код страны пользователя в формате ISO 3166-1 alpha-2;address— адрес проживания пользователя, обязательный при использовании карт Visa;city— название города проживания (или иного населённого пункта) пользователя, обязательное при использовании карт Visa;state— код штата или провинции пользователя, обязательный для случаев с последующим зачислением списываемых средств на карту Visa, выпущенную в США или Канаде;phone— номер телефона пользователя, обязательный для случаев с последующим зачислением списываемых средств на карту Visa, выпущенную в Бразилии или Катаре;account_id— номер кошелька получателя, обязательный при использовании карт Mastercard;first_name— имя пользователя, обязательное при использовании методов Apple Pay и Google Pay;last_name— фамилия пользователя, обязательное при использовании методов Apple Pay и Google Pay.
- В запросе должны содержаться сведения о платёжной карте отправителя (пользователя):
- При передаче реквизитов в явном виде — следующие данные в объекте
card:pan— номер карты;year— год окончания срока действия карты;month— порядковый номер месяца срока действия карты;card_holder— имя и фамилия держателя карты (в соответствии с указанными на карте);cvv— код проверки подлинности карты.
- При передаче идентификатора реквизитов — следующие данные в объекте
card:saved_account_id— идентификатор, ассоциированный в платёжной платформе с реквизитами используемой карты;cvv— код проверки подлинности карты.
- При передаче токена реквизитов — следующие данные:
token— токен, ассоциированный в платёжной платформе с реквизитами используемой карты;cvv— код проверки подлинности карты.
- При передаче реквизитов в явном виде — следующие данные в объекте
- В запросе должны содержаться сведения о получателе и его платёжном инструменте:
- При передаче сведений о кошельке получателя — следующие данные в объекте
recipient:wallet_id— номер кошелька;wallet_owner— имя и фамилия владельца кошелька;country— код страны владельца кошелька в формате ISO 3166-1 alpha-2, обязательный для случаев, когда кошелёк связан с картой Mastercard.
- При передаче реквизитов карты — следующие данные в объекте
recipient:pan— номер платёжной карты получателя;card_holder— имя и фамилия держателя карты (в соответствии с указанными на карте);day_of_birth— дата рождения получателя в форматеДД-ММ-ГГГГ, обязательная при использовании карт Visa.
- При передаче реквизитов карты Visa, выпущенной в Канаде — следующие данные (в дополнение к реквизитам):
country— код страны получателя в формате ISO 3166-1 alpha-2;address— адрес проживания получателя;city— название города проживания (или иного населённого пункта) получателя;state_code— код штата или провинции получателя.
- При передаче сведений о кошельке получателя — следующие данные в объекте
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на списание должен содержать идентификаторы проекта и платежа, подпись, код валюты и сумму списания, сведения об отправителе, а также реквизиты платёжных карт отправителя и получателя в одной из применимых форм.
В следующем примере представлены данные тела запроса на списание с карты Visa c последующим зачислением списываемых средств на карту Mastercard.
{
"general":{
"project_id":91348,
"payment_id":"135113521354",
"signature":"iehD3ZeW3CM7aGfmdgfjdgneHbCmronMpXom1b/ot1HvOGMV+CT8LA=="
},
"payment":{
"amount":1000,
"currency":"EUR"
},
"customer":{
"id":"16061313",
"ip_address":"93.47.230.225,
"country":"IT",
"city":"Florence",
"address":"Via Certaldo 18"
},
//при передаче реквизитов карты отправителя в явном виде:
"card":{
"pan":"4314220000000056",
"year":2024,
"month":10,
"card_holder":"Gio Boccaccio",
"cvv":"334"
},
//при передаче идентификатора реквизитов:
"card":{
"saved_account_id": 21121375,
"cvv": "334"
},
//при передаче токена реквизитов:
"token":"f365bb1729f9b72fd9c09703a751c979f3becc67",
"cvv":"334",
//при передаче реквизитов карты получателя:
"recipient":{
"pan":"5413330000000019",
"card_holder":"Fran Petrarca"
}
//при передаче сведений о кошельке получателя:
"recipient":{
"wallet_id":"WID20071304",
"wallet_owner":"Fran Petrarca",
"country":"IT"
}
}
Запрос на зачисление
При формировании запросов на зачисление необходимо учитывать следующее:
- POST-запрос должен отправляться к одной из следующих конечных точек:
- при передаче реквизитов карты в явном виде — к /v2/payment/card/payout;
- при передаче токенов сохранённых данных — к /v2/payment/card/payout/token.
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от ecommpay;payment_id— идентификатор платежа, уникальный в рамках проекта;signature— подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным);
payment— объект, содержащий сведения о зачислении:amount— сумма зачисления на платёжную карту получателя в дробных единицах валюты;currency— код валюты зачисления в формате ISO-4217 alpha-3;cryptocurrency_type— указатель категории цифровой валюты, обязательный при выполнении операций, связанных с использованием криптовалют через платёжную систему Visa, и допускающий одно из следующих значений:cbdc— цифровая валюта центрального банка или токенизированный депозит, выпущенные определённым государством;-
stablecoins_fiat_backed— цифровая валюта (в виде стейблкоина), чья стабильность обеспечивается за счёт резервов в определённой фиатной валюте; native_tokens— цифровая валюта определённого блокчейна, необходимая для выполнения операций в его сети, в том числе для оплаты комиссий;other— нефиатная валюта, которая заведомо не относится ни к одной из других категорий либо не может быть отнесена ни к одной из категорий при инициировании операции.
customer— объект, содержащий сведения об отправителе:id— идентификатор пользователя (отправителя) в рамках проекта;ip_address— адрес пользователя.
- В запросе должны содержаться сведения о платёжной карте получателя:
- При передаче реквизитов в явном виде — следующие данные в объекте
card:pan— номер платёжной карты получателя;card_holder— имя и фамилия получателя (в соответствии с указанными на карте);
- При передаче токена реквизитов:
token— токен, ассоциированный в платёжной платформе с реквизитами используемой карты.
- При передаче реквизитов в явном виде — следующие данные в объекте
- В запросе должны содержаться сведения об отправителе и его платёжном инструменте, включаемые в состав объекта
sender:- Данные о платёжном инструменте отправителя, указываемые в одном из следующих параметров:
pan— номер платёжной карты отправителя;wallet_id— номер кошелька отправителя.
- Данные об отправителе, в числе которых рекомендуется передавать следующие параметры:
country— код страны отправителя в формате ISO 3166-1 alpha-2;city— название города проживания (или иного населённого пункта) отправителя;address— адрес проживания отправителя;first_name— имя отправителя;last_name— фамилия отправителя;state— код штата или провинции отправителя, обязательный для случаев, если страна отправителя — США или Канада;zip— почтовый индекс отправителя, обязательный при использования карты Mastercard;day_of_birth— дата рождения отправителя в форматеДД-ММ-ГГГГ, обязательная при использовании карт Visa;phone— номер телефона отправителя, обязательный для случаев зачисления средств на карту Visa, выпущенную в Бразилии или Катаре.
- Данные о платёжном инструменте отправителя, указываемые в одном из следующих параметров:
- В запросе должны содержаться следующие сведения о получателе в объекте
recipient:first_name— имя получателя;last_name— фамилия получателя.
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на зачисление должен содержать идентификаторы проекта и платежа, подпись, код валюты и сумму зачисления, сведения об отправителе и получателе, а также реквизиты платёжного инструмента отправителя и платёжной карты получателя в одной из применимых форм.
В следующем примере представлены данные тела запроса на зачисление средств на карту Mastercard, при этом списание было осуществлено с карты Visa.
{
"general":{
"project_id":91348,
"payment_id":"135113521354",
"signature":"iehD3ZeW3CM7aGfmdgfjdgneHbCmronMpXom1b/ot1HvOGMV+CT8LA=="
},
"customer":{
"id":"16061313",
"ip_address":"93.47.230.225"
},
"payment":{
"amount":1000,
"currency":"EUR"
},
"recipient":{
"first_name":"Fran",
"last_name":"Petrarca",
"day_of_birth":"20-08-1304"
},
"sender":{
"country":"IT",
"city":"Florence",
"address":"Via Certaldo 18",
"first_name":"Gio",
"last_name":"Boccaccio",
"day_of_birth":"16-06-1313"
},
//при передаче реквизитов карты получателя:
"card":{
"pan":"5413330000000019",
"card_holder":"Fran Petrarca"
},
//при передаче токена:
"token": 1f0dc354c1907a13ba5efc4b19a071b3f1c364abd071bac91b354190b713,
//при передаче реквизитов карты отправителя:
"sender":{
"pan":"4314220000000056"
}
//при передаче сведений о кошельке отправителя:
"sender":{
"wallet_id":"WID16061313"
}
}
Формат оповещений
Для оповещений о результате выполнения операций списания и зачисления в рамках использования сервисов Mastercard MoneySend и Visa Direct используется типовой формат, описание которого представлено в разделе Работа с оповещениями.
{
"project_id": 91348,
"payment": {
"id": "135113521354",
"type": "purchase",
"status": "success",
"date": "2022-02-22T19:52:14+0000",
"method": "card",
"sum": {
"amount": 1000,
"currency": "EUR"
},
"description": ""
},
"account": {
"number": "431422******0056",
"type": "visa",
"token": "f365bb1729f9b72fd9c09703a751c979f3becc67",
"country": "IT",
"bank": "Intesa Sanpaolo SpA",
"product": "debit"
},
"customer": {
"id": "16061313"
},
"operations": [
{
"provider": {
"result_message": "Success",
"result_code": "00",
"id": 2,
"payment_id": "135113521354",
"auth_code": "661786",
"endpoint_id": 3651,
"date": "2022-02-22T19:52:14+0000"
},
"rrn": "305440290856",
"region": "domestic",
"code": "0",
"message": "Success",
"eci": "05",
"id": 52901540107953,
"type": "sale",
"status": "success",
"date": "2022-02-22T19:52:14+0000",
"created_date": "2022-02-22T19:51:18+0000",
"request_id": "a51091ae66b8387af268ef81-069b9fd5ab46392fc15e3c02-d7bc0c44525",
"sum_initial": {
"amount": 1000,
"currency": "EUR"
},
"sum_converted": {
"amount": 1000,
"currency": "EUR"
}
}
],
"signature": "iehD3ZeW3CM7aGfmdgfjdgneHbCmronMpXom1b/ot1HvOGMV+CT8LA=="
}
{
"project_id": 91348,
"payment": {
"id": "135113521355",
"type": "payout",
"status": "success",
"date": "2022-02-22T20:01:36+0000",
"method": "card",
"sum": {
"amount": 1000,
"currency": "EUR"
},
"description": ""
},
"account": {
"number": "541333******0019",
"type": "mastercard",
"token": "1f0dc354c1907a13ba5efc4b19a071b3f1c364abd071bac91b354190b713"
},
"customer": {
"id": "16061313"
},
"issuer_name": "UniCredit SpA",
"product_name": "World Mastercard",
"country": "IT",
"card_product_type": "debit",
"card_holder": "Fran Petrarca",
"operations": [
{
"type": "payout",
"provider": {
"result_message": "Success",
"result_code": "00",
"id": 2,
"payment_id": "135113521355",
"auth_code": "309410",
"endpoint_id": 3651,
"date": "2022-02-22T20:01:35+0000"
},
"status": "success",
"date": "2022-02-22T20:01:36+0000",
"rrn": "301360291143",
"created_date": "2022-02-22T20:01:34+0000",
"region": "domestic",
"request_id": "fda091ae66b8387af268ef81-069b9fd5ab46392fc15e3c02-00001711",
"code": "0",
"sum_initial": {
"amount": 1000,
"currency": "EUR"
},
"message": "Success",
"sum_converted": {
"amount": 1000,
"currency": "EUR"
},
"id": 5013600010130727
}
],
"signature": "hQAYY7mMIBWPaskXE/TiUZ26dm8ptxuEq/g=="
}