Dear Apple Pay Support,
I am writing to request a refund of $1296.59 for a transaction made on September 23, 2024, with Express Oil Change & Tires Engineering. I paid for auto repair services which were not performed. I explained to the merchant the specific repairs my car needed, and they accepted payment with the understanding that these services would be completed. However, after paying, the agreed-upon repairs were not done.
This transaction depleted my savings. I am currently in my final semester of college, and having a working vehicle is essential for attending classes and completing my studies. The lack of promised repairs is creating a significant hardship and is impacting my ability to succeed academically. I have no family support system to fall back on financially; they are facing their own difficulties and I am unable to ask them for assistance.
After discovering the repairs were not completed, I contacted Express Oil Change & Tires Engineering on 9/23/2024 to request they rectify the situation and complete the repairs as originally promised. I explained the significant financial strain this placed on me, especially given the large sum of the purchase. They informed me they would not be able to complete the repairs without further charges.
I understand that Apple Pay acts as an intermediary for payments, and I would appreciate your assistance in contacting the merchant on my behalf to resolve this issue and secure a refund. If direct contact with the merchant is not possible, I request that you consider my difficult circumstances and grant a refund due to the fraudulent nature of this transaction.
Thank you for your time and consideration.
Sincerely,
Jason Joseph
5044102960
Apple Pay on the Web
RSS for tagApple Pay on the Web allows you to accept Apple Pay on your website using JavaScript-based APIs.
Posts under Apple Pay on the Web tag
138 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Maybe this is a strange question but I think it's better to ask this before trying it and see what happens; if we use the dpan or mpan of a recurring payment to make a charge on a date other than the one shown to the final customer, could the payment be made without any problem by the bank or financial institutions involved? Naturally I understand that this would mainly cause great anger to the customer and of course if this were the case this could be explained in the billing agreement, but the doubt is mainly based on whether it is possible to use a dpan/mpan for a payment other than that of the original subscription.
Hi,
I am trying to upload the Certificate Signing Request but its failing and showing this error:
CSR algorithm/size incorrect. Expected: RSA(2048)
Topic:
Code Signing
SubTopic:
Certificates, Identifiers & Profiles
Tags:
Wallet
Apple Pay on the Web
**Hi Apple Developer Community,
I’m currently integrating Apple Pay across multiple merchants for my e-commerce solution, and I’ve run into a significant challenge. Apple enforces a limit of 100 Merchant IDs per Developer Account, which is creating a bottleneck for my project.
My Questions:
1- Is there a way to increase the limit of Merchant IDs on a Developer Account?
2- Has anyone faced a similar challenge and found a workaround to handle integrations with more than 100 merchants?
3- Are there any plans from Apple to lift or adjust this restriction for businesses working with high volumes of merchants?
I’d appreciate any guidance, advice, or information from those who’ve encountered and resolved this issue.
Thank you for your help!
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Apple Pay on the Web
App Store Connect
Apple Pay
Hi to everyone looking for more information about recurring payments I wonder if there is any way to test (maybe by using some default event id) the merchant token event token detail endpoint, it would be very helpful for merchants if there was some configuration or event id that always returned some particular event, that way we could do a better testing process instead of doing all this with a production environment.
If there is any way to use some tool or sandbox to test this part of the process please tell us about it.
Hi. I have reviewed the process of integrating Apple Pay on the web, but I still don’t understand how to implement it. For example: I currently have software A and a payment website that my software provides to restaurants. So, how can I integrate Apple Pay on the restaurants' payment websites?
I read that to integrate, we need to register for a Merchant ID with Apple Pay. So, is it the restaurants or the software provider who should register?
Each restaurant will have a different website domain -> does that mean when registering the Merchant ID, the website domain is the payment website of each restaurant?
When Apple Pay provides the verification file, the sales software (i.e., the payment website) must help the restaurants upload that file to the payment website of each restaurant, right?
To verify if it is valid or not depends on Apple Pay, right? If it is valid, the Apple Pay payment button will be displayed, correct?
Hi,
I want to develop the fastest payment method for my user and preferably without the user also having a mobile app.
The dream is that it happens as easily as possible when the user/guest scans a pass from the wallet.
Hopefully the user just has to approve on the screen.
Can I attach card details/payment methods to a pass in the wallet?
Right now it is a unique QR code for each user, but can I change the pass type to 'tansit', 'loyalty' or 'membership'?
My system right now:
The customer/guest registers on a website and creates a pass and downloads it to the wallet.
The store has a PWA app to scan the customer's/guest's items.
My goal: The guest just scans the pass in the wallet and makes the transaction. Dont need an app or go back to the website/login where the person created the pass for the wallet.
Topic:
App & System Services
SubTopic:
Apple Pay
Tags:
Wallet
Apple Pay on the Web
Apple Pay
Tap to Pay on iPhone
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
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!
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
Hello there,
I have a couple of question about Apple Pay guidelines:
• if we offer Apple Pay payment method in our app, can we disable the selection (I mean the method selection NOT the Payment button!) IF certain condition happens? E.g. the user cannot select apple pay payment method because our basket is not ready yet.
• Are we forced to move the apple pay payment method on the top of our selection? E.g. Cards, Cash On Delivery, Coupon, Apple Pay --> Apple Pay, Cards, Cash On Delivery, Coupon
One last technical question:
• when we start the payment process we are gonna create the request and present the sheet BUT we have to call our backend for pre-authorization, is it allowed?
@objc private func applePayButtonTapped(sender: UIButton) {
// TODO: Is it allowed?
// We need to ask to our backend a pre-authorization and THEN procced with Apple Pay flow
// but this could be done ONLY after the user TAP on BUY with APPLE PAY and BEFORE
// paymentAuthorizationViewController is called.
// Are we compliant to do that?
if PKPaymentAuthorizationViewController.canMakePayments(usingNetworks: FakeData.paymentInfo()) {
let request = PKPaymentRequest()
request.blablabla = blabla
let authorizationViewController = PKPaymentAuthorizationViewController(paymentRequest: request)
if let viewController = authorizationViewController {
viewController.delegate = self
present(viewController, animated: true, completion: nil)
}
}
}
Thanks in advance :)
does anyone have an example of the decrypted payload for an interac payment would look like? Couldnt find an example within the apple documentation
We're currently evaluating Apple Pay as a payment method on our site. For Amex US credit card payments, we charge a payment fee. For other credit cards, there is no such fee.
However, for Apple Pay it seems we cannot configure this. What we currently tried is to implement onpaymentmethodselected. However, only the card type is part of the event, not the card network.
Example code:
session.onpaymentmethodselected = event => {
/* event.paymentMethod only contains {type: "credit"} */
console.log('onpaymentmethodselected', event.paymentMethod);
/* event.paymentMethod.network is therefore undefined, if we could have here 'amex', 'mastercard' etc, we could implement the payment fee we currently have*/
console.log('onpaymentmethodselected', event.paymentMethod.network);
session.completePaymentMethodSelection({});
};
Is there a way to access the network in this callback?
Or is there another way to implement payment fees with certain networks used via Apple Pay?
I am working in India office and working on Apple Pay integration through Adyen; however, I am facing challenges in making the Apple Pay button show up, even with Mac/Safari. The Apple Pay button shows up for my US colleagues !! Is there any wholistic and recommended settings that make Apple Pay development feasible from India ?
Hi. I have a few questions about using Apple's MPAN tokens. Since Apple doesn't provide MPAN tokens in the sandbox environment, I'm having trouble understanding the differences between the MPAN and DPAN flows. I'm guessing they're the exact same, except when we detect the MPAN we save some information so we can use it in future transactions. If that's correct, my questions are:
What information in the Apple Pay payment data indicates that it's an MPAN vs when it falls back to DPAN
Like DPAN, the MPAN can be found in applicationPrimaryAccountNumber? Or is it found in the merchantTokenIdentifier?
What is the bare minimum data needs to be stored in order for these merchant tokens be reused for future transactions?
Hi,
I'm trying to create merchant tokens in ApplePay sandbox environment, so then I can use them to invalidate token API call and lifecycle notifications testing.
When processing test payment I use Apple Pay payment request taken directly from Apple's demo website (I skipped non important part of JSON)
{
...
"recurringPaymentRequest": {
"paymentDescription": "A description of the recurring payment to display to the user in the payment sheet.",
"regularBilling": {
"label": "Recurring",
"amount": "4.99",
"paymentTiming": "recurring",
"recurringPaymentStartDate": "2023-08-11T11:20:32.369Z"
},
"trialBilling": {
"label": "7 Day Trial",
"amount": "0.00",
"paymentTiming": "recurring",
"recurringPaymentEndDate": "2023-08-11T11:20:32.369Z"
},
"billingAgreement": "A localized billing agreement displayed to the user in the payment sheet prior to the payment authorization.",
"managementURL": "https://applepaydemo.apple.com",
"tokenNotificationURL": "https://applepaydemo.apple.com"
},
...
}
Payment is successful, but merchantTokenIdentifier in decrypted ApplePay token is always empty, regardless of test card used, I tried Visa, MasterCard, Amex.
Anyone have an idea what I'm missing and how to get that merchant token?
Is it even possible to test merchant tokens (lifecycle notifications) in sandbox?
We have already completed the Apple Pay(App & Web) implementation according to the provided instructions. We have over 10,000 websites, each with a different domain. As per Apple’s documentation, we need to perform the domain verification process for each domain.
Manually verifying all 10,000 domains is not feasible. For Google Pay, we have a streamlined process, and we would like to know if a similar solution exists for Apple Pay.
Could you please provide us with any recommendations or solutions to facilitate this domain verification process efficiently?
I work on integrating online payment gateways.
We are currently integrating Stripe and Adyen payment gateways. However, when integrating with Stripe, we use the certificate file provided by Stripe, and for Adyen, since there are not many payment transactions, we cannot create our own account, so we are using an account from a partner company. Therefore, we also have to use the Apple Pay certificate file from the partner company.
In other words, the certificate files for Stripe and Adyen are different, but we want to get verification for the same domain.
How can we set up to differentiate between Stripe and Adyen for the same domain with two different certificate files?
The framework we are using is React.js for the frontend and Node.js for the backend.
I want to create passes with Dynamic QR Codes which changes based on T-OTP. Google wallet do have this feature called RotatingBarCode, while there is nothing like this in Apple wallet. Can we do this by updating the passes? If yes, how? If apple wallet pass are getting updates using webServiceURL, how can we create the endpoint and what the body of get request will look like?
Topic:
App & System Services
SubTopic:
Notifications
Tags:
APNS
Wallet
Apple Pay on the Web
Apple Pay
I am seeking an assistance with an issue we've encountered during our efforts to integrate Apple Pay into our web application. We're using Angular on our client side. and our server side is powered by AEM(Adobe Experience Manager), which is based on Java.
As part of our integration process, we're following the Apple Pay documentation. However, we've encountered a challenge during the merchant validation step. Our server-side implementation, responsible for validating the merchant identity and generating a session object for payment requests, is encountering an SSL handshake error.
Here's the error message we're encountering:
javax.net.ssl|FINE|01|main|2024-03-20 05:19:52.812 IST|SSLCipher.java:1817|KeyLimit read side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2024-03-20 05:19:52.813 IST|SSLCipher.java:1971|KeyLimit write side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2024-03-20 05:19:52.849 IST|SSLCipher.java:1817|KeyLimit read side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2024-03-20 05:19:52.850 IST|SSLCipher.java:1971|KeyLimit write side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2024-03-20 05:19:54.082 IST|Utilities.java:73|the previous server name in SNI (type=host_name (0), value=apple-pay-gateway-cert.apple.com) was replaced with (type=host_name (0), value=apple-pay-gateway-cert.apple.com)
javax.net.ssl|FINE|01|main|2024-03-20 05:19:54.448 IST|SSLCipher.java:1817|KeyLimit read side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|FINE|01|main|2024-03-20 05:19:54.448 IST|SSLCipher.java:1971|KeyLimit write side: algorithm = AES/GCM/NOPADDING:KEYUPDATE
countdown value = 137438953472
javax.net.ssl|SEVERE|01|main|2024-03-20 05:19:54.453 IST|TransportContext.java:369|Fatal (CERTIFICATE_UNKNOWN): sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (
"throwable" : {
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
at sun.security.validator.Validator.validate(Validator.java:271)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:312)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:221)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:128)
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1339)
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1230)
at sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1173)
at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:376)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:479)
at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:457)
at sun.security.ssl.TransportContext.dispatch(TransportContext.java:200)
at sun.security.ssl.SSLTransport.decode(SSLTransport.java:155)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
... 24 more}
}
We've reviewed our server configuration and checked that the SSL/TLS settings are correctly configured. Additionally, we've ensured that the server's SSL certificate is valid and up-to-date.