Использование сервисов Mastercard MoneySend и Visa Direct

Общая информация

В платёжной платформе Flashpay поддерживается возможность использования сервисов Mastercard MoneySend и Visa Direct, которые упрощают проведение денежных переводов между пользователями и мерчантами. В рамках этих сервисов доступны операции, позволяющие списывать средства с пользователей-„отправителей“ и зачислять средства пользователям-„получателям“. Такие списания и зачисления могут выполняться по отдельности и в различных комбинациях, при этом поступление средств на целевые счета согласно требованиям платёжных систем должно занимать не более 30 минут, что обеспечивает довольно высокую скорость переводов и удобство пользователей.

Основные свойства этих операций можно представить следующим образом.

Списание Зачисление
Операция в сервисе Mastercard MoneySend Funding transaction (FT) Payment transaction (PT)
Операция в сервисе Visa Direct Account Funding Transaction (AFT) Original Credit Transaction (OCT)
Техническая операция в платформе Flashpay sale payout
Допустимые платёжные методы

Карточные платежи

Карточные платежи

Допустимые платёжные инструменты пользователей Платёжные карты Mastercard или Visa Платёжные карты Mastercard или Visa
Возможность отмены операции после её выполнения +

(с ограничениями по времени)

Примеры использования
  • Пополнение пользовательского счёта в сервисе мерчанта
  • Первая часть перевода с карты на карту (со списанием средств со счёта отправителя)
  • Выплата средств пользователю
  • Вторая часть перевода с карты на карту (с зачислением средств на счёт получателя)

Поскольку в платформе Flashpay эти операции выполняются как sale и payout (с определённым набором параметров), для их инициирования могут использоваться любые подходящие интерфейсы: для оплат не только Gate, но и Payment Page и SDK для мобильных приложений, а для выплат Gate и Dashboard.

По вопросам, касающимся ограничений в применении сервисов Mastercard MoneySend и Visa Direct и подключения к ним, можно обращаться к курирующему менеджеру Flashpay.

Схемы выполнения операций

Общий порядок работы

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

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

Как и с другими видами оплат и выплат в платёжной платформе Flashpay, при При работе со списаниями и зачислениями в рамках сервисов Mastercard MoneySend и Visa Direct можно использовать разные способы указания реквизитов платёжных карт. Это:

  • Реквизиты (в явном виде) — с указанием номера карты, срока её действия, держателя и кода проверки подлинности;
  • Произвольный идентификатор реквизитов — с указанием идентификатора, ранее ассоциированного в платёжной платформе с реквизитами используемой карты (подробнее);
  • Стандартизированный токен реквизитов — с указанием токена, ранее ассоциированного в платёжной платформе с реквизитами используемой карты (подробнее).

Списания

Чтобы выполнить списание средств через Gate, со стороны веб-сервиса необходимо:

  1. Отправить запрос к конечной точке /v2/payment/card/sale[/форма указания реквизитов платёжного инструмента].
  2. При необходимости выполнить аутентификацию пользователя с использованием протокола 3-D Secure (подробнее).
  3. Принять от платёжной платформы оповещение о результате списания.

Формат запроса на списание описан далее, в разделе Форматы запросов этой статьи.

Отмены списаний

В некоторых случаях может быть актуальной отмена списания. Технически в платформе такая отмена выполняется как возврат и инициируется через запрос к конечной точке /v2/payment/card/refund. При этом следует учитывать, что согласно требованиям платёжных систем отменить списание можно только на полную сумму и только в установленные сроки.

Для карт платёжной системы Visa запрос на такую отмену допустимо отправлять в течение первых суток с момента списания, для карт платёжной системы Mastercard настоятельно рекомендуется делать это в течение трёх рабочих дней. По истечении этих сроков с вопросами об отмене списаний следует обращаться к сотрудникам технической поддержки Flashpay.

Зачисления

Чтобы выполнить зачисление средств через Gate, со стороны веб-сервиса необходимо:

  1. Отправить запрос к конечной точке /v2/payment/card/payout[/token].
  2. Принять от платёжной платформы оповещение о результате зачисления.

Формат запроса на зачисление описан далее, в разделе Форматы запросов этой статьи.

Форматы запросов

Запрос на списание

