Цей функціонал буде активовано після вашого запиту в груповому чаті.


note

Зміст

Зміст


note

Опис

Опис

Цей метод дозволить розмістити на вашому сайті або додатку окрему кнопку оплати Google Pay.


note

Демо

Демо


note

Чекліст інтеграції

Чекліст інтеграції

  • Привести сайт / додаток до відповідності вимогам.
  • Інтегрувати API Google Pay.
  • Вказати environment в режимі TEST.
  • Передати тех підтримці PSP Platon посилання для Callback.
  • Повідомити тех підтримці PSP Platon ваші IP адреси серверів сайта або про те, що буде використовуватить додаток (в цьому випадку обмеження по IP будуть зняті).
  • Провести запит по API Google Pay для отримання кнопки Google Pay.
  • Після авторизації користувача та вибору реальної картки в гаманці Google Pay вам повернуться зашифровані дані PaymentData.
  • З отриманих шифрованих даних PaymentData необхідно витянути token та відформатувати його відповідно до вимогам і прикладу вказаному в цій документації.
  • Провести запит відповідно API методу PSP Platon використовуючи відформатований токен Google Pay.
  • Отримати Response або Callback для редиректа платника на 3DS перевірку.
  • Відправити кліента на 3DS перевірку.
  • Отримати Response або Callback зі статусом оплати DECLINED від PSP Platon.
  • Відправити запит в Google Business Console для активації акаунта.
  • Повідомити тех підтримці PSP Platon про активацію акаунта.
  • Вказати environment в режимі PRODUCTION.
  • Провести запит з отриманням Response или Callback зі статусом оплати SUCCESS від PSP Platon.
  • Відобразити клиенту інформаію про успішну / невдалу оплату.

note

Вимоги

Вимоги


note

Обмеження

Обмеження

На даний момент Google Pay працює в таких браузерах:

  • Chrome

  • Safari

  • UC Browser

  • Firefox

  • Opera

  • Microsoft Edge

  • Android

Google забороняє використовувати Google Pay в WebView.


note

Google Business Console

Google Business Console

note

Google Pay API

Google Pay API

Для сайта:

Для 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.

{
  "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 нижче:

{
  "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 у відповідному форматі вказаному нижче:

'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\\"}"}',


note

API параметри

API параметри

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.00

Невалідні варіанти

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.


note

Приклад запиту

Приклад запиту

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);

Postman Collection


note

Тестовий режим

Тестовий режим

Переведіть environment в режим 'TEST’.

Використайте реальну картку підв'язану в Google Pay для оплати.

При успішному тесті ви отримаєте відповідь про невдалу транзакцію (особливість тествого режиму) 'decline_reason' => 'Declined by processing'

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

Параметр environment в режимі 'TEST’ залишити до вказівок з боку тех підтримки PSP Platon.


note

Боєвий режим

Боєвий режим

Пройдіть контрольний список інтеграції:

Після додавання кнопки на ваш сайт / мобільний додаток необхідно пройти контрольний список інтеграції для перевірки коректності роботи 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

  1. Встановіть environment: ‘PRODUCTION' замість 'TEST’

  2. Вкажіть значення 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


note

Перевірка оплат

Перевірка оплат


note

Callback & Response

Callback & Response


Синхроний режим:

Стандартний режим роботи. Передавати async = N не потрібно.


Асинхронний режим:

Цей режим активується при передачі async = Y.




note

Помилки запитів

Помилки запитів