Google Pay

Обзор

Google Pay™ — платёжный метод для проведения оплат на сайтах и в мобильных приложениях с использованием платёжных карт. С помощью сервиса Google Pay пользователи могут платить без ввода карточных данных, так как они хранятся в учётных записях Google. Для работы с этим методом доступно проведение разовых и повторяемых оплат через Payment Page и Gate, проведение возвратов и проверки действительности карты через Gate.

Характеристика

Платёжный метод платежи с использованием электронных кошельков
Платёжные инструменты платёжные карты
Регионы использования список доступен по ссылке
Валюты платежей Все валюты, поддерживаемые платёжными системами American Express, Mastercard и Visa в доступных регионах
Конвертация валют На стороне ecommpay
Оплаты +
Выплаты
Оплаты по сохранённым данным +
Полные возвраты +
Частичные возвраты +
Проверка действительности +
Опротестования +
Особенности
  • При работе с этим методом могут поддерживаться карты American Express, Mastercard и Visa. Подробности можно уточнять у курирующего менеджера ecommpay
  • Для проведения оплат через Gate мерчант должен:
    • совершить ряд настроек, требуемых со стороны Google, и свериться с контрольным списком интеграции,
    • зарегистрироваться в сервисе Google и получить Google merchant ID,
    • обращаться к Google API напрямую через свой веб-сервис.

    Подробную информацию по этим пунктам можно получить у курирующего менеджера ecommpay

  • Оплаты могут сопровождаться аутентификацией 3‑D Secure 2 в случаях, если они инициируется с устройств, не поддерживающих работу с приложением Google Pay
  • Все мерчанты должны придерживаться политик использования Google Pay API и принимать условия предоставления услуг Google Pay
Организация и стоимость подключения По согласованию с курирующим менеджером ecommpay

Схема работы

В проведении оплаты с использованием метода Google Pay задействуются веб-сервис мерчанта, один из интерфейсов и платёжная платформа ecommpay, сервисы Google Pay и банка-эмитента.



Основные операции

Интерфейсы Суммы Время**
Payment Page CMS Plug-ins Gate Dashboard Минимум Максимум Базовое Предельное
Оплаты + + * * * *
Оплаты по сохранённым данным + + * * * *
Полные возвраты + * *
Частичные возвраты + * *

* Ограничения сумм и время проведения платежей зависят от банков-эмитентов.

** Базовое и предельное время определяются следующим образом:
  • Базовое время — среднее расчётное время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Это время, определяемое для условий штатной работы всех технических средств и каналов связи, а также типичных действий со стороны пользователя (там, где они необходимы). Базовое время рекомендуется использовать для реагирования на отсутствие оповещений о результате платежа и выполнения опроса состояния платежа.
  • Предельное время — максимально допустимое время проведения платежа от момента его инициирования на стороне платёжной платформы до момента отправки инициатору оповещения о результате. Если платёж не был проведён или отклонён за это время, он автоматически переводится в статус decline. Для индивидуальной настройки предельного времени следует обращаться к специалистам технической поддержки ecommpay.

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

Чтобы иметь возможность подтверждать платежи с помощью метода Google Pay, пользователь сначала должен зарегистрировать платежную карту в приложении на одном из поддерживаемых устройств. Для проведения оплаты с помощью данного метода предварительно необходимо запрашивать зашифрованные карточные данные пользователя в сервисе Google Pay и отображать форму оплаты или приложение Google Pay пользователю. При проведении оплат через Payment Page взаимодействие с сервисом Google Pay обеспечивается на стороне ecommpay, при проведении оплат через Gate — на стороне веб-сервиса. Проведение возвратов осуществляется с уведомлением пользователей через веб-сервис мерчанта.

Рис.: Оплата через Payment Page



Рис.: Оплата через Gate без 3‑D Secure 2 аутентификации



Рис.: Оплата через Gate с 3‑D Secure 2 аутентификацией



Рис.: Возврат через Gate



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

Оплаты через Payment Page

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

Для проведения оплат через Payment Page со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате оплаты. При этом метод Google Pay можно сделать предварительно выбранным (подробнее — в разделе Предварительный выбор платёжных методов). Полная схема проведения оплаты представлена далее.



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

  1. Пользователь на стороне веб-сервиса инициирует оплату.
  2. От веб-сервиса на заданный URL ecommpay передаётся запрос на открытие Payment Page.
  3. Запрос на открытие поступает в платёжную платформу.
  4. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  5. Осуществляется генерация Payment Page согласно настройкам проекта и параметрам вызова.
  6. Пользователю отображается сгенерированная платёжная форма Payment Page.
  7. Пользователь выбирает оплату с использованием платёжных карт и нажимает кнопку Google Pay. Если кнопка отображается среди прочих методов оплат на первой странице, то пользователь только нажимает кнопку Google Pay.
  8. Запрос на открытие интерфейса и формы оплаты Google Pay поступает в платёжную платформу.
  9. Запрос на открытие интерфейса и формы оплаты Google Pay и получение информации о картах, доступных пользователю, передаётся в сервис Google Pay.
  10. Сервис Google Pay обрабатывает запрос и генерирует платёжную форму со списком карт, доступных пользователю.
  11. Пользователю отображается интерфейс Google Pay со списком карт в маскированном виде:
    • При проведении оплат на сайтах в мобильной версии браузера Google Chrome или в мобильных приложениях, поддерживающих оплату с использованием Google Pay, открывается приложение Google Pay.
    • В иных случаях на мобильном устройстве или компьютере отображается окно Google Pay в браузере.
  12. Пользователь выбирает карту и подтверждает платёж. При подтверждении оплаты в браузере, а не приложении Google Pay, дополнительно осуществляется аутентификация 3‑D Secure.
  13. Сервис Google Pay перенаправляет пользователя на страницу ожидания Payment Page.
  14. На стороне Google Pay выполняется обработка данных пользователя.
  15. От сервиса Google Pay в платёжную платформу передаётся токен с зашифрованными данными пользователя.
  16. Запрос от платёжной платформы на проведение оплаты поступает в сервис международной платёжной системы.
  17. На стороне международной платёжной системы выполняется обработка платежа.
  18. От сервиса международной платёжной системы к платёжной платформе ecommpay направляется результат платежа.
  19. От платёжной платформы к веб-сервису направляется оповещение о результате платежа.
  20. От платёжной платформы к Payment Page направляется результат проведения платежа.
  21. Результат платежа отображается пользователю на Payment Page.

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

