zoukankan      html  css  js  c++  java
  • 快速玩转Apple Pay开发

    快速玩转Apple Pay开发

    更新时间:2016年02月20日09时25分 来源:传智播客

      Apple Pay

      2016年2月18日上午,苹果公司宣布,与中国银联达成合作,正式在中国大陆上线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


      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 的标记即可。如果服务器处理不成功,那么传一个其他的标记就可以了。

      

  • 相关阅读:
    人生转折点:弃文从理
    人生第一站:大三暑假实习僧
    监听器启动顺序和java常见注解
    java常识和好玩的注释
    182. Duplicate Emails (Easy)
    181. Employees Earning More Than Their Managers (Easy)
    180. Consecutive Numbers (Medium)
    178. Rank Scores (Medium)
    177. Nth Highest Salary (Medium)
    176. Second Highest Salary(Easy)
  • 原文地址:https://www.cnblogs.com/r360/p/5546627.html
Copyright © 2011-2022 走看看