Google Pay

Wprowadzenie do Google Pay

Google Pay™ jest nowoczesną wygodną metodą płatności. Klienci mogą jedny kliknięciem szybko opłacić zakupy zarówno z urządzenia mobilnego jak i przez przeglądarkę.
Google Pay™ jest dobrym wyborem dla każdego modelu biznesowego.  

Zanim zaczniesz wprowadzać Google Pay

Zapoznaj się z poniższą dokumetnacją:

Oraz załóż konto produkcyjne Google Pay:

PayLane.js: Inicjalizacja Google Pay

Pobieramy niezbędne biblioteki:
"https://pay.google.com/gp/p/js/pay.js"
"https://js.paylane.com/v1"
Inicjujemy klienta PayLane.js:
// set up PayLane JS client
PayLane.setPublicApiKey('MY_PUBLIC_API_KEY');

// set up Google Pay with production Account
PayLane.googlePay.init({ 
environment: 'PRODUCTION',  
googleMerchantId: 'ID UZYSKAZANE PO ZAŁOŻENIU KONTA PRODUKCYJNEGO W GOOGLE'
});

// prepare basic transaction data
const TRANSACTION = {
  currencyCode: "USD",
  totalPrice: "1.00"
};

// check whether Google pay is available
PayLane.googlePay
  .isReadyToPay()
  .then(function(response) {
    if (response.result) {
      // proceed
      showGooglePayBtn();
    } else {
      console.warn("Google Pay is not available");
    }
  })
  .catch(function(err) {
    // handle errors here
    console.error(err);
  });

const showGooglePayBtn = function() {
  // create Google Pay button
  const button = PayLane.googlePay.createButton({
    onClick: onGooglePaymentButtonClicked
  });

  // append button
  document.getElementById('container').appendChild(button);
};

const onGooglePaymentButtonClicked = function() {
  PayLane.googlePay
    .loadPayment(TRANSACTION)
    .then(function(paymentData) {
      // extract and encode payment token
      const token = btoa(paymentData.paymentMethodData.tokenizationData.token);

      // pass required transaction data along with the `token` to your backend
      // application and perform transaction
    })
    .catch(function(err) {
      // handle errors here
      console.error(err);
    });
};
Teraz wykonujemy zapytanie używając uzyskany token.

Google Pay check 3DS

Do Requestów używamy naszych danych autoryzacyjnych:

