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?
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Post
Replies
Boosts
Views
Activity
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 all,
I'm in the process of configuring Apple Pay for payments on an ecommerce site and I've come across the following documentation: Setting Up Your Server | Apple Developer Documentation
It mentions the following in a yellow highlighted note
Use a strict allow list for Apple IP addresses and domains provided in Listing 1. Do not allow your server to access any other IP addresses or domains.
My first question is why does my server need to set a strict allowed list when the domain name apple-pay-gateway.apple.com is publicly accessible?
My second question is that my web server is hosted on Vercel and I assume that there are no IP restrictions on any outbound requests. If there were restrictions where would I apply this whitelisting?
Thanks for your help.
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?
For instore payment, we are building payment app that would accept Applepay as method of payment and our payment gateway integration support Applepay. We are building this app for a Merchant based in Netherlands and wanted to check if there is any restriction in generating QR code that include apple pay payload and ask instore Cashier to scan the mobile QR using the barcode scanner to initial the transaction.
Let me know if there is a restriction or limitation in generating the QR code to include Applepay payment details.
Below is the case ID which we created at apple pay support portal for the issue which we are facing and we are posting same on the forum also as it is suggested by Apple pay team.
Case-ID: 9834005
We are facing this error in payment gateway - Unable to decrypt encrypted_payment_data.
below is the log from payment gateway [cybersource]-
---REQUEST DATA---
async_mode7296849007886963503009=XXXXX
bill_address1=sd
bill_city=new york
bill_country=US
bill_state=NY
bill_zip=10258
card_type=004
client_application=SOAP Toolkit API
client_environment=Win32NT10.0.20348.0
client_lib_version=NTA/XML/1.186
client_library=.NET WCF
client_library_version=4.0.30319.42000
client_request_id=7296849007886963503009
currency=USD
mailto:customer_email=[customer email address]
customer_firstname=test
customer_ipaddress=49.206.7.185
customer_lastname=t
decision_manager_enabled=no
encrypted_payment_data=XXXXXXXXXXXXXXXXXXXXXXXXX
encrypted_payment_descriptor=RklEPUNPTU1PTi5BUFBMRS5JTkFQUC5QQVlNRU5U
encrypted_payment_encoding=Base64
grand_total_amount=765.0
header_x_sproxy_start_time=XXXXXXXXXXXXX
ics_applications=ics_auth, ics_bill
ics_applications_from_merchant_request=ics_auth, ics_bill
merchant_expiration_date=2026-04-13 03:42:00.000
merchant_id=mozu_estore
merchant_key_type=XXXX
merchant_ref_number=2298
merchant_serial_number=c50e8e161a011e0b58604e49d9f93cd652a9ae5b
offer0=amount:765.0
payment_network_token_transaction_type=1
payment_solution=001
request_id=7296849007886963503009
Please us know the cause of this issue, we tired several times reconfigure with correct merchant identifier certificate and payment processing certificate. Please let me know for more details.
Regards,
Purva
really easy to access to you account
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 have a project, and it basically works by posting real estate. And users can pay to upload their real estate ads.
My question is this: my client wants to use the Pagseguro api to make these payments. Can I use this payment method with you too? Or do I need to integrate your own payment?
While submitting post request for Apple Pay Session in Sandbox enviornment, we are getting "The request was aborted: Could not create SSL/TLS secure channel" .
The site is deployed in IIS and has TLS1.2 enabled , with Application using .NET 4.8 framework. All the setup required for Apple Pay as mentioned in the apple pay site are verified e.g. Ciphers, TLS , IPs whitesliting etc and they look good.
We are able to connect thro Postman and same code works when tested from a sample console application in the server hosting the applicaiton
However issue happens only when the session is initiated from the Application.
Any pointers to the above is appreciated.....
Hello everyone,
Please need your advise if i can use a single Apple Pay MID for multiple CyberSource merchant IDs while creating the SCR or each merchant ID at CyberSource need a separate apple pay MID?
or if i can create more than single apple pay MID on the same apple account?
Hi,
I have a published app with Apple Pay integration working well. But, for business reasons, we need to change the gateway that process the payments.
I thought that I could maintain the same Merchant ID just creating an additional certificate on it.
But I figure out that I need to activate the new additional certificate to work on. When I try to activate the additional certificate I got a message that others certificates for the same merchant id will be revoked. So, I didn't yet.
I am afraid that it will stop the published app to process Apple Pay payments if I activate the additional certificate.
What is the correct approach ? Create a new Merchant ID for the new version of the app? Or am I missing something?
Thanks
I’m trying to test an AMEX card in the sandbox environment, but it’s not getting added. I have followed and verified the checks below to add the card to Wallet:
Sandbox account is active.
Sandbox user region is set to the US.
Device region is also set to the US.
AMEX card from the provided list is being added.
Tested on iOS version 17.6.1
Devices tested include iPhone 13 and others.
Steps followed to add the card to Wallet:
Open Wallet and tap on "Add Card."
Entered the required test data.
Tapped "Agree" and waited.
Received error: "Issuer does not support this card."
Please let me know if you have any solutions.
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 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.
We were try to call Apple Pay startSession, but we are getting an following error,
exception: Error: Error: socket hang up
at SCAwsPay.validateSessiont (D:\projects\amazon_payment_nodejs\routes\controllers\secondaryControllers\SCAwsPay.js:158:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async D:\projects\amazon_payment_nodejs\routes\awsPay.js:56:18,
const { merchantIdentifier, domainName, initiativeContext, initiative, displayName } = payload;
const httpsAgent = new https.Agent({
rejectUnauthorized: false,
cert: certificate,
key: key,
passphrase: 'team123'
});
const headers = {
'Content-Type': 'application/json',
};
let response = await axios.post("https://apple-pay-gateway.apple.com/paymentservices/startSession", {
merchantIdentifier,
domainName,
displayName,
}, {
// headers,
httpsAgent
});
I kindly request your support in resolving this issue as soon as possible. Apple Pay is an essential feature for me, and I would greatly appreciate any guidance or solutions you can provide.
Thank you for your attention to this matter. I look forward to your prompt response and assistance in resolving this issue.
I currently have two merchant id's configured in our production environment which are tied to separate certificates. The one below was recently created for our OlO integration which uses Spreedly. The other integration is with Worldpay directly. When attempting to validate the new merchant id for OlO, we get the following response.
Request Body {
"merchantIdentifier":"merchant.com.cbolo.prod",
"displayName":"Cracker Barrel",
"initiative":"web",
"initiativeContext":"stage.crackerbarrel.com"
}
Response Body {
"statusMessage": "Payment Services Exception merchantId=745C2D1BC1B86B0E3FF898001666D44AADE6EC457F128075A723DA511D0BA0B4 unauthorized to process transactions on behalf of merchantId=D276804A1BF06DADBAE2DC291266FB87C15C8E6702959025D56CF4694FAB56C4 reason=D276804A1BF06DADBAE2DC291266FB87C15C8E6702959025D56CF4694FAB56C4 never authorized mass enablement transactions to occur via 745C2D1BC1B86B0E3FF898001666D44AADE6EC457F128075A723DA511D0BA0B4",
"statusCode": "400"
}
We have followed all the steps documented around verifying our domains and still we get this error. Has anyone had this issue and been able to resolve? We opened an Apple Support case 4 business days ago and have heard nothing back. Case: 102259384074.
Hello there, i'm new in trying to use the apple wallet API.
we want to create passes to add identification credentials in the costumer's apple wallet.
but we have doubts, for example:
is it mandatory to pay the apple developer memebership to use the examples of apple wallet api?
also, is there a way or an example of using this API in node.js?
Thanks for your attention, i will be waiting for your answers.
Hi there. We're a large team integrating Apple Pay to a payment system.
We'd like to start building the code that decrypts an ApplePayPaymentToken before the web client code that initiates the payment request is complete.
Is there a way to obtain a sample ApplePayPaymentToken for our account to ensure that our decryption code / keys / certificates are configured properly?
(Or the only way to obtain an ApplePayPaymentToken would be through completing of a payment request, i.e. step 29 of page 21 of this document: https://developer.apple.com/apple-pay/Apple-Pay-Merchant-Integration-Guide.pdf)
Thank you