Формат запросов

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

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах валюты,
    • customer_id — идентификатор пользователя уникальный в рамках проекта.
  2. Можно выбирать вариант отображения кнопки Google Pay на Payment Page:
    • Отображение кнопки на странице для ввода данных платёжной карты. Предварительно пользователю необходимо выбирать оплату с использованием карт среди прочих платёжных методов. Этот вариант отображения задан по умолчанию.
    • Отображение кнопки на странице для выбора метода оплаты среди прочих платёжных методов. Для этого необходимо обращаться в техническую поддержку ecommpay.
    • Отображение кнопки на странице для ввода данных карты, когда пользователю сразу открывается эта страница и не надо предварительно выбирать оплату с использованием карт. В данном случае оба платёжных метода доступны пользователю. Для этого используется предварительный выбор метода оплаты с использованием карт и необходимо указывать код card в параметре force_payment_method.
    • Отображение одной кнопки на странице выбора метода оплаты. Для этого используется предварительный выбор метода Google Pay и необходимо указывать код платёжного метода google_pay_host в параметре force_payment_method.
  3. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  4. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы с применением метода Google Pay должен содержать идентификаторы проекта, пользователя и платежа, сумму и валюту платежа, а также подпись:

EPayWidget.run(
    { project_id: 208,
      payment_id: '486', 
      payment_amount: 10000, 
      payment_currency: 'USD',   
      customer_id: 'customer1',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HA...=="
    }
)

Формат оповещений

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

К особенностям метода Google Pay можно отнести то, что в оповещениях для оплат, сопровождающихся аутентификацией 3‑D Secure 2, передаётся код индикатора ECI в параметре operation.eci. Подробнее об индикаторах ECI — в разделе Индикаторы ECI.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 688 была успешно проведена оплата в размере 1 000,00 RUB с банковской карты 489537******3478 без проведения аутентификации 3‑D Secure 2.

При этом в качестве названия метода в параметре payment.method указывается etoken-google.

Рис.: Пример оповещения о проведении оплаты без 3‑D Secure 2 аутентификации

 {
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722221",
            "type": "purchase",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722221"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000015,
            "type": "sale",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "created_date": "2019-04-11T11:22:20+0000",
            "request_id": "2b36e68d4d9fc8839d5d65ee6273dfdebbd",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "d1b9-3qfl-9rns-1ql9aokzi2v8",
                "date": "2019-04-11T11:22:34+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "Xkf7nUDleg8wcLltroCvNOMq751VtZcgrz6Nax...=="
    }

В следующем примере оповещение свидетельствует о том, что в рамках проекта 688 была успешно проведена оплата в размере 1 000,00 RUB с банковской карты 489537******3478 с проведением аутентификации 3‑D Secure 2.

Рис.: Пример оповещения о проведении оплаты с 3‑D Secure 2 аутентификацией

 {
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722221",
            "type": "purchase",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722221"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000015,
            "type": "sale",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "created_date": "2019-04-11T11:22:20+0000",
            "request_id": "2b36e68d4d9fc8839d5d65ee6273dfdebbd",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "d1b9-3qfl-9rns-1ql9aokzi2v8",
                "date": "2019-04-11T11:22:34+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success",
            "eci": "02"
        },
        "signature": "Xkf7nUDleg8wcLltroCvNOMq751VtZcgrz6Nax...=="
    }

В следующем примере оплата была отклонена, так как пользователь не прошел аутентификацию 3‑D Secure 2.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722222",
            "type": "purchase",
            "status": "decline",
            "date": "2019-04-11T11:24:51+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100100,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722222"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000000383,
            "type": "sale",
            "status": "decline",
            "date": "2019-04-11T11:24:51+0000",
            "created_date": "2019-04-11T11:24:35+0000",
            "request_id": "0eef294c20a7d72abd0fb20f3753ee674b51fbe",
            "sum_initial": {
                "amount": 100100,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100100,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "1rvp-fc2k-cnp9-h41ocauwn6fr",
                "date": "2019-04-11T11:24:50+0000",
                "auth_code": ""
            },
            "code": "20000",
            "message": "General decline",
            "eci": "00"
        },
        "signature": "cQbMiD0pON9eJc5ZugNK0iT5SwHc0feItZRcAB...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Оплаты через Gate

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

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

  1. Выполнить начальную настройку в соответствии с требованиями Google и свериться с контрольным списком интеграции.
  2. Зарегистрироваться в сервисе Google и получить Google merchant ID.
  3. Заполнить заявку на сопровождение интеграции с Google Pay API специалистами Google и выполнить дальнейшие действия по запросам этих специалистов. При этом может потребоваться предоставить Google дополнительную информацию об интеграции.

Также мерчант должен придерживаться политик использования Google Pay API и принимать условия предоставления услуг Google Pay.

Оплата с использованием метода Google Pay может инициироваться пользователем с устройства, поддерживающего или не поддерживающего работу с приложением Google Pay. В первом случае оплата пройдет без аутентификации 3‑D Secure 2, во втором случае — с аутентификацией.

