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

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

Чтобы выполнить оплату через Payment Page с использованием метода Apple Pay:

  1. Отправьте запрос с нужными параметрами и подписью на рабочий URL-адрес платежной платформы Rocketpay.
  2. Примите от платежной платформы Rocketpay оповещение (callback) с результатом оплаты.

Полная схема оплаты через Payment Page выглядит следующим образом.



Рис.: Здесь описаны шаги оплаты через Payment Page

  1. Пользователь инициирует оплату в вашей системе.
  2. Ваша система передает запрос на оплату через Payment Page на URL-адрес платежной платформы Rocketpay.
  3. Платежная платформа получает запрос.
  4. Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
  5. Платежная платформа создает страницу оплаты на основе параметров проекта и запроса.
    Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
  6. Страница оплаты отображается пользователю.
  7. Пользователь выбирает на странице оплаты метод Apple Pay.
  8. Payment Page передает запрос на оплату в платежную платформу.
  9. Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
  10. Сервис Apple Pay обрабатывает запрос на оплату.
  11. Сервис Apple Pay передает в платежную платформу данные для отображения пользователю платежной инструкции.
  12. Платежная платформа передает эти данные в Payment Page.
  13. На Payment Page отображается платежная инструкция или открывается приложение Apple Pay для подтверждения оплаты пользователем.
  14. Пользователь выполняет необходимые действия и подтверждает оплату.
  15. На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
  16. Пользователь перенаправляется на страницу ожидания Payment Page.
  17. От сервиса Apple Pay к платежной платформе передаются зашифрованные данные пользователя.
  18. Выполняются дальнейшая обработка запроса и его отправка в сервис международной платежной системы.
  19. На стороне международной платежной системы выполняется обработка платежа.
  20. От международной платежной системы к платежной платформе направляется результат оплаты.
  21. Платежная платформа отправляет вашей системе оповещение (callback) о результате оплаты.
  22. Платежная платформа передает в Payment Page информацию о результате оплаты.
  23. Результат оплаты отображается пользователю на Payment Page.

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

Запрос на открытие платежной формы

В запросе на открытие платежной формы c использованием метода Apple Pay укажите необходимые параметры:

Табл. 1. Базовые параметры запроса на открытие платежной формы в Payment Page

strictly required — параметр обязательно должен присутствовать в начальном запросе.

optional — параметр необязателен, но в общем случае его наличие в запросе способствует оптимизации проведения платежа, например упрощает процесс платежа для пользователя или повышает процент успешных платежей.

Параметр Описание

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

customer_id
string
strictly required

Идентификатор пользователя, уникальный в рамках проекта.

Пример: customer_123

customer_first_name
string
strictly required

Имя пользователя.

Пример: John

customer_last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

customer_email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

card_holder
string
strictly required

Фамилия пользователя.

Пример: Doe

payment_currency
string
strictly required

Код валюты оплаты в формате ISO-4217 alpha-3.

Пример: KZT

payment_amount
integer
strictly required

Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Подписывание и проверка подписи.

force_payment_method
string
optional

Параметр, позволяющий пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода.

Чтобы пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода, добавьте в запрос параметр force_payment_method со значением:

  • apple_pay_core — для открытия Payment Page с предварительно выбранным платежным методом Apple Pay;
  • card — для открытия Payment Page с возможностью выбрать оплату с использованием платежной карты, подключенной к сервису Apple Pay.

В данном случае оба платежных метода доступны пользователю. Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.

Пример: force_payment_method: 'apple_pay_core'

recurring
string
optional

Для регистрации повторяемой оплаты добавьте в запрос параметр 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 со стороны веб-сервиса необходимо:

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

