Thailand QR banking

Обзор

Thailand QR banking — это платёжный метод для проведения оплат с помощью сканирования QR-кода в приложении банка. Этот способ оплаты поддерживается правительством Таиланда и позволяет сканировать QR-код мобильными приложениями всех таиландских банков. Этот платёжный метод широко используется в Таиланде и позволяет проводить платежи более быстро, надёжно и безопасно по сравнению с обычным интернет-банкингом. Для работы с этим методом доступно проведение оплат через Payment Page и Gate.

Проведение оплат поддерживается двумя способами: с перенаправлением пользователя и без. Способ проведения оплат необходимо уточнять у курирующего менеджера ECommPay.

Характеристика

Тип платёжного метода платежи с помощью QR-кода
Регионы использования TH
Валюты платежей THB
Конвертация валют на стороне ECommPay; для подключения необходимо обратиться к курирующему менеджеру ECommPay
Оплаты +
Выплаты *
Оплаты по сохранённым данным
Полные возвраты
Частичные возвраты
Опротестования
Особенности
  • в рамках метода Thailand QR banking поддерживается проведение выплат на территории Таиланда с использованием метода Banks of Thailand
  • срок действия QR-кода на стороне провайдера при оплатах с перенаправлением пользователя составляет 3 минуты, без перенаправления — 24 часа.
Организация и стоимость подключения по согласованию с курирующим менеджером ECommPay

Схема работы

В проведении отдельного платежа с использованием Thailand QR banking задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ECommPay, а также технические средства Thailand QR banking.



Основные операции

Интерфейсы Суммы, THB * Время **
Payment Page CMS Plug-ins Gate Dashboard (Old Dashboard) Минимум Максимум Базовое Предельное
Оплаты + + 10,00 3 000 000,00 в течение 1 минуты

* Информацию необходимо уточнять у курирующего менеджера ECommPay.

** Базовое и предельное время определяются следующим образом:

  • Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время, определяемое для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя (там, где они необходимы). Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа.
  • Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус decline. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки ECommPay.

Сценарии использования

Проведение оплат с использованием метода Thailand QR banking выполняется с перенаправлением пользователей к сервису провайдера.

Рис.: Оплата через Payment Page с перенаправлением пользователя



Рис.: Оплата через Payment Page без перенаправления пользователя



Рис.: Оплата через Gate с перенаправлением пользователя



Рис.: Оплата через Gate без перенаправления пользователя



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

Оплаты через Payment Page с перенаправлением пользователя

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

Для оплаты через Payment Page с использованием метода Thailand QR banking со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay и принять оповещение о результате оплаты. При этом метод Thailand QR banking можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платежного метода). Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Payment Page

  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Payment Page.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. Осуществляется формирование Payment Page согласно настройкам проекта и параметрам вызова.
  6. Пользователю отображается сформированная платёжная форма.
  7. Пользователь выбирает для оплаты метод Thailand QR banking.
  8. Запрос на проведение оплаты через провайдера поступает в платёжную платформу.
  9. Выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  10. На стороне провайдера выполняется обработка запроса на оплату.
  11. От сервиса провайдера к платёжной платформе передаются данные для перенаправления пользователя в сервис провайдера.
  12. Данные для перенаправления пользователя передаются к Payment Page.
  13. Пользователь перенаправляется в сервис провайдера.
  14. Пользователь выполняет необходимые действия для оплаты.
  15. На стороне сервиса провайдера выполняется обработка платежа.
  16. Пользователь перенаправляется к Payment Page.
  17. От сервиса провайдера к платёжной платформе направляется результат оплаты.
  18. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  19. От платёжной платформы к Payment Page направляется результат проведения оплаты.
  20. Результат оплаты отображается пользователю на Payment Page.

Информация о формате запросов и параметрах вызова Payment Page при работе с Thailand QR banking, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API см. в разделе Описание Payment Page API.

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

