Цей функціонал буде активовано після вашого запиту в груповому чаті.
Цей метод дозволить розмістити на вашому сайті або додатку окрему кнопку оплати Google Pay.
Браузери
На даний момент Google Pay працює в таких браузерах:
Chrome
Safari
UC Browser
Firefox
Opera
Microsoft Edge
Android
WebView
Google забороняє використовувати Google Pay в WebView.
Активація Google Pay в Business Console
Інструкція по активація Google Pay в Business Console Для сайта:
Для Android додатку:
Інтегруйте Google Pay API слідуючи документації вище для отримання PaymentData .
Параметри:
allowPaymentMethods : CARD
tokenizationSpecification = { "type": "PAYMENT_GATEWAY"}
allowedCardNetworks = ['MASTERCARD', 'VISA'];
allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];
gateway = platon
gatewayMerchantId = CLIENT_KEY (API ключ PSP Platon)
Приклад конфіг файла
{
"apiVersion": 2,
"apiVersionMinor": 0,
"allowedPaymentMethods": [
{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["VISA", "MASTERCARD"]
},
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "platon", //фіксований ідентифікатор PSP Platon
"gatewayMerchantId": "RJ9AE5Y7GX" //API ключ PSP Platon
}
}
}
],
"merchantInfo": {
"merchantId": "00986993593073708917", //ваші дані з Google Business Console
"merchantName": "Name" //ваші дані з Google Business Console
},
"transactionInfo": {
"totalPriceStatus": "FINAL",
"totalPriceLabel": "Total",
"totalPrice": "5.00",
"currencyCode": "UAH",
"countryCode": "UA"
}
}
Якщо все зробити правильно - на вашому сайті / додатку відобразиться кнопка Google Pay та після вибору картки вам повернеться набір даних з PaymentData.
Приклад набору даних PaymentData, які повертаються від Google Pay
{
"apiVersionMinor": 0,
"apiVersion": 2,
"paymentMethodData": {
"description": "Mastercard •••• 5179",
"tokenizationData": {
"type": "PAYMENT_GATEWAY",
"token": {
"signature": "MEYCIQC+IHxUu9Wwra2Vu6tBa2wJPCMT3pWtN1VphLGYtNVLLwIhAOkdbNje//eLrXVc+n6LOlc4PqxWOUcqwrmki/CNA1ur",
"intermediateSigningKey": {
"signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhRrvGB0kZ1248MEJAPwX0YfrQInhyyRM7nyGFjQuzGSViZG3QC9NMvXR9Zd6uVcVzAz+6K/+NEGIWbX8zbk6A\\u003d\\u003d\",\"keyExpiration\":\"1571208568000\"}",
"signatures": [
"MEUCIQCR6vIEiyHB8qmlho4/tLd7W8CIGrZDJlCI48CBHeFPvQIgLZJIe4cZv6pYtYYa56QCI/vvg1GqXTP3bTBjO49r5mI="
]
},
"protocolVersion": "ECv2",
"signedMessage": "{\"encryptedMessage\":\"k85CGUMmd5PaGmQlHFqHc0HrDZmjM1yG82rFB/p31ZyUleN5nihzjOZif/BKXwg3XA2oLXqBSSWcAdfZwXxCEOqvAQE+kpTC7qVO4wTPip6RruraT6vO9M9FtIf0kcqzYSAN7pl1SUA5jC9rHrqucPoh0/FSspup78SWBt8TnmVKC9O3sQhIZ3SMoGOG4mdjtIrgCwWH2cbrxUH0dHAqOe5ANGOY/mII4nTEp7xaKu41hK/kFE15zVyqgPJXP9bPxzMVk/ozEZSfhSzVTS+9stjkU/kT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vUBp9RPDN9TH4tj4w578sWFKfTi6FsSrZB27SGWcU0EaKHO9buo94mRBY5yqffF3bKg5mAMPzjDhyHSujqWKAs9C5fBzMEuEr2z7A23kfLqBceH5uS9LJMiZ/yVKCwfpY9u2XyCjKdp7I\\u003d\",\"ephemeralPublicKey\":\"BAMDAtfgcPNuzItrwGLigGj3rtxmyHhZLwx1B4RJZ2oo11jpFf3SA6a3utryCMmlCEcqLfLn6WDH2ArrNBGn+Ew\\u003d\",\"tag\":\"T/qhZ/XY5/3Fe4QBKafm6NqS6EzwVeiKXhRlp8NeWrA\\u003d\"}"
}
},
"type": "CARD",
"info": {
"cardNetwork": "MASTERCARD",
"cardDetails": "5179"
}
}
}
Ознайомтесь з прикладом token
з PaymentData нижче:
Приклад token з набору даних PaymentData, які повертаються від Google Pay
{
"signature": "MEYCIQC+IHxUu9Wwra2Vu6tBa2wJPCMT3pWtN1VphLGYtNVLLwIhAOkdbNje//eLrXVc+n6LOlc4PqxWOUcqwrmki/CNA1ur",
"intermediateSigningKey":
{
"signedKey": "{
\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwhRrvGB0kZ1248MEJAPwX0YfrQInhyyRM7nyGFjQuzGSViZG3QC9NMvXR9Zd6uVcVzAz+6K/+NEGIWbX8zbk6A\\u003d\\u003d\",
\"keyExpiration\":\"1571208568000\"
}",
"signatures": [
"MEUCIQCR6vIEiyHB8qmlho4/tLd7W8CIGrZDJlCI48CBHeFPvQIgLZJIe4cZv6pYtYYa56QCI/vvg1GqXTP3bTBjO49r5mI="
]
},
"protocolVersion": "ECv2",
"signedMessage": "{
\"encryptedMessage\":\"k85CGUMmd5PaGmQlHFqHc0HrDZmjM1yG82rFB/p31ZyUleN5nihzjOZif/BKXwg3XA2oLXqBSSWcAdfZwXxCEOqvAQE+kpTC7qVO4wTPip6RruraT6vO9M9FtIf0kcqzYSAN7pl1SUA5jC9rHrqucPoh0/FSspup78SWBt8TnmVKC9O3sQhIZ3SMoGOG4mdjtIrgCwWH2cbrxUH0dHAqOe5ANGOY/mII4nTEp7xaKu41hK/kFE15zVyqgPJXP9bPxzMVk/ozEZSfhSzVTS+9stjkU/kT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vUBp9RPDN9TH4tj4w578sWFKfTi6FsSrZB27SGWcU0EaKHO9buo94mRBY5yqffF3bKg5mAMPzjDhyHSujqWKAs9C5fBzMEuEr2z7A23kfLqBceH5uS9LJMiZ/yVKCwfpY9u2XyCjKdp7I\\u003d\",
\"ephemeralPublicKey\":\"BAMDAtfgcPNuzItrwGLigGj3rtxmyHhZLwx1B4RJZ2oo11jpFf3SA6a3utryCMmlCEcqLfLn6WDH2ArrNBGn+Ew\\u003d\",
\"tag\":\"T/qhZ/XY5/3Fe4QBKafm6NqS6EzwVeiKXhRlp8NeWrA\\u003d\"
}"
}
}
Налаштуйте відправку отриманого значення token
в параметрі payment_token
у відповідному форматі вказаному нижче:
Приклад формату для передачі токена по API методу PSP Platon
'payment_token' => '{"signature": "MEYCIQC+IHxUu9Wwra2Vu6tBa2wJPCMT3pWtN1VphLGYtNVLLwIhAOkdbNje//eLrXVc+n6LOlc4PqxWOUcqwrmki/CNA1ur","intermediateSigningKey":{"signedKey":"{\\"keyValue\\":\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAENGvh+0txlndYyWnenquCGqEXnG77IWDPuk6HiMvg6XXwBWGDItHJuXadYnnEtX5g20xo8DBP5LSWORqRqjI2vA\\\\u003d\\\\u003d\\",\\"keyExpiration\\":\\"1683710430000\\"}","signatures":["MEYCIQDovFtcqE7q4ahpEXBbKzbnxlCzn3lF+oeFKn4UbWT25QIhAN6KdqmVyobBKM9V4j2GPmDKs15nzo/r/ZrKd8+7d0SL"]},"protocolVersion":"ECv2","signedMessage":"{\\"encryptedMessage\\":\\"8AYy2FFX0mm+6w8gJZUr57PjQ5txXNaosVFUPHuo06ZhykABc4do4Lvrc5RxdSrGJNSqq6a9KGEnP2tLHdjecVxTn5oL2sSerxTmVLa99TqBW65cGBLV0bIX6sdNht2XBuWn7jFIzSxMO/ZmcdoNYc6w/MI1CFLNfINTkTNjVxszATDBmNfdMi+s2V3NpjM5xmEIZs3FFWZ401/1XeoDHnJfbjMO7GY3GHrMKEsOOQsnDGUBnvB4q9pf/0rsQ8X4VlHB2UMfUAwErgyLOb6gpGtVKESh59tyewKn14fkfSYsETUiVlUsu62PoP+gY141AFYexgAB8K7ygTX/hxwau2DEd+vb1Y9rR9cYXBZDgYlhBWoR1tCeZcMLjDKk8A0vUEzlKbI7fgsKLIa4GvqmPx79bTSrJJ2dZo1fq14ShI9fFk2Jitu6aoHMKwGcyKnC+UOGox/ArlojtHRCdKzu65vjn0M4yMZDmuww9A\\\\u003d\\\\u003d\\",\\"ephemeralPublicKey\\":\\"BMPEPyCUSrSIlz2lZHh9nmbjtobXwoTnMq/PFDDItLpHDDd0PsPoy1VP1XQSpqFUEvxiXXxL2BQ8FhUCzpR6yDQ\\\\u003d\\",\\"tag\\":\\"LG5PWsVF7lDLfEI3pwEi47OHKRGIz/f2FasGq64JlK8\\\\u003d\\"}"}',
HTTP METHOD: POST
API ENDPOINT: https://secure.platononline.com/post/
action
Обов'язковий
GOOGLEPAY
Код платіжного метода
client_key
Обов'язковий
String
API ключ мерчанта
Ключ надається на пошту мерчанта
order_id
Обов'язковий
String
ID оплати в системі мерчанта
Max 255 символи
order_amount
Обов'язковий
Number
Сума оплати
Невалідні варіанти
1000 1000.0 1,000.0 1,000.00
order_currency
Обов'язковий
UAH
Валюта
Оплата можлива лише в національній валюті гривні
order_description
Обов'язковий
String
Опис
Для кириличних символів необхідно використовувати формат UTF-8
Max 255 символів
payment_token
Обов'язковий
String
Токен отриманий від Google
Токен необхідно відформатувати відповідно до прикладу вказаного вище.
payer_ip
Обов'язковий
Number
IP-адреса платника
В форматі "ХХХ.ХХХ.ХХХ.ХХХ"
IPv6 на даний момент не підтримується та при передачі поверне помилку
payer_email
Обов'язковий
String
E-mail платника
Обов'язково валідна пошта.
Max 256 символів
payer_phone
Обов'язковий
Number
Номер телефона платника
Обов'язковий формат телефону 380…
term_url_3ds
Обов'язковий
String
Посилання куди буде відправлено платника після спроби оплати
Max 255 символів
hash
Обов'язковий
String
Контрольний підпис
md5(
strtoupper(
strrev($payer_email).
$CLIENT_PASS.
strrev($payment_token)
)
)
payer_first_name
не обов'язковий
String
Ім'я платника
Max 32 символи без пробілів
payer_last_name
не обов'язковий
String
Прізвище платника
Max 32 символи без пробілів
payer_middle_name
не обов'язковий
String
По-батькові платника
Max 32 символи без пробілів
payer_birth_date
не обов'язковий
String
Дата народження платника
В форматі “YYYY-MM-DD”
payer_address
не обов'язковий
String
Адреса платника
Max 256 символів Вкажіть NA
, якщо немає даних
payer_country
не обов'язковий
String
Країна платника
Стандарт ISO 3166-1 alpha-2 В форматі "ХХ" 2 символа Вкажіть NA
, якщо немає даних
payer_state
не обов'язковий
String
Штат платника
Стандарт ISO 3166-2 В форматі "ХХ" 2 символа Вкажіть NA
, якщо немає даних
payer_city
не обов'язковий
String
Місто платника
Max 32 символи Вкажіть NA
, якщо немає даних
payer_zip
не обов'язковий
String
Поштовий індекс платника
Max 32 символи Вкажіть NA
, якщо немає даних
ext1
, ext2
, ext3
, ext4
, ext5
, ext6
, ext7
, ext8
, ext9
, ext10
не обов'язковий
String
10 додаткових полів
Max 1024 символи в кожному ext полі
channel_id
не обов'язковий
String
Додатковий платіжний канал
Дозволяє перенаправляти платежі на інший банківський термінал
async
не обов'язковий
Y
N
Включити асинхронний режим
В асинхронному режимі обов'язкове використання колбеків.
Стандартне значення N
.
auth
не обов'язковий
Y
N
HOLD коштів на картці платника
Стандартне значення N
.
req_token
не обов'язковий
Y
N
Для отримання card_token
Стандартне значення N
.
Приклад запиту на PHP
Content-Type: form-data
або x-www-form-urlencoded
<?php
$client_pass='***';
$data['action']='GOOGLEPAY';
$data['client_key']='***';
$data['order_id']='Test_006';
$data['order_amount']='1.00';
$data['order_currency']='UAH';
$data['order_description']='test';
$data['payer_ip']='11.195.75.204';
$data['payer_phone']='380962111111';
$data['payment_token']= '{"signature": "MEYCIQC+IHxUu9Wwra2Vu6tBa2wJPCMT3pWtN1VphLGYtNVLLwIhAOkdbNje//eLrXVc+n6LOlc4PqxWOUcqwrmki/CNA1ur","intermediateSigningKey":{"signedKey":"{\\\\"keyValue\\\\":\\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE73Pk51MSGFgZ3Ul2K7rPNXNZDY886ybbDotCRXfNqaqyu3j4UAxu3rTPn6u9s2h+6eQfLWtQzZ+2IdA32zYUIw\\\\\\\\u003d\\\\\\\\u003d\\\\",\\\\"keyExpiration\\\\":\\\\"1683886728000\\\\"}","signatures":["MEYCIQChYMsPP6iE0EBWjN4yCaYutxJsXJwbQ241w21YZ1iI6AIhAI5u97+CSg04TTcZwGolxbcjs3I8J4srgIuXdbc7wKET"]},"protocolVersion":"ECv2","signedMessage":"{\\\\"encryptedMessage\\\\":\\\\"P/eXUyfiFgOFkvyBecknRUBbZEHZfLp59RViFryhOjz6Fx9AJ4VpsdstPI9/HFYeLiWMXw8kCXeoiJ0UQiUYmd/MklZt4LH6LySi3kLRxRp0Dbmh2OLpgfGBtbKzUOhlDAD4025OVfsG8Hwlrsvc3yCdFYiA3+w6rc12uAu9EBlAQv2nTJj6FHCIrOrwJ0FYjdk2hqXNKN/4CSBhxHoqITlYh8wX5EIqpHbnS73zp4aOvPgV8iPicnOxD1Cbr7OPZRqB2hUmWNeLv8ZSyQXLsVXLb5cQ5ZFLTcEdRWQrvwvZ43Fz5RHrBZGcVZmvCagLLh9euII4aVMVAfHepjmcWF1kOJdpvmygZnTfGx1MweSn8LEl8NM9mQh5eUy0yP/5R4/Egv8btC7uKxwmBuxuVoNd0DCeiShaUzx+AVVhdIHUytRIqllFFkbvf491ljpa6cWOQReuh3pYOCQ/cWSRNWXR2WiVtSOo0q47iH1AYGCsTyxpKq1Jcoq7ws1FJQEKy5ofZAcktdsmdDFtCnA6V/Pdzl7XWMIWbRrVXS2U\\\\",\\\\"ephemeralPublicKey\\\\":\\\\"BLD5aoQeQ1M51wRDphfxHNBuDa1i0hcbO+9rIeX8kfWGfM7Bm0Uzu1V6/jRWGttY6lq6c8Gqi4a4DvU1oE7zbw8\\\\\\\\u003d\\\\",\\\\"tag\\\\":\\\\"pP9Fo/JfuRGJw0gR7NbrqcRNx7TDvmnKj7Gq42FJmDA\\\\\\\\u003d\\\\"}"}';
$data['payer_email']='sale@gmail.com';
$data['term_url_3ds']='http://google.com';
$data['hash'] = md5(
strtoupper(
strrev($data['payer_email']).
$client_pass.
strrev($data['payment_token'])
)
);
$url = 'https://secure.platononline.com/post/';
$crq = curl_init();
curl_setopt($crq, CURLOPT_URL, $url);
curl_setopt($crq, CURLOPT_HEADER, 0);
curl_setopt($crq, CURLOPT_POST, 1);
curl_setopt($crq, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crq, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($crq, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($crq, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($crq);
if (curl_errno($crq)) {
echo 'ERROR: '.curl_error($crq);
}else{
echo $result;
}
curl_close($crq);
Переведіть environment в режим 'TEST’.
Використайте реальну картку підв'язану в Google Pay для оплати.
При успішному тесті ви отримаєте відповідь про невдалу транзакцію (особливість тестового режиму) 'decline_reason' => 'Declined by processing'
Повідомте тех підтримку про успішний тест і тільки після цього можете переходити до активації в Google бізнес акаунті.
Параметр environment в режимі 'TEST’ залишити до вказівок з боку тех підтримки PSP Platon.
Пройдіть контрольний список інтеграції: Після додавання кнопки на ваш сайт / мобільний додаток необхідно пройти контрольний список інтеграції для перевірки коректності роботи Google Pay API:
Для сайтів: https://developers.google.com/pay/api/web/guides/test-and-deploy/integration-checklist
Для мобільних додатків: https://developers.google.com/pay/api/android/guides/test-and-deploy/integration-checklist
Запросіть доступ до робочої версії Google Pay API: Для можливості приймати реальні оплати необхідно запросити доступ до робочої версії:
https://developers.google.com/pay/api/android/guides/test-and-deploy/request-prod-access
Отримайте доступ на Production в Google Pay: https://developers.google.com/pay/api/android/guides
Для цього необхідно створити акаунт в https://pay.google.com/business/console/ (використовуйте загальний корпоративний акаунт)
Заповніть інформацію про компанію.
В інтеграції вибрати Сайт, заповнити домен (поки домен тестового сайту), вказати тип PaymentGateway та вкласти 5 скринів процесу замовлення та оплати.
Відразу можете подавати заявку і для отримання доступу з доменом.
Зверніть увагу, що в прод режимі буде працювали лише проапрувлений домен.
https://developers.google.com/pay/api/android/guides/test-and-deploy/request-prod-access
Отримання доступу займає 2-3 дні. Якщо у співробітників Google будуть зауваження - вони відправлять вам лист під яким ви реєструвались.
Після цього вам треба переключитись на Production в інтеграції з Google Pay:
Для цього: https://developers.google.com/pay/api/web/guides/test-and-deploy/deploy-production-environment
Встановіть environment: ‘PRODUCTION' замість 'TEST’
Вкажіть значення merchantId з бізнес акаунта Google Pay (правий верхній куток)
І повідомте по готовності про переключення налаштувань з вашого боку.
Додатково для мобільного додатку на Android: Рекомендуємо подавати заявку в бізнес консоль з того ж акаунта під яким ви зареєстровані в Google Play і з якого викладали додаток.
Якщо подавати заявку з іншого акаунта - додатково треба буде зв'язати акаунти. Інструкція як зв'язати акаунти https://support.google.com/googleplay/android-developer/answer/2528691
Для інтеграції з мобільним додатком необхідно буде підписати додаток релізними ключами коли отримаєте доступ в прод і будете переключатися https://developers.google.com/pay/api/android/guides/test-and-deploy/deploy-your-application
Список методів перевірки статусів оплат Особливості роботи з Callback Синхроний режим: Стандартний режим роботи. Передавати async = N
не потрібно.
Асинхронний режим: Цей режим активується при передачі async = Y
.
Список помилок та варіантів рішень