Tpay
API

Google Pay

Google Pay pozwala użytkownikom na dokonywanie płatności za pomocą kart płatniczych zapisanych na koncie Google. Podczas płatności tym kanałem, jeśli użytkownik jest zalogowany w usłudze Google, wyświetlona zostanie mu preferowana karta płatnicza, możliwość zmiany na inną zapisaną na koncie Google oraz możliwość potwierdzenia transakcji. Jeśli użytkownik nie jest zalogowany, wyświetlany jest formularz logowania do konta Google. Podczas przetwarzania płatności generowany jest przez Google jednorazowy token płatniczy, który służy do przetwarzania płatności zamiast danych karty. Dzięki temu zwiększone jest bezpieczeństwo transakcji.

Rodzaje obsługiwanych kart

Obecnie obsługujemy wyłącznie karty Visa i Mastercard.

Zanim zaczniesz

Upewnij się, że:

Transakcja Google Pay

Realizuj płatności Google Pay wykorzystując endpoint zakładania transakcji podając groupId: 166.

Wyślij zapytanie o utworzenie transakcji Google Pay

Aby utworzyć transakcję Google Pay, wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

Sprawdź szczegóły w dokumentacji API Reference: POST /transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
pay.groupId
Identyfikator grupy płatności dla Google Pay: 166.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa płatność Google Pay",
  "payer": {
    "email": "[email protected]",
    "name": "Jan Nowak"
  },
  "pay": {
    "groupId": 166
  }
}

Przykład:

curl --location 'https://api.tpay.com/transactions' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 0.1,
"description": "Testowa płatność Google Pay",
"payer": {
"email": "[email protected]",
"name": "Jan Nowak"
},
"pay": {
"groupId": 166
}
}'

Po wysłaniu żądania otrzymasz w odpowiedzi schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success - Transakcja została utworzona pomyślnie.
status
pending - Transakcja oczekuje opłacenia.
transactionPaymentUrl
Adres URL, na który należy przekierować płatnika.

Przykładowa odpowiedź:

{
  "result": "success",
  "requestId": "8d67feda5067b7df97f0",
  "transactionId": "01K5BK4HEPB0WBCGT51FMTYSYJ",
  "title": "TR-BRA-CN7CN3X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-06-04 21:39:46",
    "realization": null
  },
  "amount": 0.1,
  "currency": "PLN",
  "description": "Testowa płatność Google Pay",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZWxRLdG1bqY",
    "email": "[email protected]",
    "name": "Jan Nowak",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": ""
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CN7CN3X&uid=01HZJC7HJXA31Z67XNWRV9R0A3"
}

Przekieruj płatnika na Panel Transakcyjny

Przekieruj płatnika na URL zawarty w odpowiedzi w polu transactionPaymentUrl.

Pod wskazanym URL płatnik zobaczy arkusz płatności z listą dostępnych kart płatniczych zapisanych na jego koncie Google albo formularz logowania do konta Google.

Płatnik wybiera kartę i finalizuje transakcję.

Uwaga

Jeśli integrujesz płatności z aplikacją mobilną i otwierasz panel transakcyjny w WebView, metoda płatności Google Pay nie zostanie poprawnie obsłużona. Zalecamy otwarcie płatności w domyślnej przeglądarce internetowej lub integrację on-site.

Płatnik zostanie przekierowany na stronę sukcesu lub porażki

Gdy płatność zostanie zakończona, płatnik zostanie przekierowany na stronę sukcesu (success page) lub stronę porażki (error page) w zależności od tego, czy transakcja się udała.

Obsłuż powiadomienie

Poinformujemy Ciebie o statusie transakcji na webhook transakcyjny. Sprawdź szczegóły.

Google Pay on-site

Google Pay on-site jest to integracja płatności Google Pay bezpośrednio w Twojej witrynie/aplikacji mobilnej.

Polega ona na umieszczeniu mechanizmu do płatności Google Pay w sposób umożliwiający klientom płatność bezpośrednio z poziomu Twojej witryny/aplikacji mobilnej.

Sprawdź więcej:

Uwaga

Metoda Google Pay on-site aktualnie jest dostępna tylko dla agenta rozliczeniowego Pekao. Sprawdź, czy Twoje płatności kartowe, są realizowane za pośrednictwem tego agenta rozliczeniowego.

Zintegruj Google Pay w przeglądarce za pomocą samouczka

Jeżeli integrujesz swoją płatność w systemie, który płatnik obsługuje poprzez przeglądarkę internetową, zrealizuj samouczek przygotowany przez Google:

Instrukcja przeglądarka.

Zintegruj Google Pay w Android za pomocą samouczka

Jeżeli integrujesz swoją płatność w aplikacji mobilnej na Androida, zrealizuj instrukcję przygotowaną przez Google:

Instrukcja aplikacja mobilna.

Uwaga

W przypadku aplikacji na Androida, które używają WebViews, musisz wywołać przeznaczone na platformę Google Pay API. Przykłady znajdziesz tutaj: Wiązanie kodu JavaScript z kodem Androida.

Skonfiguruj Google Pay SDK

W celu poprawnej implementacji skonfiguruj metodę płatności w następujący sposób.

Wersja Google Pay API wykorzystywana w integracji:

const baseRequest = {
  apiVersion: 2,
  apiVersionMinor: 0,
};

Brama wykorzystywana podczas płatności:

const tokenizationSpecification = {
  type: "PAYMENT_GATEWAY",
  parameters: {
    gateway: "tpaycom",
    gatewayMerchantId: "{MERCHANT_ID}",
  },
};
parameters.gateway
Upewnij się, że masz ustawiony na tpaycom.
{MERCHANT_ID}
Unikalny identyfikator, który został ci nadany podczas rejestracji konta w Tpay.

