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

最全的apple pay苹果支付步奏相关推荐

  1. Apple pay 苹果支付

    1.银联认证,到银联下载证书 1.登录银联云闪付 查看<银联云闪付之 ApplePay 商户入网测试流程>https://jingyan.baidu.com/article/48206ae ...

  2. Apple Pay支付分享

    主要内容 1.目前国内支付体系 2.Apple Pay中产业链结构 3.Apple Pay中新技术的应用和集成简述 4.Apple Pay支付模式 5.Apple Pay银行卡绑定流程 6.Apple ...

  3. Apple Pay 在线远程支付

    Apple Pay 详细集成文档 Apple pay刚推出的时候可以说"绑定的过程很崩溃,用的时候很心碎",为什么要这样说呢?因为刚一推出,就有大量的人同时绑定,银行和银联又处理不 ...

  4. springboot 银联支付(apple pay支付)

    springboot 银联支付(apple pay支付) 应用:手机支付使用apple pay进行支付(apple pay是银联和苹果公司合作推出的支付产品,既可实现近场支付又可完成远程支付的服务,通 ...

  5. apple pay php 文档,Apple Pay 终于可以支付 iTunes、App Store 中的内容了

    虽然苹果很早就推出了支付服务 Apple Pay,但它一直以来都只被用于面向第三方的支付场景,苹果的 iTunes.App Store 等利用 Apple ID 登录的平台则采用一套独立的支付体系.不 ...

  6. 移动支付(mobile money)系列 —— Apple Pay的原理

    Apple Pay 背景 起因 传统基于磁条卡片(包括信用卡.银行卡)的支付流程是不安全且繁琐的,磁条接口.暴露在外的卡片号码.支付密码/安全码等都存在安全隐患,磁卡支付流程过长,用户体验差 Appl ...

  7. 苹果官方Apple Pay开发文档(中文版):开始使用Apple Pay

    原文地址:http://www.cocoachina.com/ios/20140910/9573.html 本文由CocoaChina翻译自苹果官方Apple Pay开发文档.目前版本为1.0 概览: ...

  8. 苹果官方Apple Pay开发文档(中文版)

    概览: Apple Pay为用户从你的App里购买实际的物品和服务提供简单而安全的方法.通过Touch ID,用户可使用储存在iPhone 6和iPhone 6 Plus上的信用卡和借记卡支付证书来授 ...

  9. Apple Pay与银联的联姻,是战略,不是产品

    近日,互联网圈被Apple Pay入华与银联联姻的消息刷屏了!!!! 一时间,各大媒体网站纷纷为支付宝和微信支付担忧,肿么办肿么办,大鳄来啦!不免我们这些屌丝都替马云马化腾捏把汗,多年经营的支付天下就 ...

最新文章

  1. linux下数据库的基本管理,数据库的管理_linux 运维之道 基础篇的技术博客_51CTO博客...
  2. Mac下Git与Github的简单使用
  3. Linux版本之挑选适合服务器的OS发行版
  4. 青茶什么时候拆_为什么日本绿茶那么绿?比中国的高级绿茶还要绿
  5. 整理JavaScript中,数组和字符的操作方法
  6. Scikit-learn 秘籍 翻译完成
  7. 从传统企业谈大数据的战略意义
  8. 解决苹果手机返回不刷新问题
  9. mysql建三行三列表格_基于另一个表中列的名称在mysql中创建表
  10. Xmind 2022精彩体验---什么叫流程图
  11. R语言快速绘制多因素回归分析森林图(1)
  12. OSEK OS(OSEK 操作系统)
  13. Windows 服务快捷启动命令
  14. linux使用USB转串口驱动设置
  15. Python模块selenium实例:电影分类排名数据生成json,sqlite和excel(openpyxl)文件(一)
  16. 内存高效的可逆 GAN 网络:Reversible GANs for Memory-efficient Image-to-Image Translation
  17. 孤儿文档是怎样产生的(MongoDB orphaned document)
  18. 实现内网穿透,个人电脑秒变服务器
  19. C#语言入门详解1-12
  20. 英文月份简写、星期简写

热门文章

  1. CVPR 2023 | 白翔团队提出:将CLIP模型用于场景文本检测
  2. python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...
  3. igfxpers.exe
  4. IIS的启动与停止命令
  5. A5M2数据库工具下载
  6. 【计算机网络】因特网通信
  7. AWK----awk与shell交互
  8. css设置背景半透明,文字不透明效果
  9. chrome浏览器自动填充时背景色改变(-webkit-autofill)
  10. yui2 datatable转换至yui3