El pedido de proyectos de extremo a extremo permite configurar el modo de pago de zona de pruebas en los siguientes casos: con el entorno de prueba rápida o la zona de pruebas. Mientras pruebas tus datos puedes cambiar entre los modos de pago de zona de pruebas y de producción. Para pagos de prueba para tu proyecto de pedidos de extremo a extremo sin cargar en las tarjetas, usa Sandbox como Modo de pago El entorno de producción no el modo de pago de zona de pruebas.
Configuración
Para habilitar el modo de pago de la zona de pruebas en el entorno de la zona de pruebas, sigue estos pasos: pasos:
- En el Centro de acciones, navega a Configuración > Funciones.
- En la tarjeta Funciones de la cuenta, busca el botón de selección Modo de pago.
- Selecciona la opción Zona de pruebas y haz clic en Guardar cambios.
Para habilitar el modo de pago de la zona de pruebas en el entorno de prueba rápida, sigue estos pasos: pasos:
- En el Centro de acciones, navegue a Feeds. > Prueba rápida.
- Elige el botón de selección Use sandbox for GPay.
Cuando se selecciona el modo de pago Zona de pruebas:
- El proceso de pedido de extremo a extremo configura Google Pay para que devuelva tokens de instrumento que contienen datos de la tarjeta de prueba en lugar de los detalles reales de la tarjeta.
- El campo
isInSandbox
se establece entrue
en la CheckoutRequestMessage y SubmitOrderRequestMessage.
Las diferentes combinaciones de entorno, modo de pago e isInSandbox son los siguientes:
Entorno | Modo de pago | isInSandbox |
---|---|---|
Prueba rápida | Zona de pruebas | verdadero |
Prueba rápida | Producción | falso |
Zona de pruebas | Zona de pruebas | verdadero |
Zona de pruebas | Producción | falso |
Producción | Producción | falso |
Mensaje de respuesta de confirmación de la compra
El CheckoutResponseMessage
que envió tu servicio web de pedidos de comida contiene
PaymentOptions
Cuando
configurar tu confirmación de la compra
Proporcionas un marcador de posición de opciones de pago con un ejemplo de puerta de enlace de pagos.
- Asegúrate de actualizar los
CheckoutResponseMessage
que envía tu sitio web con la configuración de asignación de token adecuada.
Ejemplos de opciones de pago
Los siguientes son ejemplos de objetos PaymentOptions
JSON de un
CheckoutResponseMessage
para varias puertas de enlace de pago que utilizan claves de zona de pruebas:
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\"}} " } }
Marcar transacciones de la zona de pruebas
Cuando el Modo de pago de la zona de pruebas está habilitado, el campo isInSandbox
se
se incluyen en la solicitud y se configuran como true
para las solicitudes entrantes a tu sitio web
extremo del servicio (CheckoutRequestMessage
y SubmitOrderRequestMessage
).
Haz lo siguiente cuando el campo isInSandbox
se establezca en true
:
- Usar claves de la zona de pruebas en lugar de claves de producción en la asignación de token predeterminada de tu puerta de enlace de pago. La mayoría de los procesadores de pagos proporcionan APIs de la zona de pruebas y de la producción.
- No activan ninguna comunicación con el proveedor de servicios web, por lo general, un restaurante, ya que no tienen que estar informados de las transacciones de la zona de pruebas.
No se admiten tarjetas de crédito de prueba, incluso cuando la zona de pruebas de transacciones está habilitado. Debes usar una tarjeta de crédito real cuando realices una transacción. Sin embargo, Los tokens de instrumento de la zona de pruebas contienen detalles de la tarjeta de prueba que no son cobrables.
Procesa pagos
Cuando un cliente envía su pedido, el pedido de extremo a extremo envía
SubmitOrderRequestMessage
al extremo del servicio web. Google Pay
token
se incluye como una cadena codificada en base 64 en el archivo SubmitOrderRequestMessage
,
instrumentToken
. Para procesar el pago del cliente, realice una de las siguientes acciones según
tu puerta de enlace de pago:
Puerta de enlace de pago | |
---|---|
Stripe o Braintree | Decodifica la cadena del token codificado en base64 y envía los datos adecuados contenidos en la carga útil del token decodificado a tu puerta de enlace de pago para procesar el pago. |
Todas las demás plataformas de pago (incluido Stripev2) | Envía la cadena de token completa y codificada en base 64 a tu API de Payment Gateway para procesar el pago. La estructura del token de la forma de pago de Google Pay contiene campos encriptados que tu puerta de enlace de pagos puede desencriptar para procesar el pago. |
Ejemplo de carga útil decodificada
En los siguientes ejemplos, se muestran las cargas útiles decodificadas que se muestran en instrumentToken
.
para varias puertas de enlace de pago:
JSON
Este ejemplo de JSON representa un token de pago decodificado cuando se usa
Braintree. Extrae el valor del campo nonce
y envía el valor a Braintree para procesar el pago.
{ "androidPayCards": [{ "type": "AndroidPayCard", "nonce": "aeeb8297-4242...", "description": "AndroidPay", "consumed": false, "details": { "cardType": "Visa", "lastTwo": "29" } }] }
Si Google Pay no está habilitado en el panel de control de Braintree, la
El campo instrumentToken
se decodifica en el siguiente error:
{ "error": { "message": "Record not found" }, "fieldErrors": [] }
JSON
En este ejemplo de JSON, se representa un token de pago decodificado cuando se usa Stripe.
Extrae el valor del campo id
y envíalo a Stripe para
procesar el pago.
{ "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
En este ejemplo de JSON, se representa un token de pago decodificado cuando se usa 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
En este ejemplo de JSON, se representa un token de pago decodificado cuando se usa 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\"}" }
Para procesar el pago con el token, muestra la cadena del token codificada en base 64 con tu solicitud a la API de pagos de Square en el campo source_id
con el prefijo 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" } }
El siguiente es un ejemplo de Node.js que decodifica el formato
instrumentToken
de Braintree:
Node.js
function decodeToken(instrumentToken) { let decodedString = new Buffer(instrumentToken, 'base64').toString('ascii') if (decodedString.androidPayCards) { return decodedString.androidPayCards[0].nonce; } }