Skip to main content

What is Apple Pay?

Apple Pay is a mobile and web payment service from Apple that lets customers pay using their iPhone, iPad, Apple Watch, or Mac. Instead of entering card details, customers authenticate with Face ID, Touch ID, or a passcode. Benefits for merchants:
  • Faster checkout: Customers don’t need to type card details
  • Higher conversion: Easier checkout means more completed purchases
  • Better security: Apple handles card data—you never see it
  • Mobile-friendly: Great experience on iOS devices
How it works: Apple creates an encrypted token representing the payment method. You send this token to Revolv3, and the payment processor decrypts it to process the payment.

Scope of Revolv3’s Apple Pay Support

Revolv3 currently supports Apple Pay in a token processing scenario only. This means Revolv3 does not provide the Apple Pay button, merchant validation, or any client-side Apple Pay SDK functionality. Merchants must implement Apple Pay directly using Apple’s official APIs on their website or mobile application and obtain the Apple Pay payment token after the customer authorizes the payment. Once the token is generated, it can be sent to Revolv3 as part of the payment request. Revolv3 forwards the token to the configured payment processor, which decrypts the token using the merchant’s Apple Pay payment processing certificate and processes the transaction. In this model, Revolv3 acts as the secure transport layer for the Apple Pay token, while Apple handles token generation and the payment processor performs decryption and authorization.

Prerequisites

Before you can accept Apple Pay through Revolv3, you need to complete these setup steps:

Step 1: Obtain a Certificate Signing Request (CSR)

  1. Contact your payment processor (e.g., Nuvei, WorldPay, Adyen)
  2. Request a CSR file from them
  3. The processor will provide the CSR file needed for certificate generation

Step 2: Generate a Payment Processing Certificate

  1. Use the CSR file from your processor
  2. Log in to your Apple Developer account
  3. Generate a Payment Processing Certificate (.cer file)
  4. Follow Apple’s official documentation for detailed instructions
What this certificate does: It allows the payment processor to decrypt Apple Pay tokens. Apple requires this for security.

Step 3: Register the Certificate with Your Processor

  1. Submit the generated .cer file to your payment processor
  2. The processor registers it on their end
  3. This enables them to decrypt Apple Pay tokens for your merchant account

Step 4: Get Confirmation

  1. Wait for confirmation from your processor
  2. Verify that Apple Pay is enabled for your merchant account
  3. Once confirmed, you can start accepting Apple Pay payments
Note: If you’ve already implemented Apple Pay buttons on your website, you may already have this certificate. Check with your processor to see if it can be reused.

How Apple Pay Works with Revolv3

The Flow

  1. Customer taps Apple Pay button on your website or app
  2. Apple authenticates the customer (Face ID, Touch ID, or passcode)
  3. Apple returns a token containing encrypted payment data
  4. You send the token to Revolv3 in your payment request
  5. Revolv3 forwards to processor which decrypts the token
  6. Payment is processed using the decrypted card information
Key point: You never see or handle the actual card number. Apple and the processor handle all the sensitive data.

Getting the Apple Pay Token

When a customer completes Apple Pay authentication, you’ll receive a token from Apple. Here’s how to get it:

JavaScript Example

session.onpaymentauthorized = (evt) => {
  const token = evt.payment.token;  // ⭐ This is what you send to Revolv3
  // Send token to your backend, then to Revolv3
}
What the token looks like: It’s a JSON object containing encrypted payment data. You’ll send this entire token to Revolv3.

Sending Apple Pay Token to Revolv3

