Hi, I’ve been trying to integrate Apple Pay, but for some reason, the payment button is not showing up.
The project is built with Laravel 11 and Vue. I imported the script as follows:
<script crossorigin crossorigin
src="https://applepay.cdn-apple.com/jsapi/1.latest/apple-pay-sdk.js"
></script>
Then I added the following the steps:
<style>
apple-pay-button {{
--apple-pay-button-width: --apple-pay-button-width: 150px;;
--apple-pay-button-height: --apple-pay-button-height: 30px;;
--apple-pay-button-border-radius: --apple-pay-button-border-radius: 3px;;
--apple-pay-button-padding: --apple-pay-button-padding: 0px 0px;;
--apple-pay-button-box-sizing: border-box;
}
</style>
<apple-pay-button buttonstyle="black" type="plain" locale="en-US"></apple-pay-button>
I followed all the steps from the official Apple Pay demo:
https://applepaydemo.apple.com/
I also configured the Content Security Policy (CSP) to allow all necessary resources. However, when I test my integration, the button doesn’t appear. I’ve checked the console, but there are no errors.
At the same time, I have my certificate imported into the Keychain, and I’ve completed the entire process of creating both the certificate and the private key. However, when I try to validate the session using the certificate and key with Apple’s API, I get an error:
400 The SSL certificate error
https://apple-pay-gateway-cert.apple.com/paymentservices/
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I'm currently integrating Apple Pay with my payment provider, and I'm encountering a signature validation error during the payment flow.
Here's the setup:
I’ve verified that my Merchant Certificate is valid, and I'm able to initialize the Apple Pay session without any issues. Also this curl works fine
The Payment Processing Certificate was created by my PSP.
PSP claims that the payment token signature is invalid during the transaction phase, which prevents payment completion.
The parsed signature starts like this
0:d=0 hl=2 l=inf cons: SEQUENCE
2:d=1 hl=2 l= 9 prim: OBJECT :pkcs7-signedData
13:d=1 hl=2 l=inf cons: cont [ 0 ]
15:d=2 hl=2 l=inf cons: SEQUENCE
17:d=3 hl=2 l= 1 prim: INTEGER :01
20:d=3 hl=2 l= 13 cons: SET
22:d=4 hl=2 l= 11 cons: SEQUENCE
24:d=5 hl=2 l= 9 prim: OBJECT :sha256
35:d=3 hl=2 l=inf cons: SEQUENCE
37:d=4 hl=2 l= 9 prim: OBJECT :pkcs7-data
48:d=4 hl=2 l= 0 prim: EOC
50:d=3 hl=2 l=inf cons: cont [ 0 ]
52:d=4 hl=4 l= 995 cons: SEQUENCE
56:d=5 hl=4 l= 904 cons: SEQUENCE
60:d=6 hl=2 l= 3 cons: cont [ 0 ]
62:d=7 hl=2 l= 1 prim: INTEGER :02
65:d=6 hl=2 l= 8 prim: INTEGER :16634C8B0E305717
75:d=6 hl=2 l= 10 cons: SEQUENCE
77:d=7 hl=2 l= 8 prim: OBJECT :ecdsa-with-SHA256
87:d=6 hl=2 l= 122 cons: SEQUENCE
89:d=7 hl=2 l= 46 cons: SET
91:d=8 hl=2 l= 44 cons: SEQUENCE
93:d=9 hl=2 l= 3 prim: OBJECT :commonName
98:d=9 hl=2 l= 37 prim: UTF8STRING :Apple Application Integration CA - G3
I'm looking for guidance on what could be causing this signature failure.
Does anyone know what else I can check regarding the merchant or payment processing certificates, private keys, or key usage that might cause Apple Pay signature validation to fail, even if the session initializes successfully? Domains are also verified.
Any help or suggestions would be greatly appreciated.
Hi Team,
I have merchant session object -
{"epochTimestamp":1748333121032,"expiresAt":1748336721032,"merchantSessionIdentifier":"SSH7CCD205FEEDD45AD84B77374D098B335_916523AAED1343F5BC5815E12BEE9250AFFDC1A17C46B0DE5A943F0F94927C24","nonce":"2d18eab4","merchantIdentifier":"8535F497EC92999BAD63C6F213F0F32DEEB5DBF8A0A91007F6C1128537B6FB19","domainName":"f7071159c1tst-store.occa.ocs.oraclecloud.com","displayName":"DDF Test","signature":"308006092a864886f70d010702a0803080020101310d300b0609608648016503040201308006092a864886f70d0107010000a080308203e43082038ba003020102020859d8a1bcaaf4e3cd300a06082a8648ce3d040302307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3231303432303139333730305a170d3236303431393139333635395a30623128302606035504030c1f6563632d736d702d62726f6b65722d7369676e5f5543342d53414e44424f5831143012060355040b0c0b694f532053797374656d7331133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d030107034200048230fdabc39cf75e202c50d99b4512e637e2a901dd6cb3e0b1cd4b526798f8cf4ebde81a25a8c21e4c33ddce8e2a96c2f6afa1930345c4e87a4426ce951b1295a38202113082020d300c0603551d130101ff04023000301f0603551d2304183016801423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b304506082b0601050507010104393037303506082b060105050730018629687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65616963613330323082011d0603551d2004820114308201103082010c06092a864886f7636405013081fe3081c306082b060105050702023081b60c81b352656c69616e6365206f6e207468697320636572746966696361746520627920616e7920706172747920617373756d657320616363657074616e6365206f6620746865207468656e206170706c696361626c65207374616e64617264207465726d7320616e6420636f6e646974696f6e73206f66207573652c20636572746966696361746520706f6c69637920616e642063657274696669636174696f6e2070726163746963652073746174656d656e74732e303606082b06010505070201162a687474703a2f2f7777772e6170706c652e636f6d2f6365727469666963617465617574686f726974792f30340603551d1f042d302b3029a027a0258623687474703a2f2f63726c2e6170706c652e636f6d2f6170706c6561696361332e63726c301d0603551d0e041604140224300b9aeeed463197a4a65a299e4271821c45300e0603551d0f0101ff040403020780300f06092a864886f76364061d04020500300a06082a8648ce3d0403020347003044022074a1b324db4249430dd3274c5074c4808d9a1f480e3a85c5c1362566325fbca3022069369053abf50b5a52f9f6004dc58aad6c50a7d608683790e0a73ad01e4ad981308202ee30820275a0030201020208496d2fbf3a98da97300a06082a8648ce3d0403023067311b301906035504030c124170706c6520526f6f74204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3134303530363233343633305a170d3239303530363233343633305a307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004f017118419d76485d51a5e25810776e880a2efde7bae4de08dfc4b93e13356d5665b35ae22d097760d224e7bba08fd7617ce88cb76bb6670bec8e82984ff5445a381f73081f4304606082b06010505070101043a3038303606082b06010505073001862a687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65726f6f7463616733301d0603551d0e0416041423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b300f0603551d130101ff040530030101ff301f0603551d23041830168014bbb0dea15833889aa48a99debebdebafdacb24ab30370603551d1f0430302e302ca02aa0288626687474703a2f2f63726c2e6170706c652e636f6d2f6170706c65726f6f74636167332e63726c300e0603551d0f0101ff0404030201063010060a2a864886f7636406020e04020500300a06082a8648ce3d040302036700306402303acf7283511699b186fb35c356ca62bff417edd90f754da28ebef19c815e42b789f898f79b599f98d5410d8f9de9c2fe0230322dd54421b0a305776c5df3383b9067fd177c2c216d964fc6726982126f54f87a7d1b99cb9b0989216106990f09921d00003182018930820185020101308186307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553020859d8a1bcaaf4e3cd300b0609608648016503040201a08193301806092a864886f70d010903310b06092a864886f70d010701301c06092a864886f70d010905310f170d3235303532373038303532315a302806092a864886f70d010934311b3019300b0609608648016503040201a10a06082a8648ce3d040302302f06092a864886f70d01090431220420c11c8025910403d6691af195664f47b606df9ccb351237d0de4e7c31e8a5067b300a06082a8648ce3d04030204483046022100ea8d2bb74b4960f17e4e45b99fec3f0539565fd3169091c6b39fbfb3e11a952a022100a4a4a3ff6d91caf8fa7d9b18179e0cc2156c90d4f719ae52734b4799c2b1beea000000000000","operationalAnalyticsIdentifier":"DDF Test:8535F497EC92999BAD63C6F213F0F32DEEB5DBF8A0A91007F6C1128537B6FB19","retries":0,"pspId":"8535F497EC92999BAD63C6F213F0F32DEEB5DBF8A0A91007F6C1128537B6FB19"}
After sending this to session.compleMerchant I am getting the invalid access error.
Regards,
Varsha
We are implementing Apple Pay on our website, but we only sell services and would prefer that the shipping address section of the Apple Pay modal doesn't require the shipping address and just show the billing address. Is there any way to achieve this?
Bank Accounts details are outdated and status is stack on processing with error: "Your banking updates are processing, and you should see the changes in 24 hours. You won't be able to make any additional updates until then."
This is now stack for a few years since we activated a previous Apple developer account. we must change banking details as it holds up development of an app with in-app purchases.
Finance department has been contacted and they do not answer
What shall we do? senior support staff keep referring to finance department and is not helping
Topic:
App & System Services
SubTopic:
Apple Pay
Hello everyone,
I’m currently in the process of implementing Apple Pay on my company’s e-commerce website under a subscription model with recurring payments. I would appreciate some help in clarifying the following points:
Is the applicationPrimaryAccountNumber the DPAN and the merchantTokenIdentifier the MPAN? If not, which fields represent each one or how do I recognise them?
Is the onlinePaymentCryptogram used only for processing payments with the DPAN, or is it also involved when using the MPAN?
Is the onlinePaymentCryptogram single-use or does it have an expiration time? Or is it reusable with no limits?
According to Apple’s data policies, is it recommended for our servers to perform the payment token decryption (debundling), or should this only be handled by the payment gateway processor to stay compliant?
Below is the payment request I’m using for testing, along with the decrypted payment token returned for a test card:
Payment Request:
{
"countryCode": "US",
"currencyCode": "USD",
"merchantCapabilities": ["supports3DS", "supportsDebit", "supportsCredit"],
"supportedNetworks": ["visa", "masterCard", "amex", "discover"],
"requiredBillingContactFields": ["postalAddress", "name"],
"lineItems": [
{
"label": "Subtotal",
"amount": "9"
},
{
"label": "Taxes",
"amount": "1"
}
],
"total": {
"label": "Demo (Card is not charged)",
"amount": "10",
"type": "final",
"recurringPaymentIntervalUnit": "month"
},
"recurringPaymentRequest": {
"paymentDescription": "Recurring payment",
"regularBilling": {
"label": "Demo (Card is not charged)",
"amount": "10",
"type": "final",
"paymentTiming": "recurring",
"recurringPaymentIntervalUnit": "month"
},
"managementURL": "${window.location.origin}/api/managePaymentMethod"
}
}
Decrypted Payment Token:
{
"applicationPrimaryAccountNumber": "5204240494898922",
"applicationExpirationDate": "280630",
"currencyCode": "840",
"transactionAmount": 0,
"deviceManufacturerIdentifier": "050110030273",
"paymentDataType": "3DSecure",
"paymentData": {
"onlinePaymentCryptogram": "MCt5xR+VnQAAAAM/8mUjAAADFIA="
},
"merchantTokenIdentifier": "DM4MMC1US000000042e438d170774669844e732a41c28e97",
"merchantTokenMetadata": {
"cardMetadata": {
"longDescription": "Test Bank for MasterCard MTF",
"cardCountry": "US",
"shortDescription": "Test Bank 2",
"fpanSuffix": "0049"
},
"cardArt": [
{
"url": "https://nc-crt-smp-device-asset.apple.com:443/broker/v1/assets/174ce63257704d93b00aff8aa09ec0d5",
"name": "cardBackgroundCombined@2x.png",
"type": "image/png"
}
]
}
}
Thanks in advance for your help and guidance.
We are experiencing intermittent 403 Forbidden errors during Apple Pay on web merchant validation in our production and sandbox environment.
Has anyone else started seeing 403 Forbidden errors recently (since mid-2025)?
Why would merchant validation be sometimes successful and sometimes fail with 403?
Could this be related to new Apple Pay gateway changes or stricter validation rules?
Any additional debug steps or permanent solutions we should try?
Thank you.
Hi there,
is there a way, or a list of test cards, to simulate error on payment in an Apple Pay sandbox environment ?
I tried different cards mentioned here but every try was successful : https://developer.apple.com/apple-pay/sandbox-testing/
Topic:
App & System Services
SubTopic:
Apple Pay
Hi support,
Since June 26th 2025 we are experiencing an issue with the ApplePay SSL server certificate installed on our servers in Production environment.
We are facing an exception error during the initializing of a payment session while calling the url:
https://apple-pay-gateway.apple.com/paymentservices/startSession
The exception is Untrusted Server Certificate Chain:
javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: Untrusted Server Certificate Chain
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1915)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:306)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:300)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1577)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:213)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1010)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:946)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1034)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1343)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1370)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1354)
It seems that the issue occurs randomly: we are experiencing this exception on most of our payment transactions, but there are some cases of users that have correctly paid on our site using this method and in those cases this error did not appear.
We installed the new certificate on our servers on July 3rd 2025 and renewed on Aug 7th 2025.
The new certificate validity is:
Not Before: Aug 6 18:43:52 2025 GMT
Not After : Nov 4 18:08:57 2025 GMT
I must specify that this issue is blocking the correct placement of AppleyPay orders of our customers.
Can you please help us find the problem and a possible solution?
Topic:
App & System Services
SubTopic:
Apple Pay
During our Apple Pay integration testing, we encountered an issue that we're unsure how to resolve. Below are the steps we followed:
Created an Apple Pay sandbox test account for Raul and added a test card, following the documentation here: https://developer.apple.com/apple-pay/sandbox-testing/
Opened the Golfmanager platform and initiated a booking.
For payment, selected Apple Pay as the method.
Raul clicked the Apple Pay button on the Golfmanager UI.
He scanned the QR code using his iPhone, logged in with the test account.
Apple Pay began validating our merchant identity and retrieved the wallet token to proceed with payment.
The Apple Pay payment sheet appeared on Raul's iPhone, showing the card details and the amount requested by Golfmanager.
Suddenly, the Apple Pay sheet closed unexpectedly, and we have no insight into what went wrong or what might be missing on our end.
Here is the video: https://drive.google.com/file/d/1r-73edQ9eBZzXi6HoSYYGjKO8LbxBrZi/view?usp=drive_web
Does anyone have info about the Retention Messaging API. We've requested access to it, but there's no answer.
Topic:
App & System Services
SubTopic:
Apple Pay
Hi, we are implementing the push provisioning via the Apple Wallet Extension starting from the example at https://developer.apple.com/documentation/passkit/implementing-wallet-extensions.
To correctly manage the push provisioning on Apple Watch, specifically for a card tokenised in the iPhone but not in the Watch, we need to know if there is a connected Apple Watch to the iPhone.
We are using the following code from the Apple Wallet Extension example to detect whether there is a connected watch:
WCSession* session = [WCSession defaultSession];
session.delegate = delegate;
[session activateSession];
In the main target of the app, at the end of the activation the system correctly calls the delegate method:
session:activationDidCompleteWithState:error:
but we noticed it is not being called in the UI extension context (the one having NSExtensionPointIdentifier: com.apple.PassKit.issuer-provisioning.authorization).
We don't understand why the delegate is not being called in the UI extension, can you please help?
Thanks!
Steps to Reproduce:
Start with a card not added in the Apple Wallet app
Open the Apple Wallet app
Click on add card
Select the app to launch the Wallet Extension flow
The Apple Wallet Extension with UI is on screen and invokes the activateSession method, the delegate method is not invoked and session.isPaired returns "no".
Xcode Version
16.2
macOS Version
15.6.1 (24G90)
Feedback ID
FB20082564
We have an app and we want to add tap to pay for Apple Pay. We'd also like to become a certified Payment Service Provider. What is the process to become a certified PSP?
Topic:
App & System Services
SubTopic:
Apple Pay
We’ve an implementation of apple pay with asia pay as gateway .
We want to access that from external iframe . although we’ve been able to load the apple pay widget not able to validate merchant and tokenize in iframe.
Please let us know if apple pay with asia pay is available to be used within iframe.
I’m restructuring my business and want to remove Apple Pay. I use Woocommerce Square for payments. Do I do it in the Square dashboard or here? I honestly can’t remember how I set it up. I’m not a developer. I’m a farmer and work on my own website. Thanks!
'Company A' is scheduled to merge with its parent company, 'Company B'. Both A and B have Apple accounts.
A's account has one domain registered for Apple Pay integration, while Account B has no domain registered.
We attempted to register A’s domain under B’s account.
However, the notification 'Requested domain name has been verified previously.' appeared, and we could not complete the registration.
Please confirm whether it is correct that a domain already registered under Account A cannot be registered again under Account B.
If we cannot register same domain in two accounts, we believe that the domain registered under A's account must be deleted first and then registered under B's account.
In that case, will payments become unavailable immediately upon deletion of the domain, or will payments still be possible for a certain period of time after deletion?
In our testing, we found that payments were not blocked immediately, but we would like to confirm further.
We are concerned about the possibility of transaction failures during the short period between deleting the domain from A's Account and registering it under B's Account.
Topic:
App & System Services
SubTopic:
Apple Pay
Hey,
Please help us to know how to get our payments of sales with iOS app we have, since beginning, our amount is pending with them and despite sevarel attempts they are providing the real issue and solutions for matter. Please suggest how to fix this issue.
Topic:
App & System Services
SubTopic:
Apple Pay
We are an issuer attempting to implement In-App Provisioning of Payment Cards leveraging Mastercard MDES and have successfully obtained our entitlement from Apple, but have not received the documentation titled "Getting Started with Apple Pay In-App Provisioning, Verification & Security".
The latest copy I have found has been via Scribd for a version 3.0 from June 2020. I've tried contacting Apple Support and the In-App Provisioning Entitlements group but have had no luck.
Thank you!
Topic:
App & System Services
SubTopic:
Apple Pay
Hi,
We have app in which we take donations from people and send to non-profit organisations. I have read that Apple Pay can be integrated on non profit platforms to take donations, but we are middle man, we are not non profit .. we take donations, cut our platform fees and then sent to donations to non profit orgs.
My question is can we integrate Apple Pay in our iOS app to take donations from apple? as we have integrated Apple Pay on the web.
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
When I use my iPhone to scan the apple pay QR code in chrome, the url is https://applepaydemo.apple.com/apple-pay-js-api, I keep geting the "Service Unavailable" error.
Wonder know if you guys meet this error as well? Btw, the QR code feature needs IOS 18.