Для оплаты через Gate с использованием метода Google Pay без 3‑D Secure 2 аутентификации (на устройствах и в браузерах, поддерживающих работу с приложением Google Pay) со стороны веб-сервиса необходимо:

  1. Встроить кнопку Google Pay, соблюдая рекомендации по правильному использованию бренда и реализовать процесс получения токена с карточными данными пользователя от сервиса Google Pay.
  2. Отправить запрос в сервис Google Pay на открытие платёжной формы или приложения Google Pay со списком сохраненных карт, доступных пользователю для оплаты.
  3. Отправить запрос в сервис Google Pay для получения токена с зашифрованными данными карты, выбранной пользователем.
  4. Отправить запрос, содержащий токен и другие требуемые параметры и подпись, на рабочий URL ecommpay.
  5. Принять оповещение о результате оплаты от платформы.

Для оплаты через Gate с использованием метода Google Pay с проведением 3‑D Secure 2 аутентификации (на устройствах, не поддерживающих работу с приложением Google Pay) со стороны веб-сервиса необходимо:

  1. Встроить кнопку Google Pay, соблюдая рекомендации по правильному использованию бренда и реализовать процесс получения токена с карточными данными пользователя от сервиса Google Pay.
  2. Отправить запрос в сервис Google Pay на открытие платёжной формы или приложения Google Pay со списком сохраненных карт, доступных пользователю для оплаты.
  3. Отправить запрос в сервис Google Pay для получения токена с зашифрованными данными карты, выбранной пользователем.
  4. Отправить запрос, содержащий токен и другие требуемые параметры и подпись, на рабочий URL ecommpay.
  5. Получить оповещение от платформы с данными для перенаправления пользователя на страницу аутентификации.
  6. Перенаправить пользователя на страницу аутентификации для прохождения проверки 3‑D Secure 2.
  7. Отправить запрос на продолжение проведения платежа с результатом аутентификации в платёжную платформу.
  8. Принять оповещение о результате оплаты от платформы.

Полные схемы проведения оплаты представлены далее.



Рис.: Проведение оплаты через Gate без 3‑D Secure 2 аутентификации

  1. Пользователь на стороне веб-сервиса инициирует оплату через Google Pay
  2. Запрос на открытие интерфейса Google Pay и получение информации о картах, доступных пользователю, передаётся в сервис Google Pay.
  3. Сервис Google Pay обрабатывает запрос и генерирует платёжную форму со списком карт, доступных пользователю.
  4. При проведении оплат на сайтах в мобильной версии браузера Google Chrome или в мобильных приложениях, поддерживающих оплату с использованием Google Pay, пользователю отображается приложение Google Pay со списком карт в маскированном виде.
  5. Пользователь выбирает карту и подтверждает платёж.
  6. Сервис Google Pay перенаправляет пользователя на страницу ожидания веб-сервиса.
  7. На стороне Google Pay выполняется обработка данных пользователя.
  8. От сервиса Google Pay в веб-сервис передаётся токен с зашифрованными данными выбранной карты.
  9. От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Gate с помощью токена карты, полученного от Google Pay.
  10. Запрос на проведение оплаты поступает в платёжную платформу.
  11. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  12. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  13. Запрос на проведение оплаты поступает в сервис международной платёжной системы.
  14. На стороне международной платёжной системы выполняется обработка платежа.
  15. От сервиса международной платёжной системы к платёжной платформе направляется уведомление о результате платежа.
  16. От платёжной платформы к веб-сервису направляется оповещение о результате платежа.
  17. От веб-сервиса пользователю направляется результат платежа.


Рис.: Проведение оплаты через Gate с 3‑D Secure 2 аутентификацией

  1. Пользователь на стороне веб-сервиса инициирует оплату через Google Pay
  2. Запрос на открытие интерфейса Google Pay и получение информации о картах, доступных пользователю, передаётся в сервис Google Pay.
  3. Сервис Google Pay обрабатывает запрос и генерирует платёжную форму со списком карт, доступных пользователю.
  4. При проведении оплаты на мобильном устройстве или компьютере, не поддерживающих оплату с использованием Google Pay, пользователю отображается окно Google Pay в браузере со списком карт в маскированном виде.
  5. Пользователь выбирает карту и подтверждает платёж.
  6. Сервис Google Pay перенаправляет пользователя на страницу ожидания веб-сервиса.
  7. На стороне Google Pay выполняется обработка данных пользователя.
  8. От сервиса Google Pay в веб-сервис передаётся токен с зашифрованными данными выбранной карты.
  9. От веб-сервиса на заданный URL ecommpay передаётся запрос на проведение оплаты через Gate с помощью токена карты, полученного от Google Pay.
  10. Запрос на проведение оплаты поступает в платёжную платформу.
  11. Выполняется начальная обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи. При подтверждении оплаты в браузере, а не приложении Google Pay, дополнительно осуществляется аутентификация 3‑D Secure.
  12. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. Подробнее см. в разделе Формат ответа.
  13. В платёжной платформе выполняются дальнейшая обработка запроса и его отправка в сервис международной платёжной системы.
  14. На стороне международной платёжной системы выполняется обработка запроса на оплату и проверка необходимости проведения аутентификации пользователя.
  15. От сервиса международной платёжной системы к платёжной платформе передаются данные для перенаправления пользователя на страницу аутентификации.
  16. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя на страницу аутентификации. Для этого используются оповещения стандартного формата, описание которого представлено в разделе Оповещения. Подробная информация о форматах оповещений с данными для перенаправления при проведении аутентификации представлена в соответствующем разделе Аутентификация 3‑D Secure.
  17. Веб-сервис мерчанта обеспечивает перенаправление пользователя на страницу аутентификации.
  18. Пользователь перенаправляется на страницу аутентификации и проходит проверку 3‑D Secure.
  19. Сервис международной платёжной системы выполняет аутентификацию пользователя.
  20. Выполняется перенаправление пользователя к веб-сервису.
  21. От веб-сервиса к платёжной платформе отправляется запрос в Gate на продолжение проведения оплаты с результатом прохождения аутентификации пользователя.
  22. Запрос на продолжение проведения оплаты поступает в платёжную платформу.
  23. Выполняется обработка запроса, в рамках которой обеспечивается проверка наличия обязательных параметров и корректной подписи.
  24. От платёжной платформы к веб-сервису направляется ответ с информацией о получении данных и их корректности.
  25. Запрос на продолжение проведения оплаты поступает в сервис международной платёжной системы.
  26. На стороне международной платёжной системы выполняется обработка платежа.
  27. От сервиса международной платёжной системы к платёжной платформе направляется уведомление о результате платежа.
  28. От платёжной платформы к веб-сервису направляется оповещение о результате платежа.
  29. От веб-сервиса пользователю направляется результат платежа.

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

