Hello everyone,
I'm working on integrating Apple Pay on the web for my Laravel-based website, aiming to offer a smooth payment experience directly on the site. I've carefully gone through the official Apple documentation and several third-party resources, and I've implemented the initial setup for Apple Pay Web.
However, I've hit a roadblock regarding the payment token verification process. It appears that Apple Pay Web requires a third-party payment processor, such as Stripe or PayPal, to handle the verification of the payment token and complete the transaction. Unfortunately, I don't currently have an account with any of these services and would prefer to avoid relying on an external provider.
I’m wondering if there's any alternative approach to achieve this integration without using a third-party service. Specifically, is there any way for Apple Pay to process payments directly through the website, similar to the "Tap to Pay" feature on iPhone?
My goal is to enable a streamlined payment solution without needing a Stripe, PayPal, or similar account. Any insights, resources, or examples from anyone who's faced a similar scenario would be greatly appreciated.
Thanks for your help!
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
Hi,
I'm working on implementing Apple Pay on the Web.
I noticed, both on my web but also on official Apple Pay on the Web Demo page (https://applepaydemo.apple.com/apple-pay-js-api) when you're sending request for recurring payment, it takes much longer to get response from Apple server (even in onpaymentauthorized method) than when using regular payment.
You can test on the page mentioned above. When you authorise test card with basic payment it's pretty fast, but when you do authorisation with test card for recurring payment (or Deferred or Automatic Reload) "processing payment" is much longer.
Is there a reason why is this and is there a way to speed it up?
Thank you.
Kind regards,
Zoran
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentrequest/3955945-multitokencontexts
According to this document, I know that I can initialize a multiTokenContexts when initializing ApplePayPaymentRequest.
But I am now facing a tricky problem. If the user's order does not require multiTokenContexts, then I will not initialize this field when I first make ApplePayPaymentRequest. When the user is in the payment process, I may update multiTokenContexts. But this time, the update is not allowed, ApplePay will be cancelled and the payment will be closed.
For example, if the user's address in Apple Pay is different, I need to update multiTokenContexts to support the payment of goods to multiple merchants, which will generate an update of multiTokenContexts. MultiTokenContexts can be updated in the onshippingcontactselected method.
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaysession/1778009-onshippingcontactselected
My question is that from the beginning, there was no multiTokenContexts to update multiTokenContexts in onshippingcontactselected, which would cause the user to close the payment and need to manually click to pay again.
This user experience is not very friendly. Is there a better way for me to go from no multiTokenContexts to multiTokenContexts without interrupting the user's payment process?
Hello,
I am currently testing an Adyen integration with Sylius and need to verify Apple Pay with Cartes Bancaires in the sandbox environment. Could you please advise how Cartes Bancaires can be tested in Apple Pay Sandbox (e.g. cards details)?
Thank you in advance for your guidance.
Best regards,
Grzegorz
Team,
We are currently checking out on Apple Pay using ALL and MRU as currencies. We have authorized the payment via Touch ID; however, we are not receiving the onPaymentAuthorized event.
Could you please confirm if Apple Pay supports ALL and MRU currencies? We have confirmed that it works with other currencies.
Thank you!
Topic:
App & System Services
SubTopic:
Apple Pay
Body:
Hello,
We are currently implementing iOS order verification and have encountered an issue. Some of the receipts we verify return with an empty in_app array, which makes it impossible to determine whether there is a valid in-app purchase.
Below is the code we’re using for verification and the result we receive:
Code Example:
public function iosVerifyReceipt($receipt, $password = '', $sandbox = false)
{
$url = $sandbox ? 'https://sandbox.itunes.apple.com/verifyReceipt' : 'https://buy.itunes.apple.com/verifyReceipt';
if (empty($password)) {
$data = json_encode(['receipt-data' => $receipt]);
} else {
$data = json_encode(['receipt-data' => $receipt, 'password' => $password]);
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($ch);
$result = json_decode($result, true);
$result = $result ?? [];
$result['sandbox'] = $sandbox;
if ($result['status'] != 0) {
Log::warning('ios verify receipt failed', ['receipt' => $receipt, 'result' => $result, 'sandbox' => $sandbox]);
if ($result['status'] == 21007) {
return $this->iosVerifyReceipt($receipt, $password, true);
}
}
return $result;
}
// Order validation check
if (empty($result) || $result['status'] != 0) {
throw new BadRequestHttpException("Ios Order Verify Error");
}
$appItemId = $result['receipt']['app_item_id'] ?? "";
if ($appItemId != MY_APP_ID) {
throw new BadRequestHttpException("Ios Order Verify Error");
}
$inApp = array_filter($result['receipt']['in_app'] ?? [], function ($item) use ($transactionId, $order) {
return $item['transaction_id'] == $transactionId && $item['product_id'] == $order->getProductId();
});
if (empty($inApp)) {
throw new BadRequestHttpException("Ios Order Verify Error");
}
Array
(
[receipt] => Array
(
[receipt_type] => Production
[adam_id] => *
[app_item_id] => *
[bundle_id] => *
[application_version] => *
[download_id] => *
[version_external_identifier] => *
[receipt_creation_date] => 2025-02-11 04:06:47 Etc/GMT
[receipt_creation_date_ms] => *
[receipt_creation_date_pst] => 2025-02-10 20:06:47 America/Los_Angeles
[request_date] => 2025-02-11 15:54:56 Etc/GMT
[request_date_ms] => *
[request_date_pst] => 2025-02-11 07:54:56 America/Los_Angeles
[original_purchase_date] => 2025-02-11 04:02:41 Etc/GMT
[original_purchase_date_ms] => *
[original_purchase_date_pst] => 2025-02-10 20:02:41 America/Los_Angeles
[original_application_version] => 5511
[preorder_date] => 2025-01-17 21:12:28 Etc/GMT
[preorder_date_ms] => *
[preorder_date_pst] => 2025-01-17 13:12:28 America/Los_Angeles
[in_app] => Array
(
)
)
[environment] => Production
[status] => 0
[sandbox] =>
)
Problem Description:
• We are noticing that in some orders, the in_app array is returned as empty. This causes difficulty in verifying the presence of in-app purchases.
• Our validation logic assumes that if in_app is empty, the order is invalid, but we would like clarification on whether this is correct or if such a scenario is normal under certain conditions.
Actions Taken:
• We have reviewed Apple’s documentation and other related resources, but no clear explanation is given about when in_app might be empty.
• Can we safely rely on an empty in_app array to consider the order invalid, or should we investigate further for potential issues like delays or errors during the verification process?
We would appreciate your guidance on how to handle such cases. Thank you for your support!
Hi everyone.
I'm having a problem to register a new domain using the Salesforce Commerce Cloud.
Internally, commerce has a plugin that allows me to register my domain with Apple. It works for dev environments.
But now, I'm trying to register my production domain, which uses Akamai, and it is returning error 403 when Apple tries to 'verify' my domain.
My guess is that Akami is blocking something request from Apple.
So, I'd like to know if all requests from Apple to verify my domain use something that allows me to identify these requests, and then, I can create a rule in Akamai to allow this request.
I noticed that one of the information sent in Apple request is:
User-Agent: oslopartner Client 1.0
Is this agent variable or fixed? If it is fixed, I'll try to use it as parameter to identify the Apple requests on Akamai side.
Any other idea will be appreciated.
Thanks in advance
we could see that could see that test cards are available for adding Debit/Credit Cards to Apple Wallet.
https://developer.apple.com/apple-pay/sandbox-testing/
However, we are unable to find a way to add balance to Apple Cash in sandbox environment.
Hello,
We are integrating Apple Wallet functionality using the Thales SDK. While we’ve successfully implemented In-App provisioning, we are encountering an issue with the Wallet Extension.
I followed the documentation provided here to implement the Apple Wallet Extension:
https://developer.dbp.thalescloud.io/docs/d1-developer-portal/ab10ea4059dx1-apple-wallet-extension
I’ve implemented everything as per the guide, but I’m still unable to see my app logo in the Wallet Extension under "From Apps on Your iPhone."
Could anyone help identify what might be missing or point me in the right direction to resolve this issue.
Thanks!
Hello,
I am following up on my previous feedback (Feedback ID: FB17175593) regarding the in-app provisioning failure for Apple Pay. In that report, I detailed errors encountered during the card addition process (notably issues related to a missing teamID and cryptographic material errors). Could you please provide an update on the investigation progress? I appreciate your assistance and look forward to your response.
Hello,
I am experiencing an issue with the Apple Pay capability on my App ID.
I have created a Merchant ID.
I enabled Apple Pay in the App ID configuration and linked it to the merchant.
However, sometimes when I revisit the App ID in the Apple Developer portal, the Apple Pay capability appears disabled, even though I saved it.
This happens intermittently; at some times the capability is correctly shown as enabled, and other times it disappears.
Context:
I am using Expo Managed Workflow with EAS Build for iOS.
The issue prevents the provisioning profile from including Apple Pay, which causes Stripe isPlatformPaySupported function to return false on ios devices.
Attached:
Screenshots of the App ID page showing Apple Pay enabled and disabled.
Could you please advise why the capability is not being consistently saved, and how to ensure it stays enabled?
Thank you,
While troubleshooting Tap to Pay on iPhone, it is essential that the developer is able to collect logs on their device and check those logs for error messages. This is also essential when reporting issues to Apple. To gather the required data for your own debugging as well as reporting issues, please perform the following steps on the test device:
Install the Tap to Pay profile on your iPhone.
Reproduce the issue and make a note of the timestamp when the issue occurred, while optionally capturing screenshots or video.
Gather a sysdiagnose on the same iPhone.
Create a Feedback Assistant report with the following information:
The bundle ID
The serial number of the device.
For iOS, open Settings > General > About (tap and hold to copy).
The SEID (Secure Element Identifier) of the device, represented as a HEX encoded string.
For iOS, open Settings > General > About > SEID (tap and hold to copy).
The sysdiagnose gathered after reproducing the issue.
The timestamp (including timezone) of when the issue was reproduced.
Screenshots or videos of errors and unexpected behaviors (optional).
Submitting Your Feedback
After your submission to Feedback Assistant is complete, please respond to your post with the Feedback ID. Once received, I can begin my investigation and determine if this issue is caused by an error within your app, a configuration issue within your developer account, app configuration, or an underlying system bug.
Cheers,
Paris X Pinkney | WWDR | DTS Engineer
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,
For one of my projects, I am using the Web Drop-in component of Adyen PSP on a Salesforce B2B Commerce site. One of the payment methods is Apple Pay. The payment method is rendered, but the Apple Pay button is not clickable. We tried debugging it but could not identify the root cause. Could you advise how this issue can be fixed?
Thanks
Topic:
App & System Services
SubTopic:
Apple Pay
I am attempting to verify my domain
https://technoq.genesistechnologies.tech
for use with Apple Pay Merchant ID. However, when I attempt verification, the process fails with the message:
“Domain verification failed.”
Unfortunately, no additional details are provided.
I have already completed the following steps:
Downloaded the verification file apple-developer-merchantid-domain-association.txt.
Placed it in the .well-known directory as instructed.
Confirmed that it is publicly accessible at:
https://technoq.genesistechnologies.tech/.well-known/apple-developer-merchantid-domain-association.txt
Verified that a valid SSL certificate is configured for the domain.
Could you please advise on why the verification might be failing and what additional steps I should take to resolve this issue?
Hello,
We are developing Apple pay with In-app provisioning, we are an agent of payment for a bank in France. We have already configured all the entitlements, and we think we have correctly configured things with our PNO
It's a react native app and we are able to follow the flow that opens the native dialogue, show the card, then retrieve the Terms & Conditions but when we click accept we get the error: "Could not add card"
we're experiencing exactly the same problem described in this other thread: https://forums.developer.apple.com/forums/thread/765832
In the logs we see the response:
{
errorCode = 40456;
statusCode = 500;
}
Our PNO swears they have configured their system in the right way. They only have 3 fields that they have configured as follows:
associated application identifier: {team_id}.{bundle_id}
associated store identifier: {adam_id}
application launch url: {app_name}://
Are these correct?
Attaching the details of a request and response
request.txt
response.txt
We reached out to the Apple Pay team who said we should talk to Technical support.
Can somebody help us please? We are stuck at the moment and we really need to make this work. We can provide all the details of the syslog output if needed
many thanks in advance!
Thomas
Topic:
App & System Services
SubTopic:
Apple Pay
Hello,
We’re seeing an issue where the Apple Pay button is visible in Safari but not clickable for certain users, while it works normally for others. This happens on our site (https://store-qa2.enphase.com/
) as well as on other sites for the same affected users.
Currently, we display the Apple Pay button based on the following condition:
Boolean(window.ApplePaySession) && ApplePaySession.canMakePayments();
For affected users, the button shows up as expected, but it’s not interactive. All users (both affected and unaffected) are on the latest versions of Safari and macOS/iOS.
Could someone clarify what additional conditions Safari/Apple Pay requires for the button to be fully functional? And under what circumstances could it be visible but not clickable?
Topic:
App & System Services
SubTopic:
Apple Pay
Hi,
I'm making changes in boarding pass through my webService and I changing Seat information but Wallet is not highlighting this information.
Am I doing wrong? What do I need to do? Do need I inform anything?
The request I do to silent push notification:
apns-priority: 5
apns-topic: pass.****
apns-push-type: background
{ "aps": { "content-available": "1" } }
Images links (before/after changes)
https://ibb.co/0sPkbSZ
https://ibb.co/rZR1jcC
https://ibb.co/BCZKF1h
https://ibb.co/zxQNGWW
we are currently using the requestAutomaticPassPresentationSuppression API in my app. to prevent the Wallet interface from appearing when an NFC/RF reader is detected during active app usage.
Recently, a new transit card supporting Express Mode (T-money Transit Card) was released in Korea, and we are seeing an increasing number of users enabling Express Mode.
However, this has introduced an issue where users are unable to use the BLE-based functionality we provide via our widget. Specifically, when the user taps our widget, it triggers a BLE signal broadcast for approximately 10 seconds. In this scenario, when the user brings their iPhone close to our reader, Express Mode is activated before the BLE interaction can be established. This prevents the BLE signal from being successfully received and processed.
We would like to ask:
Is it possible to suppress Express Mode behavior (similar to requestAutomaticPassPresentationSuppression) even when the app is launched via a widget interaction?
Alternatively, is there any way to delay or defer Express Mode activation temporarily when launching from a widget or during BLE communication?
We would appreciate any guidance or best practices you can share regarding this scenario.
Thank you.
Topic:
App & System Services
SubTopic:
Apple Pay
Is there a way to determine if the same underlying card was used in multiple Apple Pay payments? Is there any sort of FPAN ID, fingerprint or card ID that would be the same between Apple Pay payments that used the same card?
Could it be the "ApplePayPaymentPass"?
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentpass
Topic:
App & System Services
SubTopic:
Apple Pay