Apple Pay
Introduction to Apple Pay
Apple Pay™ is a digital wallet that streamlines card payments, enabling swift and effortless transactions without the need to repeatedly input card information. Apple securely stores the card data. This option is compatible with specific browsers and Apple devices, including phones and computers. For a comprehensive list of supported countries and devices, refer to the official Apple website.
The description below concerns making the service available in a mobile app or by running the Apple Pay application directly from the website of the payment recipient (e-store).
Apple Pay Configuration
To enable Apple Pay payments within your mobile app or on a website, you'll need to start by obtaining an Apple Development Account and applying for the Apple Developer Program. The approval process can take a few days, as indicated in the Initiating Apple Pay documentation. Once approved, you can proceed with the following steps:
- create a Merchant ID,
- create an Apple Pay Payment Processing Certificate,
- create an Apple Pay Merchant Identity - applies only to web integration,
- validate the domain - applies only to web integration.
If you do not wish to use Web integration, you may skip the last two steps.
Creating a Merchant ID
To create a Merchant ID, follow these steps:
- Log on to your Apple Developer account.
- Select Certificates, IDs & Profiles.
- Select Identifiers.
- Add a new Merchant ID by selecting the + sign in the top right of the screen.
- Enter an ID and description, and select Continue.
- Select Register to confirm the data entered.
Creating an Apple Pay Payment Processing Certificate
Before creating certificate please (select: I am a merchant > Integration > Other question?) and ask for CSR file which is required in below process.
To create a Payment Processing Certificate identifier, follow these steps:
- Log on to your Apple Developer account.
- Select Certificates, IDs & Profiles.
- Select Identifiers.
- Select the Merchant ID that you have created, and select Edit. You can make your search easier by using the 5.Merchant IDs filter at the top right of the screen.
- In the Apple Pay Payment Processing Certificate section, select Create Certificate.
- On the next screen select Continue.
- Take received CSR file from the PayU IT support department and upload it to the site, selecting Choose File and then Continue.
- Download the generated certificate.
- Send the downloaded certificate (the file apple_pay.cer) to the (select: I am a merchant > Integration > Other question?) department.
Validating a Domain
This applies only to web integration.
To validate a domain, follow these steps:
- Log on to your Apple Developer account.
- Select Certificates, IDs & Profiles.
- Select Identifiers.
- Select the Merchant ID that you have created, and select Edit. You can make your search easier by using the Merchant IDs filter at the top right of the screen.
- In the Merchant Domains section, select Add Domain.
- Enter the name of your domain and select Continue.
Notes
The domain must support HTTPS. Check if the server settings are in accordance with Apple guidelines.
- Download the file apple-developer-merchantid-domain-association.txt.
Notes
Download the file only once, before performing domain validation! Repeated download will generate new file content which may result in error in the domain validation process.
- Save the downloaded file on the server, in the location given by Apple.
- Select Verify.
Creating an Apple Pay Merchant Identity Certificate
This applies only to web integration.
To create an Apple Pay Merchant Identity Certificate, follow these steps:
- Log on to your Apple Developer account.
- Select Certificates, IDs & Profiles.
- Select Identifiers.
- Select the Merchant ID that you have created, and select Edit. You can make your search easier by using the Merchant IDs filter at the top right of the screen.
- In the Apple Pay Merchant Identity Certificate section, select Create Certificate.
- In order to prepare the CSR file, follow the steps described on the Apple website, and then select Continue.
- Copy the generated CSR file, by selecting Choose File and then Continue.
- Download the generated certificate (merchant_id.cer) and open it in the Keychain Access application on a Mac computer.
- In Keychain Access, select the imported certificate and export it to .p12 format (Personal Information Exchange).
- (optional) Run the command:
If you prefer .p12 format for the certificates and you find it easier to manage them in this format, you can skip this step.
openssl pkcs12 -in merchant_id.p12 -out merchant_id.pem -nodes -clcerts
- Copy the created certificate in the prefered format onto the server. It will be needed to create an Apple Pay Payment Session in the store validation process, during payment creation.
Apple Pay Integration
When utilizing multi-currency payments along with Apple Pay on your checkout page, it's important to note that when creating an Apple Pay Session, you should employ the amount following currency conversion. This calculated amount is detailed in the described process for multi-currency payments, ensuring accurate integration and payment processing.
Apple Pay iOS Integration
For mobile app integration with Apple Pay, refer to the guidelines provided on Apple Developer.
To simplify the integration process, you can leverage the technical documentation available for the PayU | Mobile SDK.
Apple Pay Web Integration
To integrate a website with Apple Pay, follow the instructions provided on the Apple Developer platform.
When creating an Apple Pay Session, note that PayU supports only Visa and MasterCard payment cards under the 3DS protocol, and thus requires correct parameterization of the created Apple Pay request (regardless of whether you are using the Apple Pay JS API or the Payment Request API):
var request = {
...,
supportedNetworks: ['visa', 'masterCard'],
merchantCapabilities: ['supports3DS'],
...
}
Additionally, please be aware that for each session you create, it is necessary to manage the following events:
- onvalidatemerchant - While handling this event, note that the request to create an Apple Pay Payment Session must originate from the server component of your Web application.
- onpaymentauthorized - In this event, Apple will provide a
paymentData
object (in JSON format) as a response. This object contains a securely encrypted Apple Pay token, which can be accessed in theevent.payment.token.paymentData
field.
An example Apple Pay Token looks like this:
{
"version": "EC_v1",
"data": "DjI8Ez7nPhVo742aGEzABz/TfxCPt9LSdf2/h+0xIgVJbi3fQqd4lv3ogoTI3SQ7vZrDAWI8g2lbd5sflXBHc0z+wSeybsCcqZB3n1edRFXU7+6DYmdhFFWWCejwUc6XZWmsSaVNEQf+Kc0SeYrj8Eskdapj8bYX/QXxXSPqS4IKSjB+f3O0gUXSq7LK/jA9dl+BbWW0l3gXERU6n5rcYndO5rnjiwNUpnm7EMIMfNU+IPbsubpL82kbL2MdMJB1grel03J4JKld6G0pFSmjR2mF/xBY/yKkADRhoQkVlDRicuKVMpdRXXbIQjw/yRkLv/u8iy1wXI5YmEBB+W4QpPYsuxys94gMPaKhcaEK/OaT099aFrNBezbuLMTcTzbhXOpPwWn9pkAK0eZNOQ==",
"signature": "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",
"header": {
"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMzlWOx8Xo8pXlOvzYONy+gvUy59ZOeuCov3kzc7fESczZTyvmA9dU9AdVMFaYyfCXlMG5oedi3Wy4yubqfxtg==",
"publicKeyHash": "xrJqUFO2jN5edGS8iETkfNXtwqnwSqRUUrQJBysFpZ8=",
"transactionId": "aa0b77fbb4f64cd3e5deef65177938b2d836e0d7d93d58000d8d54cfca19ae13"
}
}
Creating an Apple Pay Order
To charge a payment card stored in Apple Pay, you must place an extended payMethods object in an OrderCreateRequest.
The payMethods.payMethod
object must contain the authorizationCode
field, the value of which is the Apple Pay token parameter encoded using the Base64 function. The field payMethod.value
should have the value jp, and payMethod.type
should have the value PBL.
If you're using the PayU SDK, you don't need to encode the Apple Pay token. The SDK automatically handles the encoding for you.
"payMethods": {
"payMethod": {
"value": "jp",
"type": "PBL",
"authorizationCode": "ewogICJ2ZXJzaW9uIjogIkVDX3YxIiwKICAiZGF0YSI6ICJEakk4RXo3blBoVm83NDJhR0V6QUJ6L1RmeENQdDlMU2RmMi9oKzB4SWdWSmJpM2ZRcWQ0bHYzb2dvVEkzU1E3dlpyREFXSThnMmxiZDVzZmxYQkhjMHord1NleWJzQ2NxWkIzbjFlZFJGWFU3KzZEWW1kaEZGV1dDZWp3VWM2WFpXbXNTYVZORVFmK0tjMFNlWXJqOEVza2RhcGo4YllYL1FYeFhTUHFTNElLU2pCK2YzTzBnVVhTcTdMSy9qQTlkbCtCYldXMGwzZ1hFUlU2bjVyY1luZE81cm5qaXdOVXBubTdFTUlNZk5VK0lQYnN1YnBMODJrYkwyTWRNSkIxZ3JlbDAzSjRKS2xkNkcwcEZTbWpSMm1GL3hCWS95S2tBRFJob1FrVmxEUmljdUtWTXBkUlhYYklRancveVJrTHYvdThpeTF3WEk1WW1FQkIrVzRRcFBZc3V4eXM5NGdNUGFLaGNhRUsvT2FUMDk5YUZyTkJlemJ1TE1UY1R6YmhYT3BQd1duOXBrQUswZVpOT1E9PSIsCiAgInNpZ25hdHVyZSI6ICJNSUFHQ1NxR1NJYjNEUUVIQXFDQU1JQUNBUUV4RHpBTkJnbGdoa2dCWlFNRUFnRUZBRENBQmdrcWhraUc5dzBCQndFQUFLQ0FNSUlENWpDQ0E0dWdBd0lCQWdJSWFHRDJtZG5NcHc4d0NnWUlLb1pJemowRUF3SXdlakV1TUN3R0ExVUVBd3dsUVhCd2JHVWdRWEJ3YkdsallYUnBiMjRnU1c1MFpXZHlZWFJwYjI0Z1EwRWdMU0JITXpFbU1DUUdBMVVFQ3d3ZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3hFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVE1CNFhEVEUyTURZd016RTRNVFkwTUZvWERUSXhNRFl3TWpFNE1UWTBNRm93WWpFb01DWUdBMVVFQXd3ZlpXTmpMWE50Y0MxaWNtOXJaWEl0YzJsbmJsOVZRelF0VTBGT1JFSlBXREVVTUJJR0ExVUVDd3dMYVU5VElGTjVjM1JsYlhNeEV6QVJCZ05WQkFvTUNrRndjR3hsSUVsdVl5NHhDekFKQmdOVkJBWVRBbFZUTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFZ2pEOXE4T2M5MTRnTEZEWm0wVVM1amZpcVFIZGJMUGdzYzFMVW1lWStNOU92ZWdhSmFqQ0hrd3ozYzZPS3BiQzlxK2hrd05GeE9oNlJDYk9sUnNTbGFPQ0FoRXdnZ0lOTUVVR0NDc0dBUVVGQndFQkJEa3dOekExQmdnckJnRUZCUWN3QVlZcGFIUjBjRG92TDI5amMzQXVZWEJ3YkdVdVkyOXRMMjlqYzNBd05DMWhjSEJzWldGcFkyRXpNREl3SFFZRFZSME9CQllFRkFJa01BdWE3dTFHTVpla3Bsb3Bua0p4Z2h4Rk1Bd0dBMVVkRXdFQi93UUNNQUF3SHdZRFZSMGpCQmd3Rm9BVUkvSkp4RStUNU84bjVzVDJLR3cvb3J2OUxrc3dnZ0VkQmdOVkhTQUVnZ0VVTUlJQkVEQ0NBUXdHQ1NxR1NJYjNZMlFGQVRDQi9qQ0J3d1lJS3dZQkJRVUhBZ0l3Z2JZTWdiTlNaV3hwWVc1alpTQnZiaUIwYUdseklHTmxjblJwWm1sallYUmxJR0o1SUdGdWVTQndZWEowZVNCaGMzTjFiV1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUhSb1pXNGdZWEJ3YkdsallXSnNaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjMlVzSUdObGNuUnBabWxqWVhSbElIQnZiR2xqZVNCaGJtUWdZMlZ5ZEdsbWFXTmhkR2x2YmlCd2NtRmpkR2xqWlNCemRHRjBaVzFsYm5SekxqQTJCZ2dyQmdFRkJRY0NBUllxYUhSMGNEb3ZMM2QzZHk1aGNIQnNaUzVqYjIwdlkyVnlkR2xtYVdOaGRHVmhkWFJvYjNKcGRIa3ZNRFFHQTFVZEh3UXRNQ3N3S2FBbm9DV0dJMmgwZEhBNkx5OWpjbXd1WVhCd2JHVXVZMjl0TDJGd2NHeGxZV2xqWVRNdVkzSnNNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVBCZ2txaGtpRzkyTmtCaDBFQWdVQU1Bb0dDQ3FHU000OUJBTUNBMGtBTUVZQ0lRRGFIR091aStYMlQ0NFI2R1ZwTjdtMm5FY3I2VDZzTWpPaFo1TnVTbzFlZ3dJaEFMMWErL2hwODhES0owc3YzZVQzRnhXY3M3MXhtYkxLRC9RSjNtV2FnckpOTUlJQzdqQ0NBbldnQXdJQkFnSUlTVzB2dnpxWTJwY3dDZ1lJS29aSXpqMEVBd0l3WnpFYk1Ca0dBMVVFQXd3U1FYQndiR1VnVW05dmRDQkRRU0F0SUVjek1TWXdKQVlEVlFRTERCMUJjSEJzWlNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEVUTUJFR0ExVUVDZ3dLUVhCd2JHVWdTVzVqTGpFTE1Ba0dBMVVFQmhNQ1ZWTXdIaGNOTVRRd05UQTJNak0wTmpNd1doY05Namt3TlRBMk1qTTBOak13V2pCNk1TNHdMQVlEVlFRRERDVkJjSEJzWlNCQmNIQnNhV05oZEdsdmJpQkpiblJsWjNKaGRHbHZiaUJEUVNBdElFY3pNU1l3SkFZRFZRUUxEQjFCY0hCc1pTQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRFVE1CRUdBMVVFQ2d3S1FYQndiR1VnU1c1akxqRUxNQWtHQTFVRUJoTUNWVk13V1RBVEJnY3Foa2pPUFFJQkJnZ3Foa2pPUFFNQkJ3TkNBQVR3RnhHRUdkZGtoZFVhWGlXQkIzYm9nS0x2M251dVRlQ04vRXVUNFROVzFXWmJOYTRpMEpkMkRTSk9lN29JL1hZWHpvakxkcnRtY0w3STZDbUUvMVJGbzRIM01JSDBNRVlHQ0NzR0FRVUZCd0VCQkRvd09EQTJCZ2dyQmdFRkJRY3dBWVlxYUhSMGNEb3ZMMjlqYzNBdVlYQndiR1V1WTI5dEwyOWpjM0F3TkMxaGNIQnNaWEp2YjNSallXY3pNQjBHQTFVZERnUVdCQlFqOGtuRVQ1UGs3eWZteFBZb2JEK2l1LzB1U3pBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUI4R0ExVWRJd1FZTUJhQUZMdXczcUZZTTRpYXBJcVozcjY5NjYvYXl5U3JNRGNHQTFVZEh3UXdNQzR3TEtBcW9DaUdKbWgwZEhBNkx5OWpjbXd1WVhCd2JHVXVZMjl0TDJGd2NHeGxjbTl2ZEdOaFp6TXVZM0pzTUE0R0ExVWREd0VCL3dRRUF3SUJCakFRQmdvcWhraUc5Mk5rQmdJT0JBSUZBREFLQmdncWhrak9QUVFEQWdObkFEQmtBakE2ejNLRFVSYVpzWWI3TmNOV3ltSy85QmZ0MlE5MVRhS092dkdjZ1Y1Q3Q0bjRtUGViV1orWTFVRU5qNTNwd3Y0Q01ESXQxVVFoc0tNRmQyeGQ4emc3a0dmOUYzd3NJVzJXVDhaeWFZSVNiMVQ0ZW4wYm1jdWJDWWtoWVFhWkR3bVNIUUFBTVlJQmpUQ0NBWWtDQVFFd2dZWXdlakV1TUN3R0ExVUVBd3dsUVhCd2JHVWdRWEJ3YkdsallYUnBiMjRnU1c1MFpXZHlZWFJwYjI0Z1EwRWdMU0JITXpFbU1DUUdBMVVFQ3d3ZFFYQndiR1VnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3hFekFSQmdOVkJBb01Da0Z3Y0d4bElFbHVZeTR4Q3pBSkJnTlZCQVlUQWxWVEFnaG9ZUGFaMmN5bkR6QU5CZ2xnaGtnQlpRTUVBZ0VGQUtDQmxUQVlCZ2txaGtpRzl3MEJDUU14Q3dZSktvWklodmNOQVFjQk1Cd0dDU3FHU0liM0RRRUpCVEVQRncweE9EQTVNVEV4TWpFek1qaGFNQ29HQ1NxR1NJYjNEUUVKTkRFZE1Cc3dEUVlKWUlaSUFXVURCQUlCQlFDaENnWUlLb1pJemowRUF3SXdMd1lKS29aSWh2Y05BUWtFTVNJRUlCTmFyZW1CRFIwRDFjZTJYQXVteDQ4L2NCUVRtVFVDSUtPb3JTNjkxSGFsTUFvR0NDcUdTTTQ5QkFNQ0JFZ3dSZ0loQU1vMktKTWpqVEJNK3V0bGNEWGhocjl0SndLV1BOU0NBN240RlZ6QU5UaHdBaUVBcXN4VFRtOTJkdzBaTzM4WWF4blp1M1dtUmE4SG5WTThLc3hoaERjZU95QUFBQUFBQUFBPSIsCiAgImhlYWRlciI6IHsKICAgICJlcGhlbWVyYWxQdWJsaWNLZXkiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWk16bFdPeDhYbzhwWGxPdnpZT055K2d2VXk1OVpPZXVDb3Yza3pjN2ZFU2N6WlR5dm1BOWRVOUFkVk1GYVl5ZkNYbE1HNW9lZGkzV3k0eXVicWZ4dGc9PSIsCiAgICAicHVibGljS2V5SGFzaCI6ICJ4ckpxVUZPMmpONWVkR1M4aUVUa2ZOWHR3cW53U3FSVVVyUUpCeXNGcFo4PSIsCiAgICAidHJhbnNhY3Rpb25JZCI6ICJhYTBiNzdmYmI0ZjY0Y2QzZTVkZWVmNjUxNzc5MzhiMmQ4MzZlMGQ3ZDkzZDU4MDAwZDhkNTRjZmNhMTlhZTEzIgogIH0KfQ=="
}
}
Subsequent processing of the request follows the standard procedure outlined in the Create a New Order section.
Given that orders paid using the Apple Pay method are settled similarly to standard card payments, it is worth considering the integration of the service transaction data retrieve. This approach enables the distinction between cards entered via the PayU form and those acquired from Apple Pay.
Testing
The Apple Pay payment method is also accessible within the sandbox environment. During the integration process, we recommend establishing a distinct Merchant ID (e.g., ending with ".test") along with the corresponding set of certificates.
Since Apple Pay isn't the default payment method, please contact the after your sandbox environment registration, but prior to commencing integration involving the Apple Pay payment method. Upon contact, you will also receive the CSR (Certificate Signing Request) file tailored for the Sandbox environment.
Before beginning to perform tests in the sandbox, please also read the Apple sandbox testing instructions.
We recommend using the card numbers:
- 5204 2477 5000 1471
- 4761 1200 1000 0492
since these are configured in the PayU sandbox to enable payments to be completed successfully.
Status Codes
HTTP Status Code | Status Code | Status Desc | Description |
---|---|---|---|
400 Bad request | ERROR_VALUE_INVALID | Bad Request: Amount is different in request and token. | Amount in Apple Pay token is not equal to amount in totalAmount. |
400 Bad request | ERROR_VALUE_INVALID | Bad Request: Transactions with same id found. | Apple Pay token was already used. |
400 Bad request | ERROR_VALUE_INVALID | Bad Request: Apple Pay token too old. | Apple Pay token validity time expired. |
400 Bad request | ERROR_VALUE_INVALID | Bad Request: Currency is different in request and token. | Cuerrncy code in Apple Pay token is inconsistent with request. |
400 Bad request | ERROR_VALUE_INVALID | Apple Pay Certificate used for token creation unknown to PayU. | Verification of the publicKeyHash value is required. If the error still occurs contact our support. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: header is empty. | header field is missing in the Apple token or it is empty. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: data is empty. | data field is missing in the Apple token or it is empty. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: signature is empty. | signature field is missing in the Apple token or it is empty. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: ephemeralPublicKey is empty. | ephemeralPublicKey field is missing in the Apple token or it is empty. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: publicKeyHash is empty. | publicKeyHashfield is missing in the Apple token or it is empty. |
400 Bad request | ERROR_VALUE_INVALID | Invalid apple pay token: transactionId is empty. | transactionId field is missing in the Apple token or it is empty. |