本人ios初学者,为自己学习方便,复制各位大神的学习性文章放在自己简书里,仅作为自己学习方便使用,如果作者疑此行为侵权,请随时联系本人删除,如有共同学习者复制此文章,请注明原出处
最近一个特别火的词组出现在我们的生活中Apple Pay,大家又对其了解多少呢?其实在iOS8.1之后Apple Pay功能已经开放了,只不过在大陆在今年2月才可以使用,Apple Pay是一个基于NFC的支付系统,类似于你的银行卡,走到哪刷到哪,那么作为开发人员的我们该如何去开发和使用呢?
1、我们要去设置Merchant IDs
![](https://img.haomeiwen.com/i942466/a69d9ed84f7b0f3a.png)
Merchat IDs 设置
在设置Identifier的时候要注意ID的格式
![](https://img.haomeiwen.com/i942466/45f8029223be9118.png)
Merchat IDs identifier 设置
![](https://img.haomeiwen.com/i942466/934c52fc939d9619.png)
注册成功以后
![](https://img.haomeiwen.com/i942466/f52d34ea42f14f94.png)
点击Edit
![](https://img.haomeiwen.com/i942466/a7143ccef79f115f.png)
点击Continue
![](https://img.haomeiwen.com/i942466/ec8034d1f626dd61.png)
Choose File
![](https://img.haomeiwen.com/i942466/74dbddcf1c4be07b.png)
从证书颁发机构请求证书
![](https://img.haomeiwen.com/i942466/758e798a17c68c24.png)
选择
![](https://img.haomeiwen.com/i942466/3304181f18f05550.png)
下载
2、到目前为止我们的基本设置已经设置好了,现在我们要去Xcode里面去配置相关信息
由于我们要在真机上测试,所以我们要选择描述文件
![](https://img.haomeiwen.com/i942466/f8dda92a36c421c5.png)
屏幕快照 2016-02-23 16.16.04.png
我们在Xcode里面把Apple pay打开
![](https://img.haomeiwen.com/i942466/8d4bf079fc5f8332.png)
屏幕快照 2016-02-23 16.15.46.png
3、代码示范
遵循PKPaymentAuthorizationViewControllerDelegate
#pragma mark ----支付状态- (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus status))completion{
NSLog(@"花费: %@", payment);
BOOL asyncSuccessful = FALSE;
if(asyncSuccessful) {
completion(PKPaymentAuthorizationStatusSuccess);
NSLog(@"支付成功");
}else{
completion(PKPaymentAuthorizationStatusFailure);
NSLog(@"支付失败");
}}
#pragma mark ----支付完成
- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller {
// 支付完成后让支付页面消失
[controller dismissViewControllerAnimated:YES completion:nil];
}
支付方法
#pragma mark -----点击支付- (IBAction)checkOut:(id)sender{
if([PKPaymentAuthorizationViewController canMakePayments]) {
NSLog(@"支持支付");
// 我们后面创建出来的支付页面就是根据这个request
PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
// 商品目录
PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"大展"amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"小展"amount:[NSDecimalNumber decimalNumberWithString:@"0.01"]];
PKPaymentSummaryItem *widget3 = [PKPaymentSummaryItem summaryItemWithLabel:@"2个大展"amount:[NSDecimalNumber decimalNumberWithString:@"0.02"]];
PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"总金额"amount:[NSDecimalNumber decimalNumberWithString:@"0.01"] type:PKPaymentSummaryItemTypeFinal]; request.paymentSummaryItems = @[widget1, widget2, widget3, widget4]; request.countryCode = @"CN";
request.currencyCode = @"CNY";//人民币
request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
// 这里填的是就是我们创建的merchat IDs
request.merchantIdentifier = @"merchant.com.dazhan.applePayDemo"; request.merchantCapabilities = PKMerchantCapabilityCredit;
//增加邮箱及地址信息
request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
// 根据request去创建支付页面
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; // 设置代理
paymentPane.delegate = self;if(!paymentPane) {
NSLog(@"出问题了");
}else{
// 模态推出页面
[self presentViewController:paymentPane animated:YES
completion:nil];
}
}else{
NSLog(@"该设备不支持支付");
}}
![](https://img.haomeiwen.com/i942466/5227e7be5b504239.gif)
效果图.gif
网友评论