Skonfiguruj płatności w trybie piaskownicy

Zamawianie kompleksowych projektów pozwala skonfigurować tryb płatności w trybie piaskownicy, gdy za pomocą środowiska szybkiego testu lub środowiska Sandbox. Podczas testowania danych możesz przełączać się między trybem piaskownicy a trybem płatności produkcji. Aby Sprawdź, czy Twój kompleksowy projekt Ordering nie obciąża karty, użyj Piaskownica jako tryb płatności. Środowisko produkcyjne nie obsługują tryb płatności piaskownicy.

Konfiguracja

Aby włączyć tryb płatności w trybie piaskownicy w środowisku piaskownicy, wykonaj te czynności: kroki:

  1. W Centrum działań kliknij Konfiguracja > Funkcje.
  2. Na karcie Funkcje konta znajdź opcję Tryb płatności.
  3. Wybierz opcję Piaskownica i kliknij Zapisz zmiany.

Karta funkcji konta z wybranym trybem piaskownicy

Aby włączyć tryb płatności w trybie piaskownicy w środowisku szybkiego testu, wykonaj te czynności: kroki:

  1. W Centrum działańprzejdź do sekcji Pliki danych > Szybki test.
  2. Zaznacz opcję Użyj piaskownicy w GPay.

Szybki test z wybranym trybem piaskownicy

Po wybraniu trybu płatności Piaskownica:

  • Kompleksowe zamawianie powoduje, że Google Pay zwraca tokeny instrumentu, zawierają dane karty testowej zamiast jej rzeczywistych danych.
  • Pole isInSandbox jest ustawione na true w CheckoutRequestMessage i SubmitOrderRequestMessage.

Różne kombinacje Środowisko, Tryb płatności i IsInSandbox są następujące:

Środowisko Tryb płatności isInSandbox
Szybki test Tryb piaskownicy prawda
Szybki test Produkcja fałsz
Tryb piaskownicy Tryb piaskownicy prawda
Tryb piaskownicy Produkcja fałsz
Produkcja Produkcja fałsz

Wiadomość z odpowiedzią na proces płatności

Pole CheckoutResponseMessage wysłane przez Twoją usługę sieciową zamawiania jedzenia zawiera PaymentOptions Gdy skonfiguruj proces płatności, podajesz zastępcze opcje płatności, używając przykładowej bramki płatności.

  • Pamiętaj, aby zaktualizować CheckoutResponseMessage wysyłane przez Twoją sieć z odpowiednią konfiguracją tokenizacji.
.

Przykłady opcji płatności

Poniżej znajdziesz przykładowe obiekty PaymentOptions JSON z CheckoutResponseMessage dla różnych bram płatności korzystających z kluczy piaskownicy:

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gatewayMerchantId\":\"YOUR_MERCHANT_ID\",\"gateway\":\"cybersource\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"braintree\",\"braintree:apiVersion\":\"v1\",\"braintree:sdkVersion\":\"1.4.0\",\"braintree:merchantId\":\"YOUR_MERCHANT_ID\",\"braintree:clientKey\":\"YOUR_BRAINTREE_SANDVOX_OR_PRODUCTION_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripe\",\"stripe:version\":\"2018-10-31\",\"stripe:publishableKey\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

JSON

"paymentOptions": {
    "googleProvidedOptions": {
        "facilitationSpecification": "{\"apiVersion\":2,\"apiVersionMinor\":0,\"merchantInfo\":{\"merchantName\":\"merchantName\"},\"allowedPaymentMethods\":[{\"type\":\"CARD\",\"parameters\":{\"allowedAuthMethods\":[\"PAN_ONLY\"],\"allowedCardNetworks\":[\"VISA\",\"MASTERCARD\"],\"billingAddressRequired\":true,\"cvcRequired\":false},\"tokenizationSpecification\":{\"type\":\"PAYMENT_GATEWAY\",\"parameters\":{\"gateway\":\"stripev2\",\"gatewayMerchantId\":\"YOUR_PRODUCTION_OR_SANDBOX_STRIPE_KEY\"}}}],\"transactionInfo\":{\"currencyCode\":\"USD\",\"totalPriceStatus\":\"ESTIMATED\",\"totalPrice\":\"31.85\"}} "
    }
}

Oznaczanie transakcji w trybie piaskownicy

Po włączeniu trybu płatności w trybie piaskownicy pole isInSandbox ma wartość uwzględnione w żądaniu i ustawione na true dla żądań przychodzących do Twojej sieci punkt końcowy usługi (CheckoutRequestMessage i SubmitOrderRequestMessage). Wykonaj te czynności, gdy pole isInSandbox jest ustawione na true:

  • W tokenizacji używaj kluczy piaskownicy zamiast kluczy produkcyjnych konfiguracji bramy płatności. Większość firm obsługujących płatności udostępnia interfejs API zarówno dla piaskownicy, jak i do środowiska produkcyjnego.
  • Nie komunikuj się z dostawcą usług internetowych, zwykle restauracji, ponieważ nie muszą być informowani o żadnych transakcjach w trybie piaskownicy.

Testowe karty kredytowe nie są obsługiwane, nawet gdy piaskownica transakcji jest . Do dokonania transakcji musisz użyć prawdziwej karty kredytowej. Pamiętaj jednak: Tokeny instrumentów w trybie piaskownicy zawierają dane karty testowej, której nie można obciążyć.

Przetwarzaj płatności

Gdy klient przesyła zamówienie, kompleksowa obsługa zamówienia wysyła SubmitOrderRequestMessage do punktu końcowego usługi sieciowej. Google Pay token jest uwzględniony jako ciąg zakodowany w formacie base-64 w funkcji SubmitOrderRequestMessage instrumentToken . Aby przetworzyć płatność klienta, wykonaj jedną z poniższych czynności w zależności od Twoja bramka płatności:

