Apple Pay 笔记

Apple Pay


 一个方便 & 安全的移动支付技术,让用户完成他们的支付环节并把支付相关的信息告诉你

 只可以购买实物或者服务,不可以用来支付IAP

应用内集成Apple Pay需要两个部分:交易授权与交易处理。交易授权在应用内进行,通过PassKit.framework所提供的接口向用户获取支付授权(payment token);而交易处理则需要授权后调用可受理交易的服务器接口(将token传入服务器进行处理),你可以选择某个支付平台来处理交易,或者也可以自己实现交易处理过程,苹果官方比较推荐前者。

譬如选择了接入银联的Apple Pay,所以除了查看 Apple 的文档以外,还要看银联的开发文档。

配置

Merchant Identifier

1. 到 Member Center 上为 App 注册 Merchant ID

2. 为 Merchant ID 上传 CSR (从银联获取)

3. 通过上传的 CSR 生成证书,并下载

Steps

1. 创建 Payment Request,设置它的 subtotal,discount 等信息

2. 通过 payment authoriztion view controller 展示支付信息,等待用户支付授权

3. 用户授权支付后,Apple Pay 加密处理支付信息,依据 merchant id 以及对应的支付卡信息计算出 payment token

4. payment token 用 Merchant Id对应的证书加密,发送到 Apple Server

5. Apple Server 把 token 交到我们的 App

6. Payment token 交给可以处理交易的第三方平台,我们这里是银联SDK

注意: app bundle 里不需要包含 Merchant Id 的证书

Payment Request

1. 创建 Payment Request 之前,最好先检查是否可以使用 Payment

canMakePayments 是否支持 Apple Pay,NO时不要展示 Apple Pay 按钮

canMakePaymentsUsingNetworks:

如果 canMakePayments 是 YES,canMakePaymentsUsingNetworks 是 NO。意味着当前设备没有绑银行卡,你可以展示一个 setup 按钮,推荐调用 openPaymentSetup 鼓励用户添加银行卡

2. Apple Pay 的条件满足以后,在用户按下 Apple Pay 后应该马上展示 payment 的信息等待用户授权。

3. 如果支付流程只在 Web 的方式上进行,你要在现有的支付流程中插入 Native 代码的逻辑,譬如是捕捉url的方式。

Currency Code & Country Code

currencyCode 是描述支付所用的货币,三位字符:USD

countryCode 是处理这个订单的地方,两位字符:US

Merchant Id

request 的 merchant id 必须在 app entitlement 里声明

Authorizing Payments

当用户授权了支付,Apple Pay 会生成一个与 Apple Server 和本设备的 Security Element 对应的 payment token。

1. Security Element 在获取 payment request 之后,把payment card 以及 商户 的信息加密后送到 Apple 的服务端

2. Apple 的服务端再利用配置好的 Merchant ID 的证书加密 payment 数据,返回给设备

3. 在 paymentAuthorizationViewController:didAuthorizePayment:completion: 协议中返回 token。app 把 token 发到拥有解释能力的服务端进行扣款。

4. 当 Apple Pay 显示了支付的状态信息之后,paymentAuthorizationViewControllerDidFinish: 会触发,app dimiss 支付授权的界面,并展示自己的订单确认界面。

Processing Payments

使用的是银联SDK,有银联处理支付之后的事宜。


UI

Apple Pay 的 UI 有严格要求:

1. 对于 iOS8.3 及以后,使用 PKPaymentButton 创建按钮

2. 对于 iOS8.3 以前,使用官方指定尺寸的图片

2. Apple 对 Apple Pay 的展示有严格要求,甚至是 "Apple Pay" 这个词组都不允许有任何不一致, 如果不想反复被reject还是先看看 [Apple Pay Identity Guide](https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines.pdf)

3. 不允许翻译:Apple,Apple Pay,iPhone,Touch ID 以及其它Apple 的 trademark。

HIG

入口:Button

当用户按下 Apple Pay 的按钮,必须马上展示 Payment sheet。如果当前的设备不支持 Apple Pay 功能,你可以展示 Apple Pay 的 Set up 按钮,或者不展示 Apple Pay 按钮。

![Apple Pay Button](https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Art/apple_pay_small_button_2x.png)

Payment Sheet

用于展示订单的支付,配送,TAX等方面的信息(如果需要),app 可以指定 sheet 中的内容,但不可以干扰用户对 sheet 的交互

Payment Token

