Integration Types
Otras características
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
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.
Para aceptar pagos con Apple Pay:
Puede integrar Apple Pay en su aplicación móvil o en la página de pago de su sitio web mediante Direct Payment.
Si quiere descifrar el token de pago en su servidor, consulte Descifrar el token de pago.
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 en PKPaymentToken.paymentData
sourceOfFunds.provided.card.devicePayment.paymentToken [REST][NVP]
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" }
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.
Clave JSON de Apple Pay |
Campo de solicitud de API correspondiente |
Descripción |
---|---|---|
applicationPrimaryAccountNumber | 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.year |
Fecha 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.cryptogramFormat |
El formato del criptograma. Configure esto en 3DSECURE. |
onlinePaymentCryptogram | sourceOfFunds.provided.card.devicePayment. onlinePaymentCryptogram |
Criptograma en formato 3DSecure. |
eciIndicator | sourceOfFunds.provided.card.devicePayment. eciIndicator |
Proporcione el indicador de comercio electrónico (ECI), si está disponible. |
PAYER_TERMINAL_OFF_PREMISES
o PAYER_TERMINAL_ON_PREMISES
. Si no proporciona un valor, se utiliza PAYER_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" }
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.
Si las transacciones tienen el estado APPROVED o DECLINED, entonces el motor de pagos fue capaz de procesar sus transacciones de prueba con éxito.
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.