include_once ('PayLaneRestClient.php');
$client = new PayLaneRestClient('your_API_login', 'your_API_password');
Jeżeli w odpowiedzi otrzymamy REDIRECT URL przekierowujemy na ten URL płatnika, jeśli nie - od razu przechodzimy do ostatniego kroku.
W obu wypadkach przechodzimy do ostatniego kroku używając otrzymany "id_3dsecure_auth"
API Endpoint: POST https://direct.paylane.com/rest/googlepay/sale
Sample Request
JSON
{
    "sale": {
        "amount": 1.00,
        "currency": "USD",
        "description": "TR001"
    },
    "customer": {
        "name": "John Doe",
        "email": "john.doe@example.com",
        "country_code": "US",
        "ip": "127.0.0.1"
    },
    "card": {
        "token": "eyJzaWduYXR1cmUiOiJNRVlDSVFDcUE1T0Vpd1ptR29GNlVqUEI3MktBNWtOa2lyUE5WMGN0T1A4Uytwam1qd0loQUo1QjVXa3Vnd1JhNWk3enRUWjE4eHBEWjJXK0hNTjh3a0M2SFFCZ3ZyUWkiLCJwcm90b2NvbFZlcnNpb24iOiJFQ3YxIiwic2lnbmVkTWVzc2FnZSI6IntcImVuY3J5cHRlZE1lc3NhZ2VcIjpcIlJnSGV1UVA4OVFpa1FDZmtLemRia1g3dU4wUE8zSmFDcE5hRHRhQ1ZkQ0ErZFkvL0VyRzZvQ1NZZ3Yyc3dONkdaRmZwd09zL1ZiVTNjcVFLRC81YXRNQVV5STNidnZpOGRxcXlOb0J4aTVkUi9tbS9OZmRJdHpSdEE3YXovSndMTEpreGNOMzRLZHNQV3VhVHhRZ2MyWFBCUkN2TVpLeUQ1VWNuY1U4cktKSEhnSWlNZEMwUnhNU0Uxc1RVWEwxVDk0eURJck9jdlNlcmRYdnpLZGhUOUQxcUl0azA2VW5uc2dhRHFWdGg0SHMyY1hTUFVJYlNIc25ydlRsZGg2dGlkOTF2WWZRYldYeElqQUF1ZFRQME8xR25oTnJjYXo5WjBxeUVWUEVQQnVzc29kWU1pL1JQa3VNREh6TU1sUUV2Mms3SXBtdDZJZGVnd0t5L21VYlFNeld1NDdzc2Jmb2xWbW1vOGRrTlJhYmo5Z0dtQWwrL1ErelY1MUNPeG5CSWhBUHU2NUMwZ3RuTi8yZWJMNnZNdWQxbE5xRXV0WVd4alpGRWY4Q2ZkZ3lQM3M5WXdYWXdoenRTTi9ycGhCV1hpWmNOT29Ea2xxWWEvSVphT2o0TnVnNVdLU3hka2pVazhmSTJiNlV2ZEIwbHMrakpuenZRdStzUndlWHZoNmRRa2JuazhGS3VKeVdkZGl2c3NJcjlJZW1Jc3JFOUE5T3FlSnpWOVRjSThRb01ZWmNiQUZkcUlBRjhWTUJLSjMwU28yYyt4SnU5b21FUy9QbFVXU1hJdXltL1hXMldhd1xcdTAwM2RcXHUwMDNkXCIsXCJlcGhlbWVyYWxQdWJsaWNLZXlcIjpcIkJGZzZoNWZkQ0RIbWFNODlNN0VKOVdyWHVkZWh3bzFrci8rWmdNZDJiUE5NNmhHVVZRZVp2VHRZSm5ua1dGY2JVODZteXU0WmduM2VyL05pMUNwVFk1RVxcdTAwM2RcIixcInRhZ1wiOlwiY3NzcXNmcnJpSDRwSzlUQmJPRWpSMDc2Slc2YWNKL3JEQ3JHTUpaLzFaa1xcdTAwM2RcIn0ifQ=="
    }
"back_url"  :   "http://example-url.com"
}
Sample Response
Success/Error
{
    "success"           :   true,
    "id_3dsecure_auth"  :   1234567,
    "is_card_enrolled"  :   true,
    "redirect_url"      :   "https://secure.paylane.com/payment/123"
}
{
    "success"       :   false,
    "error"         :   {
                        "id_error"                      :   1234567,
                        "error_number"                  :   704,
                        "error_description"             :   "3-D Secure authentication failed. Card declined.",
                        "processor_error_number"        :   "1234567",
                        "processor_error_description"   :   "Example description."
    },
}

Google Pay sale

Został nam ostatni krok! Używamy do tego "id_3dsecure_auth" uzyskany w poprzednim kroku Dokładniejszy opis requestu i odpowiedzi, wraz z Endpointami:
  1. Google Pay check 3DS
  2. 3DS Sale
API Endpoint: POST https://direct.paylane.com/rest/3DSecure/authSale
Sample Request
JSON
{
"id_3dsecure_auth" : 237473
}
Sample Response
Success/Error
{
    "success"       :   true,
    "id_sale"       :   1234567,
    "fraud_score"   :   10,
    "id_account"    :   14
}
{
    "success"       :   false,
    "error"         :   {
                        "id_error"                      :   1234567,
                        "error_number"                  :   415,
                        "error_description"             :   "Card has expired.",
                        "processor_error_number"        :   "1234567",
                        "processor_error_description"   :   "Example description."
    },
    "id_account"    :   14
}