Переводы
Помимо этой статьи для работы с переводами может быть полезна статья Перевод с описанием того, как в целом проводятся переводы в платёжной платформе Flashpay, какие операции при этом используются и как меняются статусы этих платежей и операций.
Общая информация
Перевод — это тип платежа, в рамках которого на основании одного исходного запроса для перевода денежных средств от отправителя к получателю последовательно выполняются две операции: списание средств отправителя и зачисление средств получателю. При этом в разных случаях отправителем и получателем могут выступать как одни и те же, так и разные пользователи, для списания и зачисления средств могут использоваться различные платёжные инструменты, а мерчант каждый раз выступает в роли посредника, предоставляющего сервис для таких переводов.
Схемы проведения
Чтобы провести перевод через Gate, необходимо:
- Отправить запрос к конечной точке/v2/payment/money_transfer .
- При необходимости выполнить вспомогательные процедуры (такие как Аутентификация 3‑D Secure).
- Принять от платёжной платформы оповещение о результате перевода.
В общем случае, без выполнения вспомогательных процедур, схема проведения перевода выглядит следующим образом.
- Пользователь (отправитель перевода) на стороне веб-сервиса инициирует перевод.
- От веб-сервиса на заданный URL Flashpay передаётся запрос на проведение платежа.
- Запрос на проведение платежа поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- В платёжной платформе выполняется обработка запроса.
- От платёжной платформы к платёжной системе отправителя направляется запрос на списание средств.
- На стороне платёжной системы отправителя выполняется обработка запроса на списание средств.
- От платёжной системы отправителя в платёжную платформу направляется уведомление о результате.
- В платёжной платформе выполняется обработка полученного результата.
- От платёжной платформы к платёжной системе получателя направляется запрос на зачисление средств.
- На стороне платёжной системы получателя выполняется обработка запроса на зачисление средств.
- От платёжной системы получателя в платёжную платформу направляется уведомление о результате.
- От платёжной платформы к веб-сервису направляется оповещение о результате платежа.
- От веб-сервиса пользователю направляется результат проведения перевода.
Формат запросов
При формировании запросов на перевод в общем случае необходимо руководствоваться спецификацией конечной точки /v2/payment/money_transfer, а в случае с переводом с одной платёжной карты на другую (что можно считать типовым вариантом перевода) необходимо учитывать следующее:
- POST-запрос должен отправляться к конечной точке - /v2/payment/money_transfer
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от Flashpay при интеграции;payment_id— идентификатор платежа, уникальный в рамках проекта мерчанта;signature— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Работа с подписью к данным);
customer— объект, содержащий сведения об отправителе:id— идентификатор пользователя (отправителя) в рамках проекта мерчанта;ip_address— актуальный IP-адрес;country— код страны адреса пользователя в формате ISO 3166-1 alpha-2;city— название города проживания пользователя (или иного населенного пункта);first_name— имя пользователя;last_name— фамилия пользователя;zip— почтовый индекс пользователя;address— название улицы и номер дома (с обозначением корпуса или строения, где это актуально) в адресе проживания пользователя;phone— номер телефона отправителя перевода, который должен передаваться в случаях, если зачисление средств выполняется на карту платёжной системы Visa, выпущенную в Бразилии или Катаре;
recipient_customer— объект, содержащий сведения о получателе:first_name— имя получателя;last_name— фамилия получателя;phone— номер телефона получателя;email— адрес электронной почты получателя;
payment— объект, содержащий сведения о переводе:sender_payment_method— код платёжного метода для операции списания;recipient_payment_method— код платёжного метода для операции зачисления;sender_amount— сумма, списываемая с отправителя, в дробных единицах валюты;sender_currency— код валюты для списываемой суммы в формате ISO-4217 alpha-3;recipient_amount— сумма, зачисляемая получателю, в дробных единицах валюты;recipient_currency— код валюты для зачисляемой суммы в формате ISO-4217 alpha-3.
- В запросе должны содержаться сведения о платёжном инструменте отправителя. При передаче реквизитов в явном виде — следующие данные в объекте
sender:pan— номер платёжной карты (без пробелов и иных разделителей);year— номер года, в котором заканчивается срок действия карты (в четырёхзначном формате YYYY по григорианскому календарю)month— номер месяца, в котором заканчивается срок действия карты (в виде числа, без ведущего нуля);card_holder— имя и фамилия держателя карты (в соответствии с указанными на карте);cvv— код проверки подлинности карты.
- В запросе должны содержаться сведения о платёжном инструменте получателя. При передаче реквизитов в явном виде — следующие данные в объекте
recipient:pan— номер платёжной карты (без пробелов и иных разделителей);card_holder— имя и фамилия держателя карты (в соответствии с указанными на карте).
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на перевод с одной платёжной карты на другую должен содержать идентификаторы проекта и платежа, набор сведений об отправителе, о платёжных инструментах отправителя и получателя, о методах, валютах и суммах списания и зачисления, а также подпись ко всем передаваемым данным.
{
"general":{
"project_id": 440694,
"payment_id": "ORDER_9777113840",
"signature": "QsbTriwuNYLzqDYMm/roHPirhlvRpsuCm4yt0yiWNhWviXsmTvE8TKjsEdzQXrakGLIzA1G/eHzOno5HQLEusA=="
},
"recipient":{
"number": "4242424242424242"
},
"sender":{
"pan":"4314220000000056",
"year":2024,
"month":10,
"card_holder":"Gio Boccaccio",
"cvv":"334"
},
"payment":{
"sender_amount": 10000,
"sender_currency": "RUB",
"sender_payment_method":"card",
"recipient_amount": 10000,
"recipient_currency": "TRY",
"recipient_payment_method":"bank-transfer/turkey"
},
"customer":{
"id": "Vally",
"first_name": "Orhan",
"last_name": "Pamuk",
"ip_address": "1.0.4.0"
},
"recipient_customer":{
"first_name": "Fatma",
"last_name": "Aliye",
"phone": "3572437356",
"email": "test@example.com"
}
}
Формат оповещений
Для оповещения о результате проведения перевода используется типовой формат, описание которого представлено в статье Работа с оповещениями.
В следующем примере содержится информация о проведении перевода на 1103,40 KGS.
{
"payment": {
"date": "2025-07-11T12:17:54+0000",
"method": "card",
"sum":{ //сумма и валюта для зачисления
"amount": 110340,
"currency": "KGS"
},
"id": "TEST-a758f-d60e1fbedac9",
"type": "money_transfer",
"status":"success", //статус платежа
"description": ""
},
"customer": {
"id": "id_123"
},
"project_id": 123456,
"transaction_id": 4229011111725,
"account": {
"token": "8ebc66******5bda"
},
"operation": {
"provider": {
"id": 17171,
"payment_id": "",
"auth_code": "",
"endpoint_id": 17171
},
"id": 4223333361,
"type": "payout",
"status": "success", //статус операции
"date": "2025-07-11T12:17:54+0000",
"sum_initial": { //сумма и валюта списания
"amount": 110340,
"currency": "KGS"
},
"created_date": "2025-07-11T12:13:20+0000",
"request_id": "136b7768d6d0f61ce0b37df10db5d31e2c583b3b-6119161ce395c4f85580ce8564cd5c33fa93af79-00004230",
"sum_converted": {
"amount": 110340,
"currency": "KGS"
},
"code": "0",
"message": "Success",
"provider_result_message": "4438605b-7ed5-4b8a-b8b6-c1e432bdd49a"
},
"signature": "hcRRMWCZVFn2EMJF/DyioPnI0A7Rx8/pd8/RxCpfR925AzD********E2MNYJS+6ggxIrA=="
}
В следующем примере содержится информация о том, что при проведении перевода операция списания была отклонена.
{
"payment": {
"date": "2025-07-03T12:46:46+0000",
"method": "card",
"sum": { //сумма и валюта для зачисления
"amount": 1581370,
"currency": "KGS"
},
"id": "c6b9a212-49c8-46c1-a2ef-723a7bc7913b",
"type": "money_transfer",
"status": "decline", //статус платежа
"description": ""
},
"customer": {
"id": ""
},
"project_id": 123456,
"transaction_id": 32474444442133,
"operation": {
"provider": {
"id": 1234,
"payment_id": "",
"auth_code": "",
"endpoint_id": 12345
},
"id": 32474555552133,
"type": "sale",
"status": "decline", //статус операции
"date": "2025-07-03T12:46:46+0000",
"sum_initial": { //сумма и валюта списания
"amount": 1450000,
"currency": "RUB"
},
"created_date": "2025-07-03T12:46:44+0000",
"request_id": "e9ce08af7b59ded5ab566ffa5414adbee41e5ca7-b3c212f516a734808d43261bc4b9b16c8879bb27-00032474",
"sum_converted": { //сумма списания с учётом конвертации
"amount": 1450000,
"currency": "RUB"
},
"code": "402",
"message": "RCS reject. Declined by Risk System",
"provider_result_message": "Reject. User is Blacklisted"
},
"signature": "7e4BiLc++RpdU6JF7EpFXMQs+9E2x+vojwhFN*****TyoXByY237YhObdilSkPtyoQ=="
}
В следующем примере содержится информация о том, что при проведении перевода операция зачисления средств была отклонена и была выполнена отмена списания средств.
{
"payment": {
"date": "2025-07-11T12:09:23+0000",
"method": "card",
"sum": { //сумма и валюта для зачисления
"amount": 10340,
"currency": "KGS"
},
"id": "b9f12d84-7fe8-432a-960c-43f944d7baa6",
"type": "money_transfer",
"status": "refunded", //статус платежа
"description": ""
},
"customer": {
"id": "12345"
},
"project_id": 123456,
"transaction_id": 8863012221737,
"account": {
"token": "3185c5******fec8"
},
"operation": {
"provider": {
"id": 1234,
"payment_id": "TEST_12334",
"auth_code": "",
"endpoint_id": 12345,
"date": "2025-07-11T15:09:13+0000"
},
"id": 8863013331737,
"type": "refund",
"status": "success", //статус операции
"date": "2025-07-11T12:09:23+0000",
"sum_initial": { //сумма и валюта списания
"amount": 100000,
"currency": "RUB"
},
"created_date": "2025-07-11T12:09:11+0000",
"request_id": "refund_6870fee7dfdb46.45981500-00008864",
"sum_converted": { //сумма списания с учётом конвертации
"amount": 100000,
"currency": "RUB"
},
"code": "0",
"message": "Success",
"provider_result_message": "Successful financial transaction"
},
"signature": "ifl3yDCTJ5ycd0RXAKBavEhvnaQvXy5******HaHDT371+xp0G6cQzR/ODTSb5IdUICQg9fA=="
}