Apple Pay
Обзор
Apple Pay — платежный метод для оплаты товаров и услуг в приложениях iOS или на сайтах. При использовании Apple Pay аутентификация пользователей выполняется с помощью Face ID, Touch ID или пароля, а платежи проводятся с применением токенизированных учетных данных кредитных и дебетовых карт. Вместе с этими данными на пользовательских устройствах могут храниться и использоваться при проведении платежей дополнительные сведения, такие как данные счетов, адреса доставки и контактная информация. Для работы с Apple Pay в платежной платформе доступны разовые и повторяемые оплаты через Payment Page и Gate, а также возвраты и проверка действительности карты пользователя через Gate. Загрузить логотип этого платежного метода в векторном формате можно здесь. |
Тип платежного метода | Бесконтактные платежи |
---|---|
Регионы использования | Список доступен по ссылке |
Валюты платежей | Все валюты, поддерживаемые платежными системами American Express, Maestro, Mastercard и Visa в доступных регионах |
Конвертация валют | На стороне Rocketpay |
Одностадийная оплата | |
Двухстадийная оплата | |
Повторяемые оплаты | |
Выплата | |
Полный возврат | |
Частичный возврат | |
Проверка действительности | |
Особенности |
|
Организация и стоимость подключения | По согласованию с курирующим менеджером Rocketpay |
Схема работы
В проведении отдельного платежа с использованием Apple Pay задействуется ваша система, один из интерфейсов и платежная платформа Rocketpay, а также технические средства Apple Pay.
Основные операции
Интерфейсы | Суммы | Время | |||||
---|---|---|---|---|---|---|---|
Payment Page | Gate | Dashboard | минимум | максимум | базовое | предельное | |
Оплата в одну стадию | * | * | * | * | |||
Блокировка средств в рамках оплаты в две стадии | * | * | * | * | |||
Списание и отмена заблокированных средств в рамках оплаты в две стадии | * | * | |||||
Регистрация повторяемой оплаты | * | * | |||||
Повторные списания в рамках повторяемой оплаты | * | * | |||||
Возвраты | * | * |
* Дополнительную информацию необходимо уточнять у курирующего менеджера Rocketpay.
Уточнить минимальную и максимальную сумму платежа, доступную в вашем проекте, вы можете в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Платежные методы.
Сценарии использования
Для проведения оплат с помощью Apple Pay пользователю достаточно один раз зарегистрировать свою карту на устройстве Apple Pay и после использовать Touch ID, Face ID, пароль или двойное нажатие на боковую кнопку (Apple Watch) для подтверждения оплаты.
Рис.: Оплата через Payment Page
Рис.: Оплата через Gate
Рис.: Возврат через Gate
Детальные сведения о том, что необходимо делать со стороны мерчанта для проведения платежей, а также о том, что можно использовать для анализа информации о проведенных платежах и операциях, представлены далее.
Оплата в одну стадию через Payment Page
Общая информация
Чтобы выполнить оплату через Payment Page с использованием метода Apple Pay:
- Отправьте запрос с нужными параметрами и подписью на рабочий URL-адрес платежной платформы Rocketpay.
- Примите от платежной платформы Rocketpay оповещение (callback) с результатом оплаты.
Полная схема оплаты через Payment Page выглядит следующим образом.
Рис.: Здесь описаны шаги оплаты через Payment Page
- Пользователь инициирует оплату в вашей системе.
- Ваша система передает запрос на оплату через Payment Page на URL-адрес платежной платформы Rocketpay.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа создает страницу оплаты на основе параметров проекта и запроса.Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
- Страница оплаты отображается пользователю.
- Пользователь выбирает на странице оплаты метод Apple Pay.
- Payment Page передает запрос на оплату в платежную платформу.
- Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
- Сервис Apple Pay обрабатывает запрос на оплату.
- Сервис Apple Pay передает в платежную платформу данные для отображения пользователю платежной инструкции.
- Платежная платформа передает эти данные в Payment Page.
- На Payment Page отображается платежная инструкция или открывается приложение Apple Pay для подтверждения оплаты пользователем.
- Пользователь выполняет необходимые действия и подтверждает оплату.
- На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
- Пользователь перенаправляется на страницу ожидания Payment Page.
- От сервиса Apple Pay к платежной платформе передаются зашифрованные данные пользователя.
- Выполняются дальнейшая обработка запроса и его отправка в сервис международной платежной системы.
- На стороне международной платежной системы выполняется обработка платежа.
- От международной платежной системы к платежной платформе направляется результат оплаты.
- Платежная платформа отправляет вашей системе оповещение (callback) о результате оплаты.
- Платежная платформа передает в Payment Page информацию о результате оплаты.
- Результат оплаты отображается пользователю на Payment Page.
Информация о формате запросов и параметрах вызова Payment Page при работе с Apple Pay, а также о формате оповещений о результатах оплат приведена далее. Общую информацию о работе с Payment Page API можно найти в разделе Описание Payment Page API.
Запрос на открытие платежной формы
В запросе на открытие платежной формы c использованием метода Apple Pay укажите необходимые параметры:
|
||
---|---|---|
Параметр | Описание | |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
|
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|
customer_id |
Идентификатор пользователя, уникальный в рамках проекта. Пример: |
|
customer_first_name |
Имя пользователя. Пример: |
|
customer_last_name |
Фамилия пользователя. Пример: |
|
customer_email |
Адрес электронной почты пользователя. Пример: |
|
card_holder |
Фамилия пользователя. Пример: |
|
payment_currency |
Код валюты оплаты в формате ISO-4217 alpha-3. Пример: |
|
payment_amount |
Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
|
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Подписывание и проверка подписи. | |
force_payment_method |
Параметр, позволяющий пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода. Чтобы пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода, добавьте в запрос параметр force_payment_method со значением:
В данном случае оба платежных метода доступны пользователю. Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода. Пример: |
|
recurring |
Для регистрации повторяемой оплаты добавьте в запрос параметр recurring, содержащий в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта (до кодирования):{"register":true} Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты. |
|
При необходимости добавьте в запрос необязательные параметры из числа доступных для работы с Payment Page. Подробнее о параметрах запросов в Payment Page см. Параметры открытия платежной страницы Payment Page. |
Вот пример параметров из запроса на открытие платежной формы с использованием виджета EPayWidget
:
EPayWidget.run( { project_id: 123, payment_id: 'payment_47', customer_id: 'customer_123', customer_first_name: 'John', customer_last_name: 'Doe', card_holder: 'Doe', customer_email: 'johndoe@example.com', payment_currency: 'KZT', payment_amount: 100000, force_payment_method: 'apple_pay_core', recurring: '%7B%22register%22%3Atrue%7D', signature: 'kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R' } )
Оповещение (callback)
В методе Apple Pay результат оплаты платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Payment Page.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 123
была успешно проведена оплата в размере 1000,00 KZT
.
Рис.: Пример тела оповещения об успешно выполненной оплате
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2022-03-25T11:08:45+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "recurring": { "id": 12345 }, "operation": { "id": 28, "type": "sale", "status": "success", "date": "2022-03-25T11:08:45+0000", "created_date": "2022-03-25T11:08:05+0000", "request_id": "9e32835fb27907e0b08569d7d150e387a16a80e336c5117242b5cf60a4e17839", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 1187, "payment_id": "1234567890", "date": "2022-03-25T11:08:45+0000", "auth_code": "" } }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q==" }
Пример тела оповещения с информацией об отклоненной оплате.
Рис.: Пример данных из оповещения об отклонении оплаты
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "decline", "date": "2022-03-25T11:20:30+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "operation": { "id": 28, "type": "sale", "status": "decline", "date": "2022-03-25T11:20:30+0000", "created_date": "2022-03-25T11:19:53+0000", "request_id": "fff3d5f8d5d31bc460b68b57dc63f4b482e906eb", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "20000", "message": "General decline", "provider": { "id": 1187, "payment_id": "1234567890", "date": "2022-03-25T11:20:30+0000", "auth_code": "" } }, "signature": "J7W15rkqrLzTCD4HkoM4qoEnlVlfqz8155QSlXJKR4m8C4z2iFYv58P4Vn/jmY+g==" }
Дополнительные материалы
Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:
Оплата в одну стадию через Gate
Общая информация
Для оплаты через Gate с использованием метода Apple Pay со стороны веб-сервиса необходимо:
- Отправить запрос на создание платежной сессии, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
- Принять данные платежной сессии и пользователя.
- Отправить запрос оплату, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
- Принять от платежной платформы Rocketpay оповещение (callback) о результате оплаты.
Полная схема оплаты в одну стадию с использованием метода Apple Pay выглядит следующим образом.
Рис.: Проведение оплаты через Gate
- Пользователь инициирует оплату в вашей системе.
- Ваша система передает запрос на создание платежной сессии в Gate.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа направляет запрос на создание платежной сессии к сервису Apple Pay.
- Сервис Apple Pay обрабатывает запрос на создание платежной сессии.
- Сервис Apple Pay передает к платежной платформе данные платежной сессии.
- Платежная платформа отправляет в вашу систему оповещение с данными для создания платежной сессии.
- Ваша система инициализирует платежную сессию и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
- Пользователь выполняет необходимые действия и подтверждает оплату.
- Сервис Apple Pay обрабатывает данные, полученные от пользователя.
- Пользователь перенаправляется на страницу ожидания вашей системы.
- Сервис Apple Pay передает зашифрованные данные пользователя в вашу систему.
- Ваша система передает запрос проведение оплаты через Apple Pay на заданный URL Rocketpay.
- Платежная платформа получает запрос на проведение оплаты.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Ответ.
- Платежная платформа выполняет дальнейшую обработку запроса и отправляет в сервис международной платежной системы.
- Международная платежная система обрабатывает платеж.
- Международная платежная система направляет в платежную платформу уведомление о результате оплаты.
- Платежная платформа отправляет в вашу систему оповещение (callback) с результатом оплаты.
- Ваша система направляет пользователю информацию о результате оплаты.
Информация о формате запросов и параметрах инициализации оплат методом Apple Pay через Gate, а также о формате оповещений о результатах оплат приведена далее, общая информация о работе с API см. в разделе Использование API Gate.
Запрос на создание платежной сессии
Далее представлена информация, необходимая для создания платежной сессии с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/session/applepay |
Полная спецификация конечной точки | /v2/session/applepay |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
validation_url |
URL для проверки. Пример: |
|||
domain_name |
Доменное имя вашего веб-сервиса. Пример: |
|||
display_name |
Название проекта для отображения, не более 64 символов. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Пример корректного запроса на создание платежной сессии с Apple Pay представлен далее.
Рис.: Пример запроса на создание платежной сессии
{ "general": { "project_id": 123, "signature": "VJ/h5ogVuQ6oMNLLxvvKe3Ef6Jw7wV8bt1cPYZcSQduYBT6o+Se5", "validation_url": "https://apple-pay-gateway.apple.com/paymentservices/startSession", "domain_name": "appay.eu.ngrok.io", "display_name": "test payment" } }
Запрос на проведение оплаты
Далее представлена информация, необходимая для создания и отправки запроса на оплату с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/sale |
Полная спецификация конечной точки | /v2/payment/applepay/sale |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
customer |
id |
Идентификатор пользователя, уникальный в рамках проекта. Пример: |
||
ip_address |
IP-адрес устройства пользователя. Пример: |
|||
first_name |
Имя пользователя. Пример: |
|||
last_name |
Фамилия пользователя. Пример: |
|||
email |
Адрес электронной почты пользователя. Пример: |
|||
payment |
amount |
Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
||
currency |
Код валюты платежа в формате ISO-4217 alpha-3. Пример: |
|||
etoken |
token |
Токен, полученный от Apple Pay после идентификации пользователя. Пример: |
||
recurring |
register |
Признак регистрации повторяемой оплаты, необходимо использовать значение true . Подробнее о регистрации повторяемой оплаты с использованием Gate, см. Регистрация повторяемой оплатыПример: |
||
type |
Тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация.Пример: |
|||
period |
Период выполнения регулярной оплаты. Возможные варианты:
Пример: |
|||
time |
Время выполнения регулярной оплаты в формате hh:mm:ss (UTC0) .Пример: |
|||
scheduled_payment_id |
Идентификатор следующей повторяемой оплаты. Пример: |
|||
start_date |
Дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации).Пример: |
|||
interval |
Интервал выполнения регулярной оплаты. Множитель для кратного увеличения периода списаний, например чтобы списания выполнялись раз в три недели, в параметре period надо задать значение W , а в параметре interval значение 3 ; возможные значения: от 1 до 100 .Пример: |
|||
expiry_year |
Год окончания действия повторяемой оплаты Пример: |
|||
expiry_month |
Месяц окончания действия повторяемой оплаты. Пример: |
|||
expiry_day |
День окончания действия повторяемой оплаты. Пример: |
|||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Вот пример данных из запроса на оплату с использованием метода Apple Pay:
Рис.: Пример запроса на проведение оплаты
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "payment": { "amount": 100000, "currency": "KZT" }, "etoken": { "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}" }, "recurring": { "register": true, "type": "R", "period": "W", "interval": 3, "time": "10:00:00", "scheduled_payment_id": "567890", "start_date": "10-10-2020", "expiry_year": 2025, "expiry_month": 5, "expiry_day": 5 } }
Оповещение (callback)
В методе Apple Pay результат оплаты платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Gate.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 123
была успешно проведена оплата в размере 1000,00 KZT
.
Рис.: Пример оповещения о проведенной оплаты
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2019-08-30T13:58:12+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "account": { "number": "123456" }, "recurring": { "id": 12345 }, "operation": { "id": 28, "type": "sale", "status": "success", "date": "2019-08-30T13:58:12+0000", "created_date": "2019-08-30T13:58:06+0000", "request_id": "0a5cb476be3a55010fb050ec1c1cbd35361ac912a3", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "provider": { "id": 1187, "payment_id": "1234567890", "date": "2019-08-30T13:58:09+0000", "auth_code": "591748" }, "code": "0", "message": "Success" }, "signature": "5DtWEGy+dMGZZnm3Owjgw9ly67MbzypSxU2KS33RFCKlyphMTlWSNEuh" }
В следующем примере оплата была отклонена из-за недостатка средств на счете карты.
Рис.: Пример оповещения об отказе в проведении оплаты
{ "project_id": 123, "country": "KZ", "product_name": "Visa Rewards", "issuer_name": "Bank name", "account": { "number": "123456" }, "customer": { "id": "customer_123" }, "payment": { "date": "2019-08-06T12:57:03+0000", "id": "payment_47", "method": "etoken", "status": "decline", "sum": { "amount": 100000, "currency": "KZT" }, "type": "purchase", "description": "test" }, "operation": { "id": 28, "type": "sale", "status": "decline", "date": "2019-08-06T12:57:03+0000", "created_date": "2019-08-06T12:57:00+0000", "request_id": "f92c3dfdf76133d5e1a9d26279b3b77b7da32e", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "provider": { "id": 1187, "payment_id": "1234567890", "auth_code": "" }, "code": "10105", "message": "Insufficient funds on card" }, "signature": "9CIXvWMsKOcQsWEHKLsSVAyjRoWsamH6wOqYCdXre8kY9rpDi" }
Дополнительные материалы
Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:
Оплата в две стадии через Payment Page
Общая информация
При выполнении оплаты в две стадии с использованием метода Apple Pay при использовании Payment Page возможно выполнение только первой стадии оплаты — блокировки средств на счете пользователя. Для списания заблокированных средств нужно отправить отдельный запрос с использованием Gate API. Подробнее о запросе на списание заблокированных средств см. Запрос на списание заблокированных средств.
При блокировке средств через Payment Page веб-сервис отправляет запрос, содержащий требуемые параметры и подпись, на рабочий URL-адрес Rocketpay и принимает оповещение о результате блокировки средств.
Полная схема выполнения блокировки средств выглядит следующим образом.
Рис.: Описание шагов блокировки средств через Payment Page
- Пользователь инициирует оплату в вашей системе.
- Ваша система передает запрос на оплату через Payment Page на URL-адрес платежной платформы Rocketpay.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа создает страницу оплаты на основе параметров проекта и запроса.Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
- Страница оплаты отображается пользователю.
- Пользователь выбирает на странице оплаты метод Apple Pay.
- Payment Page передает запрос на оплату в платежную платформу.
- Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
- Сервис Apple Pay обрабатывает запрос на оплату.
- Сервис Apple Pay передает в платежную платформу данные для отображения пользователю платежной инструкции.
- Платежная платформа передает эти данные в Payment Page.
- На Payment Page отображается платежная инструкция или открывается приложение Apple Pay для подтверждения оплаты пользователем.
- Пользователь выполняет необходимые действия и подтверждает оплату.
- На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
- Пользователь перенаправляется на страницу ожидания Payment Page.
- От сервиса Apple Pay к платежной платформе передаются зашифрованные данные пользователя.
- Выполняются дальнейшая обработка запроса и его отправка в сервис международной платежной системы.
- На стороне международной платежной системы выполняется обработка запроса на блокировку средств.
- От международной платежной системы к платежной платформе направляется результат блокировки средств.
- Платежная платформа отправляет вашей системе оповещение (callback) о результате оплаты.
- Платежная платформа передает в Payment Page информацию о результате оплаты.
- Результат оплаты отображается пользователю на Payment Page.
Информация о формате запросов и параметрах вызова Payment Page при работе с методом Apple Pay, а также о формате оповещений о результатах блокировки средств приведена далее. Общую информацию о работе с Payment Page API можно найти в разделе Описание Payment Page API.
Запрос на открытие платежной формы
В запросе на открытие платежной формы c использованием метода Apple Pay укажите необходимые параметры:
|
||
---|---|---|
Параметр | Описание | |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
|
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|
customer_id |
Идентификатор пользователя, уникальный в рамках проекта. Пример: |
|
customer_first_name |
Имя пользователя. Пример: |
|
customer_last_name |
Фамилия пользователя. Пример: |
|
customer_email |
Адрес электронной почты пользователя. Пример: |
|
card_holder |
Фамилия пользователя. Пример: |
|
payment_currency |
Код валюты оплаты в формате ISO-4217 alpha-3. Пример: |
|
payment_amount |
Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
|
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Подписывание и проверка подписи. | |
force_payment_method |
Параметр, позволяющий пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода. Чтобы пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода, добавьте в запрос параметр force_payment_method со значением:
В данном случае оба платежных метода доступны пользователю. Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода. Пример: |
|
recurring |
Параметр, необходимый для регистрации повторяемой оплаты. Содержит в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта:{"register":true} Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты. |
|
При необходимости добавьте в запрос необязательные параметры из числа доступных для работы с Payment Page. Подробнее о параметрах запросов в Payment Page см. Параметры открытия платежной страницы Payment Page. |
Вот пример параметров из запроса на открытие платежной формы с использованием виджета EPayWidget
:
EPayWidget.run( { project_id: 123, payment_id: 'payment_47', customer_id: 'customer_123', customer_first_name: 'John', customer_last_name: 'Doe', card_holder: 'Doe', customer_email: 'johndoe@example.com', payment_currency: 'KZT', payment_amount: 100000, force_payment_method: 'apple_pay_core', recurring: '%7B%22register%22%3Atrue%7D', signature: 'kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R' } )
Оповещение (callback)
В методе Apple Pay результат оплаты платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Payment Page.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в проекте 123
выполнена блокировка средств в размере 1000,00 KZT
.
Рис.: Пример данных из оповещения о выполнении блокировки средств
{ "project_id": 123, "payment": { "id": "payment_47", "type": "auth", "status": "success", "date": "2022-03-25T11:08:45+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "recurring": { "id": 12345 }, "operation": { "id": 28, "type": "sale", "status": "success", "date": "2022-03-25T11:08:45+0000", "created_date": "2022-03-25T11:08:05+0000", "request_id": "9e32835fb27907e0b08569d7d150e387a16a80e336c5117242b5cf60", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 12345, "payment_id": "123abc123-321", "auth_code": "" } }, "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4" }
Вот пример тела оповещения с информацией об отклонении запроса на блокировку средств.
Рис.: Пример данных из оповещения об отклонении запроса на блокировку средств
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "decline", "date": "2022-03-25T11:20:30+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "operation": { "id": 28, "type": "sale", "status": "decline", "date": "2022-03-25T11:20:30+0000", "created_date": "2022-03-25T11:19:53+0000", "request_id": "fff3d5f8d5d31bc460b68b57dc63f4b482e906eb", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "20000", "message": "General decline", "provider": { "id": 1187, "payment_id": "1234567890", "auth_code": "" } }, "signature": "J7W15rkqrLzTCD4HkoM4qoEnlVlfqz8155QSlXJKR4m8C4z2iFYv58P4VnHANu4" }
Дополнительные материалы
Оплата в две стадии через Gate
Общая информация
При выполнении оплаты в две стадии через Gate с использованием метода Apple Pay веб-сервис должен выполнить следующее:
- Отправить запрос на создание платежной сессии, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
- Принять данные платежной сессии и пользователя.
- Отправить запрос для блокировки средств, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
- Принять от платежной платформы Rocketpay оповещение о результате блокировки средств.
- Отправить запрос для списания средств, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
- Принять от платежной платформы Rocketpay оповещение (callback) о результате оплаты.
Проведение оплаты в две стадии выполняется поэтапно:
- Этап 1. Блокировка средств пользователя.
- Этап 2. Списание заблокированных средств или отмена блокировки средств без их списания.
Полная схема оплаты с использованием метода Apple Pay выглядит следующим образом.
Рис.: Этап 1. Блокировка средств
Рис.: Этап 2. Списание средств
Рис.: Этап 2. Отмена блокировки
Рис.: Этап 1. Блокировка средств через Gate
- Пользователь инициирует оплату в вашей системе.
- Ваша система передает запрос на оплату в Gate.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа направляет запрос на создание платежной сессии к сервису Apple Pay.
- Сервис Apple Pay обрабатывает запрос на создание платежной сессии.
- Сервис Apple Pay передает к платежной платформе данные платежной сессии.
- Платежная платформа отправляет в вашу систему оповещение с данными для создания платежной сессии.
- Ваша система инициализирует платежную сессию и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
- Пользователь выполняет необходимые действия и подтверждает оплату.
- Сервис Apple Pay обрабатывает данные, полученные от пользователя.
- Пользователь перенаправляется на страницу ожидания вашей системы.
- Сервис Apple Pay передает зашифрованные данные пользователя в вашу систему.
- Ваша система передает запрос проведение оплаты через Apple Pay на заданный URL Rocketpay.
- Платежная платформа получает запрос на проведение оплаты.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
- Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Ответ.
- Платежная платформа выполняет дальнейшую обработку запроса и отправляет в сервис международной платежной системы.
- Международная платежная система обрабатывает платеж.
- Международная платежная система направляет в платежную платформу уведомление о результате оплаты.
- Платежная платформа отправляет в вашу систему оповещение (callback) с результатом оплаты.
- Ваша система направляет пользователю информацию о результате оплаты.
Рис.: Этап 2. Списание средств через Gate
- Ваша система отправляет запрос на списание средств через Gate на URL-адрес Rocketpay.
- Запрос на списание средств поступает в платежную платформу Rocketpay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате списания средств.
- Платежная платформа отправляет в вашу систему оповещение о результате списания средств.
Рис.: Этап 2. Отмена блокировки средств через Gate
- Ваша система отправляет запрос на отмену блокировки средств через Gate на URL-адрес Rocketpay.
- Запрос на отмену блокировки средств поступает в платежную платформу Rocketpay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ).
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате отмены блокировки средств.
- Платежная платформа отправляет в вашу систему оповещение о результате отмены блокировки средств.
Информация о форматах запросов и оповещений, используемых при проведении оплаты в две стадии с использованием метода Apple Pay через Gate приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Запрос на создание платежной сессии
Далее представлена информация, необходимая для создания платежной сессии с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/session/applepay |
Полная спецификация конечной точки | /v2/session/applepay |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
validation_url |
URL для проверки. Пример: |
|||
domain_name |
Доменное имя вашего веб-сервиса. Пример: |
|||
display_name |
Название проекта для отображения, не более 64 символов. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Пример корректного запроса на создание платежной сессии с Apple Pay представлен далее.
Рис.: Пример запроса на создание платежной сессии
{ "general": { "project_id": 123, "signature": "VJ/h5ogVuQ6oMNLLxvvKe3Ef6Jw7wV8bt1cPYZcSQduYBT6o+Se5", "validation_url": "https://apple-pay-gateway.apple.com/paymentservices/startSession", "domain_name": "appay.eu.ngrok.io", "display_name": "test payment" } }
Запрос на блокировку средств
Далее представлена информация, необходимая для создания и отправки запроса на блокировку средств с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/auth |
Полная спецификация конечной точки | /v2/payment/applepay/auth |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
customer |
id |
Идентификатор пользователя, уникальный в рамках проекта. Пример: |
||
ip_address |
IP-адрес устройства пользователя. Пример: |
|||
email |
Адрес электронной почты пользователя. Пример: |
|||
first_name |
Имя пользователя. Пример: |
|||
last_name |
Фамилия пользователя. Пример: |
|||
payment |
amount |
Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
||
currency |
Код валюты платежа в формате ISO-4217 alpha-3. Пример: |
|||
etoken |
token |
Токен, полученный от Apple Pay после идентификации пользователя. Пример: |
||
recurring |
register |
Признак регистрации повторяемой оплаты, необходимо использовать значение true . Подробнее о регистрации повторяемой оплаты с использованием Gate, см. Регистрация повторяемой оплатыПример: |
||
type |
Тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация.Пример: |
|||
period |
Период выполнения регулярной оплаты. Возможные варианты:
Пример: |
|||
time |
Время выполнения регулярной оплаты в формате hh:mm:ss (UTC0) .Пример: |
|||
scheduled_payment_id |
Идентификатор следующей повторяемой оплаты. Пример: |
|||
start_date |
Дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации).Пример: |
|||
interval |
Интервал выполнения регулярной оплаты. Множитель для кратного увеличения периода списаний, например чтобы списания выполнялись раз в три недели, в параметре period надо задать значение W , а в параметре interval значение 3 ; возможные значения: от 1 до 100 .Пример: |
|||
expiry_year |
Год окончания действия повторяемой оплаты Пример: |
|||
expiry_month |
Месяц окончания действия повторяемой оплаты. Пример: |
|||
expiry_day |
День окончания действия повторяемой оплаты. Пример: |
|||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Вот пример данных из запроса на блокировку средств с использованием метода Apple Pay:
Рис.: Пример запроса на блокировку средств
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U==" }, "customer": { "id": "customer_123", "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "payment": { "amount": 100000, "currency": "KZT" }, "etoken": { "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}" }, "recurring": { "register": true, "type": "R", "period": "W", "interval": 3, "time": "10:00:00", "scheduled_payment_id": "567890", "start_date": "10-10-2020", "expiry_year": 2025, "expiry_month": 5, "expiry_day": 5 } }
Запрос на списание заблокированных средств
Далее представлена информация, необходимая для создания запроса на списание заблокированных средств с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/capture |
Полная спецификация конечной точки | /v2/payment/applepay/capture |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
payment |
amount |
Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Сумма платежа должна совпадать со значением, переданным в запросе на авторизацию. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
||
currency |
Код валюты платежа в формате ISO-4217 alpha-3. Валюта платежа должна совпадать со значением, переданным в запросе на авторизацию. Пример: |
|||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Вот пример данных из запроса на списание заблокированных средств с использованием метода Apple Pay:
Рис.: Пример запроса на списание заблокированных средств
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4" }, "payment": { "amount": 100000, "currency": "KZT" } }
Запрос на отмену блокировки средств
Далее представлена информация, необходимая для создания запроса на отмену блокировки средств с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/cancel |
Полная спецификация конечной точки | /v2/payment/applepay/cancel |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Пример запроса на отмену блокировки средств с применением метода Apple Pay.
Рис.: Пример запроса на отмену блокировки средств
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4" } }
Оповещение (callback)
В методе Apple Pay результат оплаты в две стадии платежная платформа возвращает в оповещении. Подробнее о структуре оповещений см. Оповещения (callbacks) в Gate.
При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.
В следующем примере в оповещении содержится информация о том, что в рамках проекта 123
произведена блокировка средств в размере 1000,00 KZT
.
Рис.: Пример данных из оповещения о блокировке средств
{ "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "awaiting capture", "date": "2025-02-23T09:31:16+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 25656, "payment_id": "1234567890", "auth_code": "130510" }, "id": 5009268010192904, "type": "auth", "status": "success", "date": "2025-02-23T09:31:16+0000", "created_date": "2025-02-23T09:31:13+0000", "request_id": "f2c569dcfc8caaad230-d449fed468dc...120188b71513288e5-05009269" }, "signature": "Xwv0+3w+3K4CBlCK2mzNZ7hvSs740DmNYheH...Z4uRUnDNoASiem+Kd7emCOy3A==" }
В следующем примере содержится информация об отклонении блокировки средств.
Рис.: Пример данных из оповещения об отклонении блокировки средств
{ "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "decline", "date": "2025-02-24T07:34:35+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "10201", "message": "Refer to card issuer", "provider": { "id": 25656, "payment_id": "1234567890", "auth_code": "" }, "id": 88969010166206, "type": "auth", "status": "decline", "date": "2025-02-24T07:34:35+0000", "created_date": "2025-02-24T07:34:32+0000", "request_id": "aa0c10c70169a00eab6ed...f7ed1e4b24e104bfd3001c98-00088970" }, "signature": "JsoAt+YE03GvTxHqlp43kN/Ao...8YZu9PObd3K2E3Syd+AYgwG1Fr8sOqw==" }
В следующем примере в оповещении содержится информация о том, что в рамках проекта 123
произведено списание ранее заблокированных средств.
Рис.: Пример данных из оповещения о списании средств
{ "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2025-02-23T09:31:21+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 25656, "payment_id": "1234567890", "auth_code": "130510" }, "id": 5009268010192914, "type": "capture", "status": "success", "date": "2025-02-23T09:31:21+0000", "created_date": "2025-02-23T09:31:19+0000", "request_id": "7574f98f58c447319961af...7d2c84fb999aba28b0da7-05009269" }, "signature": "R9VlffmrKlv0o4f6WyOVfmCeUp...Rtq++cU4RSXAuwwP7qRPJr68MX/XwPw==" }
В следующем примере содержится информация об отклонении списания средств.
Рис.: Пример данных из оповещения об отклонении списания средств
{ "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "awaiting capture", "date": "2025-02-14T11:02:40+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "10000", "message": "General decline", "provider": { "id": 18592, "payment_id": "", "auth_code": "" }, "id": 5044775010195824, "type": "capture", "status": "decline", "date": "2025-02-14T11:02:40+0000", "created_date": "2025-02-13T16:55:17+0000", "request_id": "365e5a5c177e49a69635a1e...cb6867da2414f92a5967-05044776" }, "signature": "aFarg/tVTKX8OfrCupyWwfi4y...YhyY8lZEqa2hPjpVt5zo2f8wMZdQ==" }
В следующем примере в оповещении содержится информация об отмене блокировки средств.
Рис.: Пример данных из оповещения об отмене блокировки средств
{ "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "canceled", "date": "2025-02-22T19:05:16+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 18592, "payment_id": "", "auth_code": "", "date": "2025-02-22T19:05:16+0000" }, "id": 5051368010197754, "type": "cancel", "status": "success", "date": "2025-02-22T19:05:16+0000", "created_date": "2025-02-22T19:05:12+0000", "request_id": "e591ce7e99b371e034ba167...81ce0f32182620116e622-05051369" }, "signature": "P98J30+t6uApD+Wa7rCUK25OICC...uimTzYoGxFzMPyoHNFaPa5b6g==" }
В следующем примере содержится информация об отклонении отмены блокировки средств.
Рис.: Пример данных из оповещения об отклонении отмены блокировки средств
{ "card_safe": false, "OperationFee": { "amount": 0, "currency": "KZT" }, "customer_ip": "2.73.213.76", "project_id": 84031, "payment": { "type": "purchase", "sum": { "amount": 100000, "currency": "KZT" }, "status": "awaiting capture", "method": "etoken", "id": "payment_47", "date": "2025-02-20T11:11:34+0000", "description": "TEST_PAYMENT_951914" }, "customer": { "id": "customer_123", "card_type": "mastercard" }, "account": { "number": "123456" }, "issuer_name": "JOINT STOCK COMMERCIAL BANK - TBC BANK", "recurring": { "valid_thru": "2028-02-29T23:59:59+0000", "id": 1696779776, "currency": "KZT" }, "operation": { "type": "cancel", "sum_initial": { "currency": "KZT", "amount": 100000 }, "sum_converted": { "currency": "KZT", "amount": 100000 }, "status": "decline", "request_id": "cancel_88358010120206-a9e702a...306b99c45e0dd-00088359", "provider": { "payment_id": "", "id": 18592, "auth_code": "" }, "message": "General decline", "id": 88358010167846, "date": "2025-02-20T11:11:34+0000", "created_date": "2025-02-20T11:11:32+0000", "code": "20000" }, "signature": "vfDSFTFOYB+h7AuyP6XMWBzTJJa0gXB...ondmQ14w6S2LgJKzWYeSZY9A==" }
Дополнительные материалы
Повторяемая оплата через Gate
Общая информация
Платежный метод Apple Pay предоставляет возможность проводить повторяемые оплаты — повторяемые оплаты со списаниями по запросу. Подробная информация представлена в разделе Схема и статусы повторяемой оплаты со списаниями по запросу.
В этом разделе содержится информация о проведении повторных списаний в рамках уже зарегистрированной повторяемой оплаты. Информация о том, как зарегистрировать повторяемую оплату, приведена в секции Формат запроса в разделах о проведении оплат в одну и две стадии.
При выполнении повторного списания в рамках уже зарегистрированной повторяемой оплаты через Gate с использованием метода Apple Pay ваша система должена выполнить следующее:
- Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес Rocketpay для проведения повторного списания.
- Принять от платежной платформы Rocketpay оповещение о результате повторного списания.
Полная схема проведения повторного списания в рамках уже зарегистрированной повторяемой оплаты выглядит следующим образом.
Рис.: Описание проведения повторного списания средств через Gate
- Пользователь на стороне вашей системы инициирует повторное списание в рамках уже зарегистрированной повторяемой оплаты. Этот шаг не является обязательным.
- Ваша система отправляет запрос на списание средств через Gate на URL-адрес Rocketpay.
- Запрос на списание средств поступает в платежную платформу Rocketpay.
- Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
- Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
- Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
- Сервис банка обрабатывает запрос.
- Сервис банка направляет в платежную платформу уведомление о результате списания средств.
- Платежная платформа отправляет в вашу систему оповещение о результате списания средств.
- Ваша система направляет пользователю информацию о результате списания средств.
Информация о формате запросов и параметрах инициирования повторного списания методом Apple Pay через Gate, а также о формате оповещений о результатах списания приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.
Запрос на повторяемую оплату
Далее представлена информация, необходимая для создания и отправки запроса на повторяемую оплату с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/recurring |
Полная спецификация конечной точки | /v2/payment/applepay/recurring |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
customer |
ip_address |
IP-адрес устройства пользователя. Пример: |
||
payment |
amount |
Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Сумма платежа должна быть целочисленной, иначе платеж будет отклонен. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
||
currency |
Код валюты платежа в формате ISO-4217 alpha-3. Пример: |
|||
recurring |
id |
Идентификатор зарегистрированной повторяемой оплаты. Пример: |
||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Вот пример запроса на проведение повторяемой оплаты.
Рис.: Пример запроса на проведение повторяемой оплаты
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2" }, "customer": { "ip_address": "198.51.100.47" }, "payment": { "amount": 100000, "currency": "KZT" }, "recurring": { "id": 12345 } }
Запрос на отмену повторяемой оплаты
До момента истечения срока выполнения повторяемых оплат их можно отменить. Также для изменения условий выполнения повторяемой оплаты ее необходимо отменить и отправить запрос на создание новой.
Далее представлена информация, необходимая для создания и отправки запроса на отмену повторяемой оплаты с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/recurring/cancel |
Полная спецификация конечной точки | /v2/payment/applepay/recurring/cancel |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
recurring |
id |
Идентификатор зарегистрированной повторяемой оплаты. Пример: |
||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Корректный запрос на отмену проведения повторямой оплаты с применением метода Apple Pay должен содержать идентификаторы проекта и платежа, подпись, а также идентификатор зарегистрированной повторяемой оплаты.
Рис.: Пример запроса на отмену повторяемой оплаты
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2v8" }, "recurring": { "id": 12345 } }
Оповещение (callback)
Для оповещений о результатах действий с повторяемыми оплатами с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 123
для пользователя была успешно зарегистрирована повторяемая оплата.
Рис.: Пример оповещения о успешном проведении повторяемой оплаты
{ "project_id": 123, "payment": { "id": "payment_47", "type": "recurring", "status": "success", "date": "2018-11-20T08:44:46+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "payment" }, "account": { "number": "123456" }, "recurring": { "id": 12345, "currency": "", "valid_thru": "-0001-11-30T00:00:00+0000" }, "operation": { "id": 28, "type": "recurring", "status": "success", "date": "2018-11-20T08:44:46+0000", "created_date": "2018-11-20T08:44:41+0000", "request_id": "07fd7ade7cf010", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "provider": { "id": 1187, "payment_id": "1234567890", "date": "2020-11-20T08:44:45+0000", "auth_code": "" }, "code": "0", "message": "Success" }, "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq==" }
В следующем примере оповещение свидетельствует о том, что проведение повторяемой оплаты успешно отменено.
Рис.: Пример оповещения об отмене проведения повторяемой оплаты
{ "project_id": 123, "payment": { "id": "payment_47", "type": "recurring", "status": "success", "date": "2018-11-20T08:44:46+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "payment" }, "account": { "number": "123456" }, "recurring": { "id": 12345, "currency": "", "valid_thru": "-0001-11-30T00:00:00+0000" }, "operation": { "id": 28, "type": "recurring_cancel", "status": "success", "date": "2018-11-20T08:44:46+0000", "created_date": "2018-11-20T08:44:41+0000", "request_id": "07fd7ade7cf010", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "provider": { "id": 1187, "payment_id": "1234567890", "date": "2020-11-20T08:44:45+0000", "auth_code": "" }, "code": "0", "message": "Success" }, "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq==" }
В следующем примере оповещение свидетельствует о том, что проведение повторяемой оплаты было отклонено.
Рис.: Пример оповещения о неуспешном проведении повторяемой оплаты
{ "project_id": 123, "payment": { "id": "payment_47", "type": "recurring", "status": "success", "date": "2018-11-20T08:44:46+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "payment" }, "errors": [ { "code": "2701", "message": "Rules Failed Code", "description": "fatal: RULES_FAILED_CODE" } ], "recurring": { "id": 12345, "currency": "", "valid_thru": "-0001-11-30T00:00:00+0000" }, "operation": { "id": 28, "type": "recurring", "status": "decline", "date": "2018-11-20T08:44:46+0000", "created_date": "2018-11-20T08:44:41+0000", "request_id": "07fd7ade7cf010", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "provider": { "id": 1187, "payment_id": "1234567890", "date": "2020-11-20T08:44:45+0000", "auth_code": "" }, "code": "2701", "message": "Rules Failed Code" }, "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq==" }
Дополнительные материалы
Для организации работы с оплатами через Gate также могут быть полезны следующие материалы:
Возврат через Gate
Общая информация
Чтобы выполнить возврат ранее выполненной оплаты через Gate с использованием метода Apple Pay:
- Отправьте запрос с нужными параметрами и подписью на рабочий URL-адрес платежной платформы Rocketpay.
- Примите от платежной платформы Rocketpay оповещение (callback) с результатом возврата.
Полная схема возврата по оплате с использованием метода Apple Pay выглядит следующим образом.
Рис.: Здесь описаны шаги возврата через Gate
- Пользователь запрашивает возврат в вашей системе.
- Ваша система передает запрос на возврат в Gate.
- Платежная платформа получает запрос.
- Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
- Платежная платформа отправляет вашей системе ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о структуре ответа см. Ответ.)
- Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
- Сервис Apple Pay обрабатывает запрос на возврат.
- Сервис Apple Pay отправляет платежной платформе уведомление о результате возврата.
- Платежная платформа отправляет в вашу систему оповещение (callback) с результатом возврата.
- Ваша система направляет пользователю информацию о результате возврата.
Информация о формате запросов и параметрах инициализации возвратов методом Apple Pay через Gate, а также о формате оповещений о результатах возвратов приведена далее, общая информация о работе с API см. в разделе Использование API Gate.
Запрос на возврат
Далее представлена информация, необходимая для создания и отправки запроса на возврат с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/refund |
Полная спецификация конечной точки | /v2/payment/applepay/refund |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
customer |
ip_address |
IP-адрес устройства пользователя. Пример: |
||
email |
Адрес электронной почты пользователя. Пример: |
|||
first_name |
Имя пользователя. Пример: |
|||
last_name |
Фамилия пользователя. Пример: |
|||
payment |
description |
Комментарий или описание возврата. Пример: |
||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Вот пример данных из запроса на возврат с использованием метода Apple Pay:
Рис.: Пример запроса на возврат
{ "general": { "project_id": 123, "payment_id": "refund_02", "signature": "of8k9xerKSK4XL1QFaDH3p9Mh0CIcjmOwSwKJ7KLTZYO56lCv+f1" }, "customer": { "ip_address": "198.51.100.47", "first_name": "John", "last_name": "Doe", "email": "johndoe@example.com" }, "payment": { "description": "refund_02" } }
Оповещение (callback)
Для оповещений о результатах возврата с применением метода Apple Pay используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере оповещение свидетельствует о том, что в рамках проекта 123
для пользователя был успешно проведен возврат в размере 1000,00 KZT
.
Рис.: Пример оповещения о проведенном возврате
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "refunded", "date": "2020-01-20T08:31:36+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "operation": { "id": 28, "type": "refund", "status": "success", "date": "2020-01-20T08:31:36+0000", "created_date": "2020-01-20T08:31:35+0000", "request_id": "e0069513", "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "0", "message": "Success", "provider": { "id": 1187, "payment_id": "1234567890", "auth_code": "" } }, "signature": "beJ1deUiEDd+7zuo6YrfSRxbOn8BYDLI9RR3yliH3B91LcBan4+2VkRrxn2NYOexr7" }
В следующем примере возврат был отклонен, так как значение суммы в запросе на возврат больше суммы, указанной в начальном запросе.
Рис.: Пример оповещения об отказе в проведении возврата
{ "project_id": 123, "payment": { "id": "payment_47", "type": "purchase", "status": "success", "date": "2020-01-20T08:31:36+0000", "method": "etoken", "sum": { "amount": 100000, "currency": "KZT" }, "description": "" }, "customer": { "id": "customer_123" }, "account": { "number": "123456" }, "operation": { "sum_initial": { "amount": 100000, "currency": "KZT" }, "sum_converted": { "amount": 100000, "currency": "KZT" }, "code": "3283", "message": "Refund amount more than init amount", "provider": { "id": 1187, "payment_id": "1234567890", "auth_code": "" }, "id": 28, "type": "refund", "status": "decline", "date": "2020-01-20T08:31:36+0000", "created_date": "2020-01-20T08:31:35+0000", "request_id": "e0069142" }, "signature": "beJ1deUiEDd+7zuo6YrfSRxbOn8BYDLI9RR3yliH3B91LcBan4+2VkRrxn2NYO" }
Дополнительные материалы
Для организации работы с возвратами через Gate также могут быть полезны следующие материалы:
Проверка действительности карты
Общая информация
Для проверки действительности карты через Gate с использованием Apple Pay метода со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay и принять оповещение о результате. Схема проведения проверки действительности карты через сервис Apple Pay аналогична стандартной проверке, описание которой представлено в разделе Проверка платежной карты.
Запрос на проверку действительности карты
Далее представлена информация, необходимая для проверки действительности карты с использованием метода Apple Pay.
HTTP-метод запроса | POST |
Формат тела запроса | JSON |
Конечная точка | /v2/payment/applepay/account_verification |
Полная спецификация конечной точки | /v2/payment/applepay/account_verification |
|
||||
---|---|---|---|---|
Объект | Параметр | Описание | ||
general |
project_id |
Идентификатор проекта, полученный от Rocketpay при интеграции. Пример: |
||
payment_id |
Идентификатор платежа, уникальный в рамках проекта. Пример: |
|||
signature |
Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным. | |||
customer |
ip_address |
IP-адрес устройства пользователя. Пример: |
||
payment |
amount |
Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют. Пример: 1000,00
KZT передается как |
||
currency |
Код валюты платежа в формате ISO-4217 alpha-3. Пример: |
|||
etoken |
token |
Токен, полученный от Apple Pay после идентификации пользователя. Пример: Пример: |
||
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации Gate: API Reference. |
Пример запроса на проверку действительности карты с помощью метода Apple Pay.
Рис.: Пример запроса на проверку действительности карты
{ "general": { "project_id": 123, "payment_id": "payment_47", "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4" }, "customer": { "ip_address": "198.51.100.47" }, "payment": { "amount": 100000, "currency": "KZT" }, "etoken": { "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}" } }
Оповещение (callback)
Для оповещений о результатах проведения проверки действительности карты используется стандартный формат, описание которого представлено в разделе Проверка платежной карты.
Дополнительные материалы
Для организации работы с операциями через Gate также могут быть полезны следующие материалы:
Тестирование
Общая информация
Для метода Apple Pay доступно тестирование оплат в одну и две стадии через Payment Page и Gate. Также доступно тестирование проверки действительности карты через Gate. При тестировании оплат через Gate веб-сервис мерчанта должен соответствовать следующим условиям:
- Домен сайта зарегистрирован в сервисах Apple. Для регистрации домена необходимо обратиться в службу технической поддержки Rocketpay support@rocketpay.kz
- Сайт поддерживает функциональность запуска скрипта для начала сессии Apple согласно документации.
Также при тестировании следует учитывать другие особенности работы с методом Apple Pay, указанные в разделе Обзор.
Тестирование может выполняться в рамках тестового проекта, для подключения и отключения этой функциональности необходимо обращаться к специалистам технической поддержки Rocketpay support@rocketpay.kz.
При проведении тестовых платежей следует учитывать, что в запросах должен указываться идентификатор тестового проекта, а интерфейсы эмулятора платежных форм Payment Page и страницы аутентификации 3‑D Secure могут отличаться от рабочих. Вместе с тем для проведения тестовых платежей необходимо использовать действительные платежные карты, предварительно зарегистрированные в сервисе Apple. Это никак не влияет на проведение реальных платежей с использованием этих карт, но позволяет выполнять полноценное тестирование.
Статусы тестовых платежей
При тестировании оплат в одну и две стадии их итоговые статусы определяются исходя из сумм, указанных в запросах:
decline
— при указании суммы2000
,5000
или10001
;success
— при указании суммы1000
.
При тестировании проверки действительности карты статус этой проверки определяется исходя из сумм, указанных в запросах:
success
— при указании суммы0
;decline
— при указании любой другой суммы.
Оплата в одну стадию через Payment Page
Для проведения тестовой оплаты в одну стадию через Payment Page необходимо:
- Отправить в платежную платформу корректный тестовый запрос на открытие Payment Page.
- Если в запросе не был указан метод
apple_pay_core
— выбрать метод Apple Pay на странице эмулятора. - Подтвердить оплату.
- Принять оповещение с информацией о результате оплаты.
Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page представлена в пункте Оплата в одну стадию через Payment Page.
Оплата в одну стадию через Gate
Для проведения тестовой оплаты через Gate необходимо:
- Отправить в платежную платформу корректный тестовый запрос на создание платежной сессии.
- Принять данные платежной сессии и пользователя.
- Подтвердить оплату.
- Отправить в платежную платформу корректный тестовый запрос на оплату.
- Принять оповещение с информацией о результате оплаты.
Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплата в одну стадию через Gate.
Оплата в две стадии с блокировкой средств через Payment Page и подтверждением или отменой через Gate
Для проведения тестовой оплаты в две стадии с блокировкой через Payment Page и подтверждением или отменой через Gate необходимо:
- Отправить в платежную платформу корректный тестовый запрос на открытие Payment Page.
- Если в запросе не был указан код предварительного выбора метода
card
илиapple_pay_core
— выбрать оплату методом Apple Pay на странице эмулятора. - Подтвердить оплату.
- Принять оповещение с информацией о результате блокировки.
- Отправить запрос на подтверждение или отмену оплаты.
- Принять оповещение с информацией о результате оплаты.
Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page и Gate представлена в пунктах Оплата в одну стадию через Payment Page и Оплата в одну стадию через Gate.
Оплата в две стадии с блокировкой средств и подтверждением или отменой через Gate
Для проведения тестовой оплаты в две стадии с блокировкой и подтверждением или отменой через Gate необходимо:
- Отправить в платежную платформу корректный тестовый запрос на создание платежной сессии.
- Принять данные платежной сессии и пользователя.
- Отправить в платежную платформу корректный тестовый запрос на оплату.
- Подтвердить оплату.
- Принять оповещение с информацией о результате блокировки.
- Отправить запрос на подтверждение или отмену оплаты.
- Принять оповещение с информацией о результате оплаты.
Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплата в одну стадию через Gate.
Проверка действительности карты через Gate
Для проведения тестовой проверки действительности карты через Gate необходимо отправить в платежную платформу корректный тестовый запрос на проверку действительности и принять оповещение с информацией о результате проверки.
Подробная информация о проведении проверки действительности карты с использованием метода Apple Pay через Gate представлена в пункте Проверка действительности карты.
Анализ результатов проведения платежей
Как и при работе с другими платежными методами, которые предоставляет Rocketpay, при использовании этого метода доступны разные способы анализа информации о платежах и операциях.
Всю необходимую информацию можно получать и анализировать средствами Dashboard (dashboard.rocketpay.kz
), в том числе с помощью аналитических панелей в разделе Аналитика.
Также можно выгружать необходимую информацию для последующего анализа с помощью специализированных аналитических средств сторонних разработчиков:
- Dashboard позволяет выгружать данные в формате CSV с помощью инструментов в разделе Отчеты. При этом можно выполнять разовые и периодические выгрузки информации на локальный компьютер.
- Data API позволяет получать информацию в формате JSON и отправлять ее на заданный URL — для этого применяются запросы к конечной точке /operations/get.
С любыми вопросами о возможностях анализа можно обращаться в службу технической поддержки Rocketpay.