Формат запросов

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

  1. Должен использоваться запрос, отправляемый методом POST:
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения запроса:
      • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — IP-адрес пользователя;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты;
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • etoken — объект, содержащий сведения о токене с зашифрованными данными карты, полученный от сервиса Google Pay:
      • token — токен с зашифрованными данными карты.
  3. Могут потребоваться другие обязательные параметры в зависимости от типа токенизации карты, который используется при формировании запросов в сервис Google Pay. Информацию о том, какой тип токенизации используется при проведении оплат в рамках проекта, необходимо уточнять у специалистов технической поддержки ecommpay:
    • Для использования типа токенизации PAYMENT_GATEWAY дополнительно необходимо указывать адрес электронной почты пользователя в параметре email объекта customer.
    • Для типа токенизации DIRECT необходимо указывать в объекте etoken:
      • google_merchant_id — идентификатор мерчанта в сервисе Google Pay;
      • google_tokenization_type — тип токенизации DIRECT.
  4. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на оплату с применением метода Google Pay и типом токенизации PAYMENT_GATEWAY должен содержать идентификаторы проекта и платежа, подпись, IP-адрес и адрес электронной почты пользователя, валюту и сумму платежа, токен:

{
  "general": {      
    "project_id": 626,
    "payment_id": "ORDER_ID_gev_S01_0.20111200_1554473913",
    "signature": "xWOlMksKctAKeYADt8W6F98D/ZFgyNqOYwFsgonIEj1MPw...=="    
  },
  "customer": {
    "email": "googlepay@google.com",
    "ip_address": "1.2.3.4",
    "id": "123"
  },
  "payment": {
    "amount": 100000,    
    "currency": "RUB"
  },
  "etoken": {
    "token": "..." // в том виде,в котором был получен от Google Pay
  }
}

Корректный запрос на оплату с применением метода Google Pay и типа токенизации DIRECT должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму платежа, токен, идентификатор мерчанта в сервисе Google Pay и тип токенизации карты:

{
  "general": {
    "project_id": 688,
    "payment_id": "ORDER_89218100_1554981739",
    "signature": "aRZiZZc0w5RVnuCxC7KSm50Pfwsj/8fqy2XlAJ...=="
  },
  "customer": {
    "ip_address": "1.2.3.4"
  },
  "payment": {
    "amount": 100000,
    "currency": "RUB"
  },
  "etoken": {
    "token": "...", // в том виде,в котором был получен от Google Pay
    "google_merchant_id": "12345678901234567890",
    "google_tokenization_type": "DIRECT"
  }
}

Формат запросов на продолжение проведения оплаты после 3‑D Secure 2 аутентификации

При работе с запросами на продолжение оплаты после проведения 3‑D Secure 2 аутентификации пользователя необходимо учитывать следующее:

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/card/3ds_result.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа, по которому необходимо подтвердить списание,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • Один из следующих параметров:
      • pares — данные о результате аутентификации, полученные в уведомлении от платёжной платформы.
      • cres — данные о результате аутентификации, полученные в уведомлении от сервера управления доступом.

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

Рис.: Пример запроса на продолжение оплаты

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "pares": "eJzVWdfvq8iy/iujOY/WDBnbI+9ldZMMJpho4I1...Dfn76en3N+f/A1fJrSU="
  }

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

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

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

Таким образом, корректный запрос на оплату с применением метода Google Pay должен содержать идентификаторы проекта и платежа, валюту и сумму платежа:

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

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "payment": {
    "amount": 100000,
    "currency": "RUB"
  }

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

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

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

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

Рис.: Пример запроса на отмену оплаты

