While trying to setup Apple Pay in an iOS app we've run into an issue with the API and pre-filling information. Our user flow allows the user to manually set their address, email and phone prior to paying with Apple Pay, so we want to be sure to fill the Apple Pay prompt with their inputs if they decide to do so.
According to the development guide, this should be as simple as setting these values in the request.shippingContact. However, when we do this, the values are ignored.
Is there something the documentation is not telling us?
PKContact *contact = [[PKContact alloc] init];
contact.emailAddress = @"[email protected]";
contact.phoneNumber = [[CNPhoneNumber alloc] initWithStringValue:@"5555555"];
NSPersonNameComponents *name = [[NSPersonNameComponents alloc] init];
name.givenName = @"John";
name.familyName = @"Appleseed";
contact.name = name;
request.billingContact = contact;
request.shippingContact = contact;
request.requiredBillingAddressFields = PKAddressFieldAll;
request.requiredShippingAddressFields = PKAddressFieldEmail | PKAddressFieldPhone;
Contact your card issuer to see if they support Apple Pay. Update to the latest version of iOS or iPadOS, watchOS, or macOS. Make sure that you are in a supported country or region. Check that your device is compatible with Apple Pay.
Low Battery Mode can throw all your apps out of whack, including Apple Pay. If your battery is below 20 percent, and Apple Pay suddenly isn't working, the low battery could be the culprit. Charge your battery and try again.
Apple Pay is simple to set up. Just add your credit or debit card to the Wallet app on your iPhone and you're ready to go. You still get all your card's rewards and benefits — so you won't miss out on any hard-earned points or miles. Apple Pay is already on your device.
Go to your Safari menu bar, click Safari > Preferences then select the Privacy tab. Then make sure: Allow websites to check if Apple Pay is set up is selected. I confirm that the option is checked, both on my Mac and on my iPhone.
As mentioned in the documentation we need to validate the address values properly. We should pass valid address with valid postal code, see code below.
PKContact *contact = [[PKContact alloc] init];
NSPersonNameComponents *name = [[NSPersonNameComponents alloc] init];
name.givenName = @"John";
name.familyName = @"Appleseed";
contact.name = name;
CNMutablePostalAddress *address = [[CNMutablePostalAddress alloc] init];
address.street = @"1234 Laurel Street";
address.city = @"Atlanta";
address.state = @"GA";
address.postalCode = @"30303";
Also check:
NOTE
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With