applePay 项目的配置和集成

确保你merchantID和对应的证书已生成(上一篇有讲述)
将你的AppID的applePay的功能打开,并更新PP文件
applePay 项目的配置和集成_第1张图片
在工程的Capabilities中打开applePay的开关,merchantIDs选择之前申请的merchantID,如果不更新PP文件,step的第二个和第三个步骤过不去,会显示BundleID is unavailable,different string字样,我的pp文件是通配的,更新后依旧不能将apple pay entitlement 和applePay identifiers加入AppleID,无奈,我只能根据此appID重新生成pp文件
applePay 项目的配置和集成_第2张图片

需要引入的头文件PassKit/PassKit.h
需要使用得类
(1)PKPaymentAuthorizationViewController该类是用来展示支付信息给用户看的VC,它有两个类方法,canMakePayments和canMakePaymentsUsingNetworks:分别是判断用户的设备/设备的系统版本是否支持applePay和用户是否绑定的了相应的银行卡,canMakePaymentsUsingNetworks后接的参数是一个数组,数组内放的是银行卡的类别,PKPaymentNetworkAmex美国运通卡,PKPaymentNetworkMasterCard万事达卡,PKPaymentNetworkVisa维萨卡,PKPaymentNetworkChinaUnionPay银联
(2)PKPaymentSummaryItem每一个item,比如商品总额,运费,优惠,应付总额等
PKPaymentSummaryItem *totalPrice = [PKPaymentSummaryItem summaryItemWithLabel:@”商品总额” amount:[NSDecimalNumber decimalNumberWithString:@”200”]];

PKPaymentSummaryItem *discount = [PKPaymentSummaryItem summaryItemWithLabel:@”优惠” amount:[NSDecimalNumber decimalNumberWithString:@”-20”]];

PKPaymentSummaryItem *ship = [PKPaymentSummaryItem summaryItemWithLabel:@”运费” amount:[NSDecimalNumber decimalNumberWithString:@”20”]];

PKPaymentSummaryItem *subtotal = [PKPaymentSummaryItem summaryItemWithLabel:@”应付总额” amount:[NSDecimalNumber decimalNumberWithString:@”200”]];

(3)PKPaymentRequest 支付请求
PKPaymentRequest *request = [[PKPaymentRequest alloc]init];
//国家编码
request.countryCode = @”CN”;
//货币编码
request.currencyCode = @”CNY”;
//绑定的卡
request.supportedNetworks = @[PKPaymentNetworkMasterCard,PKPaymentNetworkVisa,PKPaymentNetworkChinaUnionPay];
//自己申请的那个merchantID
request.merchantIdentifier = @”自己申请的那个merchantID”;
//这个具体做什么的不是特别清楚,反正是跟支持的交易相关的,前者是可选的,后者是必须支持的
request.merchantCapabilities = PKMerchantCapabilityEMV | PKMerchantCapability3DS;
request.requiredShippingAddressFields = PKAddressFieldPostalAddress | PKAddressFieldPhone | PKAddressFieldEmail | PKAddressFieldName;
request.paymentSummaryItems = @[totalPrice,discount,ship,subtotal];
//用来展示支付信息
PKPaymentAuthorizationViewController *payment = [[PKPaymentAuthorizationViewController alloc]initWithPaymentRequest:request]
;
[self presentViewController:payment animated:YES completion:nil];
payment.delegate = self;//遵守PKPaymentAuthorizationViewControllerDelegate协议
(4)代理方法
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
[self dismissViewControllerAnimated:YES completion:nil];
}
- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController )controller didAuthorizePayment:(PKPayment )payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{
completion(PKPaymentAuthorizationStatusSuccess);
跟后台的信息传输可以写在这里
}
另:
以上只是基本的需要的信息,如需有关于配送的信息,可用PKShippingMethod等类及相应的代理方法

你可能感兴趣的:(payment,ApplePay,merchantID,PKPayment)