Полная схема оплаты в одну стадию с использованием метода Apple Pay выглядит следующим образом.



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

  1. Пользователь инициирует оплату в вашей системе.
  2. Ваша система передает запрос на создание платежной сессии в Gate.
  3. Платежная платформа получает запрос.
  4. Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
  5. Платежная платформа направляет запрос на создание платежной сессии к сервису Apple Pay.
  6. Сервис Apple Pay обрабатывает запрос на создание платежной сессии.
  7. Сервис Apple Pay передает к платежной платформе данные платежной сессии.
  8. Платежная платформа отправляет в вашу систему оповещение с данными для создания платежной сессии.
  9. Ваша система инициализирует платежную сессию и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
  10. Пользователь выполняет необходимые действия и подтверждает оплату.
  11. Сервис Apple Pay обрабатывает данные, полученные от пользователя.
  12. Пользователь перенаправляется на страницу ожидания вашей системы.
  13. Сервис Apple Pay передает зашифрованные данные пользователя в вашу систему.
  14. Ваша система передает запрос проведение оплаты через Apple Pay на заданный URL Rocketpay.
  15. Платежная платформа получает запрос на проведение оплаты.
  16. Платежная платформа выполняет начальную обработку запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  17. Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Ответ.
  18. Платежная платформа выполняет дальнейшую обработку запроса и отправляет в сервис международной платежной системы.
  19. Международная платежная система обрабатывает платеж.
  20. Международная платежная система направляет в платежную платформу уведомление о результате оплаты.
  21. Платежная платформа отправляет в вашу систему оповещение (callback) с результатом оплаты.
  22. Ваша система направляет пользователю информацию о результате оплаты.

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

Запрос на создание платежной сессии

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

HTTP-метод запроса POST
Формат тела запроса JSON
Конечная точка /v2/session/applepay
Полная спецификация конечной точки /v2/session/applepay
Табл. 2. Базовые параметры запроса на создание платежной сессии

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

validation_url
string
strictly required

URL для проверки.

Пример: apple-pay-gateway.apple.com/paymentservices/startSession

domain_name
string
strictly required

Доменное имя вашего веб-сервиса.

Пример: appay.en.ngrok.io

display_name
string
strictly required

Название проекта для отображения, не более 64 символов.

Пример: test payment

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 3. Базовые параметры запроса на оплату

strictly required — параметр обязательно должен присутствовать в начальном запросе.

optional — параметр необязателен, но в общем случае его наличие в запросе способствует оптимизации проведения платежа, например упрощает процесс платежа для пользователя или повышает процент успешных платежей.

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

customer
object
strictly required

id
string
strictly required

Идентификатор пользователя, уникальный в рамках проекта.

Пример: customer_123

ip_address
string
strictly required

IP-адрес устройства пользователя.

Пример: 198.51.100.47

first_name
string
strictly required

Имя пользователя.

Пример: John

last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

payment
object
strictly required

amount
integer
strictly required

Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

currency
string
strictly required

Код валюты платежа в формате ISO-4217 alpha-3.

Пример: KZT

etoken
object
strictly required

token
string
strictly required

Токен, полученный от Apple Pay после идентификации пользователя.

Пример: "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}"

recurring
object
optional

register
boolean
optional

Признак регистрации повторяемой оплаты, необходимо использовать значение true. Подробнее о регистрации повторяемой оплаты с использованием Gate, см. Регистрация повторяемой оплаты

Пример: true

type
string
optional

Тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация.

Пример: R

period
string
optional

Период выполнения регулярной оплаты. Возможные варианты:
  • D — ежедневно,
  • W — еженедельно,
  • M — ежемесячно,
  • Q — ежеквартально,
  • Y — ежегодно.

Пример: W

time
string
optional

Время выполнения регулярной оплаты в формате hh:mm:ss (UTC0).

Пример: 10:00:00

scheduled_payment_id
integer
optional

Идентификатор следующей повторяемой оплаты.

Пример: 567890

start_date
string
optional

Дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации).

Пример: 10-10-2020

interval
integer
optional

Интервал выполнения регулярной оплаты. Множитель для кратного увеличения периода списаний, например чтобы списания выполнялись раз в три недели, в параметре period надо задать значение W, а в параметре interval значение 3; возможные значения: от 1 до 100.

Пример: 3

expiry_year
integer
optional

Год окончания действия повторяемой оплаты

Пример: 2025

expiry_month
integer
optional

Месяц окончания действия повторяемой оплаты.

Пример: 5

expiry_day
integer
optional

День окончания действия повторяемой оплаты.