{
  "general": {
    "project_id": 580,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  }

Формат оповещений о результатах оплат

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

К особенностям метода Google Pay можно отнести то, что в оповещениях для оплат, сопровождающихся проверкой 3‑D Secure, передаётся код индикатора ECI в параметре operation.eci. Подробнее об индикаторах ECI — в разделе Индикаторы ECI.

В следующем примере оповещение свидетельствует о том, что в рамках проекта 688 была успешно проведена оплата в размере 1 000,00 RUB с банковской карты 489537******3478 без проведения аутентификации 3‑D Secure.

При этом в качестве названия метода в параметре payment.method указывается etoken-google.

Рис.: Пример оповещения о проведении оплаты без 3‑D Secure аутентификации

 {
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722221",
            "type": "purchase",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722221"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000015,
            "type": "sale",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "created_date": "2019-04-11T11:22:20+0000",
            "request_id": "2b36e68d4d9fc8839d5d65ee6273dfdebbd",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "d1b9-3qfl-9rns-1ql9aokzi2v8",
                "date": "2019-04-11T11:22:34+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "Xkf7nUDleg8wcLltroCvNOMq751VtZcgrz6Nax...=="
    }

В следующем примере оповещение свидетельствует о том, что в рамках проекта 688 была успешно проведена оплата в размере 1 000,00 RUB с банковской карты 489537******3478 с проведением аутентификации 3‑D Secure.

Рис.: Пример оповещения о проведении оплаты с 3‑D Secure аутентификацией

 {
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722221",
            "type": "purchase",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100000,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722221"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000015,
            "type": "sale",
            "status": "success",
            "date": "2019-04-11T11:22:36+0000",
            "created_date": "2019-04-11T11:22:20+0000",
            "request_id": "2b36e68d4d9fc8839d5d65ee6273dfdebbd",
            "sum_initial": {
                "amount": 100000,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100000,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "d1b9-3qfl-9rns-1ql9aokzi2v8",
                "date": "2019-04-11T11:22:34+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success",
            "eci": "02"
        },
        "signature": "Xkf7nUDleg8wcLltroCvNOMq751VtZcgrz6Nax...=="
    }

В следующем примере оплата была отклонена, так как пользователь не прошел аутентификацию 3‑D Secure 2.

Рис.: Пример оповещения об отказе в проведении оплаты

{
        "project_id": 688,
        "payment": {
            "id": "TEST_154356886034722222",
            "type": "purchase",
            "status": "decline",
            "date": "2019-04-11T11:24:51+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 100100,
                "currency": "RUB"
            },
            "description": "TEST_154356886034722222"
        },
        "account": {
            "number": "489537******3478"
        },
        "operation": {
            "id": 2000000383,
            "type": "sale",
            "status": "decline",
            "date": "2019-04-11T11:24:51+0000",
            "created_date": "2019-04-11T11:24:35+0000",
            "request_id": "0eef294c20a7d72abd0fb20f3753ee674b51fbe",
            "sum_initial": {
                "amount": 100100,
                "currency": "RUB"
            },
            "sum_converted": {
                "amount": 100100,
                "currency": "RUB"
            },
            "provider": {
                "id": 1381,
                "payment_id": "1rvp-fc2k-cnp9-h41ocauwn6fr",
                "date": "2019-04-11T11:24:50+0000",
                "auth_code": ""
            },
            "code": "20000",
            "message": "General decline",
            "eci": "00"
        },
        "signature": "cQbMiD0pON9eJc5ZugNK0iT5SwHc0feItZRcAB...=="
    }

Дополнительные материалы

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

Повторяемые оплаты через Payment Page

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

Платёжный метод Google Pay предоставляет возможность проводить повторяемые оплаты — регулярные оплаты со списаниями по запросу. Подробная информация представлена в разделе Повторяемая оплата со списаниями по запросам.

Через Payment Page доступна регистрация повторяемой оплаты, для этого со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, а также данные для регистрации повторяемой оплаты в объекте recurring, на рабочий URL ecommpay и принять оповещение о результате. В оповещении о регистрации повторяемой оплаты вы получите её идентификатор, который нужно использовать для проведения или отмены регулярной оплаты через Gate. Подробная информация об этом представлена в разделе Повторяемые оплаты через Gate.

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

Формат запросов

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

  1. Должен использоваться базовый минимум параметров — параметры, обязательные для любого платёжного метода:
    • project_id — идентификатор проекта, полученный от ecommpay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • payment_currency — валюта платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах;
    • customer_id — идентификатор пользователя уникальный в рамках проекта.
  2. Для регистрации повторяемой оплаты необходимо передать объект recurring, содержащий признак регистрации и необходимую информацию. Для регистрации регулярной оплаты в запросе необходимо передать информацию о периодичности, сумме, начале и конце совершения регулярной оплаты. Полный список параметров, которые можно передать в объекте recurring представлен в разделе Регистрация повторяемых оплат.
  3. Для предварительного выбора метода Google Pay необходимо указывать код платёжного метода в параметре force_payment_method:
    • google_pay_host — для открытия Payment Page с предварительно выбранным платёжным методом Google Pay;
    • card — для открытия Payment Page с возможностью выбрать оплату с использованием платёжной карты, подключенной к сервису Google Pay. В данном случае оба платёжных метода доступны пользователю.
  4. Дополнительно могут использоваться любые другие параметры из числа доступных для работы с Payment Page. Детальная информация обо всех параметрах приведена в разделе Параметры вызова платёжной формы.
  5. После определения всех параметров необходимо составить подпись. Подробную информацию см. в Работа с подписью к данным.

Таким образом, корректный запрос на открытие платёжной формы для регистрации повторяемой оплаты с применением метода Google Pay должен содержать идентификаторы проекта и платежа, признак регистрации и информацию повторяемой оплаты, идентификатор пользователя, валюту и сумму платежа и подпись:

EPayWidget.run(
    { payment_id: 'X03936', 
      payment_amount: 100000, 
      payment_currency: 'RUB', 
      project_id: 208, 
      customer_id: 'customer1',
      force_payment_method: 'google_pay_host',
      recurring={"register":true,"type":"R","expiry_year":2025,"expiry_month":"01","period":"D","time":"10:00:00","start_date":"15-11-2020","scheduled_payment_id":"A2323"},
      signature: "mcsgn6KHAVNU0FYldJrxh4yo+52Kt8KU+Y1Y4HASCQ9vySO...=="
    }
)

Формат оповещений

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 208 для пользователя была успешно зарегистрирована повторяемая оплата. При этом в качестве названия метода в параметре payment.method указывается etoken-google.

Рис.: Пример оповещения о успешной регистрации повторяемой оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "purchase",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "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": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

Дополнительные материалы

Для организации работы с оплатами через Payment Page также могут быть полезны следующие материалы:

Повторяемые оплаты через Gate

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

