Apple Pay 是苹果公式在2014年苹果秋季新品发布会上发布的一种基于NFC的手机支付功能,与2016年2月18日凌晨5:00 业务再中国上线 可以使人们的生活更加便利
首先嘛 新出的支付功能 坑定要创建证书 进入苹果开发中心 进入创建证页面 具体步骤看截图吧 每部截图
identifier的Merchant IDs 创建ID
屏幕快照 2016-03-05 下午9.01.33.png 屏幕快照 2016-03-05 下午9.07.41.png点击刚创建的证书 点击edit编辑 改成YES
屏幕快照 2016-03-05 下午9.11.19.png点击下一步
屏幕快照 2016-03-05 下午9.23.44.png点击打开钥匙串 创建证书文件
屏幕快照 2016-03-05 下午9.24.25.png 屏幕快照 2016-03-05 下午9.25.01.png点击继续后 chosse file上传上去
屏幕快照 2016-03-05 下午9.25.37.png点击continue 之后就是创建工程(配置证书说明文件)
屏幕快照 2016-03-07 下午9.11.31.png下面配置工程文件
首先bundleidentifierb必须和描述文件一样
屏幕快照 2016-03-07 下午9.15.08.png在Capabities标签下Apple Pay 添加创建的证书 如下图
屏幕快照 2016-03-07 下午9.20.57.png代码处理
导入框架PassKit/PassKit.h 和 AddressBook/AddressBook.h 并遵守PKPaymentAuthorizationViewControllerDelegate协议
#import "ViewController.h"
#import <PassKit/PassKit.h>
#import <AddressBook/AddressBook.h>
@interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>
@end```
#支付见面就是采用PKPaymentAuthorizationViewController 每条支付信息可以采用PKPaymentSummaryItem来编辑 支付时候调用这个界面
- (IBAction)PayAction:(UIButton *)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:@"德克士" amount:[NSDecimalNumber decimalNumberWithString:@"0.0.2"]];
PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"coderqi" amount:[NSDecimalNumber decimalNumberWithString:@"0.03"] type:PKPaymentSummaryItemTypeFinal];
request.paymentSummaryItems = @[widget1, widget2, widget3, widget4];
//国家
// request.countryCode = @"CN";
// request.currencyCode = @"CNY";//人民币
request.countryCode = @"US";
request.currencyCode = @"USD";//美元
request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkDiscover];
//这里我们填的就是我们创建的merchat IDs
request.merchantIdentifier = @"merchant.com.coderqi.applepay.pay";
request.merchantCapabilities = PKMerchantCapabilityEMV;
//增加邮箱及地址信息
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(@"该设备不支持支付");
}
}
#接下来就是代理回调的处理 服务器接收到了我们的请求之后收到返回信息会调用对应的方法
-(void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller didAuthorizePayment:(PKPayment *)payment completion:(void (^)(PKPaymentAuthorizationStatus))completion{
//这是新版
//拿到token
PKPaymentToken *token = payment.token;
//拿到订单地址
NSString *city = payment.billingContact.postalAddress.city;
NSLog(@"city:%@",city);
//在这里将token和地址发送到自己的服务器,有自己的服务器与银行和商家进行接口调用和支付将结果返回到这里
//我们根据结果生成对应的状态对象,根据状态对象显示不同的支付结构
//状态对象
PKPaymentAuthorizationStatus status = PKPaymentAuthorizationStatusFailure;
completion(status);
}
pragma mark ---支付完成
-(void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller{
//支付完成后让支付页面消失
[controller dismissViewControllerAnimated:YES completion:nil];
}
#到这里就简单的实现了支付功能
网友评论