Пример: 5

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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

  1. Пользователь инициирует оплату в вашей системе.
  2. Ваша система передает запрос на оплату через Payment Page на URL-адрес платежной платформы Rocketpay.
  3. Платежная платформа получает запрос.
  4. Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
  5. Платежная платформа создает страницу оплаты на основе параметров проекта и запроса.
    Прим.: На этом шаге платежная платформа определяет тип проводимой оплаты (в одну или в две стадии) в соответствии с параметрами проекта.
  6. Страница оплаты отображается пользователю.
  7. Пользователь выбирает на странице оплаты метод Apple Pay.
  8. Payment Page передает запрос на оплату в платежную платформу.
  9. Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
  10. Сервис Apple Pay обрабатывает запрос на оплату.
  11. Сервис Apple Pay передает в платежную платформу данные для отображения пользователю платежной инструкции.
  12. Платежная платформа передает эти данные в Payment Page.
  13. На Payment Page отображается платежная инструкция или открывается приложение Apple Pay для подтверждения оплаты пользователем.
  14. Пользователь выполняет необходимые действия и подтверждает оплату.
  15. На стороне Apple Pay выполняется обработка данных, полученных от пользователя.
  16. Пользователь перенаправляется на страницу ожидания Payment Page.
  17. От сервиса Apple Pay к платежной платформе передаются зашифрованные данные пользователя.
  18. Выполняются дальнейшая обработка запроса и его отправка в сервис международной платежной системы.
  19. На стороне международной платежной системы выполняется обработка запроса на блокировку средств.
  20. От международной платежной системы к платежной платформе направляется результат блокировки средств.
  21. Платежная платформа отправляет вашей системе оповещение (callback) о результате оплаты.
  22. Платежная платформа передает в Payment Page информацию о результате оплаты.
  23. Результат оплаты отображается пользователю на Payment Page.

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

Запрос на открытие платежной формы

В запросе на открытие платежной формы c использованием метода Apple Pay укажите необходимые параметры:

Табл. 4. Базовые параметры запроса на открытие платежной формы в Payment Page

strictly required — параметр обязательно должен присутствовать в начальном запросе.

optional — параметр необязателен, но в общем случае его наличие в запросе способствует оптимизации проведения платежа, например упрощает процесс платежа для пользователя или повышает процент успешных платежей.

Параметр Описание

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

customer_id
string
strictly required

Идентификатор пользователя, уникальный в рамках проекта.

Пример: customer_123

customer_first_name
string
strictly required

Имя пользователя.

Пример: John

customer_last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

customer_email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

card_holder
string
strictly required

Фамилия пользователя.

Пример: Doe

payment_currency
string
strictly required

Код валюты оплаты в формате ISO-4217 alpha-3.

Пример: KZT

payment_amount
integer
strictly required

Сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Подписывание и проверка подписи.

force_payment_method
string
optional

Параметр, позволяющий пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода.

Чтобы пропустить страницу выбора метода и принудительно выбрать Apple Pay в качестве платежного метода, добавьте в запрос параметр force_payment_method со значением:

  • apple_pay_core — для открытия Payment Page с предварительно выбранным платежным методом Apple Pay;
  • card — для открытия Payment Page с возможностью выбрать оплату с использованием платежной карты, подключенной к сервису Apple Pay.

В данном случае оба платежных метода доступны пользователю. Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.

Пример: force_payment_method: 'apple_pay_core'

recurring
string
optional

Параметр, необходимый для регистрации повторяемой оплаты. Содержит в себе строку, полученную в результате кодирования с помощью 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 веб-сервис должен выполнить следующее:

  1. Отправить запрос на создание платежной сессии, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
  2. Принять данные платежной сессии и пользователя.
  3. Отправить запрос для блокировки средств, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
  4. Принять от платежной платформы Rocketpay оповещение о результате блокировки средств.
  5. Отправить запрос для списания средств, содержащий требуемые параметры и подпись, на рабочий URL Rocketpay.
  6. Принять от платежной платформы Rocketpay оповещение (callback) о результате оплаты.
Прим.: Для выполнения оплат через Gate настройте взаимодействие вашего веб-сервиса с сервисом Apple Pay.

Проведение оплаты в две стадии выполняется поэтапно:

  1. Этап 1. Блокировка средств пользователя.
  2. Этап 2. Списание заблокированных средств или отмена блокировки средств без их списания.

Полная схема оплаты с использованием метода Apple Pay выглядит следующим образом.

