"iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下。"

第一步先修改target为iOS 8.1,当然支持中国的需要9.2以上且需要iPhone6以上了,然后在项目Capabilities里将Apple Pay设置为on,这将自动导入需要的库文件,然后添加一个权限文件并设置,最后修改或创建你的App ID。

正如上图提示的一样,你可能会注意到上面没有有效的Merchant ID,我们需要创建一个,访问苹果iOS 开发者中心的位于Identifiers > Merchant ID的页面。然后随着流程指引,创建一个Merchant ID并注册它。这个和其他证书差不多再此不做过多的阐述。下图是已经创建好的参考图片。

下载安装然后刷新下刚刚项目里面的界面,选择打勾即可,可以看到如下图

下面简单说下代码:

.h文件里面

  1. #import [UIKit/UIKit.h](因识别问题,此处将尖括号改为方括号)
  2. #import [PassKit/PassKit.h]
  3. @interface ViewController : UIViewController @end

.m文件

  1. #import "ViewController.h"
  2.  
  3. @interface ViewController ()
  4.  
  5. @end
  6.  
  7. @implementation ViewController
  8.  
  9. - (void)viewDidLoad {
  10.     [super viewDidLoad];
  11.     UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
  12.     btn.frame = CGRectMake(60, 100, 200, 50);
  13.     btn.center = self.view.center;
  14.     [btn setBackgroundImage:[UIImage imageNamed:@"ApplePayBTN_64pt__whiteLine_textLogo_"] forState:UIControlStateNormal];
  15.  
  16.     [btn addTarget:self action:@selector(ApplePay) forControlEvents:UIControlEventTouchUpInside];
  17.     [self.view addSubview:btn];
  18.  
  19. }
  20.  
  21. #pragma mark ----支付状态
  22. - (void)paymentAuthorizationViewController:(PKPaymentAuthorizationViewController *)controller
  23. didAuthorizePayment:(PKPayment *)payment
  24. completion:(void (^)(PKPaymentAuthorizationStatus status))completion
  25. {
  26.     NSLog(@"Payment was authorized: %@", payment);
  27.  
  28.     BOOL asyncSuccessful = FALSE;
  29.     if(asyncSuccessful) {
  30.         completion(PKPaymentAuthorizationStatusSuccess);
  31.  
  32.         // do something to let the user know the status
  33.  
  34.         NSLog(@"支付成功");
  35.  
  36.     } else {
  37.         completion(PKPaymentAuthorizationStatusFailure);
  38.  
  39.         // do something to let the user know the status
  40.         NSLog(@"支付失败");
  41.  
  42.     }
  43.  
  44. }
  45. #pragma mark ----开始支付
  46. - (void)ApplePay{
  47.     if([PKPaymentAuthorizationViewController canMakePayments]) {
  48.  
  49.     NSLog(@"支持支付");
  50.  
  51.     PKPaymentRequest *request = [[PKPaymentRequest alloc] init];
  52.  
  53.     PKPaymentSummaryItem *widget1 = [PKPaymentSummaryItem summaryItemWithLabel:@"鸡蛋"
  54.     amount:[NSDecimalNumber decimalNumberWithString:@"0.99"]];
  55.  
  56.     PKPaymentSummaryItem *widget2 = [PKPaymentSummaryItem summaryItemWithLabel:@"苹果"
  57.     amount:[NSDecimalNumber decimalNumberWithString:@"1.00"]];
  58.  
  59.     PKPaymentSummaryItem *widget3 = [PKPaymentSummaryItem summaryItemWithLabel:@"2个苹果"
  60.     amount:[NSDecimalNumber decimalNumberWithString:@"2.00"]];
  61.  
  62.     PKPaymentSummaryItem *widget4 = [PKPaymentSummaryItem summaryItemWithLabel:@"总金额" amount:[NSDecimalNumber decimalNumberWithString:@"3.99"] type:PKPaymentSummaryItemTypeFinal];
  63.  
  64.     request.paymentSummaryItems = @[widget1, widget2, widget3, widget4];
  65.  
  66.     request.countryCode = @"CN";
  67.     request.currencyCode = @"CHW";
  68.     //此属性限制支付卡,可以支付。PKPaymentNetworkChinaUnionPay支持中国的卡 9.2增加的
  69.     request.supportedNetworks = @[PKPaymentNetworkChinaUnionPay, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa];
  70.     request.merchantIdentifier = @"merchant.com.example.lbapplepaydemo";
  71.     /*
  72.     PKMerchantCapabilityCredit NS_ENUM_AVAILABLE_IOS(9_0)   = 1UL << 2,   // 支持信用卡
  73.     PKMerchantCapabilityDebit  NS_ENUM_AVAILABLE_IOS(9_0)   = 1UL << 3    // 支持借记卡
  74.     */
  75.     request.merchantCapabilities = PKMerchantCapabilityCredit;
  76.     //增加邮箱及地址信息
  77.     request.requiredBillingAddressFields = PKAddressFieldEmail | PKAddressFieldPostalAddress;
  78.     PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
  79.     paymentPane.delegate = self;
  80.  
  81.     if (!paymentPane) {
  82.  
  83.         NSLog(@"出问题了");
  84.  
  85.     }
  86.  
  87.     [self presentViewController:paymentPane animated:YES completion:nil];
  88.  
  89.     } else {
  90.         NSLog(@"该设备不支持支付");
  91.     }
  92.  
  93. }
  94.  
  95. #pragma mark ----支付完成
  96. - (void)paymentAuthorizationViewControllerDidFinish:(PKPaymentAuthorizationViewController *)controller
  97. {
  98.  
  99.     [controller dismissViewControllerAnimated:TRUE completion:nil];
  100. }
  101.  
  102. @end

