Configurar pagos de zona de pruebas

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:

  1. En el Centro de acciones, navega a Configuración > Funciones.
  2. En la tarjeta Funciones de la cuenta, busca el botón de selección Modo de pago.
  3. Selecciona la opción Zona de pruebas y haz clic en Guardar cambios.

Tarjeta de funciones de la cuenta con el modo de zona de pruebas seleccionado

Para habilitar el modo de pago de la zona de pruebas en el entorno de prueba rápida, sigue estos pasos: pasos:

  1. En el Centro de acciones, navegue a Feeds. > Prueba rápida.
  2. Elige el botón de selección Use sandbox for GPay.

Prueba rápida con el modo de zona de pruebas seleccionado

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 en true 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;
  }
}