Obsługiwane sieci kart:

const allowedCardNetworks = ["MASTERCARD", "VISA"];

Obsługiwane metody autoryzacji:

const allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];

Format adresu:

const BillingAddressParameters = {
  format: "MIN",
};

Wartość podana wyżej jest wartością standardową, nie musisz jej implementować.

Wyślij zapytanie o utworzenie transakcji Google Pay

Aby utworzyć transakcję Google Pay, wyślij żądanie POST na endpoint:

https://api.tpay.com/transactions

Sprawdź szczegóły w dokumentacji API Reference: POST /transactions

W zapytaniu określ następujące parametry:

amount
Kwota transakcji (w złotówkach).
description
Opis transakcji widoczny dla płatnika.
payer.email
Adres e-mail płatnika.
payer.name
Imię i nazwisko płatnika.
payer.ip
Adres IP płatnika (IPv4 lub IPv6).
groupId
Identyfikator grupy płatności dla Google Pay: 166.

Podstawowe body żądania powinno wyglądać następująco:

{
  "amount": 0.1,
  "description": "Testowa płatność Google Pay",
  "payer": {
    "email": "[email protected]",
    "name": "Jan Nowak",
    "ip": "127.0.0.1"
  },
  "pay": {
    "groupId": 166
  }
}

Przykład:

curl --location 'https://api.tpay.com/transactions' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data-raw '{
"amount": 0.1,
"description": "Testowa płatność Google Pay",
"payer": {
"email": "[email protected]",
"name": "Jan Nowak"
"ip": "127.0.0.1"
},
"pay": {
"groupId": 166
}
}'

Po wysłaniu żądania otrzymasz w odpowiedzi schemat TransactionCreated.

Najważniejsze parametry odpowiedzi:

result
success - Transakcja została utworzona pomyślnie.
status
pending - Transakcja oczekuje opłacenia.
transactionId
Unikalny identyfikator transakcji - przechowaj go swoim systemie.

Przykład odpowiedzi:

{
  "result": "success",
  "requestId": "8d67feda5067b7df97f0",
  "transactionId": "01K5BK4HEPB0WBCGT51FMTYSYJ",
  "title": "TR-BRA-CN7CN3X",
  "posId": "ps_NyRBLzV5kelrpjaM",
  "status": "pending",
  "date": {
    "creation": "2024-06-04 21:39:46",
    "realization": null
  },
  "amount": 0.1,
  "currency": "PLN",
  "description": "Testowa płatność Google Pay",
  "hiddenDescription": "",
  "payer": {
    "payerId": "py_a9rjlZWxRLdG1bqY",
    "email": "[email protected]",
    "name": "Jan Nowak",
    "ip": "127.0.0.1",
    "phone": "",
    "address": "",
    "city": "",
    "country": "PL",
    "postalCode": ""
  },
  "payments": {
    "status": "pending",
    "method": "pay_by_link",
    "amountPaid": 0,
    "date": {
      "realization": null
    }
  },
  "transactionPaymentUrl": "https://secure.tpay.com/?title=TR-BRA-CN7CN3X&uid=01HZJC7HJXA31Z67XNWRV9R0A3"
}

Przetwórz obiekt odpowiedzi

Gdy płatnik potwierdzi płatność w formularzu Google Pay, obsłuż zwracane dane płatności.

Przeglądarka:

Przeglądarka jak przetworzyć dane płatności.

Android:

Android jak przetworzyć dane płatności.

Opłać transakcję wykorzystując token płatniczy

W celu opłacenia transakcji Google Pay on-site wykorzystaj wcześniej przechowany parametr transactionId, wysyłając żądanie POST na adres:

https://api.tpay.com/transactions/{transactionId}/pay

Umieść {transactionId} w adresie URL np.:

https://api.tpay.com/transactions/01K5BK4HEPB0WBCGT51FMTYSYJ/pay

Sprawdź szczegóły w dokumentacji API Reference: POST /transactions/{transactionId}/pay

W zapytaniu określ następujące parametry:

groupId
Identyfikator grupy płatności dla Google Pay: 166.
googlePayPaymentData
Zaszyfrowany token płatności w formacie base64.
Uwaga

Token płatności znajduje się w obiekcie paymentMethodData.tokenizationData.token. Zaszyfruj jego zawartość algorytmem base64.

Podstawowe body żądania powinno wyglądać następująco:

{
  "groupId": 166,
  "googlePayPaymentData": "ewogInRwYXkiIDogIkhlbGxvIFdvcmxkIgp9"
}

Przykład:

curl --location 'https://api.tpay.com/transactions/01K5BK4HEPB0WBCGT51FMTYSYJ/pay'\
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token>' \
--data '{
"groupId": 166,
"googlePayPaymentData": "ewogInRwYXkiIDogIkhlbGxvIFdvcmxkIgp9"
}'

Po wysłaniu żądania otrzymasz w odpowiedzi schemat TransactionCreated.

Obsłuż przekierowanie 3D Secure (3DS)

Parametr status o wartości pending, oznacza, że transakcja wymaga dodatkowego uwierzytelnienia 3DS. Przekieruj płatnika na adres zawarty w parametrze transactionPaymentUrl, gdzie będzie mógł zrealizować uwierzytelnienie 3DS. Sprawdź więcej.

Wyświetl wynik transakcji

Po otrzymaniu notyfikacji o statusie transakcji wykorzystaj pole tr_status i wyświetl wynik transakcji.