GooglePay
Зручний спосіб оплати через Google
Google Pay™ – це простий та швидкий спосіб оплати покупок у магазинах та мільйонах онлайн-сервісів. Платити через Google Pay не тільки зручно, але й безпечно: дані банківських карток надійно захищені. Крім того, керувати обліковим записом можна і на сайті сервісу, і в самому додатку.
Підключення Google Pay через платіжну сторінку Concord Pay
Для підключення необхідно:
- Зареєструватися у системі Concord Pay та підписати договір з банком Concord.
- Погодитись з умовами надання послуг Google Pay.
Опис
При такому способі підключення немає необхідності проводити будь-яку додаткову інтеграцію. Кнопка Google Pay з'явиться на сторінці оплати Concord Pay.
Приклад форми оплати з увімкненим методом оплати через Google Pay.
Пряме підключення через Google Pay API
Опис
Цей спосіб найзручніший з погляду юзабіліті для клієнта. Він дозволяє підключитися безпосередньо, без переходу на платіжну форму Concord Pay і приймати платежі прямо у себе на сайті або в додатку.
Як підключиться?
Виконати вимоги щодо брендування (для мобільних додатків або для веб-сайтів).
Перевірити відповідність контрольному списку для інтеграції.
Пройти перевірку - відправити збірку мобільного додатку або посилання на сайт зі сторінкою оплати.
Як це працює?
- Ви ініціюєте запит зі свого сайту або програми на отримання зашифрованих платіжних даних.
- Google Pay повертає зашифровані платіжні дані після автентифікації покупця.
- Ви надсилаєте зашифровані дані на сервер.
- Ваш сервер надсилає інформацію про платіж та зашифровані платіжні дані на сервер Concord Pay.
- Ми у відповідь надсилаємо статус платежу.
- Ви повідомляєте покупця про статус платежу.
Як інтегрувати метод Google Pay?
Для інтеграції використовуйте API Google Pay.
Параметри для налаштування
- allowPaymentMethods : CARD
- tokenizationSpecification = {"type": "PAYMENT_GATEWAY"}
- allowedCardNetworks = ['MASTERCARD', 'VISA'];
- allowedCardAuthMethods = ['PAN_ONLY', 'CRYPTOGRAM_3DS'];
- gateway = concordpay
- GatewayMerchantId - унікальний ідентифікатор мерчанта. Видається кожному партнеру під час підключення до системи Concord Pay.
У разі підтвердження платником оплати колбек поверне у функцію processPayment дані, які необхідно буде надіслати в запиті платіжного методу GooglePayPurchase, для проведення оплати.
Приклад:
{
"apiVersionMinor":0,
"apiVersion":2,
"paymentMethodData":{
"description":"Mastercard •••• 6812",
"tokenizationData":{
"type":"PAYMENT_GATEWAY",
"token":{"signature":"MEYCIQC+IHxUu9Wwra2Vu6tBa2wJ1VphLGYtNVLLwIhAOkdbNje//eLrXVc+n6LOlc4PqxWOUcqwPCMT3pWtNrmki/CNA1ur","intermediateSigningKey":{"signedKey":"{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzyGFjQuzGSVij0DAQcDQgAEwhRrvGB0kZ1248MEJAPwX0YfrQInhyyRM7nZG3QC9NMvXR9Zd6uVcVzAz+6K/+NEGIWbX8zbk6A\\u003d\\u003d\",\"keyExpiration\":\"1571328568000\"}","signatures":["MEUCIQCR6vhCBHeFPvDJlCIo4/tLd7W8CIGrZDJlCI48IEiyHB8qmlCBHeFPvQIgLZJIe4cZv6pYtYYa56QCI/vvg1GqXTP3bTBjO49r5mI\u003d"]},"protocolVersion":"ECv2","signedMessage":"{\"encryptedMessage\":\"O4wTPip6RruraT6vO9MS+9stjkU/kT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vUBp9RPDN9TH4tj4w578sWFKfTi6FsSrZB27SGWcU0k85CGUMmd5PaGmQlHFqHc0HrDZmjM1yG82rFB/p31ZyUleN5nihzjOZif/BKXwg3XA2oLXqBSSWcAdfZwXxCEOqvAQE+kpTC7qVO4wTPip6RruraT6vO9M9FtPJXP9bPxzMVk/ozEZSfhSzVTT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vUBp9RPDN9TH4tj4w578sWFKfTi6FsSrZB27SGWcU0k85CGUMmd5PaGmQlHFqHc0HrDZmjM1yG82rFB/p31ZyUleN5nihzjOZif/BKXJXP9bPxzMVk/ozEZSfhSzVTT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vwg3XA2oLXqBSSWcAdfZwXxCEOqvAQE+kpTC7qVO4wTPip6RruraT6vO9MS+9stjkU/kT5EibKB3O1bbxyybKcGQ5vxBOtNOBKKd/NuqNmN2eEK3UbSKb1M3gv45gT9cCeEvlzO7Wg0N100vUBp9RPDN9TH4tj4w578sWFKfTi6FsSrZB27SGWcU0k85CGUMmd5PaGmQlHFqHc0HrDZmjM1yG82rFB/p31ZyUleN5nihzjOZif/BKXwg3XA2oLXqBSSWcAdfZwXxCEOqvAQE+kpTC7qVO4wTPip6RruraT6vO9M9FtIf0kcqzYSAN7pl1SUA5jC9rHrqucPoh0/FSspup78SWBt8TnmVKC9O3sQhIZ3SMoGOG4mdjtIrgCwWH2cbrxUH0dHAqOe5ANGOY/mII4nTEp7xaKu41hK/kFE15zVyqgEaKHO9buo94mRBY5yqffF3bKg5mAMPzjDhyHSujqWKAs9C5fBzMEuEr2z7A23kfLqBceH5uS9LJMiZ/yVKCwfpY9u2XyCjKdp7I\\u003d\",\"ephemeralPublicKey\":\"BAMDAtfgcPNuzItrwGLigGj3rtxmyHhZLwx1B4RJZ2oo11jpFf3SA6a3utryCMmlCEcqLfLn6WDH2ArrNBGn+Ew\\u003d\",\"tag\":\"T/qhZ/XY5/3Fe4QBKazwVeiKfm6NqS6EXhRlp8NeWrA\\u003d\"}"}
},
"type":"CARD",
"info":{
"cardNetwork":"MASTERCARD",
"cardDetails":"6812"
}
}
}
Платіжний метод GooglePayPurchase
Production url: https://pay.concord.ua/api/
POST multipart/form-data
Параметри запиту:
Параметр | Опис | Обов'язковий | Тип |
---|---|---|---|
Operation | Тип операції. Значення: GooglePayPurchase | Так | String |
merchant_id | Ідентифікатор мерчанта | Так | String |
amount | Сума платежу у форматі 1.00 | Так | Float |
order_id | Унікальний номер операції на стороні мерчанта. Якщо операція дублюється – мерчант отримує помилку. | Так | String |
currency_iso | Валюта платежу UAH | Так | String |
description | Опис платежу | Так | String |
callback_url | URL, на який прийде інформація про результат виконання платежу | Так | String |
gpApiVersionMinor | apiVersionMinor з processPayment(paymentData) | Так | Integer |
gpApiVersion | apiVersion з processPayment(paymentData) | Так | Integer |
gpPMDescription | paymentMethodData.description з processPayment(paymentData) | Так | String |
gpPMType | paymentMethodData.type з processPayment(paymentData) | Так | String |
gpPMICardNetwork | paymentMethodData.info. cardNetwork з processPayment(paymentData) | Так | String |
gpPMICardDetails | paymentMethodData.info. cardDetails з processPayment(paymentData) | Так | String |
gpTokenType | paymentMethodData. tokenizationData.type з processPayment(paymentData) | Так | String |
gpToken | paymentMethodData.tokenizationData.token з processPayment(paymentData) | Так | String |
secure_type | Тип проходження безпеки транзакції. Перелік можливих значень можна переглянути у Довідник. Значення параметра secure_type | Ні | Integer |
signature | З метою підтвердження валідності даних має бути згенерований та переданий у запиті HMAC_MD5 контрольний підпис з використанням PrivateKey торговця. | Так | String |
Рядок, що підлягає HMAC_MD5, генерується шляхом конкатенації параметрів merchant_id, order_id, amount, currency_iso, description розділених “;” (крапка з комою) у кодуванні UTF-8. | |||
Порядок параметрів під час конкатенації важливий! |
Для підтримки можливості виконання авторизації за протоколом 3DS2, в add_params необхідно додатково передати такі параметри:
Параметр | Тип | Обязательный | Значение |
---|---|---|---|
AReqDetails.notificationUrl | String | Нет | URL-адреса, на яку повернеться POST-повідомлення CRes від ACS, після перевірки власника картки по протоколу 3DS2 по схемі Challenge-Flow |
У відповідь повертається JSON з результатами запиту.
Якщо запит виконано неуспішно, повертається відповідь з параметрами:
Параметр | Тип | Описание |
---|---|---|
code | Integer | Код відповіді, см. Довідник. Статуси платежу |
message | String | Повідомлення з результатом запиту |
Приклад відповіді
{
"code":-4,
"message":"Неверная подпись"
}
Якщо 3DS виконувати не потрібно, повертається результат операції оплати з параметрами:
Параметр | Тип | Описание |
---|---|---|
reasonCode | Integer | Код результату запиту 0 - успішна операція 12 - помилка операції |
reason | String/Integer | Повідомлення з результатом запиту Зверніть увагу, що message може бути як строкою так і числом! |
transactionStatus | String | Статус операції (див. Статус Довідник. Статуси платежу) |
Приклад відповіді успіху операції оплати
{
"reasonCode": 0,
"reason": "OK",
"transactionStatus": "APPROVED"
}
Приклад відповіді відмови операції оплати
{
"reasonCode": 12,
"reason": 55,
"transactionStatus": "DECLINED"
}
Якщо потрібно виконати 3DS, повертається відповідь з параметрами:
Параметр | Описание | Обязательный | Тип |
---|---|---|---|
code | Код відповіді (див. Довідник. Коди відповідей) | Да | Integer |
status | Якщо значення 3ds - необхідно виконати 3DS | Да | String |
d3AcsUrl | acs url для перевірки 3DS | Нет | String |
d3Md | Унікальний ідентифікатор передачі на хост 3DS | Нет | String |
d3Pareq | PaReq повідомлення передачі на хост 3DS | Нет | String |
d3Creq | d3Creq повідомлення передачі на хост 3DS | Нет | String |
transaction_key | Ключ транзакції для підтвердження 3DS | Да | String |
Приклад відповіді
{
"code": 2002,
"status": "3ds",
"d3AcsUrl": "https://bank.com/acs/94",
"d3Creq": "eyJhY3NUcmFuc0lEIjoiMjczNzlhNWYtMGVlMi00MzcxLWEwMDYtNTExOTdlMzVhMjI3IiwidGhyZWVEU1NlcnZlclRyYW5zSUQiOiJmMjIyY2VlZi1kMWJjLTRjZjEtYWYxMy01MGM5ZjExODJhN2YiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDMiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0",
"d3Md": "",
"d3Pareq": "",
"transaction_key": "b701ff08d09206ef89cc8178aee0e8ef3a765d7042368b545cf55acf8b5707e164c7adf64d66a"
}
Перевірка 3DS
Якщо у відповіді на запит GooglePayPurchase в полі status повернеться значення 3ds
, необхідно виконати перевірку 3D Secure.
Якщо у відповіді code
прийшло значення 2001
- необхідно виконати перевірку по протоколу 3DS1
Якщо у відповіді code
прийшло значення 2002
- необхідно виконати перевірку по протоколу 3DS2
Перевірка по протоколу 3DS1
Необхідно передати d3AcsUr
методом POST параметри d3Pareq
та d3Md
в наступній формі:
<form name="MPIform" action='${d3AcsUrl}' method="POST">
<input type="hidden" name="PaReq" value='${d3Pareq}'>
<input type="hidden" name="MD" value='${d3Md}'>
<input type="hidden" name="TermUrl" value='${TempUrl}'>
</form>
TempUrl
- url переданий мерчантом, на який ємітент поверне відповідь після аутентифікації клієнта.
Перевірка по протоколу 3DS2
Необхідно методом POST відправити форму с параметром d3Creq
на d3AcsUrl
.
<form name="MPIform" action='${d3AcsUrl}' method="POST">
<input type="hidden" name="creq" value='${d3Creq}'>
</form>
Для завершення процесу оплати необхідно виконати підтвердження 3DS верифікації
Підтвердження 3DS верифікації
Детальний опис див. Підтвердження 3DS верифікації
Корисні посилання
- Демо
- API Google Pay
- При використанні Google Pay необхідно дотримання наступних умов від Google.