Implementar el pago remoto DSRP
Resumen
Use Mastercard Digital Secure Remote Payment (DSRP) para generar datos de pago para aceptación remota, como el comercio electrónico.
En este flujo, su aplicación de cartera digital genera datos de pago. Usted pasa esos datos a su sistema de comercio o pasarela de pago para su autorización.
Antes de comenzar, complete Tokenización. Consulte Tokenizar una tarjeta.
El SDK de NFC Wallet admite el pago remoto DSRP para Mastercard tarjetas digitales con el perfil MCBP 2.x solo.
Si necesita pago remoto DSRP para un perfil o red de pago diferente, póngase en contacto con su equipo de entrega de Thales.
Integración del SDK
Compruebe los requisitos previos
Confirme que la tarjeta digital admite el pago remoto DSRP usando DigitalizedCardDetails.paymentTypeSupported(). Esta API devuelve una lista de tipos de pago compatibles. Verifique que PaymentType.DSRP está presente.
public boolean isDsrpSupported(DigitalizedCardDetails card) {
final PaymentType[] supported = card.paymentTypeSupported();
for (PaymentType p : supported) {
if (p == PaymentType.DSRP) {
return true;
}
}
return false;
}Cree los datos de entrada de pago DSRP
Cree PaymentInputData. Contiene los parámetros de la transacción usados para generar la carga útil del pago remoto DSRP.
Use PaymentInputData.PaymentInputBuilder con:
withRemotePaymentParameterspara proporcionarimporteycurrencyCodewithMCRemotePaymentParameterspara proporcionarcountryCode,transactionType,cryptogramDataType, yunpredictableNumber
Use los siguientes valores de ejemplo como marcadores de posición.
PaymentInputData para el pago DSRP tiene los siguientes campos:
importe
long
Numérico, unidades menores
Requerido
Establezca el importe de la transacción en unidades menores (sin separador decimal). Ejemplo: 119.00 USD es 11900.
currencyCode
char (entero)
numérico de 3 dígitos ISO 4217
Requerido
Establezca el código de moneda de la transacción. Ejemplo: USD es 840.
countryCode
char (entero)
numérico de 3 dígitos ISO 3166-1
Requerido
Establezca el código de país del comerciante. Ejemplo: Estados Unidos es 840.
transactionType
Enumeración
TransactionType.PURCHASE
Requerido
Establezca el tipo de transacción financiera. Para pagos remotos DSRP, use TransactionType.PURCHASE.
cryptogramDataType
Enumeración
CryptogramDataType.UCAF o CryptogramDataType.DE55
Requerido
Establezca el formato del criptograma devuelto por el SDK.
unpredictableNumber
long
Numérico
Requerido
Proporcione un número aleatorio generado por el comerciante o la pasarela de pago.
Genere un criptograma de pago remoto
En su aplicación de billetera digital, llame a PaymentBusinessService.generateApplicationCryptogram() con PaymentType.DSRP para generar datos de pago para aceptación remota (por ejemplo, comercio electrónico).
Debe implementar un RemotePaymentServiceListener.
Implemente RemotePaymentServiceListener
RemotePaymentServiceListenerEl listener de pago remoto gestiona eventos durante la generación del criptograma DSRP.
El listener tiene tres callbacks:
onAuthenticationRequiredEl SDK indica que se requiere verificación CDCVM. Consulte Realizar verificación CDCVM.
onDataReadyForPaymentLos datos de salida del pago remoto están listos. Recupérelos usando
PaymentService.getRemotePaymentData().Desactive el servicio de pago después de recuperar los datos. Si omite la desactivación, la siguiente generación puede fallar con
REMOTE_PAYMENT_WRONG_STATE.onErrorEl SDK encontró un fallo durante la generación del pago remoto.
Desactive el servicio de pago para restablecer el estado antes de reintentar.
El siguiente fragmento de código muestra una implementación básica del listener:
Pase la instancia de su listener cuando llame a generateApplicationCryptogram(...).
Obtenga los datos de pago DSRP
Obtener RemotePaymentOutputData cuando RemotePaymentServiceListener.onDataReadyForPayment() se activa.
RemotePaymentOutputData contiene los siguientes campos.
cryptogramData
Matriz de bytes que contiene la respuesta formateada. Se trata de datos UCAF o TLV para que el comerciante complete DE-55.
dpan
DPAN con cualquier F relleno eliminado (si está presente).
dpanSequenceNumber
Número de secuencia DPAN (PSN) de la tarjeta utilizada.
track2EquivalentData
Datos equivalentes a la pista 2, según ISO/IEC 7813, excluyendo el sentinel de inicio, el sentinel de fin y el LRC.
PAR
Referencia de cuenta de pago (PAR), si la proporciona la red de pago.
dPanexpirationDate
Fecha de vencimiento del DPAN.
cryptogramDataType
Formato de criptograma devuelto (UCAF o DE55).
track2EquivalentData incluye:
Número de cuenta principal
Separador de campo (hex
D)Fecha de vencimiento (
YYMM)Código de servicio
Datos discrecionales (definidos por la red de pago)
Relleno opcional con hex
Fpara alinearlo a un byte completo
Gestione los errores
Cuando RemotePaymentServiceListener.onError(...) se activa, el SDK proporciona un PaymentServiceErrorCode.
Llame siempre a PaymentBusinessService.deactivate() en onError(...) para restablecer el estado del servicio de pago antes de reintentar.
PaymentBusinessService.generateApplicationCryptogram(...) lanza IllegalArgumentException si paymentInputData es null o si el listener es null.
REMOTE_PAYMENT_WRONG_STATE
El servicio de pago ya está activado al intentar realizar un pago remoto.
Llamar a PaymentBusinessService.deactivate() después de cada generación. Llámelo cuando el usuario final cancele CDCVM.
REMOTE_PAYMENT_OUTPUT_INVALID
Los datos de salida no se pueden analizar y no están disponibles.
Reintente la transacción.
REMOTE_PAYMENT_NOT_SUPPORTED
La tarjeta predeterminada no admite el pago remoto.
Compruebe DigitalizedCardDetails.paymentTypeSupported() antes del pago. Use una tarjeta digital que admita PaymentType.DSRP.
REMOTE_PAYMENT_INPUT_INVALID
Los datos de entrada existen, pero algunos campos no son válidos.
Reconstruya PaymentInputData con valores válidos. Asegúrese de que todos los campos obligatorios estén establecidos.
NO_DEFAULT_CARD
No hay ninguna tarjeta predeterminada.
Establezca una tarjeta predeterminada antes de generar un criptograma.
CARD_OUT_OF_PAYMENT_KEYS
No hay credenciales de pago disponibles.
Reponga las credenciales de pago antes de reintentar.
Última actualización
¿Te fue útil?