Brama płatności
Paski lub Braintree Zdekoduj ciąg tokena zakodowany w standardzie base-64 i wyślij odpowiednie dane zawarte w zdekodowanym ładunku tokena do swojej bramy płatności, aby przetworzyć płatność.
Wszystkie inne bramy płatności (w tym Stripev2) Aby przetworzyć płatność, wyślij pełny ciąg tokena zakodowany w standardzie base-64 do swojego interfejsu API bramy płatności. Struktura tokena formy płatności Google Pay zawiera zaszyfrowane pola, które Twoja brama płatności może odszyfrować w celu przetworzenia płatności.

Przykład ładunku zdekodowanego

W poniższych przykładach są pokazane ładunki zdekodowane zwrócone w instrumentToken dla różnych bram płatności:

JSON

W tym przykładzie kodu JSON przedstawiamy zdekodowany token płatności z wykorzystaniem Braintree. Wyodrębnij wartość pola nonce i wysyła tę wartość do Braintree w celu przetworzenia płatności.

{
  "androidPayCards": [{
    "type": "AndroidPayCard",
    "nonce": "aeeb8297-4242...",
    "description": "AndroidPay",
    "consumed": false,
    "details": {
      "cardType": "Visa",
      "lastTwo": "29"
    }
  }]
}

Jeśli usługa Google Pay nie jest włączona w panelu sterowania Braintree, Pole instrumentToken dekoduje taki błąd:

{
  "error": {
    "message": "Record not found"
  },
  "fieldErrors": []
}

JSON

Ten przykład JSON przedstawia zdekodowany token płatności używany w Stripe. Wyodrębnij wartość z pola id i wyślij ją do Stripe do Przetwarzanie płatności.

{
  "id": "tok_abcdefg1234...",
  "object": "token",
  "card": {
    "id": "card_abcde...",
    "object": "card",
    "address_city": null,
    "address_country": null,
    "address_line1": null,
    "address_line1_check": null,
    "address_line2": null,
    "address_state": null,
    "address_zip": null,
    "address_zip_check": null,
    "brand": "Visa",
    "country": "US",
    "cvc_check": null,
    "dynamic_last4": "1234",
    "exp_month": 1,
    "exp_year": 2019,
    "funding": "credit",
    "last4": "1234",
    "metadata": {},
    "name": null,
    "tokenization_method": "android_pay"
  },
  "client_ip": "74.125.177.36",
  "created": 1500483670,
  "livemode": false,
  "type": "card",
  "used": false
}

JSON

Ten przykładowy kod JSON przedstawia zdekodowany token płatności w przypadku używania Stripev2.

  {
  "protocolVersion":"ECv2",
  "signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
  "intermediateSigningKey":{
    "signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
    "signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
  },
  "signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
}
  

JSON

W tym przykładzie kodu JSON przedstawiamy zdekodowany token płatności używany w Square.

  {
    "signature": "MEYCIQCMAsWCrY2GfHM/gMAKiK3QCKJJOIkjZeTQGzcdWgvrhwIhAJ3mXwe+wmU9z+Apv1rTDsCVQBzayvWzT4ywxytrSPla",
    "protocolVersion": "ECv1",
    "signedMessage": "{\"encryptedMessage\":\"WkYz21EYxojwTqWh6A3oYXtmctu1PlqF+tNYPA4cq017nqj16Ge7kaVR7MI1XG1OrCmcMwP20u5Zb5E28XYan8UI8M4L120orvE9XU1ivZuO4Myq2O3ue8v0lY1MDx8Mnk+5mkAv1kLmzJc91gEQ2leIwrPuMDYqsQUHzTR3Jikh5/v+iWRkyQPKKxgj5c6Erdu/pkg1xV6fQJcHNdq9Jw11zl95x6eQurxw2Uy8v811azGr+noKJbw0uye72MkhmzMS5QKOzwGT9nBfO+zPLYSEewsdOcPbNZF94zk/KU9nxom/gQ+eYEMIZvOj9lO4gQqDqR6DyWyStk7MjeXQTvXWZBI1JpqvOrlTHL0Ct18RpbfOio7hAtafzb0NnqEKlsun+SSpJmvI7U6n6Cnu1JUMUGfT/Jsi6RJ3N6pRw2BubeR1925Xl3jXQnlz5io6X1YRlAcnshZyf6CjBpKES32aTf1m1IHRhZ2Jj6i/g7Y\\u003d\",\"ephemeralPublicKey\":\"BDQA0Cf//BHPcnB0R/GRrWa2g7T1QF97eOhAYy7l45M+kJnsoeL9OaUQV/KIMLvcgbmKkZIm2FQeL7ftd6S4q4c\\u003d\",\"tag\":\"DHtVyXNo+PDr7Thi/EjBBbsr2k7y1SwGIn0D9mmPTJc\\u003d\"}"
  }
    

Aby przetworzyć płatność przy użyciu tokena, zwróć ciąg tokena zakodowany w standardzie base-64 wraz z żądaniem do interfejsu API płatności Square.source_id

  {
    "idempotency_key": "ID",
    "source_id": "gpay:GOOGLE_PAY_BASE64_ENCODED_TOKEN",
    "amount_money": {
        "amount": 50,
        "currency": "USD"
    },
    "location_id": "LOCATION_ID",
    "billing_address": {
        "postal_code": "11111"
    }
  }

Poniżej znajdziesz przykład środowiska Node.js dekodującego kod zakodowany w formacie base-64 instrumentToken od Braintree:

Node.js

function decodeToken(instrumentToken) {
  let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii')
  if (decodedString.androidPayCards) {
    return decodedString.androidPayCards[0].nonce;
  }
}