最全的apple pay苹果支付步奏



2016218日上午,苹果公司宣布,与中国银联达成合作,正式在中国大陆上线Apple Pay服务。

Apple Pay 是一个基于 NFC 的支付系统,几乎所有的银行都支持。不知道大家还有没有印象,当初支付宝和位置的支付刚出来的时候,银行都恨不得想把他俩弄死。为啥 Apple Pay 一出来各大银行都支持。因为它和支付宝支付、微信支付是完全不同的概念。 Apple Pay 根本不是一个第三方支付工具。它仅仅是一种支付的表现形式。说白了 Apple Pay 就是帮银行刷卡而已。而支付宝和微信都是有自己的账户体系,甚至替代一部分银联功能。所以,各大银行当然会支持啦!
重点,我们还是来说说开发。


一 、创建项目



这一步其实没什么好说的。我们主要是为了要程序的 bundle id




二 、配置环境



首先需要大家了解一个叫做 merchant ID 的东西,这是一个 id ,需要在官网上进行配置。就和真机调试的时候配置证书一样。注册过后,就相当于有了一个商人的身份。这样你就可以使用这个商人的身份来接受付款。
1 )注册一个 merchant ID
1. Member Center ,选择 Certificates, Identifiers & Profiles
2. Identifiers 下面,选择 “Merchant IDs”
3. 单击右上角的 添加 按钮( + )。
4. 输入描述和标识符,然后单击 继续
5. 完成
2 )为你的 merchant ID 配置一个证书
1. Member Center ,选择 Certificates, Identifiers & Profiles
2. Identifiers 下面,选择 “Merchant IDs”
3. 单击 编辑
4. 上传 CSR 文件。(和真机调试一样,通过钥匙串生成)
5. 下载证书通过点击下载,并点击完成。




三 、添加项目对 Apple Pay 的支持

1. 打开项目。
2. 选择项目
3. 点击 Capabilities
4. 打开 Apple Pay 的开关
5. 并且勾选当初注册的 merchant ID
这个时候你应该三个灰色的小对勾,如果你按照上面的步骤是没问题的。如果碰到输入 “diffrent strings” 的字样,就是你的某个 ID 被占用了。换个名字就行。





四 、代码



1 )导入 PassKit 框架

#import <PassKit/PassKit.h> 

2 )创建付款请求
付款请求是  PKPaymentRequest  类的实例。付款请求包括所购买的商品,用户信息等等。
在创建付款请求之前,确定用户是否可以使用网络,通过调用  PKPaymentAuthorizationViewController  类中的  canMakePaymentsUsingNetworks:  的方法。确定用户设备是否允许使用 Apple Pay ,通过调用  PKPaymentAuthorizationViewController  类中的  canMakePayments  方法
如果  canMakePayments  返回  NO ,那么说明该设备不支持 Apple Pay
如果  canMakePayments  返回  YES ,但  canMakePaymentsUsingNetworks :返回  NO ,设备支持苹果支付,但用户未添加任何所要求的银行卡。

    PKPaymentRequest *request = [[PKPaymentRequest alloc] init]; 

2.1 )创建相关商品信息
商品信息的关键类是  PKPaymentSummaryItem ,每一个 item 对象都是一个商品信息,描述了一个商品和它的价格。通过  PKPaymentSummaryItem  的类方法  summaryItemWithLabel:(NSString  )label amount:(NSDecimalNumber )amount ,可以创建出一个商品信息的实例。
然后放入  request.paymentSummaryItems  数组当中。数组中,最后的对象是总价。

PKPaymentSummaryItem *good1 = [PKPaymentSummaryItem summaryItemWithLabel:@"HHKB professional 2" amount:[NSDecimalNumber decimalNumberWithString:@"1388"]];  PKPaymentSummaryItem *good2 = [PKPaymentSummaryItem summaryItemWithLabel:@" 营养快线 " amount:[NSDecimalNumber decimalNumberWithString:@"4"]];  PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@" 德玛西亚 " amount:[NSDecimalNumber decimalNumberWithString:@"1392"]];  request.paymentSummaryItems = @[ good1, good2, total ]; 

2.2 )货币单位
货币单位需要使用

request.currencyCode = @"CNY”; (人民币) 

2.3 Wallet 所绑定的卡的类型

request.supportedNetworks = @[ PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkChinaUnionPay ]; 

2.4 merchant ID

request.merchantIdentifier = @"merchant.cn.itcast.ITCASTPayDemo"; 

2.5 )支付处理标准
通过指定 merchantCapabilities 属性来指定你支持的支付处理标准, 3DS 支付方式是必须支持的, EMV 方式是可选的。
request.merchantCapabilities = PKMerchantCapabilityEMV;
2.6 )配送信息
设置后,如果用户之前没有填写过,那么会要求用户必须填写才能够使用 Apple Pay

request.requiredShippingAddressFields = PKAddressFieldPostalAddress | PKAddressFieldPhone | PKAddressFieldEmail | PKAddressFieldName; 

3 )创建用来显示支付信息的控制器
这个专门用来显示支付 息的控制器是  PKPaymentAuthorizationViewController  类的实例。可以在初始化方法中传入一个付款请求。然后使用 modal 的方式显示出来即可。

PKPaymentAuthorizationViewController *paymentPane     = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; [self presentViewController:paymentPane animated:YES completion:nil]; 

3.1 )为显示支付信息的控制器设置代理
遵守  PKPaymentAuthorizationViewControllerDelegate  协议,然后设置代理。

paymentPane.delegate = self; 

这个协议中与两个 required 的方法。

- (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller { [self dismissViewControllerAnimated:YES completion:nil]; } 

这个方法在支付结束和点击取消的时候调用,所有直接写上 dismiss 就可以了。

- (void) paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller                     didAuthorizePayment:(PKPayment *)payment  completion:(void (^)(PKPaymentAuthorizationStatus))completion { completion(PKPaymentAuthorizationStatusSuccess); } 

用户发送付款请求后会调用该方法。在这个方法中发送相关的支付信息到你的服务器,最后通过服务器来处理。如果服务期处理成功,那么需要调用  completion  block  并且传入  PKPaymentAuthorizationStatusSuccess  的标记即可。如果服务器处理不成功,那么传一个其他的标记就可以了。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值