Цей функціонал буде активовано після вашого запиту в груповому чаті.
Цей метод дозволить розмістити на вашому сайті або додатку окрему кнопку оплати 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']='[email protected] '; $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
.
Список помилок та варіантів рішень