Оплата по платежной ссылке

В этом разделе представлена информация о проведении оплаты по платежным ссылкам, дополняющая сведения в разделе Схема и статусы оплаты по платежной ссылке.

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

Оплата по платежной ссылке — это тип платежа, в рамках которого на основании одного исходного запроса осуществляется создание и отправка платежной ссылки, а затем один (разовый) перевод денежных средств от пользователя к мерчанту. Платежная платформа Rocketpay поддерживает следующие варианты таких оплат:

  • оплата по платежной ссылке в одну стадию,
  • оплата по платежной ссылке в две стадии.

Оба варианта проводятся с использованием платежной формы Payment Page, ссылка на которую отправляется на электронную почту пользователя средствами Rocketpay или любым другим способом средствами мерчанта. Срок действия такой ссылки и вариант проведения платежа определяются на стороне мерчанта и указываются в параметрах запроса на его инициирование. Также в параметрах такого запроса можно указать платежный метод, с использованием которого необходимо провести платеж, или предоставить пользователю возможность выбора из всех методов, подключенных для проекта мерчанта.

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

Как и при проведении других типов платежей, в процессе проведения оплаты по платежной ссылке может потребоваться выполнить вспомогательные процедуры, такие как аутентификация с использованием технологии 3‑D Secure, дополнение информации о платеже и конвертация валют. Эти процедуры полностью выполняются на стороне Payment Page, дополнительных действий со стороны веб-сервиса мерчанта при этом не требуется.

Сценарии использования

Допустим, пользователь веб-сервиса оформил заказ на сумму 12.99 GBP и выбрал возможность оплаты по платежной ссылке, указав для получения ссылки свой адрес электронной почты — johndoe@example.com.

Успешная оплата

  1. Со стороны веб-сервиса мерчанта к платежной платформе отправляется запрос с параметрами, необходимыми для отправки платежной ссылки пользователю средствами Rocketpay.
  2. Платежная платформа обрабатывает такой запрос, направляет оповещение к веб-сервису мерчанта и отправляет на указанный в запросе адрес электронной почты письмо. Стандартный язык письма — английский.
  3. Пользователь переходит по ссылке, после чего ему отображается Payment Page. Если в запросе на инициирование платежа не указан платежный метод, то пользователю отображается страница выбора платежного метода, а если платежный метод указан — страница указанного платежного метода.
  4. Пользователь указывает платежные данные и подтверждает оплату, а также, при необходимости, осуществляет дополнительные действия, требуемые для выполнения одной или нескольких вспомогательных процедур.
  5. По результатам проведения платежа к веб-сервису направляется оповещение о результате, а пользователю отображается страница результата оплаты.

Отмена платежа

  1. Со стороны веб-сервиса мерчанта к платежной платформе отправляется запрос на отмену платежа.
  2. Платежная платформа обрабатывает такой запрос, направляет оповещение к веб-сервису мерчанта и отправляет на ранее указанный адрес электронной почты письмо. Стандартный язык письма — английский.
  3. Если пользователь переходит по платежной ссылке, ему отображается страница с уведомлением об отмене платежа.

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

  1. К веб-сервису мерчанта направляется оповещение об истечении срока действия платежной ссылки.
  2. Если пользователь переходит по платежной ссылке, ему отображается страница с уведомлением об истечении срока действия платежной ссылки.

Детальные сведения о том, что необходимо делать со стороны мерчанта для проведения платежа, представлены далее.

Настройка

Содержание и оформление писем

По умолчанию для составления писем, отправляемых на электронную почту пользователя, используются следующие данные из запроса на создание платежной ссылки:

  • идентификатор платежа (payment_id);
  • сумма (amount) и валюта (currency) платежа;
  • срок действия платежной ссылки (best_before);
  • описание платежа (description).

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

По всем вопросам, связанным с изменением содержания и оформления писем, следует обращаться к специалистам технической поддержки — support@rocketpay.kz.

Дизайн платежной формы

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

По всем вопросам, связанным с дизайном платежной формы, следует обращаться к специалистам технической поддержки — support@rocketpay.kz.

Схема проведения

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

  1. Отправить запрос на оплату по платежной ссылке к конечной точке /v2/payment/invoice[/card/token]/create.
  2. Принять оповещение о создании платежной ссылки.
  3. Принять оповещение о результате оплаты или оповещение об истечении срока действия ссылки.

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

Схема проведения оплаты по платежной ссылке представлена далее.



Рис.: Проведение оплаты по платежной ссылке

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

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

  1. Отправить запрос на отмену платежа к конечной точке /v2/payment/invoice/cancel.
  2. Принять оповещение об отмене платежа.

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

Структура запроса

Формат запроса на проведение платежа

При формировании запросов необходимо учитывать следующее:

  1. Должен использоваться POST-запрос к одной из следующих конечных точек: /v2/payment/invoice/create или /v2/payment/invoice/card/token/create.
  2. В запросе должны использоваться следующие объекты и параметры:
    • 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.
  3. При передаче токена — токен карты в параметре token.
  4. Для отправки платежной ссылки средствами Rocketpay:
    • email — адрес электронной почты пользователя, содержится в объекте customer;
    • send_email — индикатор автоматической отправки платежной ссылки, для отправки необходимо передать значение true;
    • language — код языка, содержится в объекте customer; необходимо передавать в случае, если язык пользователя отличается от английского и для этого языка настроена верстка письма.
  5. Для предварительного выбора платежного метода — код этого метода в параметре force_method (список таких кодов — в разделе Коды поддерживаемых платежных методов на Payment Page).
  6. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату по платежной ссылке должен содержать идентификаторы проекта и платежа, подпись, идентификатор пользователя, валюту и сумму платежа, срок действия платежной ссылки и, при необходимости, токен платежной карты. Дополнительно, если платежную ссылку необходимо отправить средствами 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"  
}

Формат запроса на отмену платежа

При формировании запросов необходимо учитывать следующее:

  1. Должен использоваться POST-запрос к конечной точке /v2/payment/invoice/cancel.
  2. В запросе должен использоваться объект general, содержащий основные идентификационные сведения запроса:
    • project_id — идентификатор проекта, полученный от Rocketpay при интеграции;
    • payment_id — идентификатор того платежа, который необходимо отменить;
    • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Подписывание и проверка подписи);
  3. Дополнительно могут использоваться любые другие параметры, указанные в спецификации.

Таким образом, корректный запрос на отмену платежа должен содержать идентификаторы проекта и платежа, а также подпись.

{
  "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=="
}