Include the Apple Pay token in your payment request using the ApplePay object:
{
  "PaymentMethod": {
    "BillingAddress": {
      "AddressId": null,
      "AddressLine1": "2001 Main Street",
      "AddressLine2": "",
      "City": "Santa Ana",
      "State": "CA",
      "PostalCode": "90000",
      "Country": "USA"
    },
    "BillingFirstName": "John",
    "BillingLastName": "Smith",
    "ApplePay": {
      "ApplePayToken": "eyJwYXltZW50RGF0YSI6eyJkYXRhIjoibUVzam10QUdUeU5DRzB0VmtlRGFMVHAweGJFUkN1NXBocU94dGxPVDdJYURKUDVFN3I4MmtGNjJCMEF0dktGOURtY014eUlZTGNFaXFxM1N5YlNzblQwWVgwaXJkS3FRdDduZjRBNHlEWXVRcVVJeHVJREUxejJFTENPeWFiZ3p5TVp5cnM2VVhDRERva0w3UkpPeGFhQWgzRHdMVVFMc2hLMndibkk4VnVXRmNDVmNsQ2tBQnQzVjNZSFdodWV6U3pVTFozSnJkZ0xmblJQQ1ZoeVNHZXBDL2xWYXVUT1dqc2taVGJmQ2JmKytsaitUQmtjV2NJTy91cy96SVVsczBRMlFwTWQweEIyRXJiNTNtM24vUHBiQy90UjNWdnFXWDVDcVIxWVgxM1FzYU11VXhZT24vUy9weHk0Y1lQem1Fem5PalpZRllGbmNHbmhzWFIwNUxRanhYVmlEaldJY283dzF0VzhVWGNlNmkzb2NUQk95NGZMTWtFWWFwaUpKUlVwcjM3V09LNUhjZU9VcDVBPT0iLCJzaWduYXR1cmUiOiJNSUFHQ1NxR1NJYjNEUUVIQXFDQU1JQUNBUUV4RFRBTEJnbGdoa2dCWlFNRUFnRXdnQVlKS29aSWh2Y05BUWNCQUFDZ2dEQ0NBK1F3Z2dPTG9BTUNBUUlDQ0ZuWW9ieXE5T1BOTUFvR0NDcUdTTTQ5QkFNQ01Ib3hMakFzQmdOVkJBTU1KVUZ3Y0d4bElFRndjR3hwWTJGMGFXOXVJRWx1ZEdWbmNtRjBhVzl1SUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHlNVEEwTWpBeE9UTTNNREJhRncweU5qQTBNVGt4T1RNMk5UbGFNR0l4S0RBbUJnTlZCQU1NSDJWall5MXpiWEF0WW5KdmEyVnlMWE5wWjI1ZlZVTTBMVk5CVGtSQ1QxZ3hGREFTQmdOVkJBc01DMmxQVXlCVGVYTjBaVzF6TVJNd0VRWURWUVFLREFwQmNIQnNaU0JKYm1NdU1Rc3dDUVlEVlFRR0V3SlZVekJaTUJNR0J5cUdTTTQ5QWdFR0NDcUdTTTQ5QXdFSEEwSUFCSUl3L2F2RG5QZGVJQ3hRMlp0RkV1WTM0cWtCM1d5ejRMSE5TMUpubVBqUFRyM29HaVdvd2g1TU05M09qaXFXd3Zhdm9aTURSY1RvZWtRbXpwVWJFcFdqZ2dJUk1JSUNEVEFNQmdOVkhSTUJBZjhFQWpBQU1COEdBMVVkSXdRWU1CYUFGQ1B5U2NSUGsrVHZKK2JFOWloc1A2SzcvUzVMTUVVR0NDc0dBUVVGQndFQkJEa3dOekExQmdnckJnRUZCUWN3QVlZcGFIUjBjRG92TDI5amMzQXVZWEJ3YkdVdVkyOXRMMjlqYzNBd05DMWhjSEJzWldGcFkyRXpNREl3Z2dFZEJnTlZIU0FFZ2dFVU1JSUJFRENDQVF3R0NTcUdTSWIzWTJRRkFUQ0IvakNCd3dZSUt3WUJCUVVIQWdJd2diWU1nYk5TWld4cFlXNWpaU0J2YmlCMGFHbHpJR05sY25ScFptbGpZWFJsSUdKNUlHRnVlU0J3WVhKMGVTQmhjM04xYldWeklHRmpZMlZ3ZEdGdVkyVWdiMllnZEdobElIUm9aVzRnWVhCd2JHbGpZV0pzWlNCemRHRnVaR0Z5WkNCMFpYSnRjeUJoYm1RZ1kyOXVaR2wwYVc5dWN5QnZaaUIxYzJVc0lHTmxjblJwWm1sallYUmxJSEJ2YkdsamVTQmhibVFnWTJWeWRHbG1hV05oZEdsdmJpQndjbUZqZEdsalpTQnpkR0YwWlcxbGJuUnpMakEyQmdnckJnRUZCUWNDQVJZcWFIUjBjRG92TDNkM2R5NWhjSEJzWlM1amIyMHZZMlZ5ZEdsbWFXTmhkR1ZoZFhSb2IzSnBkSGt2TURRR0ExVWRId1F0TUNzd0thQW5vQ1dHSTJoMGRIQTZMeTlqY213dVlYQndiR1V1WTI5dEwyRndjR3hsWVdsallUTXVZM0pzTUIwR0ExVWREZ1FXQkJRQ0pEQUxtdTd0UmpHWHBLWmFLWjVDY1lJY1JUQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0R3WUpLb1pJaHZkalpBWWRCQUlGQURBS0JnZ3Foa2pPUFFRREFnTkhBREJFQWlCMG9iTWsyMEpKUXczVEoweFFkTVNBalpvZlNBNDZoY1hCTmlWbU1sKzhvd0lnYVRhUVU2djFDMXBTK2ZZQVRjV0tyV3hRcDlZSWFEZVE0S2M2MEI1SzJZRXdnZ0x1TUlJQ2RhQURBZ0VDQWdoSmJTKy9PcGphbHpBS0JnZ3Foa2pPUFFRREFqQm5NUnN3R1FZRFZRUUREQkpCY0hCc1pTQlNiMjkwSUVOQklDMGdSek14SmpBa0JnTlZCQXNNSFVGd2NHeGxJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1STXdFUVlEVlFRS0RBcEJjSEJzWlNCSmJtTXVNUXN3Q1FZRFZRUUdFd0pWVXpBZUZ3MHhOREExTURZeU16UTJNekJhRncweU9UQTFNRFl5TXpRMk16QmFNSG94TGpBc0JnTlZCQU1NSlVGd2NHeGxJRUZ3Y0d4cFkyRjBhVzl1SUVsdWRHVm5jbUYwYVc5dUlFTkJJQzBnUnpNeEpqQWtCZ05WQkFzTUhVRndjR3hsSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNUk13RVFZRFZRUUtEQXBCY0hCc1pTQkpibU11TVFzd0NRWURWUVFHRXdKVlV6QlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJQQVhFWVFaMTJTRjFScGVKWUVIZHVpQW91L2VlNjVONEkzOFM1UGhNMWJWWmxzMXJpTFFsM1lOSWs1N3VnajlkaGZPaU10MnUyWnd2c2pvS1lUL1ZFV2pnZmN3Z2ZRd1JnWUlLd1lCQlFVSEFRRUVPakE0TURZR0NDc0dBUVVGQnpBQmhpcG9kSFJ3T2k4dmIyTnpjQzVoY0hCc1pTNWpiMjB2YjJOemNEQTBMV0Z3Y0d4bGNtOXZkR05oWnpNd0hRWURWUjBPQkJZRUZDUHlTY1JQaytUdkorYkU5aWhzUDZLNy9TNUxNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdId1lEVlIwakJCZ3dGb0FVdTdEZW9WZ3ppSnFraXBuZXZyM3JyOXJMSktzd053WURWUjBmQkRBd0xqQXNvQ3FnS0lZbWFIUjBjRG92TDJOeWJDNWhjSEJzWlM1amIyMHZZWEJ3YkdWeWIyOTBZMkZuTXk1amNtd3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01CQUdDaXFHU0liM1kyUUdBZzRFQWdVQU1Bb0dDQ3FHU000OUJBTUNBMmNBTUdRQ01EclBjb05SRnBteGh2czF3MWJLWXIvMEYrM1pEM1ZOb282KzhaeUJYa0szaWZpWTk1dFpuNWpWUVEyUG5lbkMvZ0l3TWkzVlJDR3dvd1YzYkYzek9EdVFaLzBYZkN3aGJaWlB4bkpwZ2hKdlZQaDZmUnVaeTVzSmlTRmhCcGtQQ1pJZEFBQXhnZ0dJTUlJQmhBSUJBVENCaGpCNk1TNHdMQVlEVlFRRERDVkJjSEJzWlNCQmNIQnNhV05oZEdsdmJpQkpiblJsWjNKaGRHbHZiaUJEUVNBdElFY3pNU1l3SkFZRFZRUUxEQjFCY0hCc1pTQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRFVE1CRUdBMVVFQ2d3S1FYQndiR1VnU1c1akxqRUxNQWtHQTFVRUJoTUNWVk1DQ0ZuWW9ieXE5T1BOTUFzR0NXQ0dTQUZsQXdRQ0FhQ0JrekFZQmdrcWhraUc5dzBCQ1FNeEN3WUpLb1pJaHZjTkFRY0JNQndHQ1NxR1NJYjNEUUVKQlRFUEZ3MHlOVEF6TVRJeE5USTRORFZhTUNnR0NTcUdTSWIzRFFFSk5ERWJNQmt3Q3dZSllJWklBV1VEQkFJQm9Rb0dDQ3FHU000OUJBTUNNQzhHQ1NxR1NJYjNEUUVKQkRFaUJDQkY5ckt2OGZLZmZtdjNyS1JrRmNHdmtXb2ZpZEpiMjZGTk1iVTc0MUVzTkRBS0JnZ3Foa2pPUFFRREFnUkhNRVVDSUJ4aFh0V3EvRkxEVVZhMVMwVUZIVGhzSWsvNk8zL1FQWE5lZUlpdjAxb2RBaUVBakVxR0pROTdPRGEyd3M1UVJJVkU5SC9kaUY2NzBhL1ZUYndST1RzSHpUZ0FBQUFBQUFBPSIsImhlYWRlciI6eyJwdWJsaWNLZXlIYXNoIjoiZWFIbkRIUmVDT0xDazQ5RkFKbTVmOWhVM2didTFxUitxRFdUc29GdU9PMD0iLCJlcGhlbWVyYWxQdWJsaWNLZXkiOiJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUV1bjI1ODNUQXNnRXlBYTk5SERueEZ0amlxSWNpditVK1NNKy84c1p0Ymo3Ykxxc1orSzBLNk5iWWRnd2JZcmw0VWU4bVJad3hJb1luZU54aTl4cm1adz09IiwidHJhbnNhY3Rpb25JZCI6IjQyMGE5MDJhMDRjZGE2OGFhZmE3NDRkYjUwZjBkOTdkMGRjYmFiMzdiMDM2MTBiNDZkMTZhOGRkZjBkNjgwOWYifSwidmVyc2lvbiI6IkVDX3YxIn0sInBheW1lbnRNZXRob2QiOnsiZGlzcGxheU5hbWUiOiJNYXN0ZXJDYXJkIDAwNDkiLCJuZXR3b3JrIjoiTWFzdGVyQ2FyZCIsInR5cGUiOiJjcmVkaXQifSwidHJhbnNhY3Rpb25JZGVudGlmaWVyIjoiNDIwYTkwMmEwNGNkYTY4YWFmYTc0NGRiNTBmMGQ5N2QwZGNiYWIzN2IwMzYxMGI0NmQxNmE4ZGRmMGQ2ODA5ZiJ9"
    }
  },
  "Invoice": {
    "Amount": {
      "value": 10.00
    }
  }
}

