Apple Pay

RSS for tag

Provide a fast, easy, and secure way for users to buy goods and services in your app or on your website using Apple Pay.

Posts under Apple Pay tag

166 Posts
Sort by:

Post

Replies

Boosts

Views

Activity

Register merchant with apple-pay-gateway-cert
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.
0
0
614
Oct ’23
Getting 401 when registering a merchant in sandbox
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?
0
0
427
Oct ’23
The content of Oslo merchant validation is incorrect
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.
1
0
576
Oct ’23
Apple pay is not available for this website Error
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?
6
0
2k
Oct ’23
Time to get NFC Apple Wallet Cert
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
11
0
9.3k
Oct ’23
Using Wallet.app to open doors with NFC reader
G'day. At my office the doors are locked with an NFC reader. We carry around a little NFC tag on our key chains which will read out a number and this then will open the door if the number matches a number in the database. I am tired of carrying around the tag, people keep loosing it, forgetting it and it would be nice to open the door using a Phone - which we tend to always have on us. So I used a credit card which is NFC enabled to readout the NFC information, added this number to the database and can now open doors using my credit card. This is pretty cool. If I forget my keys (most likely they will be on the desk but silly me left the desk without them), I may have my wallet with me. Then I tried Wallet.app on my iPhone and select the same credit card. However the door doesn't open. When looking in the door software I noticed that the tags will always transmit the same number. So does my credit card. However Wallet.app will read out 4 readings (or maybe just one very long one) and they are always different. So I can not make them match with the door database. Any ideas how to make this work? Can I give somehow wallet.app an NFC number which I can then add to my door database? Or how come the credit card and the very same one in wallet.app don't match? Thanks for your help! Would be neat if I could make this work out. This will make a lot of people happy at my office! Cheers!
36
11
76k
Sep ’23
applePay Acceptable Use - Currency Sale - Apple Approval
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.
0
0
310
Sep ’23
Not able to add credit card to Apple Wallet through In-App Provisioning in banking app
Hi, I'm working in-app provisioning of card from inside a banking app. But fails to add card to wallet with generic error "Could Not Add Card - Try again later or contact your issuer for more information" when clicking on Next from screen where card holder name & card number screen with title "Add Card to Apple Pay". I see from Console app below messages End remote event deferring requested for token: 0x280649e50; environments: 1; reason: PKRemoteAddPaymentPassViewController: 0x144124600: end deferring Disconnecting: identifier: com.apple.PassbookUIService; assertion: 0x280630140 Terminating interface and invalidating assertion: identifier: com.apple.PassbookUIService; assertion: 0x280630140 Terminating interface and invalidating connection: identifier: com.apple.PassbookUIService; assertion: 0x0 Disconnecting: identifier: com.apple.PassbookUIService; assertion: 0x0 Acquiring assertion: <RBSAssertionDescriptor| "NetworkProcess Background Assertion" ID:(null) target:2696> Terminating interface and invalidating assertion: identifier: com.apple.PassbookUIService; assertion: 0xXXXXXXXXX Terminating interface and invalidating connection: identifier: com.apple.PassbookUIService; assertion: 0x0 Kindly help me to resolve this problem. Regards
0
0
435
Sep ’23
ApplePayButton Error
I just making Apple Pay Button on my websites using CSS, but i dont know why the 'Type=check-out', 'lang="vi"' not working. Another type like buy, top-up still show button with text on Vietnamese language, but with 'Type=check-out" dont show anything text. Does Apple Pay Button support type check-out with Vietnamese language? Here my code: <html lang="vi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> @supports (-webkit-appearance: -apple-pay-button) { .apple-pay-button { display: inline-block; -webkit-appearance: -apple-pay-button; -apple-pay-button-type: check-out; /* Use any supported button type. */ } .apple-pay-button-black { -apple-pay-button-style: black; } } @supports not (-webkit-appearance: -apple-pay-button) { .apple-pay-button { display: inline-block; background-size: 100% 60%; background-repeat: no-repeat; background-position: 50% 50%; border-radius: 5px; padding: 0px; box-sizing: border-box; min-width: 200px; min-height: 32px; max-height: 64px; border: 0; } .apple-pay-button-black { background-image: -webkit-named-image(apple-pay-logo-white); background-color: black; color: white; } } </style> </head> <body> <div class="applePayButtonContainer"> <button class="apple-pay-button apple-pay-button-black" lang="vi" onclick="onApplePayButtonClicked()">Apple Pay</button> </div> </body> </html>
0
0
382
Sep ’23
Issuer Extension - Apple Wallet
I am working on Issuer Extension using which user can add debit/ credit card through wallet directly. This is Extension based (Non and UI Extension. I am nearly implemented this however have doubts about PKIssuerProvisioningExtensionHandler methods which are below open func status(completion: @escaping (PKIssuerProvisioningExtensionStatus) -> Void)  open func passEntries(completion: @escaping ([PKIssuerProvisioningExtensionPassEntry]) -> Void) open func generateAddPaymentPassRequestForPassEntryWithIdentifier(_ identifier: String, configuration: PKAddPaymentPassRequestConfiguration, certificateChain certificates: [Data], nonce: Data, nonceSignature: Data, completionHandler completion: @escaping (PKAddPaymentPassRequest?) -> Void) My query is what is the significance of configuration in last callback. Can anyone please help with this. Thanks in advance
4
0
2.6k
Sep ’23
iOS Apple Pay in-App provisioning extension: `viewDidLoad` method not called after invoking `init`
I am coding for Apple Pay in-App provisioning extension, but there was a problem when Apple Wallet load authorization UI extension: The source code: The principal class .h file #import &lt;UIKit/UIKit.h&gt; NS_ASSUME_NONNULL_BEGIN @interface IssuerProvisioningViewController : UIViewController @end NS_ASSUME_NONNULL_END The principal class .m file #import "IssuerProvisioningViewController.h" #import &lt;PassKit/PassKit.h&gt; @interface IssuerProvisioningViewController ()&lt;PKIssuerProvisioningExtensionAuthorizationProviding&gt; @end @implementation IssuerProvisioningViewController @synthesize completionHandler; - (instancetype)init { NSLog(@"--- init"); self = [super init]; return self; } - (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { NSLog(@"--- initWithNibName nibNameOrNil"); self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; return self; } - (void)viewDidLoad { NSLog(@"viewDidLoad"); // Do any additional setup after loading the view from its nib. } @end The Info.plist: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist version="1.0"&gt; &lt;dict&gt; &lt;key&gt;NSExtension&lt;/key&gt; &lt;dict&gt; &lt;key&gt;NSExtensionPointIdentifier&lt;/key&gt; &lt;string&gt;com.apple.PassKit.issuer-provisioning.authorization&lt;/string&gt; &lt;key&gt;NSExtensionPrincipalClass&lt;/key&gt; &lt;string&gt;IssuerProvisioningViewController&lt;/string&gt; &lt;/dict&gt; &lt;/dict&gt; The entitlement file: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt; &lt;plist version="1.0"&gt; &lt;dict&gt; &lt;key&gt;com.apple.developer.payment-pass-provisioning&lt;/key&gt; &lt;true/&gt; &lt;/dict&gt; &lt;/plist&gt; Environment: iOS 16.4.1 I found the method viewDidLoad was not be called after invoking method init. Thanks for reading and any advice.
5
0
2k
Sep ’23
Do I need to enroll for "Apple Developer Program" paying $99 for Sandbox Apple ID also
Hello all, I am trying to integrate Apple Pay in my application. And for that I need to add some sandbox/test user accounts for the development. I've setup 2FA and provided all the necessary details for this sandbox Apple ID. But I am still not able to login to applestoreconnect and getting following error message during login: "To access App Store Connect, you must be an individual or team member in the Apple Developer Program, or invited by an individual to access their content in App Store Connect." My question is Should I pay another $99 for this sandbox Apple ID also? I've already signed up for Apple Developer Program and paid $99 for 1 year for my organization. I can invite other team members without any additional cost by I am not able to invite existing email/Apple ID as Sandbox testers. I am confused. Thank you for your help.
0
0
613
Sep ’23
Unable to enable Apple Pay. How to fix this?
Hi Team, While enabling Apple Pay, getting the below error message: “Apple Pay cannot be used when automatic login is enabled.” But automatic login is already disabled in this computer. The mobile account is enabled for this particular user. So, I tried to enable Apple Pay on a local user account in the same computer. Still getting the same error. System details:- VenturaOS 13.5 / MacBook Air M2 2022 Could you please help me to fix the issue? Regards.
0
0
271
Sep ’23
Apple Pay on the Web localhost testing
I'm wanting to implement and test Apple Pay on the Web using my localhost instance. I've managed to set everything up correctly and so I'm able to get a merchant session from the Apple Pay API, but the client code immediately calls oncancel after calling session.completeMerchantValidation. After following this I'm seeing the following in the terminal: com.apple.PassKit.PaymentAuthorizationUIExtension: (PassKitCore) [com.apple.passkit:Payment] Evaluating merchant session using PROD trust policy. com.apple.PassKit.PaymentAuthorizationUIExtension: (PassKitCore) [com.apple.passkit:Payment] Application failed to provide a valid merchant session. We can't proceed to authorize the transaction. From reading various online sources, including the documentation referenced above, it seems like this might be happening because localhost isn't a validated/verified domain under our merchant account which also means using localhost seems to be out of the question for local development. I was hoping that using the sandbox account would have been enough to maybe loosen up the domain requirement, but not so. Anything that can be set either on the account or in code to allow for the use of localhost with Sandbox accounts or is there some tool that I need to use for this or is this really only test-able under our sandbox domain?
2
0
2.6k
Sep ’23
External payment provider in the app
Hi, we are a German-based company developing apps for taxi drivers. Due to the German system, it's difficult for someone who has a visa or MasterCard, etc., which supports IAP. Even PayPal is not that widespread among taxi drivers. We are now planning to integrate STRIPE for our payments of the drivers, This is due to the fact that Stripe supports SEPA which is basically translated Direct Debit. Now SEPA is widespread and everyone has an IBAN to enter and can proceed with the payment. My question is, how is going to be with the rules etc. on Apple's side, as they encourage the users to use IAP, but we cannot make use of it. Can we integrate maybe both? IAP and Stripe if the user cannot pay via IAP. Thanks
0
0
212
Sep ’23
Manually Keyed Transactions using ApplePay
We have a hotel customer who collects card information via the online booking engine, and uses this to pre-charge guests before arrival. They achieve this by manually keying transactions into their payment terminal. They have found that while this works for normal cards, they are unable to process a transaction using the Dynamic Security Code provided by Apple in place of the guests card information. Could you please advise on how we can help our customer with the use case of pre-charging guest cards submitted via ApplePay?
0
0
261
Sep ’23