Рис.: Этап 1. Блокировка средств через Gate

  1. Пользователь инициирует оплату в вашей системе.
  2. Ваша система передает запрос на оплату в Gate.
  3. Платежная платформа получает запрос.
  4. Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
  5. Платежная платформа направляет запрос на создание платежной сессии к сервису Apple Pay.
  6. Сервис Apple Pay обрабатывает запрос на создание платежной сессии.
  7. Сервис Apple Pay передает к платежной платформе данные платежной сессии.
  8. Платежная платформа отправляет в вашу систему оповещение с данными для создания платежной сессии.
  9. Ваша система инициализирует платежную сессию и пользователю отображается интерфейс или открывается приложение Apple Pay для подтверждения оплаты.
  10. Пользователь выполняет необходимые действия и подтверждает оплату.
  11. Сервис Apple Pay обрабатывает данные, полученные от пользователя.
  12. Пользователь перенаправляется на страницу ожидания вашей системы.
  13. Сервис Apple Pay передает зашифрованные данные пользователя в вашу систему.
  14. Ваша система передает запрос проведение оплаты через Apple Pay на заданный URL Rocketpay.
  15. Платежная платформа получает запрос на проведение оплаты.
  16. Платежная платформа выполняет начальную обработку запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  17. Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Ответ.
  18. Платежная платформа выполняет дальнейшую обработку запроса и отправляет в сервис международной платежной системы.
  19. Международная платежная система обрабатывает платеж.
  20. Международная платежная система направляет в платежную платформу уведомление о результате оплаты.
  21. Платежная платформа отправляет в вашу систему оповещение (callback) с результатом оплаты.
  22. Ваша система направляет пользователю информацию о результате оплаты.

Рис.: Этап 2. Списание средств через Gate

  1. Ваша система отправляет запрос на списание средств через Gate на URL-адрес Rocketpay.
  2. Запрос на списание средств поступает в платежную платформу Rocketpay.
  3. Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
  4. Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
  5. Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
  6. Сервис банка обрабатывает запрос.
  7. Сервис банка направляет в платежную платформу уведомление о результате списания средств.
  8. Платежная платформа отправляет в вашу систему оповещение о результате списания средств.

Рис.: Этап 2. Отмена блокировки средств через Gate

  1. Ваша система отправляет запрос на отмену блокировки средств через Gate на URL-адрес Rocketpay.
  2. Запрос на отмену блокировки средств поступает в платежную платформу Rocketpay.
  3. Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
  4. Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ).
  5. Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
  6. Сервис банка обрабатывает запрос.
  7. Сервис банка направляет в платежную платформу уведомление о результате отмены блокировки средств.
  8. Платежная платформа отправляет в вашу систему оповещение о результате отмены блокировки средств.

Информация о форматах запросов и оповещений, используемых при проведении оплаты в две стадии с использованием метода Apple Pay через Gate приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.

Запрос на создание платежной сессии

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

HTTP-метод запроса POST
Формат тела запроса JSON
Конечная точка /v2/session/applepay
Полная спецификация конечной точки /v2/session/applepay
Табл. 5. Базовые параметры запроса на создание платежной сессии

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

validation_url
string
strictly required

URL для проверки.

Пример: apple-pay-gateway.apple.com/paymentservices/startSession

domain_name
string
strictly required

Доменное имя вашего веб-сервиса.

Пример: appay.en.ngrok.io

display_name
string
strictly required

Название проекта для отображения, не более 64 символов.

Пример: test payment

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 6. Базовые параметры запроса на блокировку средств

strictly required — параметр обязательно должен присутствовать в начальном запросе.

optional — параметр необязателен, но в общем случае его наличие в запросе способствует оптимизации проведения платежа, например упрощает процесс платежа для пользователя или повышает процент успешных платежей.

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

customer
object
strictly required

id
string
strictly required

Идентификатор пользователя, уникальный в рамках проекта.

Пример: customer_123

ip_address
string
strictly required

IP-адрес устройства пользователя.

Пример: 198.51.100.47

email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

first_name
string
strictly required

Имя пользователя.

Пример: John

last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

payment
object
strictly required

amount
integer
strictly required

Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

currency
string
strictly required

Код валюты платежа в формате ISO-4217 alpha-3.

Пример: KZT

etoken
object
strictly required

token
string
strictly required

Токен, полученный от Apple Pay после идентификации пользователя.

Пример: "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}"

recurring
object
optional

register
boolean
optional

Признак регистрации повторяемой оплаты, необходимо использовать значение true. Подробнее о регистрации повторяемой оплаты с использованием Gate, см. Регистрация повторяемой оплаты

Пример: true

type
string
optional

Тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация.

Пример: R

period
string
optional

Период выполнения регулярной оплаты. Возможные варианты:
  • D — ежедневно,
  • W — еженедельно,
  • M — ежемесячно,
  • Q — ежеквартально,
  • Y — ежегодно.

Пример: W

time
string
optional

Время выполнения регулярной оплаты в формате hh:mm:ss (UTC0).

Пример: 10:00:00

scheduled_payment_id
integer
optional