用户通过 Touch ID 授权(有些情况还需要银行的 PIN code)之后,你的 app 会获得 PassKit 的 payment token。里面包含完成交易所必要的信息,包括识别设备的 account number,金额,唯一的一次性密文。拥有证书私钥的商户可以解密这些支付信息,或者是提供支付SDK的商户。

在中国,目前能够提供支持 Apple Pay 支付解决方案的支付平台:

银联,连连支付(LianlianPay),首信易支付(PayEase),易宝支付(YeePay),银联商务(UMS)

Apple Demo

[Emporium](https://developer.apple.com/library/ios/samplecode/Emporium/Introduction/Intro.html#//apple_ref/doc/uid/TP40016175)

配置步骤笔记

下载来的项目有一些配置项目要留意补充

1. 到 itunesconnet 上配置 merchant,app id,provisioning profile(demo项目中还包含 watch)

2. AppConfiguration.swift 可能要修改 merchant ID 与你在 itunesconnect 中

配置的一样

3. 项目中有 User-Defined Setting “EMPORIUM_BUNDLE_PREFIX”, 用来配置 bundle id 以及

4. ProductTableViewController.swift 是生成 payment request 以及进行支付授权的界面。

supportedNetworks 增加 PKPaymentNetworkChinaUnionPay (iOS 要求9.2以上,修改 deployment target...)

paymentRequest 的 countryCode & currencyCode 要改成 CN & CNY

Apple Review Guides

Review Guide 是会更新的,建议定期查一下

[29.Apple Pay](https://developer.apple.com/app-store/review/guidelines/#apple-pay)

1. 使用 Apple Pay 的 app 必须提供完整的消费信息。如果 Apple Pay 用于订阅类型的周期性消费,你需要描述清楚订阅的周期,以及周期内所提供的服务,以及如何取消订阅

2. 使用的 Apple Pay 视觉元素必须符合官方要求 [Apple Pay Identity Guidelines](https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines.pdf)

3. 购买的东西必须符合地方法律

4. 必须提供 privacy policy

5. 从 Apple Pay 获取的数据在用于提供第三方实现支付时要符合法律要求


其它

Wallet 绑定银行卡

Apple Pay 的设计理念:不收集任何支付,交易的信息。而一个交易涉及到的有用户,商户(或者支付的app)和银行。基于安全的考虑,Apple Pay 要求用户设置了密码。

绑定银行卡:

1. 用户输入卡号等信息,iOS 把信息加密后发送到 Apple 的服务器

2. Apple 加密信息,根据你的支付网络(eg.银联),进行对应的加密。信息还包含:你的iTunes 上的一些交易信息,你的设备信息(手机号码,名称,设备型号,地理位置等)。

3. 发卡银行依据 Apple 发过来的信息决定能否让你绑卡成功

4. 绑卡成功的话,银行给 Apple 发送一个加密了的设备唯一的 Device Account Number (以及用于每次交易时生成动态安全码的key),Apple 不能对 Device Account Number 解密,只保存到设备上的 Security Element 芯片里。也不会备份到 iCloud。

5. Apple 保存卡号的一部分,以及 Device Account Number 的一部分。。卡描述信息到 Wallet,用以帮助你管理银行卡。

假如 card number 理解成我们的 urs,Device Account Number 就是设备信息的种子,还有生成OTP的key,三者

Apple Pay 店内支付

1. iPhone 接近 NFC 终端时会展示你的默认银行卡,通过你的 Touch ID 或者密码授权支付。Apple Watch 需要在解锁状态下双击 side button.

2. 授权后,Device Account Number ,动态安全码以及一些附加信息会发送给 NFC 终端

3. 支付组织通过动态码验证支付请求是否来自你的授权设备

Apple Pay 应用内支付

1. Apple Pay 在获取用户授权后加密交易数据,处理后再用开发者指定的key加密数据,把结果发送给开发者app。

2. 与店内支付类似,Device Account Number 以及动态安全码等信息会发送给 Apple

手机丢失

1. Find My iPhone 会清理你的绑定卡信息

2. 可以进入 iCloud settings 移除设备的支付授权。

后记

1. 成功调出 Apple Pay 界面,指纹授权支付提示错误

Reference

[ENJOY的Apple Pay应用内支付接入实践](http://geek.csdn.net/news/detail/60849)

[Apple Pay security and privacy overview](https://support.apple.com/en-sg/HT203027)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容