Apple Pay on iOS without the SDK
It is possible to use Apple Pay in an iOS app without our SDK. To learn how to integrate Apple Pay we recommend following Apple’s documentation.
The steps below will highlight the basics and focus on the interaction with our API. A full sample app is available in Apple’s developer documentation.
About this integration
Similar to our SDK integration this setup requires you to perform the following steps.
- Enable Apple Pay in your merchant dashboard.
- Sign up for an Apple Pay Developer account and register a payment processing certificate.
- Add the merchant ID and its processing certificate to your app.
Additionally, you will then need to implement the following.
- Render your own Apple Pay button.
- Create a session with the right merchant ID.
- Catch the Apple Pay token and pass it to our API for processing.
Enable Apple Pay
To enable Apple Pay, head over to your dashboard and then go to Connections -> Catalog -> Apple Pay.
Next, complete and submit the form to create a new Apple Pay service.
Register a certificate
To process Apple Pay in a mobile application you will need to register for an Apple Pay developer account and join the Apple developer program.
Once set up, you can generate a new Apple Pay processing certificate using the Gr4vy dashboard.
Go to Connections -> Apple Pay -> Certificates and click on Add certificate to start the process.
You will be prompted to provide a name and download a Certificate Signing Request (CSR).
Next, visit the Apple developer dashboard to generate a payment processing certificate.
- Create or select a Merchant ID to associate a payment processing certificate with.
- In the Apple Pay Payment Processing Certificate section click on Create Certificate.
- Select Choose File to upload the CSR you downloaded from the dashboard, and then Continue.
- Verify the certificate details and Download the signed certificate from Apple.
Next, go back to our dashboard and upload the signed certificate.
Add the certificate to your app
In order for your app to accept Apple Pay, you must set the same Apple Merchant ID in your application. In your Xcode project find the Signing & Capabilities in your project editor.
Select the same Merchant ID you used to register your payment certificate. Please ensure your provisioning profiles and signing certificates are updated to contain this ID.
Integrate Apple Pay
Display an Apple Pay button
An Apple Pay button can be displayed in a few different ways. Apple’s guide shows a code sample that checks if Apple Pay is enabled on the device and then adds the button directly to a view with code.
if let applePayButton = button {
let constraints = [
applePayButton.centerXAnchor.constraint(equalTo: applePayView.centerXAnchor),
applePayButton.centerYAnchor.constraint(equalTo: applePayView.centerYAnchor)
]
applePayButton.translatesAutoresizingMaskIntoConstraints = false
applePayView.addSubview(applePayButton)
NSLayoutConstraint.activate(constraints)
}
The sample app doesn’t display the add button if a device can’t accept payments due to hardware limitations, parental controls, or any other reasons.
Set the merchant ID
Once the button is clicked the guide requires you to set up a new payment request. In this step, set the
merchantIdentifier
to the merchant ID for the Apple Pay certificate you’ve registered in our merchant dashboard.
For example, if you registered a certificate for merchant ID merchant.com.example.demo
in the dashboard then set this same ID in your application code.
let paymentRequest = PKPaymentRequest()
paymentRequest.paymentSummaryItems = paymentSummaryItems
paymentRequest.merchantIdentifier = "merchant.com.example.demo"
...
Apple’s documentation has an extensive guide on setting up your iOS app to accept Apple Pay.
Create a transaction
Finally, once the Apple Pay transaction has been authorized by Apple, create a transaction with our API.
This API call could be made in your frontend code in Swift or Objective C, or the token could be sent to your backend for processing.
curl -X POST https://api.example.gr4vy.app/transactions \
-H "Authorization: bearer [JWT]"
-d '{
amount: 1299,
currency: "AU",
currency: "AUD",
payment_method: {
method: "applepay",
token: "[TOKEN]"
}
}'
In this example, the [TOKEN]
value is the token from the PKPayment object as returned by Apple Pay
in the paymentAuthorizationController(_:didAuthorizePayment:handler:)
method.
Common Issues
Was this page helpful?