QRIS
Обзор
Введение
QRIS — метод, позволяющий проводить платежи в индонезийских рупиях с использованием банковских счетов и электронных кошельков в Индонезии. Для работы с этим методом могут использоваться различные приложения, поддерживающие работу со стандартом QRIS (Quick Response Code Indonesian Standard). Для этого метода в платёжной платформе ecommpay поддерживаются оплаты.
В этой статье представлена информация о работе с методом QRIS: обзорный раздел с общими сведениями и последующие разделы с информацией о действиях, необходимых со стороны мерчанта для решения разных задач.
Характеристика
| Тип платёжного метода | платежи с помощью QR-кодов |
|---|---|
| Платёжные инструменты |
|
| Регионы использования | ID |
| Валюты платежей | IDR |
| Конвертация валют | на стороне ecommpay |
| Разовые оплаты | + |
| Повторяемые оплаты | – |
| Полные возвраты | – |
| Частичные возвраты | – |
| Выплаты | – |
| Опротестования | + |
| Особенности | при использовании валюты IDR не поддерживается обработка платежей, для которых сумма платежа указана с дробной частью. В запросе на оплату с указанием валюты IDR сумму оплаты необходимо округлять до целых чисел. Если в запросе указывается иная валюта, сумма платежа конвертируется на стороне ecommpay в эквивалентную сумму в валюте IDR и также округляется до целых чисел. Информацию об особенностях округления суммы следует уточнять у специалистов технической поддержки ecommpay. |
| Организация и стоимость подключения | по согласованию с курирующим менеджером ecommpay |
Схема работы
В проведении отдельного платежа с использованием метода QRIS задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, а также технические средства сервиса провайдера.
Основные операции
Для проведения платежей и выполнения операций с использованием метода QRIS могут применяться различные интерфейсы платёжной платформы. Так, оплаты могут проводиться через Payment Page, Gate и Dashboard (с применением платёжных ссылок). При этом, независимо от используемых интерфейсов, для этого метода характерны следующие ограничения.
При работе с методом QRIS, независимо от используемых интерфейсов, актуальны следующие ограничения.
| Суммы, IDR | ||
|---|---|---|
| минимум | максимум | |
| Оплаты | 10 000,00 | 2 000 000,00 |
Сценарии использования
Проведение оплат с использованием метода QRIS осуществляется с отображением платёжной инструкции.
Пользовательский сценарий оплаты через Payment Page (в базовом варианте с выбором пользователем метода и перенаправлением с итоговой страницы платёжной формы к веб-сервису) выглядит следующим образом.
Общие сценарии проведения оплат можно представить следующим образом.
Оплаты через Payment Page
Общая информация
Для проведения оплаты через Payment Page с использованием метода QRIS со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения оплаты выглядит следующим образом.
- Пользователь на стороне веб-сервиса инициирует оплату.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Payment Page.
- Запрос на проведение оплаты поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой наличия обязательных параметров и корректной подписи.
- Осуществляется подготовка Payment Page согласно параметрам проекта и вызова.
- Пользователю отображается платёжная форма.
- Пользователь выбирает для оплаты метод QRIS.
- В платёжную платформу передаётся запрос на проведение оплаты с использованием метода QRIS.
- В платёжной платформе обеспечиваются обработка полученного запроса.
- Данные для отображения платёжной инструкции пользователю передаются к Payment Page.
- Пользователю отображается платёжная инструкция.
- Пользователь выполняет необходимые действия для оплаты согласно инструкции.
- В сервисе провайдера выполняется обработка платежа.
- От сервиса провайдера к платёжной платформе направляется информация о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
- От платёжной платформы к Payment Page направляется информация о результате оплаты.
- Информация о результате оплаты отображается пользователю на Payment Page.
Информация о форматах запросов и оповещений, используемых для проведения оплат методом QRIS через Payment Page, приведена далее в этом разделе; общая информация о работе с Payment Page API — в отдельной статье Организация взаимодействия.
Формат запросов
При формировании запросов на открытие платёжной формы с применением метода QRIS необходимо учитывать следующее:
- Должен использоваться базовый минимум параметров, обязательный для любого платежа:
project_id— идентификатор проекта, полученный от ecommpay при интеграции.payment_id— идентификатор платежа, уникальный в рамках проекта.payment_currency— код валюты платежа в формате ISO-4217 alpha-3.payment_amount— сумма платежа в дробных единицах валюты. При использовании валюты IDR в запросе на оплату сумму платежа необходимо округлять до целых чисел. Если в запросе указывается иная валюта, то сумма платежа конвертируется на стороне ecommpay в эквивалентную сумму в валюте IDR и также округляется до целых чисел. Информацию об особенностях округления суммы следует уточнять у специалистов технической поддержки ecommpay.customer_id— идентификатор пользователя в рамках проекта.
- Должен использоваться базовый минимум параметров:
project_id,payment_id,payment_currency,payment_amount,customer_id. - Дополнительно может потребоваться указывать имя и фамилию пользователя в параметрах
customer_first_nameиcustomer_last_name. Необходимость использования этих параметров следует уточнять у курирующего менеджера ecommpay. - Для предварительного выбора метода QRIS необходимо указывать код платёжного метода
indonesia-qrв параметреforce_payment_method. - Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page (подробнее).
- После указания всех целевых параметров необходимо составлять подпись (подробнее).
Таким образом, корректный запрос на открытие платёжной формы с применением метода QRIS должен содержать идентификатор проекта, базовые сведения о платеже (идентификатор, сумму и код валюты), информацию о пользователе и подпись.
{
"project_id": 120,
"payment_id": "580",
"payment_amount": 1000000,
"payment_currency": "IDR",
"customer_id": "customer1",
"customer_first_name": "John",
"customer_first_name": "Doe",
"signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}
{
"project_id": 120,
"payment_id": "580",
"payment_amount": 1000000,
"payment_currency": "IDR",
"customer_id": "customer1",
"customer_first_name": "John",
"customer_first_name": "Doe",
"signature": "kUi2x9dKHAVNU0FYldOcZzUCwX6R\/ekpZhkIQg=="
}
Формат оповещений
Для оповещений о результатах оплат с применением метода QRIS используется типовой формат, описание которого представлено в разделе Работа с оповещениями.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 1234 была проведена оплата в размере 100 000,00 IDR.
{
"project_id": 1234,
"payment": {
"id": "ABC12345",
"type": "purchase",
"status": "success",
"date": "2021-06-03T09:18:49+0000",
"method": "indonesia-qr",
"sum": {
"amount": 10000000,
"currency": "IDR"
},
"description": ""
},
"customer": {
"id": "customer1"
},
"operation": {
"id": 66524010061681,
"type": "sale",
"status": "success",
"date": "2021-06-03T09:18:49+0000",
"created_date": "2021-06-03T09:04:56+0000",
"request_id": "312be99ad68be48100c724ce274066525",
"sum_initial": {
"amount": 10000000,
"currency": "IDR"
},
"sum_converted": {
"amount": 10000000,
"currency": "IDR"
},
"code": "0",
"message": "Success",
"provider": {
"id": 5861,
"payment_id": "32376801d1f6b6b6406...a02b4e45c",
"auth_code": "",
"date": "2021-06-03T09:18:39+0000"
}
},
"signature": "LaWvR4EPqYRvsuU7Hl0H09l6uYR0trjaJxLAhCBsxA=="
}
}
В следующем примере оповещение свидетельствует об отклонённой оплате.
{
"id": "7890",
"type": "purchase",
"status": "decline",
"date": "2021-06-04T06:19:47+0000",
"method": "indonesia-qr",
"sum": {
"amount": 1000000,
"currency": "IDR"
},
"description": ""
},
"customer": {
"id": "1"
},
"operation": {
"id": 79864010068961,
"type": "sale",
"status": "decline",
"date": "2021-06-04T06:19:47+0000",
"created_date": "2021-06-03T06:19:31+0000",
"request_id": "1504560d8c125cb12199c320ac41c...079865",
"sum_initial": {
"amount": 1000000,
"currency": "IDR"
},
"sum_converted": {
"amount": 1000000,
"currency": "IDR"
},
"code": "20000",
"message": "General decline",
"provider": {
"id": 5861,
"payment_id": "3237eceb715dc5ac46eb80edbde6fe2e24d4",
"auth_code": ""
}
},
"signature": "/NAM67hU7V7/tOQHaWOIRg68e8jhN6GIyC5idy9hiQ=="
}
Дополнительные материалы
Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:
- Организация взаимодействия — о том, как организовать взаимодействие веб-сервиса с платёжной платформой через Payment Page.
- Работа с подписью к данным — о порядке создания и проверки подписи в программных запросах и оповещениях при взаимодействии с платёжной платформой.
- Проведение платежей — о типах, схемах проведения и возможных статусах поддерживаемых платежей и операций.
- Проведение оплат — о том, как проводить разовые оплаты через Payment Page.
- Работа с информацией об операциях — о служебных кодах, которые используются в платёжной платформе, чтобы фиксировать информацию о выполнении операций.
Оплаты через Gate
Общая информация
Для проведения оплаты через Gate с использованием метода QRIS со стороны веб-сервиса необходимо:
- Отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay.
- Принять промежуточное оповещение от платёжной платформы и отобразить платёжную инструкцию пользователю.
- Принять итоговое оповещение от платёжной платформы.
Полная схема проведения оплаты выглядит следующим образом.
- Пользователь на стороне веб-сервиса инициирует оплату с использованием метода QRIS.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Gate.
- Запрос на проведение оплаты поступает в платёжную платформу ecommpay.
- В платёжной платформе выполняется приём запроса с проверкой наличия обязательных параметров и корректной подписи.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности (подробнее).
- В платёжной платформе выполняются дальнейшая обработка запроса (с проверкой согласованности параметров).
- От платёжной платформы к веб-сервису направляется оповещение с данными для отображения платёжной инструкции пользователю.
- Пользователю на стороне веб-сервиса отображается платёжная инструкция.
- Пользователь выполняет необходимые действия для оплаты согласно инструкции.
- В сервисе провайдера выполняется обработка платежа.
- От сервиса провайдера к платёжной платформе направляется информация о результате оплаты.
- От платёжной платформы к веб-сервису направляется оповещение о результате оплаты.
- На стороне веб-сервиса обеспечивается информирование пользователя о результате оплаты.
Информация о форматах запросов и оповещений, используемых для проведения оплат методом QRIS через Gate, приведена далее в этом разделе; общая информация о работе с Gate API — в отдельной статье Организация взаимодействия.
Формат запросов
При работе с запросами на оплаты с применением метода QRIS необходимо учитывать следующее:
- Для инициирования каждой оплаты должен использоваться отдельный POST-запрос к конечной точке
/v2/payment/banks/indonesia-qr/sale. Эта точка относится к группе /v2/payment/banks/{payment_method}/sale. - В каждом запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от ecommpay при интеграции.payment_id— идентификатор платежа, уникальный в рамках проекта.signature— подпись запроса, составленная после указания всех целевых параметров (подробнее — в разделе Работа с подписью к данным) (подробнее).
payment— объект, содержащий сведения о платеже:amount— сумма платежа в дробных единицах валюты; При использовании валюты IDR в запросе на оплату сумму платежа необходимо округлять до целых чисел. Если в запросе указывается иная валюта, то сумма платежа конвертируется на стороне ecommpay в эквивалентную сумму в валюте IDR и также округляется до целых чисел. Информацию об особенностях округления суммы следует уточнять у специалистов технической поддержки ecommpay.currency— код валюты платежа в формате ISO-4217 alpha-3.
customer— объект, содержащий сведения о пользователе:id— идентификатор пользователя, уникальный в рамках проекта.ip_address— IP-адрес пользователя, актуальный для инициируемого платежа.
- Дополнительно может потребоваться указывать следующие объекты и параметры:
customer— объект, содержащий сведения о пользователе:first_name— имя пользователя,last_name— фамилия пользователя;
return_url— объект, содержащий URL для перенаправления пользователя в веб-сервис:return— URL для перенаправления пользователя на любом шаге оплаты.
Необходимость использования этих параметров следует уточнять у курирующего менеджера ecommpay.
- Дополнительно могут использоваться любые другие параметры из числа указанных в спецификации.
Таким образом, корректный запрос на оплату с применением метода QRIS должен содержать идентификатор проекта, базовые сведения о платеже (идентификатор, сумму и код валюты), информацию о пользователе, URL для перенаправления, а также подпись.
{
"general": {
"project_id": 1234567,
"payment_id": "12278b5d662764c9506...c5c35",
"signature": "GINgwlggTvpF9AnkT8rUUVC7JChDjj40xI5vOA7w=="
},
"customer": {
"id": "customer1",
"ip_address": "192.0.2.0"
"first_name": "John",
"last_name": "Doe"
},
"payment": {
"amount": 1000000,
"currency": "IDR"
},
"return_url": {
"return": "https://example.com/return"
}
}
{
"general": {
"project_id": 1234567,
"payment_id": "12278b5d662764c9506...c5c35",
"signature": "GINgwlggTvpF9AnkT8rUUVC7JChDjj40xI5vOA7w=="
},
"customer": {
"id": "customer1",
"ip_address": "192.0.2.0"
"first_name": "John",
"last_name": "Doe"
},
"payment": {
"amount": 1000000,
"currency": "IDR"
},
"return_url": {
"return": "https://example.com/return"
}
}
Форматы данных для отображения платёжной инструкции
Для отображения платёжной инструкции необходимо принять и обработать оповещение от платёжной платформы, содержащее данные о платеже в массиве display_data, и отобразить пользователю платёжную инструкцию.
Массив display_data содержит следующие параметры:
type— тип передаваемых данных (в значении всегда передаётсяqr_data);title— название передаваемых данных, которые необходимо отобразить пользователю (в значении всегда передаётсяqr_code_data);data— строка с закодированным изображением QR-кода.
Далее приведён фрагмент оповещения, содержащего данные для отображения пользователю.
"display_data": [ { "type": "qr_data", "title": "qr_code_data", "data": "00020101021226530012...40014ID.CO.QRIS.WWW0215ID20200311332370303URE5204323753033605405100005502015802ID5911TARGETWIRES6007jakarta61059999962470703A015036323777b2dadc0aa04fdb82a0cc2349be345c63048782" } ]
Формат итоговых оповещений
Для оповещений о результатах оплат с применением метода QRIS используется типовой формат, описание которого представлено в разделе Работа с оповещениями.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 1234 была проведена оплата в размере 100 000,00 IDR.
{
"project_id": 1234,
"payment": {
"id": "ABC12345",
"type": "purchase",
"status": "success",
"date": "2021-06-03T09:18:49+0000",
"method": "indonesia-qr",
"sum": {
"amount": 10000000,
"currency": "IDR"
},
"description": ""
},
"customer": {
"id": "customer1"
},
"operation": {
"id": 66524010061681,
"type": "sale",
"status": "success",
"date": "2021-06-03T09:18:49+0000",
"created_date": "2021-06-03T09:04:56+0000",
"request_id": "312be99ad68be48100c724ce274e...066525",
"sum_initial": {
"amount": 10000000,
"currency": "IDR"
},
"sum_converted": {
"amount": 10000000,
"currency": "IDR"
},
"code": "0",
"message": "Success",
"provider": {
"id": 5861,
"payment_id": "32376801d1f6b6b6406...a02b4e45c",
"auth_code": "",
"date": "2021-06-03T09:18:39+0000"
}
},
"signature": "LaWvR4EPqYRvsuU7Hl0H09l6uYR0dCIvFYSK...eiLtrjaJxLAhCBsxA=="
}
}
В следующем примере оповещение свидетельствует об отклонённой оплате.
{
"id": "7890",
"type": "purchase",
"status": "decline",
"date": "2021-06-04T06:19:47+0000",
"method": "indonesia-qr",
"sum": {
"amount": 1000000,
"currency": "IDR"
},
"description": ""
},
"customer": {
"id": "1"
},
"operation": {
"id": 79864010068961,
"type": "sale",
"status": "decline",
"date": "2021-06-04T06:19:47+0000",
"created_date": "2021-06-03T06:19:31+0000",
"request_id": "1504560d8c125cb12199c320ac41c...079865",
"sum_initial": {
"amount": 1000000,
"currency": "IDR"
},
"sum_converted": {
"amount": 1000000,
"currency": "IDR"
},
"code": "20000",
"message": "General decline",
"provider": {
"id": 5861,
"payment_id": "3237eceb715dc5ac46eb80edbde6fe2e24d4",
"auth_code": ""
}
},
"signature": "/NAM67hU7V7/tOQHaWOIRg68e8jhN6GIyC5idy9hiQ=="
}
Дополнительные материалы
Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:
- Организация взаимодействия — о том, как взаимодействовать с платёжной платформой через Gate.
- Работа с подписью к данным — о порядке создания и проверки подписи в программных запросах и оповещениях при взаимодействии с платёжной платформой.
- Проведение платежей — о типах, схемах проведения и возможных статусах поддерживаемых платежей и операций.
- Разовая оплата в одну стадию — о том, как проводить разовые оплаты через Gate.
- Работа с информацией об операциях — о служебных кодах, используемых в платёжной платформе для фиксации информации о выполнении операций.
Анализ результатов проведения платежей
Для анализа информации о платежах и операциях, как в отдельности по методу QRIS, так и в совокупности с другими методами, можно использовать:
- инструментарий интерфейса Dashboard, с различными реестрами и аналитическими панелями;,
- отчёты в формате CSV, выгружаемые (как разово, так и периодически) через раздел Отчёты интерфейса Dashboard;,
- данные в формате JSON, получаемые по программным запросам через интерфейс Data API.
С вопросами по анализу информации можно обращаться к разделам документации (Dashboard и Использование Data API) и специалистам ecommpay.