При формировании запросов на списание необходимо учитывать следующее:

  1. POST-запрос должен отправляться к одной из следующих конечных точек:
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от Flashpay;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным);
    • payment — объект, содержащий сведения о списании:
      • amount — сумма списания с платёжной карты отправителя (пользователя), в дробных единицах валюты;
      • currency — код валюты списания в формате ISO-4217 alpha-3;
    • customer — объект, содержащий сведения об отправителе (пользователе):
      • id — идентификатор пользователя в рамках проекта;
      • ip_address — IP-адрес пользователя;
      • country — код страны пользователя в формате ISO 3166-1 alpha-2;
      • address — адрес проживания пользователя, обязательный при использовании карт Visa;
      • city — название города проживания (или иного населённого пункта) пользователя, обязательное при использовании карт Visa;
      • state — код штата или провинции пользователя, обязательный для случаев с последующим зачислением списываемых средств на карту Visa, выпущенную в США или Канаде;
      • phone — номер телефона пользователя, обязательный для случаев с последующим зачислением списываемых средств на карту Visa, выпущенную в Бразилии или Катаре;
      • account_id — номер кошелька получателя, обязательный при использовании карт Mastercard.
  3. В запросе должны содержаться сведения о платёжной карте отправителя (пользователя):
    • При передаче реквизитов в явном виде — следующие данные в объекте card:
      • pan — номер карты;
      • year — год окончания срока действия карты;
      • month — порядковый номер месяца срока действия карты;
      • card_holder — имя и фамилия держателя карты (в соответствии с указанными на карте);
      • cvv — код проверки подлинности карты.
    • При передаче идентификатора реквизитов — следующие данные в объекте card:
      • saved_account_id — идентификатор, ассоциированный в платёжной платформе с реквизитами используемой карты;
      • cvv — код проверки подлинности карты.
    • При передаче токена реквизитов — следующие данные:
      • token — токен, ассоциированный в платёжной платформе с реквизитами используемой карты;
      • cvv — код проверки подлинности карты.
  4. В запросе должны содержаться сведения о получателе и его платёжном инструменте:
    • При передаче реквизитов карты — следующие данные в объекте recipient:
      • pan — номер платёжной карты получателя;
      • card_holder — имя и фамилия держателя карты (в соответствии с указанными на карте).
    • При передаче реквизитов карты Visa, выпущенной в Канаде — следующие данные (в дополнение к реквизитам):
      • country — код страны получателя в формате ISO 3166-1 alpha-2;
      • address — адрес проживания получателя;
      • city — название города проживания (или иного населённого пункта) получателя;
      • state_code — код штата или провинции получателя.
  5. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на списание должен содержать идентификаторы проекта и платежа, подпись, код валюты и сумму списания, сведения об отправителе, а также реквизиты платёжных карт отправителя и получателя в одной из применимых форм.

В следующем примере представлены данные тела запроса на списание с карты Visa c последующим зачислением списываемых средств на карту Mastercard.

Рис. 1. Пример тела запроса на списание
{
                    "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"
                    }
                    }

Запрос на зачисление

При формировании запросов на зачисление необходимо учитывать следующее:

  1. POST-запрос должен отправляться к одной из следующих конечных точек:
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от Flashpay;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным);
    • payment — объект, содержащий сведения о зачислении:
      • amount — сумма зачисления на платёжную карту получателя в дробных единицах валюты;
      • currency — код валюты зачисления в формате ISO-4217 alpha-3;
    • customer — объект, содержащий сведения об отправителе:
      • id — идентификатор пользователя (отправителя) в рамках проекта;
      • ip_address — адрес пользователя.
  3. В запросе должны содержаться сведения о платёжной карте получателя:
    • При передаче реквизитов в явном виде — следующие данные в объекте card:
      • pan — номер платёжной карты получателя;
      • card_holder — имя и фамилия получателя (в соответствии с указанными на карте);
    • При передаче токена реквизитов:
      • token — токен, ассоциированный в платёжной платформе с реквизитами используемой карты.
  4. В запросе должны содержаться сведения об отправителе и его платёжном инструменте, включаемые в состав объекта sender:
    • Данные о платёжном инструменте отправителя, указываемые в одном из следующих параметров:
      • pan — номер платёжной карты отправителя.
    • Данные об отправителе, в числе которых рекомендуется передавать следующие параметры:
      • country — код страны отправителя в формате ISO 3166-1 alpha-2;
      • city — название города проживания (или иного населённого пункта) отправителя;
      • address — адрес проживания отправителя;
      • first_name — имя отправителя;
      • last_name — фамилия отправителя;
      • state — код штата или провинции отправителя, обязательный для случаев, если страна отправителя — США или Канада;
      • zip — почтовый индекс отправителя, обязательный при использования карты Mastercard;
      • phone — номер телефона отправителя, обязательный для случаев зачисления средств на карту Visa, выпущенную в Бразилии или Катаре.
  5. В запросе должны содержаться следующие сведения о получателе в объекте recipient:
    • first_name — имя получателя;
    • last_name — фамилия получателя.
  6. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

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

В следующем примере представлены данные тела запроса на зачисление средств на карту Mastercard, при этом списание было осуществлено с карты Visa.

Рис. 2. Пример тела запроса на зачисление
{
                    "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"
                    }
                    
                    }

Формат оповещений

Для оповещений о результате выполнения операций списания и зачисления в рамках использования сервисов Mastercard MoneySend и Visa Direct используется типовой формат, описание которого представлено в разделе Работа с оповещениями.

Рис. 3. Пример данных из оповещения о выполнении списания
    {
        "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=="
    }
Рис. 4. Пример данных из оповещения о выполнении зачисления
    {
        "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=="
    }