Google Pay™

Обзор

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

Загрузить логотип этого платежного метода в векторном формате можно здесь.

Тип платежного метода
  • Платежи с использованием токена
  • Карточные платежи
Регионы использования Казахстан
Валюты платежей KZT
Конвертация валют На стороне JetPay
Одностадийная оплата
Двухстадийная оплата
Повторяемые оплаты
Выплата
Полный возврат
Частичный возврат
Опротестование
Особенности
Организация и стоимость подключения По согласованию с курирующим менеджером JetPay

Схема работы

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

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

  Интерфейсы Суммы, KZT Время
Payment Page CMS Plug-ins Gate Dashboard минимум максимум базовое предельное
Оплата в одну стадию 10,00 1 минута 48 часов
Блокировка средств в рамках оплаты в две стадии 10,00 1 минута 48 часов
Списание и отмена заблокированных средств в рамках оплаты в две стадии 10,00 1 минута 48 часов
Регистрация повторяемой оплаты 10,00  1 минута 48 часов
Повторные списания в рамках повторяемой оплаты 10,00  1 минута 48 часов
Возвраты 10,00  1 минута 24 часа

Уточнить минимальную и максимальную сумму платежа, доступную в вашем проекте, вы можете в Dashboard. Для этого в Dashboard перейдите в раздел Проекты и выберите вкладку Платежные методы.

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

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

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

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

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

При выполнении оплаты в одну стадию через Payment Page с использованием метода Google Pay веб-сервис отправляет запрос, содержащий требуемые параметры и подпись, на рабочий URL-адрес JetPay и принимает оповещение о результате оплаты.

При этом существует возможность открыть Payment Page так, чтобы на ней уже был выбран метод Google Pay. (Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.)

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



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

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

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

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

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

  1. Должен использоваться базовый минимум параметров, которые обязательны для любого платежного метода:
    • project_id — идентификатор проекта, полученный от JetPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • customer_id — идентификатор пользователя, уникальный в рамках проекта;
    • customer_first_name — имя пользователя;
    • customer_last_name — фамилия пользователя;
    • customer_email — адрес электронной почты пользователя;
    • payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.
  2. Если нужно, чтобы Payment Page открылась с уже выбранным методом Google Pay, добавьте в запрос параметр force_payment_method со значением google_pay_host.
  3. Для регистрации повторяемой оплаты добавьте в запрос параметр recurring, содержащий в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта (до кодирования):
    {"register":true}

    Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты.

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

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

EPayWidget.run(
    {
        project_id: 1234,
        payment_id: 'payment_47',
        customer_id: 'customer_123',
        customer_first_name: 'John',
        customer_last_name: 'Doe',
        customer_email: 'johndoe@example.com',
        payment_currency: 'KZT',
        payment_amount: 1000000,    
        recurring: '%7B%22register%22%3Atrue%7D',
        signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R\/ekpZhkIQg=="
    }
)

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

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

При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.

