3
votes

I am attempting to add Apple Pay to a Swift app using Stripe. I am following Stripe's guide. I've created a demo repo to demonstrate the error found below.

I have added the Stripe library, linked the necessary Apple libraries, added an Objective-C bridging header, added a Stripe Publishable Key, enabled the Stripe Enable ApplePay macro, and enabled the ApplePay entitlement.

The issue arises when I attempt to create an actual payment request:

 var request: PKPaymentRequest = Stripe.paymentRequestWithMerchantIdentifier("merchant.fm.kenneth.donate")

My repository explains this in detail.

When I build the app, it results in the following error:

2014-11-09 13:59:33.576 stripeTest2[22128:904179] 
+[Stripe paymentRequestWithMerchantIdentifier:]: 
unrecognized selector sent to class 0x10910a210

2014-11-09 13:59:33.579 stripeTest2[22128:904179] *** 
Terminating app due to uncaught exception 'NSInvalidArgumentException', 
reason: '+[Stripe paymentRequestWithMerchantIdentifier:]: 
unrecognized selector sent to class 0x10910a210'

I assume there must be an issue with the bridge into the Objective-C code in the Stripe library. Any help would be greatly appreciated.

2
Has this issue been resolved? I'm going through setting up Apple pay in swift app and I run into the same exact issue. I've got the latests versions of all libraries and this issue creeps in at run time. Any more specific suggestions how to fix it?dmitryame

2 Answers

3
votes

This is an interesting case. It seems that __IPHONE_OS_VERSION_MAX_ALLOWED is not defined for pure-Swift apps, so the ApplePay code isn't getting compiled.

As this check isn't strictly necessary (if you #define STRIPE_ENABLE_APPLEPAY but your base SDK is earlier than iOS8, that's basically programmer error), I've taken these checks out of our SDK (I'm an engineer at Stripe). If you go grab the latest version (2.2.2), things should work for you (I cloned your repo and tested that change, and things seem ok).

Thanks for bringing this to our attention!

Jack

0
votes

It also helps if, as I found, you add "Stripe+ApplePay.h" to your bridging header.