Configurare i pagamenti nella sandbox

L'ordinamento di progetti end-to-end consente di configurare la modalità di pagamento sandbox quando utilizzando l'ambiente di test rapido o sandbox. Durante il test dei dati puoi passare dalla modalità di pagamento sandbox a quella di produzione e viceversa. Per prova i pagamenti per il tuo progetto end-to-end degli ordini senza addebitare le carte, usa Sandbox come Modalità di pagamento. L'ambiente di produzione non Supportano la modalità di pagamento sandbox.

Configurazione

Per attivare la modalità di pagamento sandbox nell'ambiente sandbox: passaggi:

  1. Nel Centro azioni, vai a Configurazione > Funzionalità.
  2. Nella scheda Funzionalità dell'account, individua il pulsante di opzione Modalità di pagamento.
  3. Seleziona l'opzione Sandbox e fai clic su Salva modifiche.

Scheda delle funzionalità dell'account con la modalità sandbox selezionata

Per attivare la modalità di pagamento sandbox nell'ambiente di test rapido: passaggi:

  1. Nel Centro azioni, vai a Feed. > Test rapido.
  2. Seleziona il pulsante di opzione Utilizza sandbox per GPay.

Test rapido con modalità sandbox selezionata

Quando viene selezionata la modalità di pagamento Sandbox:

  • L'ordine end-to-end configura Google Pay per la restituzione di token di strumenti che contenere i dati della scheda di test anziché i dettagli effettivi della carta.
  • Il campo isInSandbox è impostato su true nel CheckoutRequestMessage e SubmitOrderRequestMessage.

Le diverse combinazioni di ambiente, modalità di pagamento e isInSandbox sono i seguenti:

Ambiente Modalità di pagamento isInSandbox
Test rapido Sandbox true
Test rapido Produzione falso
Sandbox Sandbox true
Sandbox Produzione falso
Produzione Produzione falso

Messaggio di risposta al pagamento

Il valore CheckoutResponseMessage inviato dal tuo servizio web per le ordinazioni di cibo contiene PaymentOptions. Quando configurare la procedura di pagamento, fornisci opzioni di pagamento segnaposto utilizzando un gateway di pagamento di esempio.

  • Assicurati di aggiornare il CheckoutResponseMessage inviato dal tuo sito web con la configurazione di tokenizzazione appropriata.
di Gemini Advanced.

Esempi di opzioni di pagamento

Di seguito sono riportati degli esempi di oggetti PaymentOptions JSON da un CheckoutResponseMessage per vari gateway di pagamento con chiavi sandbox:

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\"}} "
    }
}

Segnalare le transazioni sandbox

Quando la modalità di pagamento sandbox è attivata, il campo isInSandbox viene incluso nella richiesta e impostato su true per le richieste in arrivo sul tuo sito endpoint di servizio (CheckoutRequestMessage e SubmitOrderRequestMessage). Se il campo isInSandbox è impostato su true, procedi nel seguente modo:

  • Utilizza le chiavi sandbox invece delle chiavi di produzione nella tokenizzazione configurazione per il gateway di pagamento. La maggior parte degli elaboratori dei pagamenti fornisce l'API sia per la sandbox che per la produzione.
  • Non attivare alcuna comunicazione con il provider di servizi web, di solito una ristorante, in quanto non devono essere informati di eventuali transazioni sandbox.

Le carte di credito di prova non sono supportate, anche quando è attiva la sandbox delle transazioni in un bucket con il controllo delle versioni attivo. Quando effettui una transazione, devi utilizzare una carta di credito reale. Tuttavia, I token degli strumenti sandbox contengono dettagli delle test card che non sono addebitabili.

Elabora i pagamenti

Quando un cliente invia l'ordine, l'ordine end-to-end invia SubmitOrderRequestMessage all'endpoint del tuo servizio web. Google Pay token viene inclusa come stringa codificata in base64 nel parametro SubmitOrderRequestMessage instrumentToken . Per elaborare il pagamento del cliente, esegui una delle seguenti operazioni a seconda del: il gateway per i pagamenti:

Gateway di pagamento
Stripe o Braintree Decodifica la stringa token con codifica Base64 e invia i dati appropriati contenuti nel payload del token decodificato al tuo gateway di pagamento per elaborare il pagamento.
Tutti gli altri gateway di pagamento (incluso stripev2) Invia la stringa token completa con codifica Base64 all'API del gateway per i pagamenti per elaborare il pagamento. La struttura del token del metodo di pagamento di Google Pay contiene campi criptati che il gateway di pagamento può decriptare per elaborare il pagamento.

Esempio di payload decodificato

I seguenti esempi mostrano i payload decodificati restituiti in instrumentToken per i vari gateway di pagamento:

JSON

Questo esempio JSON rappresenta un token di pagamento decodificato quando utilizzi Braintree. Estrai il valore del campo nonce e inviare il valore a Braintree per elaborare il pagamento.

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

Se Google Pay non è abilitato nel pannello di controllo di Braintree, la Il campo instrumentToken viene decodificato nel seguente errore:

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

JSON

Questo esempio JSON rappresenta un token di pagamento decodificato quando utilizzi Stripe. Estrai il valore del campo id e invialo a Stripe a elaborare il pagamento.

{
  "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

Questo esempio JSON rappresenta un token di pagamento decodificato quando utilizzi 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

Questo esempio JSON rappresenta un token di pagamento decodificato quando viene utilizzato 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\"}"
  }
    

Per elaborare il pagamento utilizzando il token, restituisci la stringa del token con codifica Base64 con la tua richiesta all'API di pagamento di Square nel campo source_id preceduto da gpay:

  {
    "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"
    }
  }

Di seguito è riportato un esempio di Node.js che decodifica la codifica Base64 instrumentToken da Braintree:

Node.js

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