Платёжный метод Google Pay предоставляет возможность проводить повторяемые оплаты — регулярные оплаты со списаниями по запросу. Подробнее см. в Повторяемая оплата со списаниями по запросам.

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

Регистрация повторяемой оплаты

Для регистрации повторяемых оплат со стороны веб-сервиса необходимо отправить запрос на оплату, содержащий требуемые параметры и подпись, а также признак регистрации повторяемой оплаты recurring.register: true, на рабочий URL ecommpay и принять оповещение о результате оплаты. Для регистрации регулярной оплаты в запросе необходимо передать информацию о периодичности, сумме, начале и конце совершения регулярной оплаты.

Подробнее о проведении оплаты через Gate с помощью метода Google Pay см. в разделе Оплаты через Gate.

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

Формат запросов

При работе с запросами на регистрацию повторяемой оплаты с применением метода Google Pay необходимо учитывать следующее:

  1. Должны использоваться запросы, отправляемые методом POST на следующие URL: /v2/payment/googlepay/sale или /v2/payment/googlepay/auth
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор, уникальный в рамках проекта,
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3.
    • recurring — объект, содержащий сведения о повторяемой оплате (условия проведения регулярного платежа хранятся на стороне мерчанта):
      • register — признак регистрации платежа как повторяемой оплаты,
      • type—тип повторяемой оплаты: R (для регулярной оплаты), C (для экспресс-оплаты), или U (для автооплаты), подробную информацию см. в разделе Общая информация,
      • scheduled_payment_id—идентификатор следующей повторяемой оплаты,
      • start_date — дата начала регулярной оплаты, в формате ДД-ММ-ГГГГ (должна быть как минимум на один день позже, чем дата регистрации),
      • amount — сумма платежа,
      • period — период выполнения регулярной оплаты,
      • interval — интервал выполнения регулярной оплаты,
      • time — время выполнения регулярной оплаты в формате hh:mm:ss (UTC0).
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Корректный запрос на регистрацию повторяемой оплаты с применением метода Google Pay должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму платежа, а также признак регистрации и условия проведения списаний при регулярной оплате.

Рис.: Пример запроса на регистрацию регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2...==",
  },
  "customer": {
    "ip_address": "1.1.1.1",
    "id": "123"
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  },
  "recurring": {
    "register": true,
    "type": "R",
    "amount": 1000,
    "interval": 1,
    "cycle": "week",
    "start_date": "21-11-2018"
  }
}

Проведение повторяемой оплаты

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

Формат запросов

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

  1. Должен использоваться запрос, отправляемый методом POST на следующие URL: /v2/payment/googlepay/recurring.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные сведения:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа,
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о платеже:
      • amount — сумма,
      • currency — валюта платежа в формате ISO-4217 alpha-3.
    • recurring — объект, содержащий сведения о повторяемой оплате:
      • id — идентификатор зарегистрированной повторяемой оплаты.
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Корректный запрос на проведение повторяемой оплаты с применением метода Google Pay должен содержать идентификаторы проекта и платежа, подпись, IP-адрес пользователя, валюту и сумму платежа, а также идентификатор зарегистрированной регулярной оплаты.

Рис.: Пример запроса на проведение регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2...==",
  },
  "customer": {
    "ip_address": "1.1.1.1"
  },
  "payment": {
    "amount": 1000,
    "currency": "RUB"
  },
  "recurring": {
    "id": 1234567890
  }
}

Отмена проведения повторяемой оплаты

До момента истечения срока выполнения регулярной оплаты её можно отменить. Также для изменения условий выполнения регулярной оплаты её необходимо отменить и отправить запрос на создание новой.

Формат запросов

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

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

Корректный запрос на отмену проведения регулярной оплаты с применением метода Google Pay должен содержать идентификаторы проекта и платежа, подпись, а также идентификатор зарегистрированной повторяемой оплаты.

Рис.: Пример запроса на отмену регулярной оплаты

 {
  "general": {
    "project_id": 208,
    "payment_id": "TEST_15427007172789",
    "signature": "DH0v2pZnkK9hwytQ6/ZtDSQh+wwx/OqrWdbltzO5GMSkzd0Iq6lM2v8...==",
  },
  "recurring": {
    "id": 1234567890
  }
}

Формат оповещений

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 208 для пользователя была успешно зарегистрирована повторяемая оплата. При этом в качестве названия метода в параметре payment.method указывается etoken-google.

Рис.: Пример оповещения о успешном проведении повторяемой оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "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": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

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

Рис.: Пример оповещения об отмене проведения регулярной оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "account": {
            "number": "489537******3478"
        },
        "recurring": {
            "id": 1000030038,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "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": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "0",
            "message": "Success"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

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

Рис.: Пример оповещения о неуспешном проведении регулярной оплаты

 {
        "project_id": 208,
        "payment": {
            "id": "payment",
            "type": "recurring",
            "status": "success",
            "date": "2018-11-20T08:44:46+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 300,
                "currency": "USD"
            },
            "description": "payment"
        },
        "errors": [
            {
                "code": "2701",
                "message": "Rules Failed Code",
                "description": "fatal: RULES_FAILED_CODE"
            }
        ],
        "recurring": {
            "id": 1000700,
            "currency": "USD",
            "valid_thru": "-0001-11-30T00:00:00+0000"
        },
        "operation": {
            "id": 1000034,
            "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": 300,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 300,
                "currency": "USD"
            },
            "provider": {
                "id": 1381,
                "payment_id": "2548950091",
                "date": "2020-11-20T08:44:45+0000",
                "auth_code": ""
            },
            "code": "2701",
            "message": "Rules Failed Code"
        },
        "signature": "x2tsnvLCRXZMX8Kwyr9a8+I3RipuPWUod5c89cDSQ6cRq...=="
    }

