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:
- Nel Centro azioni, vai a Configurazione > Funzionalità.
- Nella scheda Funzionalità dell'account, individua il pulsante di opzione Modalità di pagamento.
- Seleziona l'opzione Sandbox e fai clic su Salva modifiche.
Per attivare la modalità di pagamento sandbox nell'ambiente di test rapido: passaggi:
- Nel Centro azioni, vai a Feed. > Test rapido.
- Seleziona il pulsante di opzione Utilizza sandbox per GPay.
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 sutrue
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.
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; } }