Google Pay™
Общая информация
Google Pay™ это быстрый и безопасный способ для проведения оплаты в одно касание. Клиент Вашего магазина может произвести оплату любой картой, сохраненной в его Google аккаунте. Для Вас эта оплата пройдет, как обычный платёж банковской картой.
- Если оплата происходит с мобильного устройства, поддерживающего Google Pay, клиенту будет предложено подтвердить оплату с помощью пароля, отпечатка пальца или функции распознавания лица.
- При оплате с устройства без приложения Google Pay, покупатель может выбрать любую сохраненную карту в его Google аккаунте и подтвердить платеж, пройдя 3D Secure аутентификацию.
Важно
При использовании технологии Google Pay Вам необходимо соблюдать правила допустимого использования и условия использования Google Pay API.
3DS
Платежи, проходящие через Google Pay не требуют от покупателя ввода карточных данных. Но при оплате методом PAN_ONLY
система может потребовать от клиента пройти 3D Secure проверку.
Интеграция
Мобильные приложения
Ознакомьтесь с общими сведениями по Google Pay для Android. При завершении интеграции необходимо ознакомиться с контрольным списком интеграции и убедиться, что правила фирменного оформления Google Pay для Android были соблюдены.
Для приема платежей в мобильном приложении на Android c помощью кнопки оплаты Google Pay следуйте инструкции по применению SDK.
Упрощенная интеграция (только для веб-сайтов)
Для веб-сайтов, использующих веб-версию нашей страницы оплаты, нет необходимости дополнительно что-либо настраивать или активировать. Просто свяжитесь с аккаунт-менеджером ioka, и мы включим кнопку Google Pay на Вашей форме оплаты.
Стандартная интеграция (только для веб-сайтов)
Стандартная интеграция подразумевает самостоятельное размещение Google Pay на сайте. Для проведения оплаты Вам необходимо получить платежный токен от Google Pay и передать его в платежный шлюз ioka.
Перед началом интеграции убедитесь, что:
- Вы ознакомились с общими сведениями о Google Pay API;
- У вашей веб-страницы с протоколом HTTPS есть TLS-сертификат, утвержденный доменом;
- Используется один из следующих веб-браузеров: Google Chrome, Mozilla Firefox, Apple Safari, Microsoft Edge, Opera или UCWeb UC.
При завершении интеграции необходимо:
- Ознакомиться с контрольным списком интеграции;
- Убедиться, что правила фирменного оформления Google Pay для веб-сайтов были соблюдены.
Схема интеграции
- Отправьте запрос на проведение стандартной интеграции Google Pay аккаунт-менеджеру ioka и получите GATEWAY_MERCHANT_ID.
- Выполните интеграцию с Google Pay API на сайте по инструкции. При запросе платежных данных используйте следующие параметры:
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["MASTERCARD", "VISA"]
},
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "ioka",
"gatewayMerchantId": "GATEWAY_MERCHANT_ID"
}
}
}
Важно
В объект, содержащий информацию о параметрах карты, необходимо передавать "billingAddressRequired": false, т.к. данный параметр не является обязательным при проведение транзакции.
- Реализуйте запрос на проведение оплаты с Google Pay токеном.
- Проведите внутреннее тестирование интеграции с Goggle Pay API и ioka.
- Получите коммерческий доступ в Google Pay и merchantId от службы поддержки Google.
- Получите боевые доступы от аккаунт-менеджера ioka.
Платежный токен
PaymentMethodToken это подписанные и зашифрованные данные о способе оплаты, получаемые из Google Pay API. Данный токен хранит информацию о картах (PAN) или о токенизированных карточных данных (PAN устройства и криптограмма).
Payment Data Response представляет собой сериализованный объект JSON в кодировке UTF-8 со следующей структурой:
{
"protocolVersion":"ECv2",
"signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
"intermediateSigningKey":{
"signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
"signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
},
"signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
}
Дополнительно
Более подробная информация о структуре платежного токена доступна по ссылке.
Данный объект передается в поле "google_pay" при отправке запроса на оплату.
Запрос на one-click оплату
Данный метод может использоваться для моментальной оплаты, т.е. при отправке запроса создается заказ и для него сразу же инициируется оплата методом Google Pay.
Пример запроса:
amount
- сумма заказа в минорных денежных единицах (в тиынах)tool_type
- "GOOGLE_PAY"google_pay
- токен платежного средства, полученный от Google Pay API на сайте или в приложении- остальные параметры необязательны, но помогут дополнить информацию о заказе и описать процесс оплаты
- HTTP
- cURL
- Python
- PHP
POST /v2/orders/tool HTTP/1.1
Host: stage-api.ioka.kz
Content-Type: application/json
Content-Length: 547
{
"amount": 500,
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
curl --location --request POST 'https://stage-api.ioka.kz/v2/orders/tool' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 500,
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
'
import requests
import json
url = "https://stage-api.ioka.kz/v2/orders/tool"
payload = json.dumps({
"amount": 500,
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://stage-api.ioka.kz/v2/orders/tool');
$request->setRequestMethod('POST');
$body = new http\Message\Body;
$body->append('{
"amount": 500,
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
');
$request->setBody($body);
$request->setOptions(array());
$request->setHeaders(array(
'Content-Type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Примеры ответов:
Важно
Для завершения оплаты картой с 3D Secure аутентификацией, Вам необходимо перенаправить плательщика по ссылке, указанной в объекте action.
После завершения аутентификации плательщик будет перенаправлен на страницу оплаты, а вы получите webhook, содержащий подробную информацию о транзакции.
- С 3DS
- Без 3DS
- 400
- 404
- 409
{
"id": "pay_test",
"order_id": "ord_test",
"status": "REQUIRES_ACTION",
"created_at": "2022-06-20T00:00:00.000000",
"approved_amount": 0,
"captured_amount": 0,
"refunded_amount": 0,
"processing_fee": 0,
"tds": true,
"payer": {
"pan_masked": "411111******1111",
"expiry_date": "12/24",
"holder": "holder",
"payment_system": null,
"emitter": null,
"email": null,
"phone": null,
"customer_id": null,
"card_id": null,
"iin": null
},
"acquirer": null,
"error": null,
"action": {
"url": "https://api.ioka.kz/v2/pay_test/check3ds"
}
}
{
"id": "pay_test",
"order_id": "ord_test",
"status": "CAPTURED",
"created_at": "2022-06-20T00:00:00.000000",
"approved_amount": 500,
"captured_amount": 500,
"refunded_amount": 0,
"processing_fee": 12.5,
"tds": false,
"payer": {
"pan_masked": "559999******9999",
"expiry_date": "12/24",
"holder": "holder",
"payment_system": null,
"emitter": null,
"email": null,
"phone": null,
"customer_id": null,
"card_id": null,
"iin": null
},
"acquirer": {
"name": "epay_v2",
"reference": "111111111111"
},
"error": null,
"action": null
}
{
"code": "InvalidPaymentToken",
"message": "Неверный платежный токен."
}
{
"code": "ShopConfigNotFound",
"message": "Конфигурации магазина не найдены."
}
{
"code": "OrderExists",
"message": "Заказ с указанным external_id уже существует."
}
Запрос на оплату
Данный метод может использоваться для оплаты заранее созданного заказа
Пример запроса:
order_id
- id созданного заказа (e.g. ord_a1b2c3d4e5)
tool_type
- "GOOGLE_PAY"google_pay
- токен платежного средства, полученный от Google Pay API на сайте или в приложении
- HTTP
- cURL
- Python
- PHP
POST /v2/orders/{order_id}/payments/tool HTTP/1.1
Host: stage-api.ioka.kz
Content-Type: application/json
Content-Length: 547
{
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
curl --location --request POST 'https://stage-api.ioka.kz/v2/orders/{order_id}/payments/tool' \
--header 'Content-Type: application/json' \
--data-raw '{
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
'
import requests
import json
url = "https://stage-api.ioka.kz/v2/orders/{order_id}/payments/tool"
payload = json.dumps({
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
})
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
<?php
$client = new http\Client;
$request = new http\Client\Request;
$request->setRequestUrl('https://stage-api.ioka.kz/v2/orders/{order_id}/payments/tool');
$request->setRequestMethod('POST');
$body = new http\Message\Body;
$body->append('{
"tool_type": "GOOGLE_PAY",
"google_pay": {
"signature": "ME...",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MF\...\",\"keyExpiration\":\"16...\"}",
"signatures": ["ME..."]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"oT...\",\"tag\":\"sm...\"}"
}
}
');
$request->setBody($body);
$request->setOptions(array());
$request->setHeaders(array(
'Content-Type' => 'application/json'
));
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
Примеры ответов:
Важно
Для завершения оплаты картой с 3D Secure аутентификацией, Вам необходимо перенаправить плательщика по ссылке, указанной в объекте action.
После завершения аутентификации плательщик будет перенаправлен на страницу оплаты, а вы получите webhook, содержащий подробную информацию о транзакции.
- С 3DS
- Без 3DS
- 400
- 404
- 409
{
"id": "pay_test",
"order_id": "ord_test",
"status": "REQUIRES_ACTION",
"created_at": "2022-06-20T00:00:00.000000",
"approved_amount": 0,
"captured_amount": 0,
"refunded_amount": 0,
"processing_fee": 0,
"tds": true,
"payer": {
"pan_masked": "411111******1111",
"expiry_date": "12/24",
"holder": "holder",
"payment_system": null,
"emitter": null,
"email": null,
"phone": null,
"customer_id": null,
"card_id": null,
"iin": null
},
"acquirer": null,
"error": null,
"action": {
"url": "https://api.ioka.kz/v2/pay_test/check3ds"
}
}
{
"id": "pay_test",
"order_id": "ord_test",
"status": "CAPTURED",
"created_at": "2022-06-20T00:00:00.000000",
"approved_amount": 500,
"captured_amount": 500,
"refunded_amount": 0,
"processing_fee": 12.5,
"tds": false,
"payer": {
"pan_masked": "559999******9999",
"expiry_date": "12/24",
"holder": "holder",
"payment_system": null,
"emitter": null,
"email": null,
"phone": null,
"customer_id": null,
"card_id": null,
"iin": null
},
"acquirer": {
"name": "epay_v2",
"reference": "111111111111"
},
"error": null,
"action": null
}
{
"code": "InvalidPaymentToken",
"message": "Неверный платежный токен."
}
{
"code": "ShopConfigNotFound",
"message": "Конфигурации магазина не найдены."
}
{
"code": "OrderExists",
"message": "Заказ с указанным external_id уже существует."
}