Дополнительные материалы

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

Возвраты через Gate

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

Google Pay поддерживает проведение полных и частичных возвратов. Для проведения возврата через Gate с использованием метода Google Pay со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Полная схема проведения возврата представлена далее.



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

  1. Пользователь запрашивает возврат средств в веб-сервисе.
  2. От веб-сервиса мерчанта на заданный URL ecommpay передаётся запрос на проведение возврата через Gate.
  3. Gate перенаправляет запрос в платёжную платформу ecommpay для дальнейшей обработки.
  4. На стороне платёжной платформы ecommpay выполняются необходимые проверка и первичная обработка запроса.
  5. От платёжной платформы в веб-сервис передается ответ с результатом первичной обработки запроса. Подробнее см. в разделе Формат ответа.
  6. Обработанный запрос передается в сервис международной платёжной системы.
  7. На стороне международной платёжной системы выполняется обработка платежа.
  8. От международной платёжной системы к платёжной платформе ecommpay направляется оповещение о результате.
  9. От платёжной платформы ecommpay к веб-сервису направляется оповещение о результате.
  10. Пользователь получает от веб-сервиса информацию о поступлении запрошенных средств.

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

Формат запросов

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

  1. Должен использоваться запрос /v2/payment/googlepay/refund, отправляемый методом POST.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — объект, содержащий основные идентификационные сведения о запросе:
      • project_id — идентификатор проекта;
      • payment_id — идентификатор платежа;
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — объект, содержащий сведения о пользователе:
      • ip_address — используемый IP-адрес;
    • payment — объект, содержащий сведения о возврате :
      • description — комментарий или описание возврата,
      • amount — сумма возврата в дробных единицах валюты (обязательный при частичном возврате),
      • currency — валюта возврата в формате ISO-4217 alpha-3 (обязательный при частичном возврате).
  3. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на частичный возврат с применением метода Google Pay должен содержать идентификаторы проекта и платежа, подпись, сумму и валюту платежа, описание возврата и IP-адрес пользователя:

Рис.: Пример запроса на частичный возврат

{
   "general": {    
    "project_id": 239,    
    "payment_id": "refund_02",   
    "signature": "of8k9xerKSK4XL1QFaDH3p9Mh0CIcjmOwSwKJ7KLTZYO56lCv+f1M0Sf/7eg=="
  },  
   "customer": {    
     "ip_address": "1.2.3.4" 
  },  
   "payment": {    
     "amount": 10000,    
     "currency": "RUB",
     "description": "refund_02"
 }
}

Формат оповещений

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

В следующем примере оповещение свидетельствует о том, что в рамках проекта 208 для пользователя был успешно проведён возврат в размере 30,00 USD на счёт карты 537018******8236.

При этом в качестве названия метода в параметре payment.method указывается etoken-google.

Рис.: Пример оповещения о проведенном возврате

{
        "project_id": 208,
        "payment": {
            "id": "TEST_123456",
            "type": "purchase",
            "status": "refunded",
            "date": "2020-03-30T08:54:23+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 0,
                "currency": "USD"
            },
            "description": "payment for 30.0 USD"
        },
        "account": {
            "number": "537018******8236",
            "type": "mastercard",
            "card_holder": "LEE OONG",
            "expiry_month": "09",
            "expiry_year": "2020"
        },
        "customer": {
            "id": "907680850"
        },
        "operation": {
            "id": 57299000036261,
            "type": "refund",
            "status": "success",
            "date": "2020-03-30T08:54:24+0000",
            "created_date": "2020-03-30T08:54:22+0000",
            "request_id": "122809a-c43c08a4b6ee7d73bfaaf7f",
            "sum_initial": {
                "amount": 3000,
                "currency": "USD"
            },
            "sum_converted": {
                "amount": 3000,
                "currency": "USD"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 120,
                "payment_id": "353197036",
                "auth_code": "000000",
                "endpoint_id": 120,
                "date": "2020-03-30T08:54:23+0000"
            }
        },
        "signature": "8y41YTzCAy0N/mV+tkJmB6OsGYLUYAyAIp3U/3x7jymU...=="
    }

В следующем примере возврат был отклонён, так как значение суммы в запросе на возврат не соответствует сумме в исходной оплате.

Рис.: Пример оповещения об отказе в проведении возврата

{
        "project_id": 208,
        "payment": {
            "id": "TEST_1234567",
            "type": "purchase",
            "status": "success",
            "date": "2020-03-27T17:41:04+0000",
            "method": "etoken-google",
            "sum": {
                "amount": 2000,
                "currency": "EUR"
            },
            "description": "35121367"
        },
        "account": {
            "number": "532196******1368",
            "type": "mastercard",
            "card_holder": "LEE OONG",
            "expiry_month": "09",
            "expiry_year": "2028"
        },
        "customer": {
            "id": "LEE OONG"
        },
        "operation": {
            "id": 42809000016421,
            "type": "refund",
            "status": "decline",
            "date": "2020-03-27T17:41:04+0000",
            "created_date": "2020-03-27T17:41:03+0000",
            "request_id": "b869d91-ff913d9c5ae5ba1bb6c3457c30e91",
            "sum_initial": {
                "amount": 1400,
                "currency": "EUR"
            },
            "sum_converted": {
                "amount": 1400,
                "currency": "EUR"
            },
            "code": "10000",
            "message": "General decline"
        },
        "signature": "8ql4yC3p2RiYbNXN15+64vo2B1HhpQVr1RbsDkpyQmD6HSxMYBrBQJmcKmL...=="
    }

Дополнительные материалы

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

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

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

