Welcome to our new developer portal! Use the "Ask" button to chat with our AI Agent.
For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

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:

  • withRemotePaymentParameters para proporcionar importe y currencyCode

  • withMCRemotePaymentParameters para proporcionar countryCode, transactionType, cryptogramDataType, y unpredictableNumber

Use los siguientes valores de ejemplo como marcadores de posición.

PaymentInputData para el pago DSRP tiene los siguientes campos:

Campo
Tipo
Formato
Requisito
Descripción

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

El listener de pago remoto gestiona eventos durante la generación del criptograma DSRP.

El listener tiene tres callbacks:

  • onAuthenticationRequired

    El SDK indica que se requiere verificación CDCVM. Consulte Realizar verificación CDCVM.

  • onDataReadyForPayment

    Los 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.

  • onError

    El 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.

Campo
Descripción

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 F para 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.

Código de error del servicio de pago
Descripción
Acción recomendada

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?