При формировании запросов на открытие платёжной формы с применением метода Thailand QR banking необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в минорных единицах;
    • customer_id — идентификатор пользователя уникальный в рамках проекта.
  2. Для предварительного выбора метода Thailand QR banking необходимо указывать код платёжного метода в параметре force_payment_methodthai-qr.
  3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры открытия платежной формы Payment Page.
  4. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода Thailand QR banking должен содержать идентификаторы проекта, пользователя и платежа, а также валюту, сумму платежа и подпись:

    { payment_id: 'X03936', 
      payment_amount: 20000, 
      payment_currency: 'THB', 
      project_id: 123, 
      customer_id: 'customer1',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+5...ZzUCwX6R\/ekpZhkIQg=="
    }

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

Для оповещений о результатах оплат с применением метода Thailand QR banking используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 10801 для пользователя user45 была успешно проведена оплата в размере 200,00 THB.

Рис.: Пример оповещения о проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343823",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 20000,
                "currency": "THB"
            },
            "description": "ID_343823"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046538",
            "sum_initial": {
                "amount": 20000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 20000,
                "currency": "THB"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025322",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o697BE9g=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343824",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-30T10:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 20000,
                "currency": "THB"
            },
            "description": "ID_343824"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046539",
            "sum_initial": {
                "amount": 20000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 20000,
                "currency": "THB"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025323",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o797BE9g=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Payment Page без перенаправления пользователя

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

Для оплаты через Payment Page с использованием метода Thailand QR banking со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay и принять оповещение о результате оплаты. При этом метод Thailand QR banking можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платежного метода). Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Payment Page

  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Payment Page.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. Осуществляется генерация Payment Page согласно настройкам проекта и параметрам вызова.
  6. Пользователю отображается сгенерированная платёжная форма.
  7. Пользователь выбирает платёжный метод Thailand QR banking.
  8. Запрос на проведение оплаты с использованием сервиса провайдера поступает в платёжную платформу.
  9. Выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  10. На стороне провайдера выполняется обработка запроса на оплату.
  11. От сервиса провайдера к платёжной платформе передаются данные для отображения платёжной инструкции пользователю.
  12. Данные для отображения платёжной инструкции пользователю передаются к Payment Page.
  13. Пользователю отображается платёжная инструкция.
  14. Пользователь выполняет необходимые действия для оплаты согласно инструкции.
  15. На стороне провайдера выполняется обработка платежа.
  16. От сервиса провайдера к платёжной платформе направляется уведомление о результате оплаты.
  17. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  18. От платёжной платформы к Payment Page направляется результат проведения оплаты.
  19. Результат оплаты отображается пользователю на Payment Page.

Информация о формате запросов и параметрах вызова Payment Page при работе с Thailand QR banking, а также о формате оповещений о результатах оплат приведена далее; общая информация о работе с API см. в разделе Описание Payment Page API.

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

При формировании запросов на открытие платёжной формы с применением метода Thailand QR banking необходимо учитывать следующее:

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ECommPay при интеграции,
    • payment_id — идентификатор платежа, уникальный в рамках проекта,
    • payment_amount — сумма платежа без дробной части,
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • customer_id — идентификатор пользователя уникальный в рамках проекта.
  2. Для предварительного выбора метода Thailand QR banking необходимо указывать код платёжного метода в параметре force_payment_methodthai-qr.
  3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры открытия платежной формы Payment Page.
  4. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода Thailand QR banking должен содержать идентификаторы проекта, пользователя и платежа, а также валюту, сумму платежа и подпись:

    { payment_id: 'X03936', 
      payment_amount: 1000, 
      payment_currency: 'THB', 
      project_id: 123, 
      customer_id: 'customer1',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+5...ZzUCwX6R\/ekpZhkIQg=="
    }

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

Для оповещений о результатах оплат с применением метода Thailand QR banking используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 10801 для пользователя user45 была успешно проведена оплата в размере 100,00 THB.