Идентификатор следующей повторяемой оплаты.

Пример: 567890

start_date
string
optional

Дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации).

Пример: 10-10-2020

interval
integer
optional

Интервал выполнения регулярной оплаты. Множитель для кратного увеличения периода списаний, например чтобы списания выполнялись раз в три недели, в параметре period надо задать значение W, а в параметре interval значение 3; возможные значения: от 1 до 100.

Пример: 3

expiry_year
integer
optional

Год окончания действия повторяемой оплаты

Пример: 2025

expiry_month
integer
optional

Месяц окончания действия повторяемой оплаты.

Пример: 5

expiry_day
integer
optional

День окончания действия повторяемой оплаты.

Пример: 5

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 7. Базовые параметры запроса на списание заблокированных средств

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

payment
object
strictly required

amount
integer
strictly required

Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Сумма платежа должна совпадать со значением, переданным в запросе на авторизацию. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

currency
string
strictly required

Код валюты платежа в формате ISO-4217 alpha-3. Валюта платежа должна совпадать со значением, переданным в запросе на авторизацию.

Пример: KZT

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 8. Базовые параметры запроса на отмену блокировки средств

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.
При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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 ваша система должена выполнить следующее:

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

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



Рис.: Описание проведения повторного списания средств через Gate

  1. Пользователь на стороне вашей системы инициирует повторное списание в рамках уже зарегистрированной повторяемой оплаты. Этот шаг не является обязательным.
  2. Ваша система отправляет запрос на списание средств через Gate на URL-адрес Rocketpay.
  3. Запрос на списание средств поступает в платежную платформу Rocketpay.
  4. Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
  5. Платежная платформа направляет в вашу систему ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
  6. Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
  7. Сервис банка обрабатывает запрос.
  8. Сервис банка направляет в платежную платформу уведомление о результате списания средств.
  9. Платежная платформа отправляет в вашу систему оповещение о результате списания средств.
  10. Ваша система направляет пользователю информацию о результате списания средств.

Информация о формате запросов и параметрах инициирования повторного списания методом Apple Pay через Gate, а также о формате оповещений о результатах списания приведена далее. Общую информацию о работе с Gate API можно найти в разделе Использование API Gate.

Запрос на повторяемую оплату

Далее представлена информация, необходимая для создания и отправки запроса на повторяемую оплату с использованием метода Apple Pay.

HTTP-метод запроса POST
Формат тела запроса JSON
Конечная точка /v2/payment/applepay/recurring
Полная спецификация конечной точки /v2/payment/applepay/recurring
Табл. 9. Базовые параметры запроса на проведение повторяемой оплаты

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

customer
object
strictly required

ip_address
string
strictly required

IP-адрес устройства пользователя.

Пример: 198.51.100.47

payment
object
strictly required

amount
integer
strictly required

Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Сумма платежа должна быть целочисленной, иначе платеж будет отклонен. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

currency
string
strictly required

Код валюты платежа в формате ISO-4217 alpha-3.

Пример: KZT

recurring
object
strictly required

id
string
strictly required

Идентификатор зарегистрированной повторяемой оплаты.

Пример: 12345

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 10. Базовые параметры запроса на отмену повторяемой оплаты

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

recurring
object
strictly required

id
string
strictly required

Идентификатор зарегистрированной повторяемой оплаты.

Пример: 12345

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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:

  1. Отправьте запрос с нужными параметрами и подписью на рабочий URL-адрес платежной платформы Rocketpay.
  2. Примите от платежной платформы Rocketpay оповещение (callback) с результатом возврата.

Полная схема возврата по оплате с использованием метода Apple Pay выглядит следующим образом.



Рис.: Здесь описаны шаги возврата через Gate

  1. Пользователь запрашивает возврат в вашей системе.
  2. Ваша система передает запрос на возврат в Gate.
  3. Платежная платформа получает запрос.
  4. Платежная платформа проверяет наличие обязательных параметров и корректной подписи в запросе.
  5. Платежная платформа отправляет вашей системе ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о структуре ответа см. Ответ.)
  6. Платежная платформа обрабатывает запрос и отправляет его в сервис Apple Pay.
  7. Сервис Apple Pay обрабатывает запрос на возврат.
  8. Сервис Apple Pay отправляет платежной платформе уведомление о результате возврата.
  9. Платежная платформа отправляет в вашу систему оповещение (callback) с результатом возврата.
  10. Ваша система направляет пользователю информацию о результате возврата.

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