Для проверки действительности карты через Gate с использованием Google Pay метода со стороны веб-сервиса необходимо отправить запрос, содержащий требуемые параметры и подпись, на рабочий URL ecommpay и принять оповещение о результате. Схема проведения проверки действительности карты через сервис Google Pay аналогична стандартной проверке, описание которой представлено в разделе Проверка платёжных инструментов.

Формат запросов на проверку действительности карты

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

  1. Должен использоваться запрос, отправляемый методом POST на /v2/payment/googlepay/account_verification.
  2. В запросе должны использоваться следующие объекты и параметры:
    • general — основные идентификационные сведения запроса:
      • project_id — идентификатор проекта,
      • payment_id — идентификатор платежа
      • signature — подпись запроса, составленная после указания целевых параметров (подробнее — в разделе Использование подписи к данным);
    • customer — сведения о пользователе:
      • ip_address — IP-адрес;
    • payment — сведения о платеже:
      • amount — сумма платежа в дробных единицах валюты,
      • currency — валюта платежа в формате ISO-4217 alpha-3;
    • etoken — сведения о токене от Google Pay:
      • token — токен, полученный от Google Pay после идентификации пользователя.
  3. Сумма платежа должна быть нулевой.
  4. Дополнительно могут использоваться все параметры, указанные в спецификации.

Таким образом, корректный запрос на проверку действительности карты с применением метода Google Pay должен содержать идентификаторы проекта и платежа, IP-адрес пользователя, валюту и сумму платежа, а также токен от Google Pay:

Рис.: Пример запроса на проверку действительности карты

{
  "general": {
    "project_id": 238,
    "payment_id": "TEST_15427033321774",
    "signature": "96c+hWk1zweuGKwDRrl+Se5mDLXHChlDZrjJXZw7ew6ow3RpGYv4U...=="
  },
  "customer": {
    "ip_address": "1.1.1.1"
  },
  "payment": {
    "amount": 0,
    "currency": "RUB"
  },
  "etoken": { 
     "token": "k/cNkKsVhu5yGuRB4aFMNlwI9W36mgzBYgOeW61l/MkzFvx2P8RivIx7WWQtVWePx3Pjp3D4B5yn3SzDTxGyoo2GLojZ5Jh9wIycsuRbV00L55s9L7xDcs7ds30zUxDgo/XDGjckVmjfRuO6KlqYsDHaNd6LsAGXxWCNupL/2uwM8JolbW8AziV3l/MkgvaKldMwPu6MSq5k87lqKZPKiqf21NdO59n6PlS/Bqw6+GEJ5fcgkGZxrZzQLatk3IVlzwgVdsKBV4UH82Gx5uNW8OwsClJPZClTnCjkpVsxFxMrqOn1tZOohL5Bz7N18MGPIUAC01PgiauL+31ORBRrRxin8D7J1QLme0eTnlhbv+8IXdCyP1Ct/TwmbHaTFnCbFPy23mdTZ7NKZ95CPUIjiSP/PGnLxE6KqvGxu67g=="
  }
}

Формат оповещений

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

Дополнительные материалы

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

Тестирование

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

Для метода Google Pay доступно тестирование оплат в одну и две стадии через Payment Page и Gate, а также тестирование проверки действительности карты через Gate. Тестирование может выполняться в рамках тестового проекта, для подключения и отключения этой функциональности необходимо обращаться к специалистам технической поддержки ecommpay support@ecommpay.com.

При проведении тестовых платежей следует учитывать, что в запросах должен указываться идентификатор тестового проекта, а интерфейсы эмулятора платёжных форм Payment Page и страницы аутентификации 3‑D Secure 2 могут отличаться от рабочих. Вместе с тем для проведения тестовых платежей необходимо использовать действительные платёжные карты, предварительно зарегистрированные в сервисе Google Pay. Это никак не влияет на проведение реальных платежей с использованием этих карт, но позволяет выполнять полноценное тестирование. Для тестирования оплат через Gate необходимо также подготовить веб-сервис к работе с сервисом Google (подробнее — в разделе Оплаты через Gate).

Статусы тестовых платежей

При тестировании оплат в одну и две стадии их итоговые статусы определяются исходя из сумм, указанных в запросах:

  • success — при указании суммы 1000;
  • decline — при указании суммы 2000, 5000 или 10001.

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

  • success — при указании суммы 0;
  • decline — при указании любой другой суммы.

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

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

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

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

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

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

  1. Отправить в платёжную платформу корректный тестовый запрос на оплату.
  2. При получении оповещения с данными для перенаправления на страницу аутентификации 3‑D Secure 2 эмулятора:

    1. Выполнить перенаправление и пройти аутентификацию.
    2. Отправить запрос на продолжение проведения оплаты. В этом запросе необходимо использовать параметр cres со следующим значением:
      ewogICAiYWNzUmVmZXJlbmNlTnVtYmVyIiA6ICJBQ1NFbXUyIiwKICAgImFjc1RyYW5zSUQiIDogIjAwMDAwMDAwLTAwMDUtNWE1YS04MDAwLTAxNmRiNjMzNzZlYiIsCiAgICJtZXNzYWdlVHlwZSIgOiAiQ1JlcyIsCiAgICJtZXNzYWdlVmVyc2lvbiIgOiAiMi4xLjAiLAogICAidGhyZWVEU1NlcnZlclRyYW5zSUQiIDogIjZmMmM3OGFkLTFjOWMtNTI2ZC04MDAwLTAwMDAwMDAwMTA2YiIsCiAgICJ0cmFuc1N0YXR1cyIgOiAiWSIKfQ
  3. Принять оповещение с информацией о результате оплаты.

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

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

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

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

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

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

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

  1. Отправить в платёжную платформу корректный тестовый запрос на оплату.
  2. При получении оповещения с данными для перенаправления на страницу аутентификации 3‑D Secure 2 эмулятора:

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

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

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

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

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

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

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

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

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

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

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