Apple Pay y Google Pay
Puede utilizar Apple Pay y Google Pay para recopilar detalles de pago como un token que representa una tarjeta de pago que el pagador ha agregado a su billetera Apple o Google Pay.
Apple Pay
Para obtener el token de Apple Pay de la billetera del pagador:
- Para aceptar pagos con Apple Pay, configure su aplicación para Apple Pay. Para obtener instrucciones, consulte Configuring your Environment (Configuración del entorno) en la documentación para desarrolladores de Apple.
- Cuando el proceso de pedido del pagador llegue a su página de pago, determine si el dispositivo admite Apple Pay usando la función
canMakePayments()
enPKPaymentAuthorizationController
. Si se admite Apple Pay, muestre el botón Apple Pay como opción de pago, utilizando elPKPaymentButton
proporcionado por Apple. - Crear y utilizar una
PKPaymentRequest
. Para obtener instrucciones, consulte Creación de solicitudes de pago en la documentación para desarrolladores de Apple. - Después de que un usuario haya autorizado Apple Pay, actualice la sesión del motor de pagos con el token de pago,
PKPAYMENTTOKEN
:- Obtenga el token de pago como una cadena para enviarlo al motor de pagos.
Solicitud de ejemplo
let tokenString = String(data: payment.token.paymentData, encoding.utf8)
- Rellene la cadena del token en
GatewayMap
comodevicePayment
y especifique que el token procede de Apple Pay mediante la configuración dewalletProvider
.Solicitud de ejemplovar request = GatewayMap() request.sourceOfFunds.provided.card.devicePayment.paymentToken = tokenString request.order.walletProvider = "APPLE_PAY"
- Envíe el
GatewayMap
para su solicitud al motor de pagos utilizando la funciónupdateSession()
en el objetoGatewayAPI
.Solicitud de ejemploGatewayAPI.shared.updateSession("< session id#>", apiVersion: "< Gateway API Version#<", payload: request) { (result) in switch result { case .success(let response): print(response.description) case .error(let error): print(error) } }
- Obtenga el token de pago como una cadena para enviarlo al motor de pagos.
- Complete una transacción de Apple Pay desde su servidor como cualquier otro pago, utilizando la transacción PAY, o bien AUTHORIZE. Al completar un pago en una sesión que utiliza Apple Pay, establezca el campo
order.walletProvider
enAPPLE_PAY
e incluya el ID de la sesión en la solicitud.
Al crear un certificado de procesamiento de pagos de Apple Pay, utilice la solicitud de firma de certificado (CSR) que le proporcionó el motor de pagos. Para obtener instrucciones sobre cómo generar la CSR, consulte Configuración del entorno.
Google Pay
El Mobile SDK incluye una utilidad auxiliar, llamada GooglePayHandler, para recolectar un token de la billetera Google Pay del pagador:
- Habilite la compatibilidad con Google Pay dentro de su aplicación. Para obtener instrucciones, consulte la documentación de Google Pay. Las instrucciones lo guían a:
- configurar la API de Google Pay;
- solicitar información de pago de la billetera de Google;
- incorporar el botón Google Pay en su diseño de pago.
- gestionar la respuesta de la API de Google Pay.
- Dado que la integración de Google Pay es opcional con el Mobile SDK, proporcione la dependencia de servicios de Google Play adecuada:
Solicitud de ejemplo
implementation 'com.google.android.gms:play-services-wallet:X.X.X'
El motor de pagos está integrado con Google Pay como un tipo de
PAYMENT_GATEWAY
. - Para solicitar información de tarjeta cifrada de Google Pay:
- utilice el
mpgs
de nombre válido en la solicitud; - reemplace
MERCHANT_ID
por el ID de negocio que utilice en el motor de pagos.Solicitud de ejemploval tokenizationSpecification = JSONObject() .put("type", "PAYMENT_GATEWAY") .put("parameters", JSONObject() .put("gateway", "mpgs") .put("gatewayMerchantId", "MERCHANT_ID"))
- utilice el
- Utilice el
GooglePayHandler
para iniciar la billetera de Google Pay con su cliente de pagos construido y solicitar los datos.Solicitud de ejemplo// YourActivity.kt fun googlePayButtonClicked() { try { val request = PaymentDataRequest.fromJson(paymentDataRequest.toString()) // use the Gateway convenience handler for launching the Google Pay flow GooglePayHandler.requestData(this, paymentsClient, request) } catch (e: JSONException) { Toast.makeText(this, "Could not request payment data", Toast.LENGTH_SHORT).show() } }
- Para administrar las respuestas de la billetera, el Mobile SDK ofrece un controlador de ciclo de vida de Google Pay. Puede implementar la devolución de llamada de Google Pay proporcionada y utilizar el controlador de resultados dentro de su actividad. Esto elimina la necesidad de administrar manualmente los resultados de la actividad de Google Pay y delega los pasos importantes de la transacción a los métodos de devolución de llamada.
Solicitud de ejemplo
// YourActivity.kt override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { // handle the Google Pay response if (GooglePayHandler.handleActivityResult(requestCode, resultCode, data, callback)) { return } super.onActivityResult(requestCode, resultCode, data) } val googlePayCallback = object : GooglePayCallback { override fun onReceivedPaymentData(paymentData: JSONObject) { try { val description = paymentData.getJSONObject("paymentMethodData") .getString("description") Log.d(MyGooglePayCallback::class.java.simpleName,"ReceivedPaymentData: $description") } catch (e: Exception) { // handle exception } handleGooglePayData(paymentData) } override fun onGooglePayCancelled() { // handle cancelled } override fun onGooglePayError(status: Status) { // handle error } }
- Cuando reciba datos de pago de Google Pay, actualice la sesión del motor de pagos con el token de pago.
Solicitud de ejemplo
fun handleGooglePayData(paymentData: JSONObject) { val token = paymentData.getJSONObject("paymentMethodData") .getJSONObject("tokenizationData") .getString("token") val request = GatewayMap() .set("sourceOfFunds.provided.card.devicePayment.paymentToken", token) GatewayAPI.updateSession(session, request, callback) }
- Complete una transacción de Google Pay desde su servidor como cualquier otro pago, utilizando la transacción PAY, o bien AUTHORIZE. Al completar un pago en una sesión que utiliza Google Pay, establezca el campo
order.walletProvider
enGOOGLE_PAY
e incluya el ID de la sesión en la solicitud.