Запрос на возврат

Далее представлена информация, необходимая для создания и отправки запроса на возврат с использованием метода Apple Pay.

HTTP-метод запроса POST
Формат тела запроса JSON
Конечная точка /v2/payment/applepay/refund
Полная спецификация конечной точки /v2/payment/applepay/refund
Табл. 11. Базовые параметры запроса на возврат

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

customer
object
strictly required

ip_address
string
strictly required

IP-адрес устройства пользователя.

Пример: 198.51.100.47

email
string
strictly required

Адрес электронной почты пользователя.

Пример: johndoe@example.com

first_name
string
strictly required

Имя пользователя.

Пример: John

last_name
string
strictly required

Фамилия пользователя.

Пример: Doe

payment
object
strictly required

description
string
strictly required

Комментарий или описание возврата.

Пример: refund_02

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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
Табл. 12. Базовые параметры запроса на проверку действительности карты

strictly required — параметр обязательно должен присутствовать в начальном запросе

Объект Параметр Описание

general
object
strictly required

project_id
integer
strictly required

Идентификатор проекта, полученный от Rocketpay при интеграции.

Пример: 123

payment_id
string
strictly required

Идентификатор платежа, уникальный в рамках проекта.

Пример: payment_47

signature
string
strictly required

Подпись запроса, составленная после определения всех параметров запроса. Подробнее о составлении подписи см. Использование подписи к данным.

customer
object
strictly required

ip_address
string
strictly required

IP-адрес устройства пользователя.

Пример: 198.51.100.47

payment
object
strictly required

amount
integer
strictly required

Сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.

Пример: 1000,00 KZT передается как 100000

currency
string
strictly required

Код валюты платежа в формате ISO-4217 alpha-3.

Пример: KZT

etoken
object
strictly required

token
string
strictly required

Токен, полученный от Apple Pay после идентификации пользователя.

Пример:

Пример: "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}"

При необходимости добавьте в запрос необязательные параметры, указанные в спецификации 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 необходимо:

  1. Отправить в платежную платформу корректный тестовый запрос на открытие Payment Page.
  2. Если в запросе не был указан метод apple_pay_core — выбрать метод Apple Pay на странице эмулятора.
  3. Подтвердить оплату.
  4. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page представлена в пункте Оплата в одну стадию через Payment Page.

Оплата в одну стадию через Gate

Для проведения тестовой оплаты через Gate необходимо:

  1. Отправить в платежную платформу корректный тестовый запрос на создание платежной сессии.
  2. Принять данные платежной сессии и пользователя.
  3. Подтвердить оплату.
  4. Отправить в платежную платформу корректный тестовый запрос на оплату.
  5. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплата в одну стадию через Gate.

Оплата в две стадии с блокировкой средств через Payment Page и подтверждением или отменой через Gate

Для проведения тестовой оплаты в две стадии с блокировкой через Payment Page и подтверждением или отменой через Gate необходимо:

  1. Отправить в платежную платформу корректный тестовый запрос на открытие Payment Page.
  2. Если в запросе не был указан код предварительного выбора метода card или apple_pay_core — выбрать оплату методом Apple Pay на странице эмулятора.
  3. Подтвердить оплату.
  4. Принять оповещение с информацией о результате блокировки.
  5. Отправить запрос на подтверждение или отмену оплаты.
  6. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Payment Page и Gate представлена в пунктах Оплата в одну стадию через Payment Page и Оплата в одну стадию через Gate.

Оплата в две стадии с блокировкой средств и подтверждением или отменой через Gate

Для проведения тестовой оплаты в две стадии с блокировкой и подтверждением или отменой через Gate необходимо:

  1. Отправить в платежную платформу корректный тестовый запрос на создание платежной сессии.
  2. Принять данные платежной сессии и пользователя.
  3. Отправить в платежную платформу корректный тестовый запрос на оплату.
  4. Подтвердить оплату.
  5. Принять оповещение с информацией о результате блокировки.
  6. Отправить запрос на подтверждение или отмену оплаты.
  7. Принять оповещение с информацией о результате оплаты.

Подробная информация о проведении оплат с использованием метода Apple Pay через Gate представлена в пункте Оплата в одну стадию через Gate.

Проверка действительности карты через Gate

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

Подробная информация о проведении проверки действительности карты с использованием метода Apple Pay через Gate представлена в пункте Проверка действительности карты.

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

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

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

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

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

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