Рис.: Пример оповещения о проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343823",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 10000,
                "currency": "THB"
            },
            "description": "ID_343823"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046538",
            "sum_initial": {
                "amount": 10000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "THB"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025322",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o697BE9g=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343824",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-30T10:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 10000,
                "currency": "THB"
            },
            "description": "ID_343824"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046539",
            "sum_initial": {
                "amount": 10000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "THB"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025323",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o797BE9g=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Gate с перенаправлением пользователя

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

Для оплаты через Gate с использованием метода Thailand QR banking со стороны веб-сервиса необходимо:

  1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay.
  2. Осуществить перенаправление в сервис провайдера.
  3. Принять оповещение от платежной платформы ECommPay о результате оплаты.

Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Gate

  1. Пользователь на стороне веб-сервиса инициирует оплату через провайдера.
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Gate.
  3. Запрос на проведение оплаты поступает в платёжную платформу ECommPay.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  6. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  7. На стороне провайдера выполняется обработка запроса на оплату.
  8. От сервиса провайдера к платёжной платформе передаются данные для перенаправления пользователя на сайт провайдера.
  9. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя в провайдера в объекте redirect_data.
  10. Пользователь перенаправляется в сервис провайдера.
  11. Пользователь выполняет необходимые действия для оплаты.
  12. На стороне сервиса провайдера выполняется обработка платежа.
  13. Пользователь перенаправляется к веб-сервису.
  14. От сервиса провайдера к платёжной платформе направляется уведомление о результате оплаты.
  15. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  16. От веб-сервиса пользователю направляется результат оплаты.

Информация о формате запросов и параметрах инициации оплат методом Thailand QR banking через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API см. в разделе Работа с API.

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

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

  1. Должен использоваться запрос /v2/payment/banks/thai-qr/sale, отправляемый методом POST. Этот запрос относится к группе запросов /v2/payment/banks/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в минорных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор на стороне веб-сервиса,
      • ip_address — IP-адрес пользователя.
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода Thailand QR banking должен содержать идентификаторы проекта и платежа, подпись, идентификатор и IP-адрес пользователя, валюту и сумму платежа:

Рис.: Пример запроса на оплату

{
    "general": {
    "project_id": 125,
    "payment_id": "ID_184",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7cV+VHq3L
                        wY3T\/pOMeSaRfBaNIipTv+AWoXW\/9MTO8yJA=="
  },
  "payment": {
    "amount": 20000,
    "currency": "THB"
  },
  "customer": {
    "ip_address": "1.1.1.1",
    "id": "123"
  }
}

Форматы данных для перенаправления пользователей

Для перенаправления пользователя от веб-сервиса на сайт провайдера необходимо принять оповещение от платёжной платформы, содержащее ссылку для перенаправления в параметре redirect_data.url и данные для отправки в теле запроса redirect_data.body, и использовать эти параметры при открытии HTML-страницы сайта методом, указанным в redirect_data.method.

Далее приведён фрагмент оповещения, содержащего данные для перенаправления.

"redirect_data": {
        "body": {
            "Data": "4dg65h72G63k68g61J6eK74I49h44i3dj41H43g50h30G30k30g33J26K43I75h73i74j49H44g3dh6dG65k72g63J68K61I6eh74i5fj31H30g26h43G75k73g74J49K50I3dh26i43j75H72g72
h3dG54k48g42J26K41I6dh6fi75j6eH74g3dh34G36k35g2eJ35K32I26h52i65j66H49g44h3dG34k30g30J30K30I30h30i30j31H30g26h54G72k61g6eJ73K54I69h6di65j3dH32g30h32G30k2dg30J34K2dI31h35i
20j31H33g3ah32G36k3ag34J33K26I52h65i74j75H72g6eh55G52k4cg3dJ68K74I74h70i3aj2fH2fg70h70G2ek74g65J72K6dI69h6ei61j6cH2eg74h65G73k74g2fJ70K72I6fh63i65j73H73g2fh63G6fk6dg70J6
cK65I74h65i2dj72H65g64h69G72k65g63J74K2fI30h66i35j62H64g36h61G30k63g75J68K73I31h37i69j34H32g6dh34G76k37g72J37K39I66h36i2fj31H30g35h65G39k63g36J61K66I38h39i66j63H33g62h64
G26k52g65J71K75I65h73i74j55H52g4ch3dG68k74g74J70K73I3ah2fi2fj65H36g61h30G31k65g63J39K2eI6eh67i72j6fH6bg2eh69G6fk2fg63J61K6cI6ch62i61j63H6bg2fh78G70k61g79J2fK26I42h61i6ej
6bH43g6fh64G65k3dg54J4dK42I2eh46i54j",
            "Remarks": "",
            "EncryptText": "8F4AC9ED17D1579A7DE5121B16A45B4F"
        },
        "method": "POST",
        "url": "http://test.com/a/payment"
    }

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

Для оповещений о результатах оплат с применением метода Thailand QR banking используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 10801 для пользователя user45 была успешно проведена оплата в размере 200,00 THB.

Рис.: Пример оповещения о проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343823",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 20000,
                "currency": "THB"
            },
            "description": "ID_343823"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046538",
            "sum_initial": {
                "amount": 20000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 20000,
                "currency": "THB"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025322",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o697BE9g=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343824",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-30T10:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 20000,
                "currency": "THB"
            },
            "description": "ID_343824"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046539",
            "sum_initial": {
                "amount": 20000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 20000,
                "currency": "THB"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025323",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o797BE9g=="
    }

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Оплаты через Gate без перенаправления пользователя

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

