Durch die Bestellung von End-to-End-Projekten kann der Sandbox-Zahlungsmodus konfiguriert werden, wenn entweder mit dem Schnelltest oder in der Sandbox-Umgebung. Beim Testen der Daten -Feed, kannst du zwischen Sandbox- und Produktionszahlungsmodi wechseln. Um Testzahlungen für Ihr End-to-End-Projekt "Ordering", ohne die Karten zu belasten, Sandbox als Zahlungsmodus. In der Produktionsumgebung Sandbox-Zahlungsmodus unterstützen.
Konfiguration
So aktivieren Sie den Sandbox-Zahlungsmodus in der Sandbox-Umgebung: Schritte:
- Gehen Sie im Actions Center zu Konfiguration > Funktionen.
- Suchen Sie auf der Karte Kontofunktionen nach dem Optionsfeld Zahlungsmodus.
- Wählen Sie die Option Sandbox aus und klicken Sie auf Änderungen speichern.
So aktivieren Sie den Sandbox-Zahlungsmodus in der Schnelltestumgebung: Schritte:
- Gehen Sie im Aktionscenter zu Feeds. > Schnelltest.
- Wählen Sie das Optionsfeld Sandbox für GPay verwenden aus.
Wenn die Zahlungsart für Sandbox ausgewählt ist:
- Bei End-to-End-Bestellungen wird Google Pay so konfiguriert, dass Zahlungsmitteltokens zurückgegeben werden, die Testkartendaten anstelle der tatsächlichen Kartendetails enthalten.
- Das Feld
isInSandbox
ist in dertrue
CheckoutRequestMessage und SubmitOrderRequestMessage.
Die verschiedenen Kombinationen von „Environment“, „Payment Mode“ und „isInSandbox“ sind:
Umgebung | Zahlungsart | isInSandbox |
---|---|---|
Kurztest | Sandbox | wahr |
Kurztest | Produktion | falsch |
Sandbox | Sandbox | wahr |
Sandbox | Produktion | falsch |
Produktion | Produktion | falsch |
Checkout-Antwortnachricht
Die CheckoutResponseMessage
, die von Ihrem Webdienst für Food Ordering gesendet wurde, enthält
PaymentOptions
. Wenn Sie
den Bezahlvorgang einrichten,
stellen Sie mithilfe eines Beispiel-Zahlungs-Gateways einen Platzhalter für die Zahlungsoptionen bereit.
- Achte darauf, die von deinem Web gesendeten
CheckoutResponseMessage
zu aktualisieren mit der entsprechenden Tokenisierungskonfiguration.
Beispiele für Zahlungsoptionen
Hier sehen Sie Beispiele für JSON-PaymentOptions
-Objekte aus einer
CheckoutResponseMessage
für verschiedene Zahlungs-Gateways mit Sandbox-Schlüsseln:
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\"}} " } }
Sandbox-Transaktionen kennzeichnen
Wenn der Sandbox-Zahlungsmodus aktiviert ist, wird das Feld isInSandbox
in der Anfrage enthalten und für eingehende Anfragen an Ihr Web auf true
festgelegt.
Dienstendpunkt (CheckoutRequestMessage
und SubmitOrderRequestMessage
)
Gehen Sie so vor, wenn das Feld isInSandbox
auf true
festgelegt ist:
- Bei der Tokenisierung Sandbox-Schlüssel anstelle von Produktionsschlüsseln verwenden Konfiguration Ihres Zahlungs-Gateways. Die meisten Zahlungsabwickler stellen API bereit Sandbox- und Produktionsschlüssel zu verwenden.
- Lösen Sie keine Kommunikation mit dem Webdienstanbieter aus, in der Regel ein Restaurant, da sie nicht über Sandbox-Transaktionen informiert werden müssen.
Testkreditkarten werden nicht unterstützt, auch wenn die Transaktions-Sandbox aktiviert. Für eine Transaktion müssen Sie eine echte Kreditkarte verwenden. Sie können jedoch Sandbox-Token-Tokens enthalten Testkartendetails, die nicht kostenpflichtig sind.
<ph type="x-smartling-placeholder">Zahlungen abwickeln
Wenn ein Kunde seine Bestellung einreicht, sendet die End-to-End-Bestellung
SubmitOrderRequestMessage
mit Ihrem Webdienstendpunkt. Die Google Pay App
Token
wird als base-64-codierter String im SubmitOrderRequestMessage
-Element
instrumentToken
ein. Führe einen der folgenden Schritte aus, um die Zahlung des Kunden zu bearbeiten.
Zahlungs-Gateway:
Zahlungs-Gateway | |
---|---|
Streifen oder Braintree | Decodieren Sie den base-64-codierten Tokenstring und senden Sie die entsprechenden Daten in der decodierten Tokennutzlast an Ihr Zahlungs-Gateway, um die Zahlung zu verarbeiten. |
Alle anderen Zahlungsgateways (einschließlich Stripev2) | Senden Sie den vollständigen base-64-codierten Tokenstring an Ihre Zahlungs-Gateway-API, um die Zahlung zu verarbeiten. Die Struktur von Google Pay-Tokens für Zahlungsmethoden enthält verschlüsselte Felder, die das Zahlungs-Gateway entschlüsseln kann, um die Zahlung zu verarbeiten. |
Beispiel für decodierte Nutzlast
Die folgenden Beispiele zeigen decodierte Nutzlasten, die im instrumentToken
zurückgegeben werden.
für verschiedene Zahlungs-Gateways:
JSON
Dieses JSON-Beispiel stellt ein decodiertes Zahlungstoken bei der Verwendung von
Braintree. Wert des Felds nonce
extrahieren
und senden den Wert an Braintree, um die Zahlung zu verarbeiten.
{ "androidPayCards": [{ "type": "AndroidPayCard", "nonce": "aeeb8297-4242...", "description": "AndroidPay", "consumed": false, "details": { "cardType": "Visa", "lastTwo": "29" } }] }
Wenn Google Pay im Braintree-Steuerfeld nicht aktiviert ist,
Das Feld instrumentToken
wird in folgenden Fehler decodiert:
{ "error": { "message": "Record not found" }, "fieldErrors": [] }
JSON
Dieses JSON-Beispiel stellt ein decodiertes Zahlungstoken bei Verwendung von Stripe dar.
Extrahieren Sie den Wert des Felds id
und senden Sie ihn an Stripe:
um die Zahlung zu verarbeiten.
{ "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
Dieses JSON-Beispiel stellt ein decodiertes Zahlungstoken bei Verwendung von Stripev2 dar.
{ "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
Dieses JSON-Beispiel stellt ein decodiertes Zahlungstoken bei Verwendung von Square dar.
{ "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\"}" }
Um die Zahlung mithilfe des Tokens zu verarbeiten, geben Sie den base-64-codierten Tokenstring mit Ihrer Anfrage an die Payment API von Square im Feld source_id
mit dem Präfix gpay zurück:
{ "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" } }
Im Folgenden finden Sie ein Node.js-Beispiel, mit dem die base-64-codierte
instrumentToken
von Braintree:
Node.js
function decodeToken(instrumentToken) { let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii') if (decodedString.androidPayCards) { return decodedString.androidPayCards[0].nonce; } }