Google Pay™
Обзор
Google Pay — платежный метод, позволяющий пользователям осуществлять разовые оплаты в одну и две стадии, а также повторяемые оплаты с использованием сервисов Google Pay и банка в Казахстане. Для выполнения оплат доступны интерфейсы Payment Page, Gate и Dashboard. Возвраты доступны через Gate и Dashboard. Загрузить логотип этого платежного метода в векторном формате можно здесь. |
Тип платежного метода |
|
---|---|
Регионы использования | Казахстан |
Валюты платежей | KZT |
Конвертация валют | На стороне JetPay |
Одностадийная оплата | |
Двухстадийная оплата | |
Повторяемые оплаты | |
Выплата | |
Полный возврат | |
Частичный возврат | |
Опротестование | |
Особенности |
|
Организация и стоимость подключения | По согласованию с курирующим менеджером JetPay |
Схема работы
В проведении каждого платежа с использованием Google Pay задействуются веб-сервис мерчанта, один из интерфейсов JetPay, платежная платформа JetPay, сервис Google Pay, а также технические средства банка.
Рис.: Общая схема работы
Рис.: Сценарий 1
Рис.: Сценарий 2
Рис.: Сценарий 3
Рис.: Сценарий 4
Основные операции
Интерфейсы | Суммы, KZT | Время | ||||||
---|---|---|---|---|---|---|---|---|
Payment Page | CMS Plug-ins | Gate | Dashboard | минимум | максимум | базовое | предельное | |
Оплата в одну стадию | 10,00 | 1 минута | 48 часов | |||||
Блокировка средств в рамках оплаты в две стадии | 10,00 | 1 минута | 48 часов | |||||
Списание и отмена заблокированных средств в рамках оплаты в две стадии | 10,00 | 1 минута | 48 часов | |||||
Регистрация повторяемой оплаты | 10,00 | 1 минута | 48 часов | |||||
Повторные списания в рамках повторяемой оплаты | 10,00 | 1 минута | 48 часов | |||||
Возвраты | 10,00 | 1 минута | 24 часа |
Уточнить минимальную и максимальную сумму платежа, доступную в вашем проекте, вы можете в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Платежные методы.
Сценарии использования
Проведение оплаты в одну стадию и блокировка средств в рамках оплаты в две стадии, а также регистрация повторяемой оплаты с использованием метода Google Pay выполняется с перенаправлением пользователя к сервису Google Pay. Списание средств в рамках оплаты в две стадии и выполнение повторных списаний в рамках зарегистрированной повторяемой оплаты выполняется без участия пользователя.
Рис.: Оплата в одну стадию через Payment Page
Рис.: Оплата в одну стадию через Gate
Рис.: Блокировка средств в рамках оплаты в две стадии через Payment Page
Рис.: Блокировка средств в рамках оплаты в две стадии через Gate
Рис.: Списание средств в рамках оплаты в две стадии через Gate
Рис.: Отмена блокировки средств в рамках оплаты в две стадии через Gate
Рис.: Повторяемая оплата через Gate
Подробно о том, что необходимо делать со стороны мерчанта для проведения платежей, а также о том, что можно использовать для анализа информации о проведенных платежах и операциях, рассказывается в следующих разделах этой статьи.
Оплата в одну стадию через Payment Page
Общая информация
При выполнении оплаты в одну стадию через Payment Page с использованием метода Google Pay веб-сервис отправляет запрос, содержащий требуемые параметры и подпись, на рабочий URL-адрес JetPay и принимает оповещение о результате оплаты.
При этом существует возможность открыть Payment Page так, чтобы на ней уже был выбран метод Google Pay. (Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.)
Полная схема проведения оплаты выглядит следующим образом.
Рис.: Описание шагов оплаты через Payment Page
- Пользователь на стороне веб-сервиса инициирует оплату.
- Веб-сервис передает запрос на проведение оплаты через Payment Page на URL-адрес JetPay.
- Запрос на проведение оплаты поступает в платежную платформу.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Осуществляется подготовка Payment Page согласно параметрам проекта и запроса.Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
- Пользователю отображается платежная форма.
- Пользователь выбирает для оплаты метод Google Pay.
- Платежная форма Payment Page передает запрос на проведение оплаты в сервис Google Pay.
- Сервис Google Pay обрабатывает запрос и подготавливает собственную платежную форму.
- Пользователю отображается платежная форма сервиса Google Pay.
- Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.Прим.: Если пользователь на этом шаге использует данные новой карты, то оплата проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр
method
имеет значениеcard
вместоetoken-google
. - Сервис Google Pay обрабатывает запрос.
- Сервис Google Pay передает токен для проведения оплаты в платежную форму Payment Page.
- Платежная форма Payment Page отправляет запрос на проведение оплаты с использованием метода Google Pay в платежную платформу.
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос на оплату.Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение оплаты происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
- Сервис банка направляет в платежную платформу информацию о результате оплаты.
- Платежная платформа направляет в веб-сервис оповещение о результате оплаты.
- Платежная платформа направляет в Payment Page информацию о результате проведения оплаты.
- Информация о результате оплаты отображается пользователю на Payment Page.
Информация о формате запросов и параметрах вызова Payment Page при работе с методом Google Pay, а также о формате оповещений о результатах оплаты приведена далее. Общую информацию о работе с Payment Page API можно найти в разделе Описание Payment Page API.
Формат запросов
При создании запросов на открытие платежной формы с использованием метода Google Pay необходимо учитывать следующее:
- Должен использоваться базовый минимум параметров, которые обязательны для любого платежного метода:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- customer_id — идентификатор пользователя, уникальный в рамках проекта;
- customer_first_name — имя пользователя;
- customer_last_name — фамилия пользователя;
- customer_email — адрес электронной почты пользователя;
- payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
- payment_amount — сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.
- Если нужно, чтобы Payment Page открылась с уже выбранным методом Google Pay, добавьте в запрос параметр force_payment_method со значением
google_pay_host
. - Для регистрации повторяемой оплаты добавьте в запрос параметр recurring, содержащий в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта (до кодирования):
{"register":true}
Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты.
- Дополнительно можно использовать любые другие параметры из числа доступных для работы с Payment Page. Подробнее о возможных параметрах Payment Page см. Параметры открытия платежной страницы Payment Page.
- После определения всех параметров запроса необходимо составить подпись. (Подробнее о создании подписи см. Подписывание и проверка подписи.)
Вот пример данных из запроса на открытие платежной формы с использованием метода Google Pay:
EPayWidget.run( { project_id: 1234, payment_id: 'payment_47', customer_id: 'customer_123', customer_first_name: 'John', customer_last_name: 'Doe', customer_email: 'johndoe@example.com', payment_currency: 'KZT', payment_amount: 1000000, recurring: '%7B%22register%22%3Atrue%7D', signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R\/ekpZhkIQg==" } )
Формат оповещений
В оповещениях о результате оплаты с использованием метода Google Pay используется типовой формат, описание которого представлено в разделе Оповещения (callbacks) в Payment Page.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в проекте 1234
выполнена оплата в размере 10 000,00 KZT
.
Рис.: Пример данных из оповещения о проведении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "recurring": { "id": 12345 }, "operation": { "id": 833, "type": "sale", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении оплаты.
Рис.: Пример данных из оповещения об отклонении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "decline", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "sale", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Дополнительные материалы
Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:
Оплата в одну стадию через Gate
Общая информация
При выполнении оплаты в одну стадию через Gate с использованием метода Google Pay веб-сервис должен выполнить следующее:
- Отправить запрос на открытие платежной формы в сервис Google Pay.
- Принять от сервиса Google Pay оповещение токеном для выполнения оплаты.
- Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес JetPay.
- Принять от платежной платформы JetPay оповещение о результате оплаты.
Полная схема проведения оплаты в одну стадию выглядит следующим образом.
Рис.: Проведение оплаты в одну стадию через Gate
- Пользователь на стороне веб-сервиса инициирует оплату через метод Google Pay.
- Веб-сервис передает запрос на открытие платежной формы в сервис Google Pay.
- Сервис Google Pay обрабатывает запрос и подготавливает платежную форму.
- Пользователю отображается платежная форма сервиса Google Pay.
- Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.Прим.: Если пользователь на этом шаге использует данные новой карты, то оплата проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр
method
имеет значениеcard
вместоetoken-google
. - Сервис Google Pay обрабатывает запрос.
- Сервис Google Pay отправляет в веб-сервис оповещение с токеном для проведения оплаты.
- Веб-сервис отправляет запрос на проведение оплаты в одну стадию через Gate на URL-адрес JetPay.
- Запрос на проведение оплаты поступает в платежную платформу JetPay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает платеж.Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение оплаты происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
- Сервис банка направляет в платежную платформу уведомление о результате оплаты.
- Платежная платформа отправляет в веб-сервис оповещение о результате оплаты.
- Веб-сервис направляет пользователю информацию о результате оплаты.
Информация о формате запросов и параметрах инициирования оплаты методом Google Pay через Gate, а также о формате оповещений о результатах оплаты приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Формат запросов в сервис Google Pay
При проведении оплат через Gate с использованием платежного метода Google Pay необходимо настроить взаимодействие вашего веб-сервиса с сервисом Google Pay используя документацию Google Pay для разработчкиков.
В запросе в сервис Google Pay помимо прочих объектов и параметров нужно передавать массив allowedPaymentMethods, состоящий из одного JSON-объекта с информацией об используемом платежном методе.
Вот пример массива allowedPaymentMethods:
"allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"], "allowedCardNetworks": ["MASTERCARD", "VISA"] }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "jetpay", "gatewayMerchantId": "project_id" // В качестве значения параметра // gatewayMerchantId укажите // идентификатор проекта, полученный // от JetPay при интеграции } } } ]
Значения всех параметров нужно передавать в соответствии с примером выше, кроме параметра gatewayMerchantId, значением которого является ваш идентификатор проекта, полученный от JetPay при интеграции, а также параметра gateway, значение которого уточняйте у своего курирующего менеджера.
Формат запросов в платежную платформу JetPay
При работе с запросами на оплату в одну стадию с использованием метода Google Pay необходимо учитывать следующее:
- Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/sale.
- В запросе должны присутствовать следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор пользователя, уникальный в рамках проекта;
- ip_address — IP-адрес устройства пользователя;
- email — адрес электронной почты пользователя;
- first_name — имя пользователя;
- last_name — фамилия пользователя;
- etoken — объект, содержащий токен, полученный от сервиса Google Pay после аутентификации пользователя:
- token — токен, полученный от сервиса Google Pay после аутентификации пользователя;
- payment — объект, содержащий сведения об оплате:
- amount — сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;
- currency — код валюты оплаты в формате ISO-4217 alpha-3.
- general — объект, содержащий основные сведения о запросе:
- Для регистрации повторяемой оплаты дополнительно передайте в запросе объект recurring с параметром register, имеющим значение
true
. Подробнее о регистрации повторяемой оплаты с использованием Gate см. Регистрация повторяемой оплаты. - Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.
Вот пример данных из запроса на оплату с использованием метода Google Pay:
Рис.: Пример данных из запроса на оплату в одну стадию с регистрацией повторяемой оплаты
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "etoken": { "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}" }, "recurring": { "register": true }, "payment": { "amount": 1000000, "currency": "KZT" } }
Формат оповещений
В оповещениях о результате оплаты с использованием метода Google Pay используется типовой формат, который описан в разделе Оповещения (callbacks) в Gate.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234
проведена оплата в размере 10 000,00 KZT
.
Рис.: Пример данных из оповещения о проведении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "recurring": { "id": 12345 }, "operation": { "id": 833, "type": "sale", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении оплаты.
Рис.: Пример данных из оповещения об отклонении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "decline", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "sale", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Дополнительные материалы
Для реализации оплаты через Gate также могут быть полезны следующие материалы:
Оплата в две стадии через Payment Page
Общая информация
При выполнении оплаты в две стадии с использованием метода Google Pay при использовании Payment Page возможно выполнение только первой стадии оплаты — блокировки средств на счете пользователя. Для списания заблокированных средств нужно отправить отдельный запрос с использованием Gate API. Подробнее о запросе на списание заблокированных средств см. Формат запроса в сервис JetPay на списание заблокированных средств.
При блокировке средств через Payment Page веб-сервис отправляет запрос, содержащий требуемые параметры и подпись, на рабочий URL-адрес JetPay и принимает оповещение о результате блокировки средств.
При этом существует возможность открыть Payment Page так, чтобы на ней уже был выбран метод Google Pay. (Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.)
Полная схема выполнения блокировки средств выглядит следующим образом.
Рис.: Описание шагов блокировки средств через Payment Page
- Пользователь на стороне веб-сервиса инициирует оплату.
- Веб-сервис передает запрос на проведение оплаты через Payment Page URL-адрес JetPay.
- Запрос на проведение оплаты поступает в платежную платформу.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Осуществляется подготовка Payment Page согласно параметрам проекта и запроса.Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
- Пользователю отображается платежная форма.
- Пользователь выбирает для оплаты метод Google Pay.
- Платежная форма Payment Page передает запрос в сервис Google Pay.
- Сервис Google Pay обрабатывает запрос и подготавливает собственную платежную форму.
- Пользователю отображается платежная форма сервиса Google Pay.
- Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.Прим.: Если пользователь на этом шаге использует данные новой карты, то блокировка средств проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр
method
имеет значениеcard
вместоetoken-google
. - Сервис Google Pay обрабатывает запрос.
- Сервис Google Pay передает токен для проведения оплаты в платежную форму Payment Page.
- Платежная форма Payment Page отправляет запрос на выполнение блокировки средств в платежную платформу.
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос на блокировку средств.Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение блокировки средств происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
- Сервис банка направляет в платежную платформу информацию о результате блокировке средств.
- Платежная платформа направляет в веб-сервис оповещение о результате блокировки средств.
- Платежная платформа направляет в Payment Page информацию о результате проведения оплаты.
- Информация о результате оплаты отображается пользователю на Payment Page.
Информация о формате запросов и параметрах вызова Payment Page при работе с методом Google Pay, а также о формате оповещений о результатах блокировки средств приведена далее. Общую информацию о работе с Payment Page API можно найти в разделе Описание Payment Page API.
Формат запросов
При создании запросов на открытие платежной формы с использованием метода Google Pay необходимо учитывать следующее:
- Должен использоваться базовый минимум параметров, которые обязательны для любого платежного метода:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- customer_id — идентификатор пользователя, уникальный в рамках проекта;
- customer_first_name — имя пользователя;
- customer_last_name — фамилия пользователя;
- customer_email — адрес электронной почты пользователя;
- payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
- payment_amount — сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.
- Если нужно, чтобы Payment Page открылась с уже выбранным методом Google Pay, добавьте в запрос параметр force_payment_method со значением
google_pay_host
. - Для регистрации повторяемой оплаты добавьте в запрос параметр recurring, содержащий в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта:
{"register":true}
Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты.
- Дополнительно можно использовать любые другие параметры из числа доступных для работы с Payment Page. Подробнее о возможных параметрах Payment Page см. Параметры открытия платежной страницы Payment Page.
- После определения всех параметров запроса необходимо составить подпись. (Подробнее о создании подписи см. Подписывание и проверка подписи.)
Вот пример данных из запроса на открытие платежной формы с использованием метода Google Pay:
EPayWidget.run( { project_id: 1234, payment_id: 'payment_47', customer_id: 'customer_123', customer_first_name: 'John', customer_last_name: 'Doe', customer_email: 'johndoe@example.com', payment_currency: 'KZT', payment_amount: 1000000, recurring: '%7B%22register%22%3Atrue%7D', signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R\/ekpZhkIQg==" } )
Формат оповещений
В оповещениях о результате блокировки средств с использованием метода Google Pay используется типовой формат, описание которого представлено в разделе Оповещения (callbacks) в Payment Page.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в проекте 1234
выполнена блокировка средств в размере 10 000,00 KZT
.
Рис.: Пример данных из оповещения о выполнении блокировки средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "recurring": { "id": 12345 }, "operation": { "id": 833, "type": "sale", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении запроса на блокировку средств.
Рис.: Пример данных из оповещения об отклонении запроса на блокировку средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "decline", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "sale", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Дополнительные материалы
Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:
Оплата в две стадии через Gate
Общая информация
При выполнении оплаты в две стадии через Gate с использованием метода Google Pay веб-сервис должен выполнить следующее:
- Отправить запрос на открытие платежной формы в сервис Google Pay.
- Принять от сервиса Google Pay оповещение с токеном, необходимым для проведения оплаты.
- Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес JetPay для блокировки средств пользователя.
- Принять от платежной платформы JetPay оповещение о результате блокировки средств.
- Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес JetPay для списания заблокированных ранее средств.
- Принять от платежной платформы JetPay оповещение о результате списания.
Проведение оплаты в две стадии выполняется поэтапно:
- Этап 1. Блокировка средств пользователя.
- Этап 2. Списание заблокированных средств или отмена блокировки средств без их списания.
Схемы этапов проведения оплаты в две стадии выглядят следующим образом.
Рис.: Этап 1. Блокировка средств
Рис.: Этап 2. Списание средств
Рис.: Этап 2. Отмена блокировки
Рис.: Этап 1. Блокировка средств через Gate
- Пользователь на стороне веб-сервиса инициирует оплату через метод Google Pay.
- Веб-сервис передает запрос на открытие платежной формы в сервис Google Pay.
- Сервис Google Pay обрабатывает запрос и подготавливает платежную форму.
- Пользователю отображается платежная форма сервиса Google Pay.
- Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.Прим.: Если пользователь на этом шаге использует данные новой карты, то блокировка средств проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр
method
имеет значениеcard
вместоetoken-google
. - Сервис Google Pay обрабатывает запрос.
- Сервис Google Pay отправляет в веб-сервис оповещение с токеном для проведения оплаты.
- Веб-сервис отправляет запрос на блокировку средств через Gate на URL-адрес JetPay.
- Запрос на блокировку средств поступает в платежную платформу JetPay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение оплаты происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
- Сервис банка направляет в платежную платформу уведомление о результате блокировки средств.
- Платежная платформа отправляет в веб-сервис оповещение о результате блокировки средств.
- Веб-сервис направляет пользователю информацию о результате блокировки средств.
Рис.: Этап 2. Списание средств через Gate
- Веб-сервис отправляет запрос на списание средств через Gate на URL-адрес JetPay.
- Запрос на списание средств поступает в платежную платформу JetPay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате списания средств.
- Платежная платформа отправляет в веб-сервис оповещение о результате списания средств.
Рис.: Этап 2. Отмена блокировки средств через Gate
- Веб-сервис отправляет запрос на отмену блокировки средств через Gate на URL-адрес JetPay.
- Запрос на отмену блокировки средств поступает в платежную платформу JetPay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате отмены блокировки средств.
- Платежная платформа отправляет в веб-сервис оповещение о результате отмены блокировки средств.
Информация о форматах запросов и оповещений, используемых при проведении оплаты в две стадии с использованием метода Google Pay через Gate приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Формат запросов в сервис Google Pay
При проведении оплат через Gate с использованием платежного метода Google Pay необходимо настроить взаимодействие вашего веб-сервиса с сервисом Google Pay используя документацию Google Pay для разработчкиков.
В запросе в сервис Google Pay помимо прочих объектов и параметров нужно передавать массив allowedPaymentMethods, состоящий из одного JSON-объекта с информацией об используемом платежном методе.
Вот пример массива allowedPaymentMethods:
"allowedPaymentMethods": [ { "type": "CARD", "parameters": { "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"], "allowedCardNetworks": ["MASTERCARD", "VISA"] }, "tokenizationSpecification": { "type": "PAYMENT_GATEWAY", "parameters": { "gateway": "jetpay", "gatewayMerchantId": "project_id" // В качестве значения параметра // gatewayMerchantId укажите // идентификатор проекта, полученный // от JetPay при интеграции } } } ]
Значения всех параметров нужно передавать в соответствии с примером выше, кроме параметра gatewayMerchantId, значением которого является ваш идентификатор проекта, полученный от JetPay при интеграции.
Формат запроса в сервис JetPay на блокировку средств
При работе с запросами на блокировку средств с использованием метода Google Pay необходимо учитывать следующее:
- Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/auth.
- В запросе должны присутствовать следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор пользователя, уникальный в рамках проекта;
- ip_address — IP-адрес устройства пользователя;
- email — адрес электронной почты пользователя;
- first_name — имя пользователя;
- last_name — фамилия пользователя;
- etoken — объект, содержащий токен, полученный от сервиса Google Pay после аутентификации пользователя:
- token — токен, полученный от сервиса Google Pay после аутентификации пользователя;
- payment — объект, содержащий сведения о средствах, которые нужно заблокировать:
- amount — сумма блокируемых средств в дробных единицах валюты без десятичной точки и пробелов.
Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.
- currency — код валюты блокируемых средств в формате ISO-4217 alpha-3.
- amount — сумма блокируемых средств в дробных единицах валюты без десятичной точки и пробелов.
- general — объект, содержащий основные сведения о запросе:
- Для регистрации повторяемой оплаты дополнительно передайте в запросе объект recurring с параметром register, имеющим значение
true
. Подробнее о регистрации повторяемой оплаты с использованием Gate см. Регистрация повторяемой оплаты. - Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.
Вот пример данных из запроса на блокировку средств с использованием метода Google Pay:
Рис.: Пример данных из запроса на блокировку средств с регистрацией повторяемой оплаты
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "etoken": { "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}" }, "recurring": { "register": true }, "payment": { "amount": 1000000, "currency": "KZT" } }
Формат запроса в сервис JetPay на списание заблокированных средств
Этот запрос используется для списания заблокированных ранее средств. Блокировку средств можно выполнять как через Payment Page, так и через Gate.
При работе с запросами на списание заблокированных средств с использованием метода Google Pay необходимо учитывать следующее:
- Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/capture.
- В запросе должны присутствовать следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, который использовался в запросе на блокировку средств;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- payment — объект, содержащий сведения о сумме списания:
- amount — сумма списания в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;
- currency — код валюты списания в формате ISO-4217 alpha-3.
- general — объект, содержащий основные сведения о запросе:
- Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.
Вот пример данных из запроса на списание заблокированных средств с использованием метода Google Pay:
Рис.: Пример данных из запроса на списание заблокированных средств
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA==" }, "payment": { "amount": 1000000, "currency": "KZT" } }
Формат запроса в сервис JetPay на отмену блокировки средств
Этот запрос используется для отмены блокировки средств. Блокировку средств можно выполнять как через Payment Page, так и через Gate.
При работе с запросами на отмену блокировки средств с использованием метода Google Pay необходимо учитывать следующее:
- Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/cancel.
- В запросе должны присутствовать следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, который использовался в запросе на блокировку средств;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- general — объект, содержащий основные сведения о запросе:
- Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.
Вот пример данных из запроса на отмену блокировки средств с использованием метода Google Pay:
Рис.: Пример данных из запроса на отмену блокировки средств
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA==" } }
Формат оповещений
В оповещениях о результатах блокировки средств, списания или отмены блокировки средств с использованием метода Google Pay используется типовой формат, который описан в разделе Оповещения (callbacks) в Gate.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234
произведена блокировка средств в размере 10 000,00 KZT
.
Рис.: Пример данных из оповещения о блокировке средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "recurring": { "id": 12345 }, "operation": { "id": 833, "type": "sale", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении блокировки средств.
Рис.: Пример данных из оповещения об отклонении блокировки средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "auth", "status": "decline", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "sale", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234
произведено списание ранее заблокированных средств.
Рис.: Пример данных из оповещения о списании средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "capture", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении списания средств.
Рис.: Пример данных из оповещения об отклонении списания средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "awaiting_capture", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "capture", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234
произведена отмена блокировки средств.
Рис.: Пример данных из оповещения об отмене блокировки средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "canceled", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "cancel", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении отмены блокировки средств.
Рис.: Пример данных из оповещения об отклонении отмены блокировки средств
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "awaiting_capture", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "cancel", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Дополнительные материалы
Для реализации оплаты через Gate также могут быть полезны следующие материалы:
Оплата в две стадии через Dashboard
Dashboard поддерживает управлять заблокированными средствами в рамках оплаты в две стадии. Заблокированные средства можно списать или разблокировать.
Чтобы подтвердить списание (отменить блокировку) заблокированных средств:
- Найдите оплату, для которой необходимо подтвердить списание (отменить блокировку).
- Откройте карточку оплаты.
- Отправьте запрос на подтверждение (отмену) списания заблокированных средств.
Для этого:
- Щелкните кнопку Списание, чтобы списать заблокированные средства (Отмена, чтобы отменить блокировку средств), на панели информации о платеже.
- Укажите в открывшемся окне полную сумму заблокированных средств.
- Подтвердите отправку запроса, щелкнув кнопку Списание (Отмена).Прим.: Если кнопки Списание и Отмена неактивны, это может свидетельствовать о том, что одна из этих операций уже выполняется, а если отсутствуют — о том, что для платежа с данным статусом не поддерживается выполнение таких операций.
- Убедитесь, что операция списания (отмены) выполнена, проверив статус операции.
Если запрос на выполнение операции был отклонен, то статус такой операции принимает значение
decline
, а статус платежа не меняется — остаетсяawaiting capture
.
Подробнее о возможностях использования Dashboard для подтверждения (отмены) списания средств, заблокированных в рамках первого этапа оплаты в две стадии см. Проведение оплаты через Dashboard.
Повторяемая оплата через Gate
Общая информация
В этом разделе содержится информация о проведении повторных списаний в рамках уже зарегистрированной повторяемой оплаты. Информация о том, как зарегистрировать повторяемую оплату, приведена в секции Формат запроса в разделах о проведении оплат в одну и две стадии.
При выполнении повторного списания в рамках уже зарегистрированной повторяемой оплаты через Gate с использованием метода Google Pay веб-сервис должен выполнить следующее:
- Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес JetPay для проведения повторного списания.
- Принять от платежной платформы JetPay оповещение о результате повторного списания.
Полная схема проведения повторного списания в рамках уже зарегистрированной повторяемой оплаты выглядит следующим образом.
Рис.: Описание проведения повторного списания средств через Gate
- Пользователь на стороне веб-сервиса инициирует повторное списание в рамках уже зарегистрированной повторяемой оплаты. Этот шаг не является обязательным.
- Веб-сервис отправляет запрос на списание средств через Gate на URL-адрес JetPay.
- Запрос на списание средств поступает в платежную платформу JetPay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате списания средств.
- Платежная платформа отправляет в веб-сервис оповещение о результате списания средств.
- Веб-сервис направляет пользователю информацию о результате списания средств.
Информация о формате запросов и параметрах инициирования повторного списания методом Google Pay через Gate, а также о формате оповещений о результатах списания приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Формат запроса
При работе с запросами на списание средств в рамках повторяемой оплаты с использованием метода Google Pay необходимо учитывать следующее:
- Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/recurring.
- В запросе должны присутствовать следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор пользователя, уникальный в рамках проекта;
- ip_address — IP-адрес устройства пользователя;
- email — адрес электронной почты пользователя;
- first_name — имя пользователя;
- last_name — фамилия пользователя;
- recurring — объект, содержащий информацию о зарегистрированной повторяемой оплате:
- id — идентификатор повторяемой оплаты;
- payment — объект, содержащий сведения об оплате:
- amount — сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;
- currency — код валюты оплаты в формате ISO-4217 alpha-3.
- general — объект, содержащий основные сведения о запросе:
- Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.
Вот пример данных из запроса на повторное списание с использованием метода Google Pay:
Рис.: Пример данных из запроса на повторное списание средств
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "recurring": { "id": 12345 }, "payment": { "amount": 1000000, "currency": "KZT" } }
Формат оповещений
В оповещениях о результате оплаты с использованием метода Google Pay используется типовой формат, который описан в разделе Оповещения (callbacks) в Gate.
В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234
проведено повторное списание в рамках повторяемой оплаты в размере 10 000,00 KZT
.
Рис.: Пример данных из оповещения о проведении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "recurring", "status": "success", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "recurring", "status": "success", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "0", "message": "Success", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
В следующем примере содержится информация об отклонении оплаты.
Рис.: Пример данных из оповещения об отклонении оплаты
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "recurring", "status": "decline", "date": "2023-03-02T09:13:10+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "411111******1111" }, "operation": { "id": 833, "type": "recurring", "status": "decline", "date": "2023-03-02T09:13:10+0000", "created_date": "2023-03-02T09:12:00+0000", "code": "20000", "message": "General decline", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" }, "request_id": "dabb4660eb711f3774a70a8" }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Дополнительные материалы
Для реализации оплаты через Gate также могут быть полезны следующие материалы:
Возврат через Gate
Общая информация
Чтобы выполнить возврат через Gate с использованием метода Google Pay:
- Отправьте запрос с нужными параметрами и подписью на рабочий URL-адрес платежной платформы JetPay.
- Примите от платежной платформы JetPay оповещение (callback) с результатом возврата.
Полная схема возврата выглядит следующим образом.
Рис.: Здесь описаны шаги возврата через Gate
- Пользователь запрашивает возврат в вашем веб-сервисе.
- Веб-сервис передает запрос на возврат в Gate.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа направляет в ваш веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа обрабатывает запрос и отправляет его в сервис провайдера.
- Сервис провайдера обрабатывает запрос на возврат.
- Сервис провайдера направляет уведомление о результате возврата в платёжную платформу.
- Платежная платформа отправляет в ваш веб-сервис оповещение (callback) с результатом возврата.
- Веб-сервис направляет пользователю информацию о результате возврата.
Информация о формате запросов и параметрах инициирования возврата методом Google Pay через Gate, а также о формате оповещений о результатах возврата приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Запрос
При работе с запросами на возврат с использованием метода Google Pay необходимо учитывать следующее:
- Должен использоваться POST-запрос в конечную точку /v2/payment/googlepay/refund.
- В запросе должны использоваться следующие объекты и параметры:
- general — объект, содержащий основные сведения о запросе:
- project_id — идентификатор проекта, полученный от JetPay при интеграции;
- payment_id — идентификатор платежа, уникальный в рамках проекта;
- signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
- customer — объект, содержащий сведения о пользователе:
- id — идентификатор пользователя, уникальный в рамках проекта;
- ip_address — IP-адрес устройства пользователя;
- first_name — имя пользователя;
- last_name — фамилия пользователя;
- email — адрес электронной почты пользователя;
- payment — объект, содержащий сведения о возврате:
- description — комментарий или описание возврата.
- amount — сумма возврата в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части (обязательный при частичном возврате). Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. При выполнении частичного возврата этот параметр является обязательным.
- currency — код валюты возврата в формате ISO-4217 alpha-3. При выполнении частичного возврата этот параметр является обязательным.
- general — объект, содержащий основные сведения о запросе:
- При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference.
Вот пример данных из запроса на возврат с использованием метода Google Pay:
Рис.: Пример данных из запроса на возврат
{ "general": { "project_id": 1234, "payment_id": "payment_47", "signature": "vVDlp9QFbU76c5Hb2sofs4kypzZtGwJW6+y1CN3AIrirtsTaXXBQvnHxp7j3E1zdmg==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "payment": { "description": "Refund description", "amount": 1000000, "currency": "KZT" } }
Оповещение (callback)
В методе Google Pay результат возврата передается в ваш веб-сервис в оповещении типовой структуры, подробное описание которой представлено в разделе Оповещения (callbacks) в Gate.
Вот пример тела оповещения с информацией о выполненном возврате на сумму 10 000,00 KZT
:
Рис.: Пример тела оповещения о проведенном возврате
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "refunded", "date": "20201-09-09T10:02:18+0000", "method": "etoken-google", "sum": { "amount": 0, "currency": "KZT" }, "description": "Refund description" }, "operation": { "id": 12345677654321, "type": "refund", "status": "success", "date": "2021-09-09T10:02:18+0000", "created_date": "2021-09-09T09:46:14+0000", "request_id": "6b77b588d77d5c27be31be7b72bf9adf...b1c85eda238b73cac-00090267", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" } }, "signature": "WUZUy26FHZglsro9PYFr89suJAciQ...5Fev4NtHl56VGTgX9m/g==" }
Вот пример тела оповещения с информацией об отклоненном возврате.
Рис.: Пример тела оповещения об отклоненном возврате
{ "project_id": 1234, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2021-09-09T10:02:18+0000", "method": "etoken-google", "sum": { "amount": 1000000, "currency": "KZT" }, "description": "Refund description" }, "operation": { "id": 12345677654321, "type": "refund", "status": "decline", "date": "2021-09-09T10:02:18+0000", "created_date": "2021-09-09T09:46:14+0000", "request_id": "6b77b588d77d5c27be31be7b72bf9adf...b1c85eda238b73cac-00090268", "sum_initial": { "amount": 1000000, "currency": "KZT" }, "sum_converted": { "amount": 1000000, "currency": "KZT" }, "code": "20000", "message": "General decline" } }, "signature": "WUZUy26FHZglsro9PYFr89suJAciQ...5Fev4NtHl56VGTgX9m/g==" }
Дополнительные материалы
Анализ результатов проведения платежей
Как и при работе с другими платежными методами, которые предоставляет JetPay, при использовании этого метода доступны разные способы анализа информации о платежах и операциях.
Всю необходимую информацию можно получать и анализировать средствами Dashboard (dashboard.jetpay.kz
), в том числе с помощью аналитических панелей в разделе Аналитика.
Также можно выгружать необходимую информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:
- Dashboard позволяет выгружать данные в формате CSV с помощью инструментов в разделе Отчеты. При этом можно выполнять разовые и периодические выгрузки информации на локальный компьютер.
- Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы к конечной точке /operations/get.
С любыми вопросами о возможностях анализа можно обращаться в службу технической поддержки JetPay.