# Нативна кнопка Google Pay

### **Документація** <a href="#dokumentaciya" id="dokumentaciya"></a>

* <https://monobank.ua/api-docs/acquiring/dodatkova-funktsionalnist/tokenizatsiia/post--api--merchant--wallet--payment>
* <https://developers.google.com/pay/api/web/overview>

### 1. Отримання даних для інтеграції <a href="#id-1.-otrimannya-danikh-dlya-integraciyi" id="id-1.-otrimannya-danikh-dlya-integraciyi"></a>

Зареєструйте мерчанта в Monobank

Щоб отримати доступ до прийому платежів через Google Pay, вам потрібно:

* **`gatewayMerchantId`** – це ваш ідентифікатор продавця шлюзу у [Google Pay](https://pay.google.com/business/console/profiles) (див. [Налаштування акаунту мерчанта](https://deniss-organization-15.gitbook.io/monobank)). У тестовому середовищі значення має бути «googletest»
* **`gateway`** - monobank

### 2. Підключення Google Pay API на сайт <a href="#id-2.-pidklyuchennya-google-pay-api-na-sait" id="id-2.-pidklyuchennya-google-pay-api-na-sait"></a>

Додайте Google Pay SDK у `<head>` сторінки:

Copy

```
<script async src="https://pay.google.com/gp/p/js/pay.js"></script>
```

### **3.** Налаштування Google Pay API <a href="#id-3.-nalashtuvannya-google-pay-api" id="id-3.-nalashtuvannya-google-pay-api"></a>

Створіть об'єкт **`paymentDataRequest`**, використовуючи `gateway: "monobank"` та ваш `gatewayMerchantId`:

Copy

```
const paymentsClient = new google.payments.api.PaymentsClient({ environment: "PRODUCTION" });

const paymentDataRequest = {
  apiVersion: 2,
  apiVersionMinor: 0,
  allowedPaymentMethods: [{
    type: "CARD",
    parameters: {
      allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"],
      allowedCardNetworks: ["VISA", "MASTERCARD"]
    },
    tokenizationSpecification: {
      type: "PAYMENT_GATEWAY",
      parameters: {
        gateway: "monobank",
        gatewayMerchantId: "gatewayMerchantId" // Google Merchant Id
      }
    }
  }],
  merchantInfo: {
    merchantName: "Назва вашої компанії"
  },
  transactionInfo: {
    totalPriceStatus: "FINAL",
    totalPrice: "100.00", // Сума платежу
    currencyCode: "UAH"
  }
};
```

### 4. Додавання кнопки Google Pay <a href="#id-4.-dodavannya-knopki-google-pay" id="id-4.-dodavannya-knopki-google-pay"></a>

Додайте кнопку на сайт:

Copy

```
const button = paymentsClient.createButton({
  onClick: onGooglePaymentButtonClicked
});
document.getElementById('container').appendChild(button);
```

Помістіть кнопку в HTML-код:

Copy

```
<div id="container"></div>
```

### 5. Обробка платежу <a href="#id-5.-obrobka-platezhu" id="id-5.-obrobka-platezhu"></a>

При натисканні на кнопку Google Pay клієнт здійснює оплату, а ви отримуєте **зашифрований токен платежу** (`paymentData`).

Copy

```
async function onGooglePaymentButtonClicked() {
  try {
    const paymentData = await paymentsClient.loadPaymentData(paymentDataRequest);
    console.log("Отримані платіжні дані:", paymentData);

    fetch("https://.........", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({ paymentData })
    })
    .then(response => response.json())
    .then(data => console.log("Результат платежу:", data))
    .catch(error => console.error("Помилка платежу:", error));

  } catch (error) {
    console.error("Помилка Google Pay:", error);
  }
}
```

### 6. Відправка платежу в Monobank <a href="#id-6.-vidpravka-platezhu-v-monobank" id="id-6.-vidpravka-platezhu-v-monobank"></a>

Вам потрібно **надіслати отриманий токен платежу на сервер** та передати його в API Monobank.

🔹 **URL API Monobank для обробки платежу:** `POST https://api.monobank.ua/api/merchant/wallet/payment`

🔹 **Приклад запиту:**

Copy

```
{
  "gToken": ""{\"signature\":\"MEUCI******\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwE******\\\",\\\"keyExpiration\\\":\\\"17425******\\\"}\",\"signatures\":[\"MEYCIQ******\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"Nj6PnH******\\\",\\\"ephemeralPublicKey\\\":\\\"BDIMkgT******\\\",\\\"tag\\\":\\\"VOIiCwE******\\\"}\"}",
  "amount": 10000,  // Сума у копійках (100.00 UAH = 10000)
  "ccy": 980,        // Код валюти UAH
  "redirectUrl": "https://ваш_сайт/успішний_платіж"
}
```

В поле gToken передається signature отриманий від google. Потрібно задати правильний формат для передачі в api. Звірити чи правильний передаєте формат можна на сайті - <https://jsonformatter.org/json-stringify-online> (це безкоштовний сайт для перетворення даних у формат JSON Stringify

Після впровадження цієї інструкції ваш сайт зможе приймати платежі через **Google Pay + Monobank**, а всі платежі будуть проходити через `gateway`.

❓ **Є питання?** Звертайтеся до нас! 🚀