Important: Token Encoding

The Apple Pay token must be Base64 encoded before including it in your JSON request. What this means:
  1. Apple gives you a token (JSON object)
  2. You need to Base64 encode it
  3. Send the encoded string to Revolv3
Example in JavaScript:
const applePayToken = evt.payment.token;  // From Apple
const encodedToken = btoa(JSON.stringify(applePayToken));  // Base64 encode
// Send encodedToken to Revolv3

Understanding the Apple Pay Token

The token from Apple contains:
  • Payment data: Encrypted card information
  • Signature: Cryptographic signature for verification
  • Header: Public key and transaction information
  • Payment method info: Card network and type (for display)
You don’t need to parse it—just send the entire encoded token to Revolv3. The processor handles decryption.

Error Handling

Processor Not Configured

If your processor doesn’t support Apple Pay or it’s not configured, you’ll get a 400 error:
{
  "message": "Merchant does not have configured processor for payment method type ApplePay"
}
What this means:
  • Apple Pay isn’t enabled for your merchant account
  • Your processor doesn’t support Apple Pay
  • The certificate isn’t properly configured
What to do:
  • Contact Revolv3 Support to enable Apple Pay
  • Verify your processor supports Apple Pay
  • Check that your certificate is properly registered

Best Practices

  1. Encode the token: Always Base64 encode the Apple Pay token before sending
  2. Handle errors gracefully: Show user-friendly messages if Apple Pay fails
  3. Test thoroughly: Test in sandbox before going to production
  4. Keep certificate current: Renew your Payment Processing Certificate when it expires
  5. Mobile-first: Apple Pay works best on iOS devices—optimize for mobile

Common Questions

Q: Do I need to decrypt the token? A: No, send it to Revolv3 as-is (after Base64 encoding). The processor decrypts it. Q: Can I use Apple Pay on Android? A: No, Apple Pay only works on Apple devices (iPhone, iPad, Mac, Apple Watch). Q: What if the processor doesn’t support Apple Pay? A: Contact Revolv3 to see which processors support it, or consider switching processors. Q: Do I need a separate certificate for each processor? A: Yes, each processor requires its own certificate. If you use multiple processors, you’ll need multiple certificates. Q: Can I store Apple Pay tokens like regular payment methods? A: Yes, Revolv3 can create a paymentMethodId from Apple Pay tokens that you can reuse.

Next Steps