- Pautas de integración
- Características soportadas (métodos de pago)
- Pagos con dispositivo
- Pagos con Apple Pay
Apple Pay
Apple Pay es un servicio de pago móvil y billetera digital de Apple Inc. que permite que los pagadores realicen pagos con dispositivos iOS y macOS compatibles. Apple Pay es un pago con dispositivo compatible en el Mastercard Gateway.
Esta página describe los detalles de la integración específicos de Apple Pay. Se recomienda que lea las pautas de integración para los pagos con dispositivo, antes de crear su integración de Apple Pay.
Prerrequisitos
Para aceptar pagos con Apple Pay:
- Debe registrarse con Apple y crear su ID de negocio.
- your payment service provider debe habilitar su perfil del negocio para pagos con dispositivo en el motor de pagos.
- Si desea que el motor de pagos realice el descifrado del token de pago, su perfil del negocio en el motor de pagos debe tener el permiso "Habilitar descifrado de pagos con dispositivos Apple Pay".
Agregar soporte para Apple Pay a su integración
Puede integrar Apple Pay en su aplicación móvil o en la página de pago de su sitio web mediante Direct Payment.
- Consiga un certificado firmado de Apple y cárguelo en el motor de pagos mediante Merchant Administration.
Si quiere descifrar el token de pago en su servidor, consulte Descifrar el token de pago.
- En la confirmación del pago, complete los siguientes campos en la solicitud de Authorize/Pay o Update Session.
order.walletProvider
=APPLE_PAY
order.amount
: el valor que proporcione debe ser el monto final del pedido (incluidos el envío y otros montos adicionales).order.currency
sourceOfFunds.provided.card.devicePayment.paymentToken
: el token de pago cifrado obtenido del SDK de Apple Pay. Por ejemplo, el valor enPKPaymentToken.paymentData
sourceOfFunds.provided.card.devicePayment.paymentToken [REST][NVP]
- El motor de pagos descifrará el token de pago por usted y procesará la transacción con los datos descifrados.
Además de los campos estándar, se devuelven los siguientes campos de respuesta para una autorización correcta con el token de pago.
sourceOfFunds.provided.card.encryption
=DEVICE
sourceOfFunds.provided.card.deviceSpecificNumber
: el DPAN en formato enmascarado.sourceOfFunds.provided.card.deviceSpecificExpiry.month
sourceOfFunds.provided.card.deviceSpecificExpiry.year
sourceOfFunds.provided.card.number
: el FPAN en formato enmascarado.sourceOfFunds.provided.card.expiry.month
: el mes de vencimiento de la tarjeta.sourceOfFunds.provided.card.expiry.year
: el año de vencimiento de la tarjeta.sourceOfFunds.provided.card.devicePayment.cryptogramFormat
Aquí hay una solicitud Authorization de muestra en REST, donde el motor de pagos descifra el token de pago.
{ "apiOperation": "AUTHORIZE", "order": { "currency": "USD", "amount": "61.00", "walletProvider": "APPLE_PAY" }, "sourceOfFunds": { "type": "CARD", "provided":{ "card":{ "devicePayment":{ "paymentToken":"{\r\n\t\"version\": \"EC_v1\",\r\n\t\"data\":\"WO\/fTbdARsB1Rg3tS4ISwNG4cWDRk3JZDSbP32iDdeMP7UFouS...\", \r\n\t\"signature\": \"MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkg...\", \r\n\t\"header\": {\r\n\t\t\"transactionId\": \"c162557e7ae1c69a47583bc2364d1a3e531428d13fb664032f9e09fa37381fc1\", \r\n\t\t\"ephemeralPublicKey\": \"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEMeuRqVEOZAQ...\", \r\n\t\t\"publicKeyHash\": \"tBGp1mEoHLiHwfOkazpKVbf3cMKmVS98PGufUJ2Q3ys=\"\r\n\t}\r\n}" //This is only a sample token and will not pass validation. You should substitute this with an actual payment token returned from Apple Pay (PKPaymentToken.paymentData). //The gateway considers this value to be a string, NOT JSON itself. The parenthesis are a part of the string. } } } }, "transaction": { "source": "INTERNET" } }
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0314", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "46465", "time": "101534", "transactionIdentifier": "447345902", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TESTMERCHANT", "order": { "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2023-03-14T10:15:33.819Z", "currency": "USD", "id": "844205983", "lastUpdatedTime": "2023-03-14T10:15:34.265Z", "merchantAmount": 30.10, "merchantCategoryCode": "1234", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.10, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00, "walletProvider": "APPLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED", "gatewayRecommendation": "PROCEED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2023-03-14T10:15:34.265Z", "timeOfRecord": "2023-03-14T10:15:33.930Z", "transaction": { "acquirer": { "batch": 20230314, "date": "0314", "id": "SYSTEST_ACQ_S2I", "merchantId": "12345678", "transactionId": "447345902" }, "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "USD", "id": "950596203", "receipt": "307310046465", "source": "INTERNET", "stan": "46465", "terminal": "1111", "type": "AUTHORIZATION" }, "version": "71" }
Descifrar el token de pago
Puede descifrar el token de pago en su servidor, en lugar de proporcionar el token de pago para el descifrado al motor de pagos. En este caso, tendrá que asumir la responsabilidad de almacenar las credenciales de cifrado y ejecutar el descifrado.
- En la confirmación de pago, envíe el token de pago cifrado devuelto por Apple Pay a su servidor.
- Descifre el token de pago en su servidor con su clave privada. Consulte los pasos de descifrado aquí.
- Proporcione las claves de datos de pago del token descifrado en los campos de transacción correspondientes, en la solicitud Authorize/Pay o Update Session.
Clave JSON de Apple PayCampo de solicitud de API correspondienteDescripciónapplicationPrimaryAccountNumber sourceOfFunds.provided.card.number El número de cuenta principal específico del dispositivo (es decir, token o DPAN) de la tarjeta que financia esta transacción. applicationExpirationDate sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.yearFecha de vencimiento del applicationPrimaryAccountNumber. cardholderName sourceOfFunds.provided.card.nameOnCard (Opcional) El nombre del titular de la tarjeta. currencyCode order.currency El código de moneda ISO 4217 para la transacción. transactionAmount order.amount El monto del pedido. paymentDataType sourceOfFunds.provided.card.
devicePayment.cryptogramFormatEl formato del criptograma. Configure esto en 3DSECURE. onlinePaymentCryptogram sourceOfFunds.provided.card.devicePayment.
onlinePaymentCryptogramCriptograma en formato 3DSecure. eciIndicator sourceOfFunds.provided.card.devicePayment.
eciIndicatorProporcione el indicador de comercio electrónico (ECI), si está disponible. - Además de los campos anteriores, incluya estos en la solicitud Authorize/Pay o Update Session y envíelos al motor de pagos.
- transaction.source=INTERNET
- order.walletProvider=APPLE_PAY
- device.mobilePhoneModel: (Opcional) el identificador del dispositivo móvil utilizado para iniciar el pago.
- posTerminal.location: puede especificar
PAYER_TERMINAL_OFF_PREMISES
oPAYER_TERMINAL_ON_PREMISES
. Si no proporciona un valor, se utilizaPAYER_TERMINAL_OFF_PREMISES
:
Aquí hay una solicitud Authorization de muestra en REST, donde los valores del token de pago descifrado se proporcionan al motor de pagos.
{ "apiOperation": "AUTHORIZE", "order": { "amount": "30.10", "currency": "USD", "walletProvider": "APPLE_PAY" }, "sourceOfFunds": { "provided": { "card": { "number": "512345000000X008", Replace "X" with "0" "expiry": { "month": "01", "year": "39" }, "devicePayment": { "cryptogramFormat": "3DSECURE", "onlinePaymentCryptogram": "IA/8pdiWftSsxpFT6wABoDABhgA=", "eciIndicator": "20" } } }, "type": "CARD" }, "device": { "ani": "12341234" }, "transaction": { "source": "INTERNET" } }
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0329", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "287916", "time": "005723", "transactionIdentifier": "260113124", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "TEST_MERCHANT", "order": { "amount": 30.1, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "ESTIMATED", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2022-03-29T00:57:22.553Z", "currency": "USD", "id": "C999903", "lastUpdatedTime": "2022-03-29T00:57:23.813Z", "merchantAmount": 30.1, "merchantCategoryCode": "1234", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.1, "totalCapturedAmount": 0, "totalDisbursedAmount": 0, "totalRefundedAmount": 0, "walletProvider": "APPLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-03-29T00:57:23.813Z", "timeOfRecord": "2022-03-29T00:57:22.675Z", "transaction": { "acquirer": { "batch": 20220329, "date": "0329", "id": "TESTACQUIRER", "merchantId": "123463", "transactionId": "260113124" }, "amount": 30.1, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "USD", "id": "1", "receipt": "208800287916", "source": "INTERNET", "stan": "287916", "terminal": "12333", "type": "AUTHORIZATION" }, "version": "71" }
Probando la integración de Apple Pay
Puede probar su integración con el motor de pagos en producción usando su perfil de pruebas del negocio y un FPAN admitidos proporcionado por Apple para pruebas de sandbox.
Debe configurar su aplicación para utilizar el entorno de sandbox de Apple Pay con su perfil de pruebas del negocio del motor de pagos. Cuando el pagador selecciona una tarjeta en Apple Pay, la aplicación genera un token de pago en modo de prueba.
Si va a descifrar el token de pago, utilice el DPAN del token descifrado para realizar transacciones de prueba.
Si el motor de pagos descifra el token de pago, se debe facilitar un certificado firmado de Apple y cargarlo en el motor de pagos por medio de Merchant Administration en producción utilizando su perfil de pruebas del negocio del motor de pagos. El motor de pagos utiliza el certificado para descifrar el token de pago.
Como la tarjeta de Apple Pay siempre está cambiando, Mastercard Gateway no puede sincronizarse con los cambios realizados en un negocio y mantener el sistema para las transacciones aprobadas. Por lo tanto, siempre se rechazará.
Apple Pay a través de Mobile SDK
El Mobile SDK le ayuda a desarrollar una aplicación móvil que aceptará pagos digitales mediante el Mastercard Gateway. El motor de pagos ofrece soporte para Apple Pay mediante el Mobile SDK. Haga clic aquí para ver las pautas de integración de Mobile SDK para la plataforma iOS.