Apple Pay

    今儿的地铁里已经摆满了Apple Pay的广告.So.我也来尝试下Apple Pay的集成.


   新建一个项目.暂时起名为JLLApplePayTest.


   ApplePay 设计到了对Merchant ID 的使用.经过个人测试,用了两种方法.

           第一是直接在Capabilities 里首先将ApplePay 选为ON.此时的Merchant ID是为空.点击+号,会出现选择开发者账号界面.选择自己的开发者账号后.会出现如下界面.

   


创建完成后点OK就可以在Merchant ID里进行选择.但是我并不推荐这么做.虽然也创建了Merchant ID.但是并未增改其相关属性.可行度待验证.但是如果集成demo的话.是可以成立的.


 

准备工作:

本地先生成一个CSR文件备用,用于申请证书。
教程:MAC下生成CSR(.certSigningRequest)文件

申请 MerchantID

登录苹果开发者中心,在Identifiers下选择Merchant IDs,点击右上角添加按钮添加Merchant ID;
输入描述信息和标识符,点击继续


MerchantID1.png

这是刚才的信息的确认,没问题下一步,有问题back(返回)进行修改


MerchantID2.png

MerchantID申请完成


MerchantID3.png
申请证书

下面的就是创建证书了,除了下面的点击编辑进行创建证书外,还可以在Certificate 下创建一个Production-Apple Pay Certificate进行创建。


MerchantID4.png


如果需要在非美国使用Apple Pay,需要打开权限


MerchantID5.png

点击下一步会需要CSR文件,可以使用刚开始创建好的CSR文件。


MerchantID6.png


选择CSR文件


MerchantID7.png

MerchantID8.png
Bundle identifier

虽然在Xcode上设置也能同步到开发者中心,但是同步过来的信息不全,最好还是我们手动添加APP ID
在APP IDS下点击创建APPID

设置APPID描述、Bundle id和服务。我用下面图片的bundle id的名字是不可以的,所以我用的是
com.ApplePayDemo.wq


Bundle identifier1.png

Bundle identifier2.png

这里的黄色表示没有生效,稍后我们还需要进行配置。


Bundle identifier3.png


下一步


Bundle identifier4.png


回到APPID列表,选择我们创建的APPID点击编辑,对Applepay进行配置


Bundle identifier5.png


找到下面Applepay进行配置


Bundle identifier6.png


选择应用要使用的merchantID,为什么可以多选,我也不知道,有知道的可以回复,谢谢


Bundle identifier7.png


点击分配


Bundle identifier8.png

后面还有一个是完成,就不上图了。
到此我们的MerchantID及对应证书,还有APPID的申请就完成了,大家可以创建工程继续接入Applepay了

OK--- 证书告一段落.

接下来进入Xcode.

继续在Capabilities  里Apple Pay里进行操作.选择刚刚创建的Merchant ID.

此时看我们的项目,会多一个这样的文件.



OK.开始代码.

由于只是个小demo.所以我直接在ViewController里进行书写

首先,导入库.

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #import <PassKit/PassKit.h>  
由于要实现协议方法.我们要遵守它的协议
[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @interface ViewController ()<PKPaymentAuthorizationViewControllerDelegate>  


然后开始我们的编码.


[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. - (void)ApplePayJudge{  
  2.     //检查当前设备  
  3.     if ([PKPaymentAuthorizationViewController canMakePayments]){  
  4.         NSLog(@"可以支付");  
  5.         PKPaymentRequest * request = [[PKPaymentRequest alloc]init];  
  6.         PKPaymentSummaryItem *  goodsOne = [PKPaymentSummaryItem  summaryItemWithLabel:@"无尽" amount:[NSDecimalNumber decimalNumberWithString:@"3000"]];  
  7.           
  8.         PKPaymentSummaryItem *  goodsTwo = [PKPaymentSummaryItem  summaryItemWithLabel:@"三项" amount:[NSDecimalNumber decimalNumberWithString:@"3000"]];  
  9.           
  10.           
  11.         PKPaymentSummaryItem *  goodsThree = [PKPaymentSummaryItem  summaryItemWithLabel:@"电刀" amount:[NSDecimalNumber decimalNumberWithString:@"2800"]];  
  12.           
  13.         PKPaymentSummaryItem *  goodsFour  = [PKPaymentSummaryItem  summaryItemWithLabel:@"总计" amount:[NSDecimalNumber decimalNumberWithString:@"8800"]];  
  14.           
  15.         request.paymentSummaryItems = @[goodsOne,goodsTwo,goodsThree,goodsFour];  
  16.         request.countryCode = @"CN";  
  17.         request.currencyCode = @"CNY";  
  18.         request.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];  
  19.         request.merchantIdentifier = @"merchant.com.JLL";  
  20.         request.merchantCapabilities = PKMerchantCapabilityEMV;  
  21.           
  22.         PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];  
  23.         paymentPane.delegate = self;  
  24.         [self presentViewController:paymentPane animated:TRUE completion:nil];  
  25.   
  26.     }else{  
  27.         NSLog(@"不支持支付");  
  28.     }  
  29. }  

首先进行判断是否可以进行支付操作.如果可以进行支付操作.即进行操作请求.goodsOne  .Two.Three 即单件商品.goodsFour即总价. 

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. request.countryCode = @"CN";   
  2. request.currencyCode = @"CNY";  

    即为中国以及人民币的编码.相信大家会用的比较多.

   此时在viewdidload 里实现这个方法.就能看到界面了.

  


此时.再实现协议的两个方法,来完成支付判断以及界面移除即可.

[objc]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controlle didAuthorizePayment:(PKPayment *)payment  
  2.                                 completion:(void (^)(PKPaymentAuthorizationStatus status))completion{  
  3.     NSLog(@"Payment was authorized: %@", payment);  
  4.     BOOL asyncSuccessful = FALSE;  
  5.     if(asyncSuccessful) {  
  6.         completion(PKPaymentAuthorizationStatusSuccess);  
  7.         NSLog(@"支付成功");  
  8.     } else {  
  9.         completion(PKPaymentAuthorizationStatusFailure);  
  10.         NSLog(@"支付失败");  
  11.     }  
  12. }  
  13. - (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller  
  14. {  
  15.     NSLog(@"支付完成");  
  16.     //支付完成后隐藏窗口  
  17.     [controller dismissViewControllerAnimated:TRUE completion:nil];  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值