Nathan Taylor
Nathan Taylor

Reputation: 24606

Apple Pay will not display prefilled information

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;

Apple Pay Sample

Upvotes: 10

Views: 450

Answers (1)

Aruna Mudnoor
Aruna Mudnoor

Reputation: 4825

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

Address information can come from a wide range of sources in iOS. Always validate the information before you use it.

Upvotes: 3

Related Questions