Оплата по платежной ссылке
В этом разделе представлена информация о проведении оплаты по платежным ссылкам, дополняющая сведения в разделе Схема и статусы оплаты по платежной ссылке.
Общая информация
Оплата по платежной ссылке — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется создание и отправка платежной ссылки, а затем один (разовый) перевод денежных средств от пользователя к мерчанту. Платежная платформа Rocketpay поддерживает следующие варианты таких оплат:
- оплата по платежной ссылке в одну стадию,
- оплата по платежной ссылке в две стадии.
Оба варианта проводятся с использованием платежной формы Payment Page, ссылка на которую отправляется на электронную почту пользователя средствами Rocketpay или любым другим способом средствами мерчанта. Срок действия такой ссылки и вариант проведения платежа определяются на стороне мерчанта и указываются в параметрах запроса на его инициирование. Также в параметрах такого запроса можно указать платежный метод, с использованием которого необходимо провести платеж, или предоставить пользователю возможность выбора из всех методов, подключенных для проекта мерчанта.
Так как в оплате по платежной ссылке используется платежная форма Payment Page, в параметрах запросов на инициирование такой оплаты реквизиты платежного инструмента либо вообще не указываются, либо указываются в форме токена карты. В последнем случае пользователю понадобится только подтвердить подлинность платежного инструмента, без указания его реквизитов в платежной форме.
Как и при проведении других типов платежей, в процессе проведения оплаты по платежной ссылке может потребоваться выполнить вспомогательные процедуры, такие как аутентификация с использованием технологии 3‑D Secure, дополнение информации о платеже и конвертация валют. Эти процедуры полностью выполняются на стороне Payment Page, дополнительных действий со стороны веб-сервиса мерчанта при этом не требуется.
Сценарии использования
Допустим, пользователь веб-сервиса оформил заказ на сумму 12.99 GBP и выбрал возможность оплаты по платежной ссылке, указав для получения ссылки свой адрес электронной почты — johndoe@example.com.
Успешная оплата
- Со стороны веб-сервиса мерчанта к платежной платформе отправляется запрос с параметрами, необходимыми для отправки платежной ссылки пользователю средствами Rocketpay.
- Платежная платформа обрабатывает такой запрос, направляет оповещение к веб-сервису мерчанта и отправляет на указанный в запросе адрес электронной почты письмо. Стандартный язык письма — английский.
- Пользователь переходит по ссылке, после чего ему отображается Payment Page. Если в запросе на инициирование платежа не указан платежный метод, то пользователю отображается страница выбора платежного метода, а если платежный метод указан — страница указанного платежного метода.
- Пользователь указывает платежные данные и подтверждает оплату, а также, при необходимости, осуществляет дополнительные действия, требуемые для выполнения одной или нескольких вспомогательных процедур.
- По результатам проведения платежа к веб-сервису направляется оповещение о результате, а пользователю отображается страница результата оплаты.
Отмена платежа
- Со стороны веб-сервиса мерчанта к платежной платформе отправляется запрос на отмену платежа.
- Платежная платформа обрабатывает такой запрос, направляет оповещение к веб-сервису мерчанта и отправляет на ранее указанный адрес электронной почты письмо. Стандартный язык письма — английский.
- Если пользователь переходит по платежной ссылке, ему отображается страница с уведомлением об отмене платежа.
Истечение срока действия платежной ссылки
- К веб-сервису мерчанта направляется оповещение об истечении срока действия платежной ссылки.
- Если пользователь переходит по платежной ссылке, ему отображается страница с уведомлением об истечении срока действия платежной ссылки.
Детальные сведения о том, что необходимо делать со стороны мерчанта для проведения платежа, представлены далее.
Настройка
Содержание и оформление писем
По умолчанию для составления писем, отправляемых на электронную почту пользователя, используются следующие данные из запроса на создание платежной ссылки:
- идентификатор платежа (
payment_id); - сумма (
amount) и валюта (currency) платежа; - срок действия платежной ссылки (
best_before); - описание платежа (
description).
По желанию мерчанта можно изменить состав данных, которые необходимо передавать в составе письма, или предоставить собственную верстку письма.
По всем вопросам, связанным с изменением содержания и оформления писем, следует обращаться к специалистам технической поддержки — support@rocketpay.kz.
Дизайн платежной формы
По умолчанию пользователю отображается платежная форма с базовым вариантом верстки от Rocketpay. По желанию мерчанта можно внести изменения в этот вариант верстки (изменить используемые цвета, добавить логотипы или, например скорректировать используемые тексты) или разработать собственный вариант верстки с учетом требований, перечисленных в разделе Индивидуальный дизайн Payment Page.
По всем вопросам, связанным с дизайном платежной формы, следует обращаться к специалистам технической поддержки — support@rocketpay.kz.
Схема проведения
Для проведения оплаты по платежной ссылке через Gate необходимо:
- Отправить запрос на оплату по платежной ссылке к конечной точке
/v2/payment/invoice[/card/token]/create. - Принять оповещение о создании платежной ссылки.
- Принять оповещение о результате оплаты или оповещение об истечении срока действия ссылки.
Для проведения оплаты по платежной ссылке в две стадии дополнительно требуется выполнить вторую стадию такой оплаты: подтверждение списания заблокированных средств или отмену блокировки. Подробная информация о выполнении второй стадии оплаты в две стадии представлена в разделе Оплата в две стадии.
Схема проведения оплаты по платежной ссылке представлена далее.
Рис.: Проведение оплаты по платежной ссылке
- От веб-сервиса на заданный URL Rocketpay передается запрос на оплату по платежной ссылке.
- Запрос поступает в платежную платформу.
- В платежной платформе выполняется прием запроса с проверкой его корректности.
- Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и его корректности.
- В платежной платформе осуществляется обработка запроса.
- Платежная платформа направляет в веб-сервис мерчанта оповещение о создании платежной ссылки.
- От платежной платформы на электронную почту пользователя (или от веб-сервиса мерчанта на электронную почту либо другим способом) отправляется платежная ссылка.
- Пользователь переходит по этой платежной ссылке.
- Запрос на открытие платежной формы поступает в платежную платформу.
- В платежной платформе осуществляется обработка запроса.
- Осуществляется генерация Payment Page согласно настройкам проекта.
- Пользователю отображается ранее сгенерированная платежная форма.
- Пользователь указывает платежные данные и подтверждает оплату.
- Запрос на проведение оплаты поступает в платежную платформу.
- Выполняются обработка запроса и его отправка в платежную систему (или в сервис провайдера).
- В платежной системе (или в сервисе провайдера) выполняется обработка платежа.
- От платежной системы (или сервиса провайдера) к платежной платформе направляется уведомления о результате платежа.
- Платежная платформа направляет в веб-сервис оповещение о результате платежа.
- От платежной платформы к Payment Page направляется результат платежа.
- Результат платежа отображается пользователю на Payment Page.
Для отмены такой оплаты до ее подтверждения пользователем необходимо:
- Отправить запрос на отмену платежа к конечной точке
/v2/payment/invoice/cancel. - Принять оповещение об отмене платежа.
Далее приведена информация о форматах запросов и параметрах инициирования оплаты по платежной ссылке и ее отмены, а также о форматах оповещений, используемых при проведении платежа.
Структура запроса
Формат запроса на проведение платежа
При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к одной из следующих конечных точек: /v2/payment/invoice/create или /v2/payment/invoice/card/token/create.
- В запросе должны использоваться следующие объекты и параметры:
general— объект, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от Rocketpay при интеграции;payment_id— идентификатор платежа, уникальный в рамках проекта;signature— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Подписывание и проверка подписи);
customer— объект, содержащий сведения о пользователе:id— идентификатор пользователя в веб-сервисе мерчанта;
payment— объект, содержащий сведения о платеже:amount— сумма оплаты в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют;currency— валюта платежа в формате ISO-4217 alpha-3;best_before— срок действия платежной ссылки в форматеYYYY-MM-DDThh:mm:ss±hh:mm.
- При передаче токена — токен карты в параметре
token. - Для отправки платежной ссылки средствами Rocketpay:
email— адрес электронной почты пользователя, содержится в объектеcustomer;send_email— индикатор автоматической отправки платежной ссылки, для отправки необходимо передать значениеtrue;language— код языка, содержится в объектеcustomer; необходимо передавать в случае, если язык пользователя отличается от английского и для этого языка настроена верстка письма.
-
Для предварительного выбора платежного метода — код этого метода в параметре
force_method(список таких кодов — в разделе Коды поддерживаемых платежных методов на Payment Page). - Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на оплату по платежной ссылке должен содержать идентификаторы проекта и платежа, подпись, идентификатор пользователя, валюту и сумму платежа, срок действия платежной ссылки и, при необходимости, токен платежной карты. Дополнительно, если платежную ссылку необходимо отправить средствами Rocketpay, запрос должен содержать адрес электронной почты пользователя и индикатор автоматической отправки платежной ссылки.
{
"general": {
"project_id": 1901,
"payment_id": "456789",
"signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm=="
},
"customer": {
"id": "JOHN DOE",
"email": "johndoe@example.com"
}
"payment": {
"amount": 1500,
"currency": "GBP",
"best_before": "2020-10-11T11:50:00+00:00"
},
"send_email": true,
// при передаче ранее созданного токена платежной карты:
"token": "f365bb1729f9b72fd9c097becc679f29c3e35c91d18070d15654"
}
Формат запроса на отмену платежа
При формировании запросов необходимо учитывать следующее:
- Должен использоваться POST-запрос к конечной точке /v2/payment/invoice/cancel.
- В запросе должен использоваться объект
general, содержащий основные идентификационные сведения запроса:project_id— идентификатор проекта, полученный от Rocketpay при интеграции;payment_id— идентификатор того платежа, который необходимо отменить;signature— подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Подписывание и проверка подписи);
- Дополнительно могут использоваться любые другие параметры, указанные в спецификации.
Таким образом, корректный запрос на отмену платежа должен содержать идентификаторы проекта и платежа, а также подпись.
{
"general": {
"project_id": 1901,
"payment_id": "456789",
"signature": "v7KNMpfogAxwRIL9tVftZ1ZZ5D/aZAeb0VMdeR+CqGrNxYyilUwSm=="
}
}
Структура оповещения
Формат оповещения о создании платежной ссылки
Для оповещения об отправке платежной ссылки пользователю используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере содержится информация о том, что пользователю johndoe на адрес электронной почты johndoe@example.com отправлена платежная ссылка для оплаты заказа в размере 12,99 GBP. Срок действия ссылки истекает 11 октября 2020 года, в 11:50.
Рис.: Пример тела оповещения об отправке платежной ссылки пользователю
{
"project_id":1901,
"payment":{
"id": "456789",
"type": "invoice",
"status": "invoice sent",
"date": "2020-01-11T11:50:24+0000",
"best_before": "2020-10-11T11:50:00+0000",
"force_payment_method": "card",
"method": "card",
"email": "johndoe@example.com",
"sum":{
"amount": 1299,
"currency": "GBP"
},
"description": "fluorescent paint 400ml"
},
"paymentLink": ".../payment?project_id=1901&payment_id=456789&customer_country=GB&
language_code=en&payment_currency=GBP&best_before=2020-10-11T11:50%&
interface_type=%7B%22id%22%3A3%7D&card_operation_type=sale&
signature=hghwGGyapGUQnI+Qg==",
"account":{
"number": "424220******4800",
"token": "f365bb1729f9b72fd9c097becc679f29c3e35c91d18070d15654",
"type": "visa",
"card_holder": "JOHN DOE",
"id":1353,
"expiry_month": "11",
"expiry_year": "2022"
},
"customer":{
"id": "johndoe"
},
"operation":{
"id":180001525,
"type": "invoice",
"status": "invoice sent",
"date": "2020-01-11T11:57:34+0000",
"created_date": "2020-01-11T11:56:32+0000",
"request_id": "b3dee0a9d6c36460ada75f71ed0802c6f9",
"sum_initial":{
"amount": 1299,
"currency": "GBP"
},
"sum_converted":{
"amount": 1299,
"currency": "GBP"
},
"code": "3701",
"message": "Merchant sent invoice",
"eci": "02"
},
"signature": "hghwGGyapGUQnI+Qg=="
}
Формат оповещения об отмене платежа
Для оповещения об отмене платежа по инициативе мерчанта используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере содержится информация о том, что платеж 456789 отменен, статус платежа — invoice canceled.
Рис.: Пример тела оповещения об отмене платежа
{
"project_id":1901,
"payment":{
"id": "456789",
"type": "invoice",
"status": "invoice canceled",
"date": "2020-01-11T11:57:36+0000",
"best_before": "2020-10-11T11:50:00+0000",
"sum":{
"amount": 1299,
"currency": "GBP"
},
"description": "fluorescent paint 400ml"
},
"paymentLink": ".../payment?project_id=1901&payment_id=456789&customer_country=GB&
language_code=en&payment_currency=GBP&best_before=2020-10-11T11:50%&
interface_type=%7B%22id%22%3A3%7D&card_operation_type=sale&
signature=hghwGGyapGUQnI+Qg==",
"account":{
"number": "424220******4800",
"token": "f365bb1729f9b72fd9c097becc679f29c3e35c91d18070d15654",
"type": "visa",
"card_holder": "JOHN DOE",
"id":1353091,
"expiry_month": "11",
"expiry_year": "2022"
},
"customer":{
"id": "johndoe"
},
"operation":{
"id":180001525,
"type": "invoice",
"status": "invoice canceled",
"date": "2020-01-11T11:57:34+0000",
"created_date": "2020-01-11T11:56:32+0000",
"request_id": "b3dee0a9d0d2c8d2aa56c36ed0802c6f9",
"sum_initial":{
"amount": 1299,
"currency": "GBP"
},
"sum_converted":{
"amount": 1299,
"currency": "GBP"
},
"code": "3702",
"message": "Merchant canceled invoice",
"eci": "02"
},
"signature": "hghwGlmVZ6Z1ZZ5D/aZAmrqdZb+GyapGUQnI+Qg=="
}
Формат оповещения об истечении срока действия платежной ссылки
Для оповещения об истечении срока действия платежной ссылки используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере содержится информация о том, что срок действия платежной ссылки, отправленной пользователю johndoe на адрес электронной почты johndoe@example.com, истек 11 февраля 2020 года, в 11:50.
Рис.: Пример тела оповещения об отказе в связи с истечением срока действия платежной ссылки
{
"project_id":1901,
"payment":{
"id": "456789",
"type": "invoice",
"status": "expired",
"date": "2020-01-11T11:57:36+0000",
"best_before": "2020-02-11T11:50:00+0000",
"force_payment_method": "card",
"method": "card",
"email": "johndoe@example.com",
"sum":{
"amount": 1299,
"currency": "GBP"
},
"description": "fluorescent paint 400ml"
},
"paymentLink": ".../payment?project_id=1901&payment_id=456789&customer_country=GB&
language_code=en&payment_currency=GBP&best_before=2020-10-11T11:50%&
interface_type=%7B%22id%22%3A3%7D&card_operation_type=sale&
signature=hghwGGyapGUQnI+Qg==",
"account":{
"number": "424220******4800",
"token": "f365bb1729f9b72fd9c097becc679f29c3e35c91d18070d15654",
"type": "visa",
"card_holder": "JOHN DOE",
"id":1353091,
"expiry_month": "11",
"expiry_year": "2022"
},
"customer":{
"id": "johndoe"
},
"operation":{
"id":180001525,
"type": "invoice",
"status": "expired",
"date": "2020-01-11T11:57:34+0000",
"created_date": "2020-01-11T11:56:32+0000",
"request_id": "b3dee0a9d0d2c8d2aa56c36ed0802c6f9",
"sum_initial":{
"amount": 1299,
"currency": "GBP"
},
"sum_converted":{
"amount": 1299,
"currency": "GBP"
},
"code": "3700",
"message": "Best_before has expired",
"eci": "02"
},
"signature": "hghwGlmVZ6Z1ZZ5D/aZAmrqdZb+GyapGUQnI+Qg=="
}
Формат оповещения о результате платежа
Для оповещения о результате оплаты по платежной ссылке используется стандартный формат, описание которого представлено в разделе Оповещения (callbacks) в Gate.
В следующем примере содержится информация о том, что для пользователя johndoe проведена оплата в размере 12,99 GBP.
Рис.: Пример тела оповещения об успешной оплате по платежной ссылке
{
"project_id":1901,
"payment":{
"id": "456789",
"type": "invoice",
"status": "success",
"date": "2020-01-11T11:57:36+0000",
"best_before": "2020-10-11T11:50:00+0000",
"force_payment_method": "card",
"method": "card",
"email": "johndoe@example.com",
"sum":{
"amount": 1299,
"currency": "GBP"
},
"description": "fluorescent paint 400ml"
},
"paymentLink": ".../payment?project_id=1901&payment_id=456789&customer_country=GB&
language_code=en&payment_currency=GBP&best_before=2020-10-11T11:50%&
interface_type=%7B%22id%22%3A3%7D&card_operation_type=sale&
signature=hghwGGyapGUQnI+Qg==",
"account":{
"number": "424220******4800",
"token": "f365bb1729f9b72fd9c097becc679f29c3e35c91d18070d15654",
"type": "visa",
"card_holder": "JOHN DOE",
"id": 1353091,
"expiry_month": "11",
"expiry_year": "2022"
},
"customer":{
"id": "johndoe"
},
"operation":{
"id":180001525,
"type": "invoice",
"status": "success",
"date": "2020-01-11T11:57:34+0000",
"created_date": "2020-01-11T11:56:32+0000",
"request_id": "b3dee0a9d6c36460ada75f71ed0802c6f9",
"sum_initial":{
"amount": 1299,
"currency": "GBP"
},
"sum_converted":{
"amount": 1299,
"currency": "GBP"
},
"code": "0",
"message": "Success",
"eci": "02"
},
"signature": "hghwGlmVZ6Z1ZZ5D/aZAmrqdZb+GyapGUQnI+Qg=="
}