Для оплаты через Gate с использованием метода Thailand QR banking со стороны веб-сервиса необходимо:

  1. Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ECommPay.
  2. Отобразить пользователю инструкцию для оплаты.
  3. Принять оповещение о результате оплаты.

Полная схема проведения оплаты представлена далее.



Рис.: Проведение оплаты через Gate

  1. Пользователь на стороне веб-сервиса инициирует оплату через сервис провайдера.
  2. От веб-сервиса на заданный URL ECommPay передаётся запрос на проведение оплаты через Gate.
  3. Запрос на проведение оплаты поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  6. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис провайдера.
  7. На стороне провайдера выполняется обработка запроса на оплату.
  8. От сервиса провайдера к платёжной платформе передаются данные для отображения инструкции пользователю.
  9. От платёжной платформы к веб-сервису направляется оповещение с данными для отображения платёжной инструкции пользователю.
  10. Пользователю отображается платёжная инструкция.
  11. Пользователь выполняет необходимые действия для оплаты согласно инструкции.
  12. На стороне сервиса провайдера выполняется обработка платежа.
  13. От сервиса провайдера к платёжной платформе направляется уведомление о результате оплаты.
  14. От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
  15. От веб-сервиса пользователю направляется результат оплаты.

Информация о формате запросов и параметрах инициации оплат методом Thailand QR banking через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API см. в разделе Работа с API.

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

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

  1. Должен использоваться запрос к конечной точке /v2/payment/banks/thai-qr/sale, отправляемый методом POST. Этот запрос относится к группе запросов /v2/payment/banks/{payment_method}/sale.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ECommPay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в минорных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор на стороне веб-сервиса,
      • ip_address — IP-адрес пользователя.
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода Thailand QR banking должен содержать идентификаторы проекта и платежа, подпись, идентификатор и IP-адрес пользователя, валюту и сумму платежа:

Рис.: Пример запроса на оплату

{
    "general": {
    "project_id": 125,
    "payment_id": "ID_184",
    "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQfBaNIipTv+AWoXW\/9MTO8yJA=="
  },
  "payment": {
    "amount": 10000,
    "currency": "THB"
  },
  "customer": {
    "ip_address": "56.57.73.28",
    "id": "123"
  }
}

Форматы данных для отображения платёжной инструкции

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