在此过程中你可能会遇到如下问题:

1.countryCode 不知道怎么查,我这写的是中国的countryCode查询网站

2.currencyCode 不会查,到目前为止,我也没搞懂,在错误信息里面提示一堆,随便选的一个。

3.木有iPhone6手机,我就是其中之一…….

其他我认为比较重要的属性,请详细看Demo具体效果图如下:

上图皆为模拟器

原文链接:http://www.cocoachina.com/ios/20160219/15345.html

Apple Pay强势来袭,开发者应做的事情(转)的更多相关文章

  1. Apple Pay强势来袭,开发者应做的事情

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...

  2. [Apple开发者帐户帮助]六、配置应用服务(1.2)Apple Pay:在网络上配置Apple Pay

    网上Apple Pay允许用户在您的网络应用中购买商品和服务. 首先在您的开发者帐户中创建一个商家标识符,该标识符可以将Apple Pay唯一标识为能够接受付款的商家.您可以为多个本机和Web应用程序 ...

  3. [Apple开发者帐户帮助]六、配置应用服务(1.1)Apple Pay:配置Apple Pay(iOS,watchOS)

    Apple Pay允许用户在您的应用中购买商品和服务.要将Apple Pay 权利添加到您的App ID,请先创建商家标识符,然后启用Apple Pay并创建付款处理证书. 或者,您可以使用Xcode ...

  4. 开发apple pay碰到的问题总结

    本来想简单总结一下Apple Pay 开发过程中的几个问题, 结果被下面这篇文章全碰上了, 干脆全文转载, 作者对相关资源整理得比较详细, 比较有参考价值 总的来说, 我们做过 APNs 推送的话, ...

  5. Apple Pay(转)

    Apple Pay 是在 iOS 8 中第一次被介绍,它可以为你的应用中的实体商品和服务,提供简单.安全.私密的支付方式.它使得用户支付起来非常简便,只需按一下指纹就可以授权进行交易. Apple P ...

  6. Apple Pay 应用 demo --备用哦

    "iOS8.1就已经有这个功能了,只是木有现在这么的火,现在的趋势是要火的节奏,因此很多电商平台B2B,P2P,C2C,X2X都有可能需要这个屌丝的付款功能了,在此简单的研究一下." ...

  7. 关于Apple Pay,一篇让你不看就会后悔的文章

    编者按:本文作者康上明学为“小米生活”产品经理,在苹果Apple Pay发布后,他对该产品做了深入研究,带来这篇文章. 对于 Apple Pay ,我有几个疑问: 线下支付是一个庞大复杂的流程,当中涉 ...

  8. AR实景购物强势来袭,华为nova3让你试完再买!

    没空买家具?没空挑壁纸? 浴盆挑了仨星期,还是老样子! 不敢下手买,没空往回退, 这样的生活,你说累不累! 别愁了, 按华为nova3说的办, 可省千元退货费! 刚刚过去的华为nova3发布会上,华为 ...

  9. AndroidQ强势来袭,国产自研系统还有未来吗?

    我的小米8在重启时,屏幕上总会出现那句让人印象深刻的话--"Powered by android".事实上,几乎所有Android手机都会出现这几个单词--国产智能手机也不例外.这 ...

随机推荐

  1. html的meta总结

    引子 之前的我的博客中对于meta有个介绍,例如:http://www.haorooms.com/post/liulanq_think_ie 浏览器安全性想到的这篇文章,中间介绍了meta下面IE的一 ...

  2. Windows系统下如何优化Android Studio

    Android Studio将是Android开发大势所趋. 安装Android Studio时需注意的细节: · 找到安装目录bin目录下idea.properties 最后一行加入:    dis ...

  3. iOS Block的本质(一)

    iOS Block的本质(一) 1.对block有一个基本的认识 block本质上也是一个oc对象,他内部也有一个isa指针.block是封装了函数调用以及函数调用环境的OC对象. 2.探寻block ...

  4. java代码(生成日历时间)

    package test; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; p ...

  5. mysqldumpslow及explain使用简介

  6. 最新深度ghost win7系统下载

    深度技术ghost win7系统 64位快速安装版 V2016年2月,深度技术ghost win7 64位快速安装版在不影响大多数软件和硬件运行的前提下,已经尽可能关闭非必要服务,自动安装AMD/In ...

  7. Perl 输出内容到 excel

    可以参考:  http://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel/lib/Spreadsheet/WriteExcel.pm 使用Spre ...

  8. Scalatra

    SBT和giter8 在你开始着手之前,你需要安装两个工具(我假设你已经安装了JDK1.6+).我将给你提供简缩的安装指令,详细版的安装指令可通过 下面的scalatra页面找到( http://ww ...

  9. CSAPP lab1 datalab-handout

    这是一个关于机器级的整数.浮点数表示和位运算的实验.要求用给定的操作符.尽可能少的操作数去实现对应的函数功能. 完整的实验包:链接: https://pan.baidu.com/s/1xUBi3XDl ...

  10. struts2的动态方法配置

    动态方法调用配置 <package name="test" extends="struts-default"> <aciton name=&q ...