Наличные ФОП, Наличные ФОП

Обзор

Стандартные платежи Google поддерживают наличные FOP (формы оплаты), например покупки в магазинах повседневного спроса (например, в 7-Eleven). На высоком уровне пользователь, желающий оплатить товар, генерирует ссылочный номер через Интегратор платежей . Затем пользователь приносит этот ссылочный номер в магазин, киоск или банк и платит за ссылочный номер.

Добавить платеж
1) Пользователь добавляет способ оплаты.
Выберите, где платить
2) Потом выбирают, куда платить
Инструкции по оплате
3) Наконец, им даются инструкции по оплате.

Концепции и терминология

{%, если "стандартные платежи" в динамическом_data.request.path %} {% setvar document_base_path %}/standard-pays{% endsetvar %} {% elif "pay/banking-fop-v2" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/banking-fop-v2{% endsetvar %} {% setvar spec_name %}banking-fop-v2{% endsetvar %} {% elif "pay/card-fop-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/card-fop-v1{% endsetvar %} {% setvar spec_name %}card-fop-v1{% endsetvar %} {% elif "pay/card-management-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/card-management-v1{% endsetvar %} {% setvar spec_name %}card-management-v1{% endsetvar %} {% elif "pay/carriers-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/carriers-v1{% endsetvar %} {% setvar spec_name %}carriers-v1{% endsetvar %} {% elif "pay/carrier-wallets-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/carrier-wallets-v1{% endsetvar %} {% setvar spec_name %}carrier-wallets-v1{% endsetvar %} {% elif "pay/e-wallets-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/e-wallets-v1{% endsetvar %} {% setvar spec_name %}e-wallets-v1{% endsetvar %} {% elif "pay/chargeback-alert-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/chargeback-alert-v1{% endsetvar %} {% setvar spec_name %}chargeback-alert-v1{% endsetvar %} {% elif "pay/golden-fop-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/golden-fop-v1{% endsetvar %} {% setvar spec_name %}golden-fop-v1{% endsetvar %} {% elif "pay/facilitated-transaction-event-v2" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/facilitated-transaction-event-v2{% endsetvar %} {% setvar spec_name %}facilitated-transaction-event-v2{% endsetvar %} {% elif "pay/india-cards-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/india-cards-v1{% endsetvar %} {% setvar spec_name %}india-cards-v1{% endsetvar %} {% elif "pay/issuers/apis/push-provisioning/server" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/issuers/apis/push-provisioning/server {% endsetvar %} {% setvar spec_name %}push-provisioning-v1{% endsetvar %} {% elif "pay/одноразового платежа-код-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/one-time-paying-code-v1{% endsetvar %} {% setvar spec_name %}код-разового платежа-v1{% endsetvar %} {% elif "pay/redirect-fop-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/redirect-fop-v1{% endsetvar %} {% setvar spec_name %}redirect-fop-v1{% endsetvar %} {% elif "pay/redirect-pay-token-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/redirect-pay-token-v1{% endsetvar %} {% setvar spec_name %}redirect-pay-token-v1{% endsetvar %} {% elif "pay/refundable-one-time-paying-code-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/refundable-one-time-paying-code-v1{% endsetvar %} {% setvar spec_name %}возвратный-одноразовый-платеж-код-v1{% endsetvar %} {% elif "pay/refundable-one-time-paying-code-v2" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/refundable-one-time-paying-code-v2{% endsetvar %} {% setvar spec_name %}refundable-одноразовый-код-платежа-v2{% endsetvar %} {% elif "pay/value-on-device-fop-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/value-on-device-fop-v1{% endsetvar %} {% setvar spec_name %}value-on-device-fop-v1{% endsetvar %} {% elif "pay/virtual-cards-v1" в динамическом_data.request.path %} {% setvar document_base_path %}/pay/virtual-cards-v1{% endsetvar %} {% setvar spec_name %}virtual-cards-v1{% endsetvar %} {% конечный %}

Символы и обозначения

Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ ДОЛЖЕН», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «ДОПОЛНИТЕЛЬНО» в этих документах. интерпретироваться, как описано в RFC 2119 .

Временные метки

Все временные метки представлены в миллисекундах с эпохи Unix (1 января 1970 г.) в формате UTC.

Например:

  • 23 апреля 2019 г., 20:23:25 GMT = 1556051005000 миллисекунд
  • 16 августа 2018 г., 12:28:35 GMT = 1534422515000 миллисекунд.

Суммы

Денежные значения в этом API представлены в формате «микро», который является стандартом Google. Микро — это целочисленный формат с фиксированной точностью. Чтобы представить денежную стоимость в микромах, умножьте стоимость стандартной валюты на 1 000 000.

Например:

  • 1,23 доллара США = 1 230 000 микродолларов США
  • 0,01 доллара США = 10 000 микродолларов США

Идемпотентность

Все вызовы методов в этом API должны иметь идемпотентное поведение. Google будет время от времени повторять запросы, чтобы гарантировать, что транзакции находятся в одном и том же состоянии с обеих сторон. Интеграторам не следует пытаться повторно обработать уже успешно обработанный запрос. Вместо этого следует сообщить ответ об успешной обработке. Все методы имеют общий RequestHeader , который содержит requestId. Этот requestId является ключом идемпотентности для всех вызовов.

Любой нетерминальный ответ (не HTTP 200-успех) не должен обрабатываться идемпотентно. Таким образом, запрос, который ранее получил 400 (неверный запрос/неудачное предварительное условие), при повторном вызове не должен идемпотентно возвращать 400, его необходимо переоценить. При повторной оценке он может вернуть 400 или быть успешно обработан.

Дополнительную информацию об идемпотентности смотрите в этом подробном руководстве .

Интегратор

Компания, которая использует платежную платформу Google для своего бизнеса. Это может быть внутренний (1P), например Youtube или AdWords. Это также может быть внешний (3P) бизнес, желающий интегрировать свой сервис для работы с экосистемой Google.

ФОП

Форма оплаты. Это более общий инструмент, чем инструмент. Visa, MasterCard и PayPal являются ФОПами.

Инструмент

Конкретный экземпляр формы оплаты конкретным клиентом. Например, кредитная карта пользователя или его учетная запись PayPal. Токенизированный FOP для конкретного клиента также является инструментом, поскольку он представляет собой экземпляр формы платежа для этого клиента, надежно хранящийся в нашей системе.

Токен

Представление в системе Google способа оплаты конкретного пользователя. Поскольку токен содержит всю информацию, необходимую для совершения покупки, он также является инструментом. Сюда может входить такая информация, как номер счета пользователя у своего интегратора.

Ключевые потоки

Google использует два ключевых процесса для создания и оплаты этих ссылочных номеров:

  1. Создайте поток ссылочных номеров.
  2. Поток ссылочного номера платежа.

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

На диаграмме ниже показан каждый из этих потоков.

Обзор кассового ФОП

Общий обзор кассового ФОП

Первые два потока описаны более подробно в следующих разделах. Если вы хотите узнать больше об этом потоке, посетите страницу «Поток денежных переводов» .

Создать ссылочный номер

Целью процесса создания ссылочного номера является создание и обмен идентификатором (ссылочным номером), который Google и интегратор могут использовать для идентификации покупки. Затем пользователь может использовать этот ссылочный номер в магазине, киоске или банке для завершения покупки. Этот идентификатор генерируется интегратором по запросу Google путем вызова generateReferenceNumber . Запрос на создание ссылочного номера включает сумму и описание транзакции.

На следующей диаграмме показано, как генерируется ссылочный номер и отправляется клиенту с инструкциями.

Создать поток ссылочных номеров

Справочный номер генерирования денежных средств

Вот список объектов и то, что они представляют:

  • Пользователь : это человек, который хочет оплатить что-либо с помощью этой формы оплаты.
  • Пользовательский интерфейс Google : это интерфейс, в котором пользователь совершает покупку. Это может быть через Интернет или через приложение.
  • Сервер Google : внутренний сервер Google, который запрашивает создание ссылочного номера и создает инструкции по оплате для пользователя.
  • Сервер платежного интегратора : внутренний сервер платежного интегратора, который отслеживает детали платежа и генерирует ссылочный номер.

Этот поток начинается с пользователя, который хочет использовать эту наличную форму оплаты.

  1. Пользователь получает доступ к пользовательскому интерфейсу Google, который отправляет запрос на ссылочный номер.
  2. Пользовательский интерфейс Google отправляет на сервер Google сообщение о том, что ему нужен ссылочный номер ( getReferenceNumber ).
  3. Сервер Google запрашивает сервер Интегратора платежей сгенерировать ссылочный номер ( generateReferenceNumber ).
  4. Сервер Payment Integrator генерирует и отправляет ссылочный номер на сервер Google.
  5. Сервер Google создает платежные инструкции, соответствующие ссылочному номеру. Затем он отправляет эту информацию в пользовательский интерфейс Google.
  6. Пользовательский интерфейс Google отправляет Пользователю эти инструкции и ссылочный номер.

Примечания к ссылочным номерам

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

Помимо отображения ссылочного номера, пользовательский интерфейс Google может дополнительно представлять ссылочный номер в формате Code 128 (формат штрих-кода). Другие форматы штрих-кодов могут поддерживаться по запросу.

Справочный номер платежа

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

Как только пользователь решит заплатить, он должен оплатить полную стоимость и заплатить только один раз. Этот API не поддерживает переплату или недоплату по одному ссылочному номеру. Множественные платежи на один ссылочный номер также не поддерживаются.

Как только пользователь оплатит, интегратор должен немедленно уведомить Google о том, что этот ссылочный номер был оплачен с помощью метода referenceNumberPaidNotification . Вызывая этот метод в течение нескольких секунд после физической оплаты пользователем, интегратор позволяет пользователю быстро получить свои товары. (Этот вызов можно добавить в очередь, если сеть не работает.)

После оплаты ссылочный номер и сумма будут включены в отчет о денежном переводе, отправленный в дни T+2.

Вот диаграмма последовательности, которая иллюстрирует оплату ссылочного номера.

Поток ссылочного номера платежа

Поток ссылочного номера платежа

Объекты на диаграмме представляют собой следующее:

  • Пользователь : это человек, который хочет оплатить что-либо с помощью этой формы оплаты.
  • Круглосуточный магазин : место, где пользователь осуществляет платеж, используя ссылочный номер и предоставленные инструкции, например, круглосуточный магазин.
  • Сервер платежного интегратора : внутренний сервер платежного интегратора, который отслеживает детали платежа.
  • Сервер Google : внутренний сервер Google, который запрашивает создание ссылочного номера и создает инструкции по оплате для пользователя.

Этот поток начинается с того, что пользователь идет в магазин, чтобы совершить платеж в соответствии с данными ему инструкциями.

  1. Пользователь заходит в Круглосуточный магазин для совершения платежа.
  2. После завершения транзакции магазин уведомляет платежного интегратора о платеже.
  3. Сервер платежного интегратора отправляет сообщение об успехе в круглосуточный магазин.
  4. Круглосуточный магазин сообщает Пользователю, что транзакция прошла успешно и товар будет доставлен Пользователю в ближайшее время.
  5. Сервер Интегратора платежей отправляет на сервер Google сообщение о том, что ссылочный номер оплачен ( referenceNumberPaidNotification ). Этот шаг не должен блокировать шаг 4.
  6. Сервер Google отправляет сообщение об успехе серверу Интегратора платежей.

Отменить ссылочный номер

Ссылочные номера могут быть отменены Google. Если Google отменяет ссылочный номер, будет вызван метод cancelReferenceNumber . При успешном ответном звонке оплата по этому ссылочному номеру недействительна, и интегратор должен отказаться от оплаты по этому номеру. В случае успеха этого вызова все будущие вызовы referenceNumberPaidNotification завершится неудачно.

Если процесс оплаты уже начался, например, если пользователь ввел свой ссылочный номер в киоск, но еще не оплатил, интегратор должен вернуть код ответа HTTP 423 с ErrorResponse, содержащим USER_ACTION_IN_PROGRESS .

Далее: Денежные переводы