I would like to renew Apple Developer Program, but cannot change the credit card information, pop up "cannot update....please contact support" when I update credit card information and submit, please advise.
Apple Pay
RSS for tagDiscuss how to integrate Apple Pay into your app for secure and convenient payments.
Post
Replies
Boosts
Views
Activity
Hi,
I am currently integrating Apple Pay into a subscription web app. Our payment processor is NMI. Everything is working for individual charges. However, I am unable to get recurring payments to work. I tried to re-charge the initial token but NMI returns "DO NOT HONOR". How do I get access to a rechargeable token?
The .onpaymentmethodselected event listener is only returning PaymentMethod: {type: "Credit"}. No token there.
I tried to utilize tokenNotificationURL but it seems like the webhook is never being triggered. I setup a custom endpoint on my node.js server and I utilzed Ngrok to tunnel to my localhost. I also tried webhook.site but none of these solutions received anything from apple pay. I also changed the recurring payment interval to "minute" to test if the token would become chargeable again after 60 seconds - which didn't work either.
How do I get access to a token that I can re-charge on a monthly basis?
Trying to use Apple Pay with the Payment Request API, created a merchant validation with the following details:
URL: https://apple-pay-gateway.apple.com/paymentservices/startSession
Body: {"merchantIdentifier":"merchant.xxxxxxxxxxxxx","domainName":"labs.xxxxxxxx.com","displayName":"Mxxxxx"}
The response is:
cURL error 56: OpenSSL SSL_read: OpenSSL/1.1.1p: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required, errno 0
Any ideas why this could be?
As per Requesting an Apple Pay Payment Session, i have got a session from Apple's Server, i am passing the same in the completeMerchantValidation function, still the Payment Sheet keeps on processing. After timeout interval it gets closed automatically.
I am using Sandbox Account and Production Environment.
What could be the reason for this?
Hi,
I created a bundle of passes using this doc: https://developer.apple.com/documentation/walletpasses/distributing_and_updating_a_pass and sent it as an attachment to an email. But when I try to open it with my iPhone (iOS 16), it doesn't suggest the add to wallet.
When I send each pass individually, there is no problem, they are added to my wallet.
Does anyone have any suggestions?
The Getting Started with Apple Pay documentation states that we should use this method to activate passes with In-App Verification.
The main param is the activationData, which is generated by PNOs.
The issue is that to generate the activationData, a nonce is required.
How can we get the nonce on the In-App Verification context?
The only way mentioned in the documentation to get the nonce is through PKAddPaymentPassViewControllerDelegate.
But the PKAddPaymentPassViewController should be use only to In-App Provisioning, should not?
Automatically presenting PassKit when approaching an NFC reader has been around for a while on iOS. Apple is already providing support to inhibit this behavior when using an app that has an approval-gated capability with the identifier com.apple.developer.passkit.pass-presentation-suppression.
The automatic presentation feature has been added in watchOS 10 without the offering of a similar inhibiting method. This is degrading the experience for watchOS 10 users in use cases where the Apple Watch is expected to be close to an NFC-enabled device.
I've noticed that the API is present in watchOS as well, although it's marked as unavailable. Calling requestAutomaticPassPresentationSuppressionWithResponseHandler: is always returning 0 (notSupported), and that might be due to the fact that including the capability breaks code signing.
I've opened a FB, was wondering what is the best way to better communicate this need to Apple engineering and product teams. (FB13234179)
Hello everyone,
I would like to register a merchant with a merchant identifier, calling https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant, but I am getting a 401 error.
The payment processing certificate and the merchant identity certificate (with name merchant.com.identity.us.test) have already been defined on the apple account account.
I am executing this post request:
curl -v --cert-type P12 --cert keystore.p12:passwordForMyKeystore -d '{"domainNames":["my-test-domain.com","my-live-test-domain.com"], "partnerMerchantName":"TESTMERCH1", "partnerInternalMerchantIdentifier":"test-merch-partner", "encryptTo":"merchant.com.identity.us.test"}' -H "Content-Type: application/json" -X POST https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant
The keystore.p12 I am using in the above post request, has been created with the identity certificate (merchant.com.identity.us.test) and with the private key created when generating the CSR.
The response I am getting is this one:
* ALPN: server accepted http/1.1
* Server certificate:
* subject: CN=apple-pay-gateway-cert.apple.com; O=Apple Inc.; L=Cupertino; ST=California; C=US; serialNumber=C0806592; jurisdictionStateOrProvinceName=California; jurisdictionCountryName=US; businessCategory=Private Organization
* start date: Jul 17 17:32:39 2023 GMT
* expire date: Oct 15 17:42:39 2023 GMT
* subjectAltName: host "apple-pay-gateway-cert.apple.com" matched cert's "apple-pay-gateway-cert.apple.com"
* issuer: C=US; O=Apple Inc.; CN=Apple Public EV Server RSA CA 1 - G1
* SSL certificate verify ok.
* using HTTP/1.1
> POST /paymentservices/registerMerchant HTTP/1.1
> Host: apple-pay-gateway-cert.apple.com
> User-Agent: curl/8.1.2
> Accept: */*
> Content-Type: application/json
> Content-Length: 304
>
< HTTP/1.1 401 Unauthorized
< x-keystone-correlationid: cdcf1cc6-1f6f-4b92-bd6c-245a602bcaa3
< content-type: application/json
< content-length: 87
< date: Thu, 05 Oct 2023 08:28:18 GMT
< x-envoy-upstream-service-time: 14
< x-apay-service-response-details: via_upstream
<
{
"statusMessage": "Payment Services Exception Unauthorized",
"statusCode": "401"
* Connection #0 to host apple-pay-gateway-cert.apple.com left intact
}
Have I done anything wrong in generating the Keystore?
Kind regards,
Antonio.
Hello,
I am getting a 401 when calling https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant to register a merchant and link it to a merchant identity.
The merchant identity has been created, and both the merchant identity and the payment processing certificates have been created.
I have then dowloaded the merchant identity certificate from Apple, and create a keystore with the private key used to create the CSR.
The command I am issuing is the following:
curl -v --cert-type P12 --cert keystore.p12:passwordForKeystore -d '{"domainNames":["test-domain.com","live-domain.com"], "partnerMerchantName":"merchant-partner-name", "partnerInternalMerchantIdentifier":"merchant-partner-internal-identifier", "encryptTo":"merchant.identity.certificate.name"}' -H "Content-Type: application/json" -X POST https://apple-pay-gateway-cert.apple.com/paymentservices/registerMerchant
The response I am getting is the following:
* SSL certificate verify ok.
* using HTTP/1.1
> POST /paymentservices/registerMerchant HTTP/1.1
> Host: apple-pay-gateway-cert.apple.com
> User-Agent: curl/8.1.2
> Accept: */*
> Content-Type: application/json
> Content-Length: 304
>
< HTTP/1.1 401 Unauthorized
< x-keystone-correlationid: cdcf1cc6-1f6f-4b92-bd6c-245a602bcaa3
< content-type: application/json
< content-length: 87
< date: Thu, 05 Oct 2023 08:28:18 GMT
< x-envoy-upstream-service-time: 14
< x-apay-service-response-details: via_upstream
<
{
"statusMessage": "Payment Services Exception Unauthorized",
"statusCode": "401"
* Connection #0 to host apple-pay-gateway-cert.apple.com left intact
}
Has anyone had the same issue?
Hi.
I am integrating with the Apple Pay on my website. I am trying to perform a request via Postman to register a merchant - just testing if body of request is valid, if it actually registers a merchant etc.
While I am doing so I get the following error:
{
"statusMessage": "Payment Services Exception Domain check failed with the following errors. No domains were registered.\nDomain verification failed for pspId=ENCRYPTED_MERCHANT_ID domain=xyz.com url=/.well-known/apple-developer-merchantid-domain-association errorMessage=The content of Oslo merchant validation is incorrect",
"statusCode": "400"
}
Note that domain name and pspId were censored for security reason.
I have no idea what does that error mean.
Our domain is verified. We have domain verification file on the endpoint /.well-known/apple-developer-merchantid-domain-association errorMessage - otherwise our domain could not be registered. I have also checked it manually many times if it is there and everything looked fine.
We have an active payment processing certificate.
We have a merchant identity certificate. I use it on the serwer and on Postman for both apple-pay-gateway.apple.com and apple-pay-gateway-cert.apple.com.
Requesta sent to Sandbox pass and return status 200.
Request body:
{
"domainNames": ["xyz.com"],
"encryptTo": "merchant.com.our.identifier",
"partnerInternalMerchantIdentifier": "xyz25",
"partnerMerchantName": "Some name"
}
Data is replaced with placeholders. I am 100% sure that fields encryptTo and domainNames are valid.
Thank you in advance for any help.
Hello,
I wanted to know the average response time to complete merchant validation and get the session so that we can configure the response timeout. We want to know this so that we can close the connection if Apple is not responding while making the merchant validation call.
How can I add funds to Apple Cash balance on Apple Pay tester's account?
I want to implement ApplePay on Angular. There are two ways to implement it (JS API and Payment Request API) and I would like to use the API method as I want to do as much as processing in server side. By looking at the following page, it's hard to understand the difference between JS API and Payment Request API. https://applepaydemo.apple.com/
Surprisingly I can't find any example code for Angular to use ApplePay. I can't believe no one has used ApplePay on Angular before. May be there is another/better way to do it?
In Angular it's even tricky to get the window instance. I have tried the solutions in this question and managed to inject window instance using a service provider. I can display the ApplePay button on appropriate devices but I am getting the following error when calling the ApplePaySession object. Apparenlty the injected window is not the top level one.
Hi Team,
I am facing issue in Card provisioning on Apple wallet extension App on last step while attempts to provision the card using the provided PKAddPaymentPassRequest. Please help on this.
Failed to get LSApplicationRecord for <RBSLaunchRequest| xpcservice<————([application<com.apple.Passbook>:**])>; "Launching extension ———————————————— for host **> with error Error Domain=NSOSStatusErrorDomain Code=-10814 "(null)" UserInfo={_LSLine=1569, _LSFunction=runEvaluator}
What do I do with the apple_pay.cer certificate? My site is running under IIS on Windows Server.
What is the List of supported Web Browsers for Apple Pay on the Web?
We were able to do a PoC that starting from IOS 16 the Apple Pay works on Google Chrome, but there is no official documentationt that states about that.
Is there any other official statements from apple regarding support of Apple Pay for other browsers than Safari.
I'm getting "Apple pay is not available for this website" error on SB after the onpaymentmethodselected event (not getting error onvalidatemerchant event) and the onPaymentAuthorised doesn't get hit at all.
Here's my session data
{
"epochTimestamp":1652440219969,
"expiresAt":1652443819969,
"merchantSessionIdentifier":"SSH37EBB5A957294F0FBBD4F9C496317E1E_916523AAED1343F5BC5815E12BEE9250AFFDC1A17C46B0DE5A943F0F94927C24",
"nonce":"51b5b6b1",
"merchantIdentifier":"1B0FD6FCF62FBDA91A08BA2A18F4283AC1FFF6B69FC191B9F886482370BFC729",
"domainName":"d176lcemp34qxj.cloudfront.net",
"displayName":"Shamim",
"signature":"308006092a864886f70d010702a0803080020101310f300d06096086480165030402010500308006092a864886f70d0107010000a080308203e43082038ba003020102020859d8a1bcaaf4e3cd300a06082a8648ce3d040302307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3231303432303139333730305a170d3236303431393139333635395a30623128302606035504030c1f6563632d736d702d62726f6b65722d7369676e5f5543342d53414e44424f5831143012060355040b0c0b694f532053797374656d7331133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d030107034200048230fdabc39cf75e202c50d99b4512e637e2a901dd6cb3e0b1cd4b526798f8cf4ebde81a25a8c21e4c33ddce8e2a96c2f6afa1930345c4e87a4426ce951b1295a38202113082020d300c0603551d130101ff04023000301f0603551d2304183016801423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b304506082b0601050507010104393037303506082b060105050730018629687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65616963613330323082011d0603551d2004820114308201103082010c06092a864886f7636405013081fe3081c306082b060105050702023081b60c81b352656c69616e6365206f6e207468697320636572746966696361746520627920616e7920706172747920617373756d657320616363657074616e6365206f6620746865207468656e206170706c696361626c65207374616e64617264207465726d7320616e6420636f6e646974696f6e73206f66207573652c20636572746966696361746520706f6c69637920616e642063657274696669636174696f6e2070726163746963652073746174656d656e74732e303606082b06010505070201162a687474703a2f2f7777772e6170706c652e636f6d2f6365727469666963617465617574686f726974792f30340603551d1f042d302b3029a027a0258623687474703a2f2f63726c2e6170706c652e636f6d2f6170706c6561696361332e63726c301d0603551d0e041604140224300b9aeeed463197a4a65a299e4271821c45300e0603551d0f0101ff040403020780300f06092a864886f76364061d04020500300a06082a8648ce3d0403020347003044022074a1b324db4249430dd3274c5074c4808d9a1f480e3a85c5c1362566325fbca3022069369053abf50b5a52f9f6004dc58aad6c50a7d608683790e0a73ad01e4ad981308202ee30820275a0030201020208496d2fbf3a98da97300a06082a8648ce3d0403023067311b301906035504030c124170706c6520526f6f74204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553301e170d3134303530363233343633305a170d3239303530363233343633305a307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b30090603550406130255533059301306072a8648ce3d020106082a8648ce3d03010703420004f017118419d76485d51a5e25810776e880a2efde7bae4de08dfc4b93e13356d5665b35ae22d097760d224e7bba08fd7617ce88cb76bb6670bec8e82984ff5445a381f73081f4304606082b06010505070101043a3038303606082b06010505073001862a687474703a2f2f6f6373702e6170706c652e636f6d2f6f63737030342d6170706c65726f6f7463616733301d0603551d0e0416041423f249c44f93e4ef27e6c4f6286c3fa2bbfd2e4b300f0603551d130101ff040530030101ff301f0603551d23041830168014bbb0dea15833889aa48a99debebdebafdacb24ab30370603551d1f0430302e302ca02aa0288626687474703a2f2f63726c2e6170706c652e636f6d2f6170706c65726f6f74636167332e63726c300e0603551d0f0101ff0404030201063010060a2a864886f7636406020e04020500300a06082a8648ce3d040302036700306402303acf7283511699b186fb35c356ca62bff417edd90f754da28ebef19c815e42b789f898f79b599f98d5410d8f9de9c2fe0230322dd54421b0a305776c5df3383b9067fd177c2c216d964fc6726982126f54f87a7d1b99cb9b0989216106990f09921d00003182018d30820189020101308186307a312e302c06035504030c254170706c65204170706c69636174696f6e20496e746567726174696f6e204341202d20473331263024060355040b0c1d4170706c652043657274696669636174696f6e20417574686f7269747931133011060355040a0c0a4170706c6520496e632e310b3009060355040613025553020859d8a1bcaaf4e3cd300d06096086480165030402010500a08195301806092a864886f70d010903310b06092a864886f70d010701301c06092a864886f70d010905310f170d3232303531333131313031395a302a06092a864886f70d010934311d301b300d06096086480165030402010500a10a06082a8648ce3d040302302f06092a864886f70d01090431220420463e324ef2a67be4caad2196e90cd77e4a215ee2e2dee5ebb37bc5f18d4f0e76300a06082a8648ce3d04030204483046022100b1aef11ea8f5940eef195c13d0879528ff6ddd59a671aaede8bdb0a4a0aafc290221009257a1f32bfea292d8cd819682343d840b75a1d332c3154c33b701a3b8c0166b000000000000",
"operationalAnalyticsIdentifier":"Shamim:1B0FD6FCF62FBDA91A08BA2A18F4283AC1FFF6B69FC191B9F886482370BFC729",
"retries":0,
"pspId":"1D867D2918895F195CF99A0BCCA8B3E63C0AB3FC997F254501617482BBCF21F9"
}
and this is the url that i'm testing with
https://d176lcemp34qxj.cloudfront.net/MerchantSiteSB.html
Can somebody please assist to find the issue? or how should i get more details on the error?
HiHow long does it take to get an NFC Certificate from Apple? So that we can delivery NFC Enabled Loyalty Passes.We registered at the following address but haven't received any communication for over 2 weeks.https://developer.apple.com/contact/passkit/We are developing solutions for our clients and need to test the technology.We use different PassTypeIDs for each of our Customers so it's likely we will need a different NFC certificate for each of our customers.How do we get NFC Certificates in bulk so that we can deliver NFC Loyalty Programmes to our Customers?Thanks
Has anyone had experience of selling foreign currency using Apple Pay?
If so, what steps did you complete to get Apple Approval?
The Acceptable use guidelines state "You may not incorporate Apple Pay into a website that: ... Involves the purchase or transfer of currency (including cryptocurrencies) unless approved by Apple"
I would like to provide Apple Pay as a payment option on website and app's that sell currency to customers but can't find any guidance of how to get Apple approval.
I'm trying to build my first Apple Wallet Pass and I've been following the tutorial here:
https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/PassKit_PG/YourFirst.html
I get to this point but it fails:
To sign and compress the pass, use the signpass tool to sign the pass package. In Terminal, run the following commands:
cd ~/Documents
./signpass -p Lollipop.pass
These commands create a signed and compressed pass named Lollipop.pkpass in the Documents folder. If the signpass command fails, make sure you are using your correct pass type identifier and check that the pass.json file contains valid JSON.
Here is the error I get from Terminal:
2021-10-21 10:44:11.678 signpass[1461:45126] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'data parameter is nil'
*** First throw call stack:
(
0 CoreFoundation 0x000000019194f838 __exceptionPreprocess + 240
1 libobjc.A.dylib 0x00000001916790a8 objc_exception_throw + 60
2 Foundation 0x00000001926962ec -[_NSJSONReader init] + 0
3 signpass 0x00000001000fe044 +[PassSigner passTypeIdentifierForPassAtURL:] + 124
4 signpass 0x00000001000fe4d8 +[PassSigner signPassWithURL:certSuffix:outputURL:zip:] + 1124
5 signpass 0x00000001000fdc9c main + 864
6 libdyld.dylib 0x00000001917f1430 start + 4
)
libc++abi: terminating with uncaught exception of type NSException
zsh: abort ./signpass -p Lollipop.pass
Any help would be appreciate as I would love to create a Wallet Pass for my customers, but can't seem to get past this error.
Thank you,
Darren