Массив display_data содержит следующие параметры:

  • type — тип передаваемых данных (в значении всегда передаётся qr_img);
  • title — название передаваемых данных, которые необходимо отобразить пользователю (в значении всегда передаётся QR code);
  • data — строка Base64 с закодированным изображением QR-кода в формате PNG.

Далее приведён фрагмент оповещения, содержащего данные для отображения пользователю.

"display_data": [
            {
                "type": "qr_img",
                "title": "QR code",
                "data": "iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAMAAAAL34HQAAAAHnRFWHRTb
ZQBid2lwLWpzLm1ldGFmbG9vci5jb21Tnbi0AAAABlBMVEUAAAAAAAClZ7nPAAAAAnRSTlMA/1uRIrUAAA
RBVHic7dBBDoNADENRuP+lK1UsqII9Dm035Hs1ymSSB9seZ3tHVbq3i12wYI1kbTZ5T+1UxMUuWLAGs/Ya
15KzFLliwYFlWvgAWLFj/ZtXF6hUsWLC6LL/YL+uyFrtgwRrJSqKI3XO0CxasYax78YN+sAAWrGGs82M1K
cN3O4wwL1niWQqhbVckRF5NhwRrM8mu6C/xiH1iwZrLqoOSc0G8GFqxhrHy9p+Sf599+dMKCNYxVH/i6Wh
YJgwRrAqiX/YC9R9XzORQUWrGGsc2rJV3JEjfoRi1ZYsB7KUkOTWzXnXmDBmszqpjvOf8a9mbBgPY9VSyn
pqRNLvzxdcWLBGsur1RWscRfQzPyqwYA1mqXFqhErSs5gACxasJmsTaSDUY1iwYAmWuk3ojTmwYA1mqaiV
/pV/q7iNBbBgPY6VxA9NOhPWcYYFaxbrBVS4L9HPWjfsAAAAAElFTkSuQmCC"
            }
]

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

Для оповещений о результатах оплат с применением метода Thailand QR banking используется стандартный формат, описание которого представлено в разделе Оповещения.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 10801 для пользователя user45 была успешно проведена оплата в размере 100,00 THB.

Рис.: Пример оповещения о проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343823",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 10000,
                "currency": "THB"
            },
            "description": "ID_343823"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "success",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046538",
            "sum_initial": {
                "amount": 10000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "THB"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025322",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o697BE9g=="
    }

В следующем примере оплата была отклонена.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 10801,
        "payment": {
            "id": "ID_343824",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-30T10:13:03+0000",
            "method": "thai-qr",
            "sum": {
                "amount": 10000,
                "currency": "THB"
            },
            "description": "ID_343824"
        },
        "customer": {
            "id": "user45"
        },
        "operation": {
            "id": 46537000023131,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-30T09:13:03+0000",
            "created_date": "2020-04-30T09:11:58+0000",
            "request_id": "aa5b011113d2a996...2c108b2a1f984-00046539",
            "sum_initial": {
                "amount": 10000,
                "currency": "THB"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "THB"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 2801,
                "payment_id": "2020043089025323",
                "auth_code": ""
            }
        },
        "signature": "HEQWgpV+yzSkG1QZ...Zmz9FPvJUlZ6f+/o797BE9g=="
    }

Дополнительные материалы

Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:

Анализ результатов проведения платежей

Как и при работе с другими платёжными методами, которые предоставляет ECommPay, при использовании метода Thailand QR banking доступны разные способы анализа информации о платежах и операциях с применением этого метода — как в отдельности, так и в совокупности с другими методами.

Всю необходимую информацию можно получать и анализировать средствами Dashboard (Old Dashboard), в том числе с помощью аналитических панелей на вкладке Analytics.

Также можно выгружать нужную информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:

  • Dashboard (Old Dashboard) позволяет выгружать данные в форматах CSV и XLS с помощью инструментов на вкладке Платежи. При этом можно выполнять разовые выгрузки информации на локальный компьютер и задействовать периодическую выгрузку и отправку информации на заданные адреса электронной почты.
  • Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы /operations/get.

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