В следующем примере в оповещении содержится информация о том, что в проекте 1234 выполнена оплата в размере 10 000,00 KZT.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "recurring": {
        "id": 12345
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении оплаты.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

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

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

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

  1. Отправить запрос на открытие платежной формы в сервис Google Pay.
  2. Принять от сервиса Google Pay оповещение токеном для выполнения оплаты.
  3. Отправить запрос с нужными параметрами и подписью на рабочий URL-адрес JetPay.
  4. Принять от платежной платформы JetPay оповещение о результате оплаты.
Прим.: Для выполнения оплат через Gate настройте взаимодействие вашего веб-сервиса с сервисом Google Pay используя документацию Google Pay для разработчкиков. При настройке взаимодействия важно следовать правилам фирменного оформления Google и сверяться с контрольным списком интеграции.

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



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

  1. Пользователь на стороне веб-сервиса инициирует оплату через метод Google Pay.
  2. Веб-сервис передает запрос на открытие платежной формы в сервис Google Pay.
  3. Сервис Google Pay обрабатывает запрос и подготавливает платежную форму.
  4. Пользователю отображается платежная форма сервиса Google Pay.
  5. Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.
    Прим.: Если пользователь на этом шаге использует данные новой карты, то оплата проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр method имеет значение card вместо etoken-google.
  6. Сервис Google Pay обрабатывает запрос.
  7. Сервис Google Pay отправляет в веб-сервис оповещение с токеном для проведения оплаты.
  8. Веб-сервис отправляет запрос на проведение оплаты в одну стадию через Gate на URL-адрес JetPay.
  9. Запрос на проведение оплаты поступает в платежную платформу JetPay.
  10. Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
  11. Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
  12. Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
  13. Сервис банка обрабатывает платеж.
    Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение оплаты происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
  14. Сервис банка направляет в платежную платформу уведомление о результате оплаты.
  15. Платежная платформа отправляет в веб-сервис оповещение о результате оплаты.
  16. Веб-сервис направляет пользователю информацию о результате оплаты.

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

Формат запросов в сервис Google Pay

При проведении оплат через Gate с использованием платежного метода Google Pay необходимо настроить взаимодействие вашего веб-сервиса с сервисом Google Pay используя документацию Google Pay для разработчкиков.

В запросе в сервис Google Pay помимо прочих объектов и параметров нужно передавать массив allowedPaymentMethods, состоящий из одного JSON-объекта с информацией об используемом платежном методе.

Вот пример массива allowedPaymentMethods:

"allowedPaymentMethods": [
    {
        "type": "CARD",
        "parameters": {
            "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
            "allowedCardNetworks": ["MASTERCARD", "VISA"]
        },
        "tokenizationSpecification": {
            "type": "PAYMENT_GATEWAY",
            "parameters": {
                "gateway": "jetpay", 
                "gatewayMerchantId": "project_id" // В качестве значения параметра
                                                  // gatewayMerchantId укажите
                                                  // идентификатор проекта, полученный
                                                  // от JetPay при интеграции
            }
        }
    }
]

Значения всех параметров нужно передавать в соответствии с примером выше, кроме параметра gatewayMerchantId, значением которого является ваш идентификатор проекта, полученный от JetPay при интеграции, а также параметра gateway, значение которого уточняйте у своего курирующего менеджера.

Формат запросов в платежную платформу JetPay

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

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

Вот пример данных из запроса на оплату с использованием метода Google Pay:

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

{
    "general": {
        "project_id": 1234,
        "payment_id": "payment_47",
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "customer": {
        "id": "customer_123",
        "ip_address": "198.51.100.47",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johndoe@example.com"
    },
    "etoken": {
        "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}"
    },
    "recurring": {
        "register": true
    },
    "payment": {
        "amount": 1000000,
        "currency": "KZT"
    }
}

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

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

При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.

В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234 проведена оплата в размере 10 000,00 KZT.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "recurring": {
        "id": 12345
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении оплаты.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

Оплата в две стадии через Payment Page

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

При выполнении оплаты в две стадии с использованием метода Google Pay при использовании Payment Page возможно выполнение только первой стадии оплаты — блокировки средств на счете пользователя. Для списания заблокированных средств нужно отправить отдельный запрос с использованием Gate API. Подробнее о запросе на списание заблокированных средств см. Формат запроса в сервис JetPay на списание заблокированных средств.

При блокировке средств через Payment Page веб-сервис отправляет запрос, содержащий требуемые параметры и подпись, на рабочий URL-адрес JetPay и принимает оповещение о результате блокировки средств.

При этом существует возможность открыть Payment Page так, чтобы на ней уже был выбран метод Google Pay. (Подробнее о предварительном выборе метода см. Предварительный выбор платежного метода.)

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



Рис.: Описание шагов блокировки средств через Payment Page

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

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

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

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

  1. Должен использоваться базовый минимум параметров, которые обязательны для любого платежного метода:
    • project_id — идентификатор проекта, полученный от JetPay при интеграции;
    • payment_id — идентификатор платежа, уникальный в рамках проекта;
    • customer_id — идентификатор пользователя, уникальный в рамках проекта;
    • customer_first_name — имя пользователя;
    • customer_last_name — фамилия пользователя;
    • customer_email — адрес электронной почты пользователя;
    • payment_currency — код валюты платежа в формате ISO-4217 alpha-3;
    • payment_amount — сумма платежа в дробных единицах валюты без десятичной точки и пробелов за исключением случаев, когда у валюты нет дробной части. Если у валюты нет дробных единиц (то есть количество разрядов дробных единиц равно нулю), то в этом параметре нужно указывать сумму в основных единицах валюты. Подробнее о разрядах дробных единиц у валют см. Коды валют.
  2. Если нужно, чтобы Payment Page открылась с уже выбранным методом Google Pay, добавьте в запрос параметр force_payment_method со значением google_pay_host.
  3. Для регистрации повторяемой оплаты добавьте в запрос параметр recurring, содержащий в себе строку, полученную в результате кодирования с помощью URL-encoding JSON-объекта с набором параметров повторяемой оплаты. Пример такого JSON-объекта:
    {"register":true}

    Подробнее о регистрации повторяемой оплаты с использованием Payment Page см. Регистрация повторяемой оплаты.

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

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

EPayWidget.run(
    {
        project_id: 1234,
        payment_id: 'payment_47',
        customer_id: 'customer_123',
        customer_first_name: 'John',
        customer_last_name: 'Doe',
        customer_email: 'johndoe@example.com',
        payment_currency: 'KZT',
        payment_amount: 1000000,    
        recurring: '%7B%22register%22%3Atrue%7D',
        signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KU+Y19vySO\/RLUkDJrOcZzUCwX6R\/ekpZhkIQg=="
    }
)

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

В оповещениях о результате блокировки средств с использованием метода Google Pay используется типовой формат, описание которого представлено в разделе Оповещения (callbacks) в Payment Page.

При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.

В следующем примере в оповещении содержится информация о том, что в проекте 1234 выполнена блокировка средств в размере 10 000,00 KZT.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "recurring": {
        "id": 12345
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении запроса на блокировку средств.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

Оплата в две стадии через Gate

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

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

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

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

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

Схемы этапов проведения оплаты в две стадии выглядят следующим образом.

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

  1. Пользователь на стороне веб-сервиса инициирует оплату через метод Google Pay.
  2. Веб-сервис передает запрос на открытие платежной формы в сервис Google Pay.
  3. Сервис Google Pay обрабатывает запрос и подготавливает платежную форму.
  4. Пользователю отображается платежная форма сервиса Google Pay.
  5. Пользователь выбирает одну из карт, зарегистрированных в сервисе Google Pay, либо вводит данные новой карты.
    Прим.: Если пользователь на этом шаге использует данные новой карты, то блокировка средств проводится с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2. При этом в итоговых оповещениях от платежной платформы параметр method имеет значение card вместо etoken-google.
  6. Сервис Google Pay обрабатывает запрос.
  7. Сервис Google Pay отправляет в веб-сервис оповещение с токеном для проведения оплаты.
  8. Веб-сервис отправляет запрос на блокировку средств через Gate на URL-адрес JetPay.
  9. Запрос на блокировку средств поступает в платежную платформу JetPay.
  10. Платежная платформа выполняет начальную обработку запроса, в рамках которой проверяет наличие обязательных параметров и корректной подписи.
  11. Платежная платформа направляет в веб-сервис ответ с информацией о получении запроса и о результате проверки его корректности. (Подробнее о формате ответа см. Ответ.)
  12. Платежная платформа выполняет дальнейшую обработку запроса, после чего отправляет его в сервис банка.
  13. Сервис банка обрабатывает запрос.
    Прим.: Если пользователь на стороне сервиса Google Pay вместо выбора одной из зарегистрированных карт использовал данные новой карты, то проведение оплаты происходит с выполнением процедуры аутентификации 3-D Secure 2, подробнее см. Аутентификация по протоколу 3‑D Secure 2.
  14. Сервис банка направляет в платежную платформу уведомление о результате блокировки средств.
  15. Платежная платформа отправляет в веб-сервис оповещение о результате блокировки средств.
  16. Веб-сервис направляет пользователю информацию о результате блокировки средств.

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

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

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

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

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

Формат запросов в сервис Google Pay

При проведении оплат через Gate с использованием платежного метода Google Pay необходимо настроить взаимодействие вашего веб-сервиса с сервисом Google Pay используя документацию Google Pay для разработчкиков.

В запросе в сервис Google Pay помимо прочих объектов и параметров нужно передавать массив allowedPaymentMethods, состоящий из одного JSON-объекта с информацией об используемом платежном методе.

Вот пример массива allowedPaymentMethods:

"allowedPaymentMethods": [
    {
        "type": "CARD",
        "parameters": {
            "allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
            "allowedCardNetworks": ["MASTERCARD", "VISA"]
        },
        "tokenizationSpecification": {
            "type": "PAYMENT_GATEWAY",
            "parameters": {
                "gateway": "jetpay", 
                "gatewayMerchantId": "project_id" // В качестве значения параметра
                                                  // gatewayMerchantId укажите
                                                  // идентификатор проекта, полученный
                                                  // от JetPay при интеграции
            }
        }
    }
]

Значения всех параметров нужно передавать в соответствии с примером выше, кроме параметра gatewayMerchantId, значением которого является ваш идентификатор проекта, полученный от JetPay при интеграции.

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

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

  1. Следует использовать POST-запрос в конечную точку /v2/payment/googlepay/auth.
  2. В запросе должны присутствовать следующие объекты и параметры:
    • general — объект, содержащий основные сведения о запросе:
      • project_id — идентификатор проекта, полученный от JetPay при интеграции;
      • payment_id — идентификатор платежа, уникальный в рамках проекта;
      • signature — подпись запроса, составленная после определения всех параметров запроса. (Подробнее см. раздел Использование подписи к данным.);
    • customer — объект, содержащий сведения о пользователе:
      • id — идентификатор пользователя, уникальный в рамках проекта;
      • ip_address — IP-адрес устройства пользователя;
      • email — адрес электронной почты пользователя;
      • first_name — имя пользователя;
      • last_name — фамилия пользователя;
    • etoken — объект, содержащий токен, полученный от сервиса Google Pay после аутентификации пользователя:
      • token — токен, полученный от сервиса Google Pay после аутентификации пользователя;
    • payment — объект, содержащий сведения о средствах, которые нужно заблокировать:
      • amount — сумма блокируемых средств в дробных единицах валюты без десятичной точки и пробелов.

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

      • currency — код валюты блокируемых средств в формате ISO-4217 alpha-3.
  3. Для регистрации повторяемой оплаты дополнительно передайте в запросе объект recurring с параметром register, имеющим значение true. Подробнее о регистрации повторяемой оплаты с использованием Gate см. Регистрация повторяемой оплаты.
  4. Дополнительно в запросе могут использоваться любые другие (необязательные) объекты и параметры, указанные в спецификации.

Вот пример данных из запроса на блокировку средств с использованием метода Google Pay:

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

{
    "general": {
        "project_id": 1234,
        "payment_id": "payment_47",
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "customer": {
        "id": "customer_123",
        "ip_address": "198.51.100.47",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johndoe@example.com"
    },
    "etoken": {
        "token": "{\"paymentData\":{...},\"paymentMethod\":{...},\"transactionIdentifier\":\"...\"}"
    },
    "recurring": {
        "register": true
    },
    "payment": {
        "amount": 1000000,
        "currency": "KZT"
    }
}

Формат запроса в сервис JetPay на списание заблокированных средств

Этот запрос используется для списания заблокированных ранее средств. Блокировку средств можно выполнять как через Payment Page, так и через Gate.

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

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

Вот пример данных из запроса на списание заблокированных средств с использованием метода Google Pay:

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

{
    "general": {
        "project_id": 1234,
        "payment_id": "payment_47",
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "payment": {
        "amount": 1000000,
        "currency": "KZT"
    }
}

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

Этот запрос используется для отмены блокировки средств. Блокировку средств можно выполнять как через Payment Page, так и через Gate.

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

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

Вот пример данных из запроса на отмену блокировки средств с использованием метода Google Pay:

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

{
    "general": {
        "project_id": 1234,
        "payment_id": "payment_47",
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    }
}

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

В оповещениях о результатах блокировки средств, списания или отмены блокировки средств с использованием метода Google Pay используется типовой формат, который описан в разделе Оповещения (callbacks) в Gate.

При успешной регистрации повторяемой оплаты оповещение будет содержать идентификатор зарегистрированной оплаты в параметре id объекта recurring.

В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234 произведена блокировка средств в размере 10 000,00 KZT.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "recurring": {
        "id": 12345
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении блокировки средств.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "auth",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "sale",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "capture",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении списания средств.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "awaiting_capture",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "capture",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "canceled",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "cancel",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении отмены блокировки средств.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "awaiting_capture",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "cancel",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

Оплата в две стадии через Dashboard

Dashboard поддерживает управлять заблокированными средствами в рамках оплаты в две стадии. Заблокированные средства можно списать или разблокировать.

Чтобы подтвердить списание (отменить блокировку) заблокированных средств:

  1. Найдите оплату, для которой необходимо подтвердить списание (отменить блокировку).
  2. Откройте карточку оплаты.
  3. Отправьте запрос на подтверждение (отмену) списания заблокированных средств.

    Для этого:

    1. Щелкните кнопку Списание, чтобы списать заблокированные средства (Отмена, чтобы отменить блокировку средств), на панели информации о платеже.
    2. Укажите в открывшемся окне полную сумму заблокированных средств.
    3. Подтвердите отправку запроса, щелкнув кнопку Списание (Отмена).
      Прим.: Если кнопки Списание и Отмена неактивны, это может свидетельствовать о том, что одна из этих операций уже выполняется, а если отсутствуют — о том, что для платежа с данным статусом не поддерживается выполнение таких операций.
  4. Убедитесь, что операция списания (отмены) выполнена, проверив статус операции.

    Если запрос на выполнение операции был отклонен, то статус такой операции принимает значение decline, а статус платежа не меняется — остается awaiting capture.

Подробнее о возможностях использования Dashboard для подтверждения (отмены) списания средств, заблокированных в рамках первого этапа оплаты в две стадии см. Проведение оплаты через Dashboard.

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

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

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

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

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

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



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

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

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

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

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

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

Вот пример данных из запроса на повторное списание с использованием метода Google Pay:

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

{
    "general": {
        "project_id": 1234,
        "payment_id": "payment_47",
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWoXW\/9MTO8yJA=="
    },
    "customer": {
        "id": "customer_123",
        "ip_address": "198.51.100.47",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johndoe@example.com"
    },
    "recurring": {
        "id": 12345
    },
    "payment": {
        "amount": 1000000,
        "currency": "KZT"
    }
}

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

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

В следующем примере в оповещении содержится информация о том, что в рамках проекта 1234 проведено повторное списание в рамках повторяемой оплаты в размере 10 000,00 KZT.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "recurring",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "recurring",
        "status": "success",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "0",
        "message": "Success",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

В следующем примере содержится информация об отклонении оплаты.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "recurring",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": ""
    },
    "customer": {
        "id": "customer_123"
    },
    "account": {
        "number": "411111******1111"
    },
    "operation": {
        "id": 833,
        "type": "recurring",
        "status": "decline",
        "date": "2023-03-02T09:13:10+0000",
        "created_date": "2023-03-02T09:12:00+0000",
        "code": "20000",
        "message": "General decline",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        },
        "request_id": "dabb4660eb711f3774a70a8"
    },
    "signature": "U7HQO7ToISZhMPKdM4Xr4DSX2UuHp99rHrtaxkUKQtoYzFvoB3cs9CRd4xeYG2Q=="
}

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

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

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

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

Чтобы выполнить возврат через Gate с использованием метода Google Pay:

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

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



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

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

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

Запрос

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

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

Вот пример данных из запроса на возврат с использованием метода Google Pay:

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

{ 
    "general": { 
        "project_id": 1234, 
        "payment_id": "payment_47", 
        "signature": "vVDlp9QFbU76c5Hb2sofs4kypzZtGwJW6+y1CN3AIrirtsTaXXBQvnHxp7j3E1zdmg==" 
    },
    "customer": {
        "id": "customer_123",
        "ip_address": "198.51.100.47",
        "first_name": "John",
        "last_name": "Doe",
        "email": "johndoe@example.com"
    },
    "payment": { 
        "description": "Refund description",
        "amount": 1000000, 
        "currency": "KZT"
    } 
}

Оповещение (callback)

В методе Google Pay результат возврата передается в ваш веб-сервис в оповещении типовой структуры, подробное описание которой представлено в разделе Оповещения (callbacks) в Gate.

Вот пример тела оповещения с информацией о выполненном возврате на сумму 10 000,00 KZT:

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "refunded",
        "date": "20201-09-09T10:02:18+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 0,
            "currency": "KZT"
        },
        "description": "Refund description"
    },
    "operation": {
        "id": 12345677654321,
        "type": "refund",
        "status": "success",
        "date": "2021-09-09T10:02:18+0000",
        "created_date": "2021-09-09T09:46:14+0000",
        "request_id": "6b77b588d77d5c27be31be7b72bf9adf...b1c85eda238b73cac-00090267",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "code": "0",
        "message": "Success",
        "provider": {
            "id": 12345,
            "payment_id": "123abc123-321",
            "auth_code": ""
        }
    },
    "signature": "WUZUy26FHZglsro9PYFr89suJAciQ...5Fev4NtHl56VGTgX9m/g=="
}

Вот пример тела оповещения с информацией об отклоненном возврате.

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

{
    "project_id": 1234,
    "payment": {
        "id": "payment_47",
        "type": "purchase",
        "status": "success",
        "date": "2021-09-09T10:02:18+0000",
        "method": "etoken-google",
        "sum": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "description": "Refund description"
    },
    "operation": {
        "id": 12345677654321,
        "type": "refund",
        "status": "decline",
        "date": "2021-09-09T10:02:18+0000",
        "created_date": "2021-09-09T09:46:14+0000",
        "request_id": "6b77b588d77d5c27be31be7b72bf9adf...b1c85eda238b73cac-00090268",
        "sum_initial": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "sum_converted": {
            "amount": 1000000,
            "currency": "KZT"
        },
        "code": "20000",
        "message": "General decline"
        }
    },
    "signature": "WUZUy26FHZglsro9PYFr89suJAciQ...5Fev4NtHl56VGTgX9m/g=="
}

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

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

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

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

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

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

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