Apple Pay

Apple Pay的简单介绍。

Apple

Pay并不是独立的第三方支付服务,相比较支付宝和微信支付,他没有自己的账户,也不参与资金的流动, Apple

Pay只是将原有的实体银行卡变成手机上“虚拟的银行卡”。Apple

Pay依赖iPhone系统底层的整合,在便捷程度上,非第三方支付能比。如果你们真的要和第三方的支付对比的话.只说一句话:一个是系统级的,一个是应用级的,剩下的,你们自己看着办。

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

并且Apple

Pay 也只能在特定的设备上使用,目前为止,这些设备包括 iPhone 6, iPhone 6+, iPad Air  2, iPad

mini 3. 这是因为 Apple Pay 需要特定的硬件芯片来支持,这个硬件叫做 Secure Element

(简称SE,安全元件),他可以用来存储和加解密信息。可以把他理解成需要一种硬件的支持.

实际上Apple Pay是在2016年的2月份才来到中国大陆.也就是说,如果我们要实现Apple Pay就要让版本号支持到iOS9.2以上的系统.

开发流程

我们在写代码前需要做一些工程的配置:我们需要有一个具有ApplePay服务的APP ID.以及真机测试的证书和描述文件

1、登录开发者账号,创建证书。

创建APPID(都会的,此处不在细说)

最最最重要的有点,我们要勾选ApplePay的服务:

记得勾选Apple Pay服务

然后继续

没错,你们看见这个Apple Pay服务了。但是他是黄色的不可用的。是不是和我们做远程推送服务的时候有点像。没错,我们还需要一样东西:Merchant IDs(商业ID)

或者选择已有的APPID 编辑, 添加 Apple Pay服务[和推送类 PushNotifications]

已有的APP ID 添加Apple Pay

然后继续

创建 Merchant ID(商业ID)

点击创建商业ID

点击"+"添加

注意商业ID命名格式,merchant.com.kede.ApplePayDemoCN 这个值,我们工程中需要用到。

商业ID命名 命名格式一定要正确[此处merchant 字段会自动补全]

注:此处ID 要复制保留一下 xcode工程会用到

continue 继续

生成完成后,还没有结束,我们还需要进行商业id的修改:

点击编辑


生成Apple Pay证书

点击CreateCertificate后会出现这样的界面

选择YES

然后, continue。

*******************************************************

[注: 我测试的时候选择NO 无法创建证书会报以下错误]

*******************************************************

接着需要一个CSR文件

CSR文件创建和平常申请证书一样,就是钥匙串从证书颁发机构请求证书

[CertificateSigningRequest.certSigningRequest]

存储到桌面

然后回到开发者中心,选择上传

选取桌面上的CSR[CertificateSigningRequest.certSigningRequest]

之后就可以继续,并下载到本地双击安装到钥匙串,  然后选择done

证书创建完成

**************************************

注: 此处测试时候生成的证书安装到钥匙串中会提示"此证书是由未知颁发机构签名的"[貌似不影响测试] [对接第三方的时候可能会对证书操作]

按照网上方法处理后会变为"此证书标记为受此账户信任".

暂时这样处理, 还没找到其他方法

参考:

证书问题

http://www.jianshu.com/p/a5f0795cf781

**************************************

配置证书和描述文件(真机测试)

接下来就是代码部分了,新建工程。创建完成后,对当前xcode进行配置信息。

配置xcode [注意bundle id 别错了]

配置开发证书

接着还需要配置一个Capabilities

选择一个可用的Merchant ID

选择后,如果下面会出现一些红色的错误。可能因为我们当前这个工程中的配置还未完成。接着可能需要开发整证书/发布证书/描述文件。

这里证书创建,描述文件的创建(齿轮文件)[大家都会的]。

然后证书和描述文件下载下来,双击运行。然后继续配置xcode

然后你回到Capabilities的位置, 你就会发现,红色错误解决了。

所有配置完成

以上就是Xcode的配置。

接下来,代码部分:

我们需要添加一个按钮,进行支付代码的实现。我们要添加的按钮是一个 PKPaymentButton, 这个在 iOS 8.3 时引入。这个按钮是本地化的,能够提供标准的样式。因此,我们强力推荐使用这个按钮来启动 Apple Pay 的支付页面。

//    Type : 类型

//    PKPaymentButtonTypePlain

//    PKPaymentButtonTypeBuy

//    PKPaymentButtonTypeSetUp (ios 9)

//    PKPaymentButtonTypeInStore (ios 10)

//    style : 样式

//    PKPaymentButtonStyleWhite

//    PKPaymentButtonStyleWhiteOutline

//    PKPaymentButtonStyleBlack

也就是说,系统给我们提供了一个按钮,专门用来处理ApplePay的操作,其实这个按钮可不是随便都可以使用:

显示 Apple Pay 按钮

https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines-CN.pdf

首先我们需要在我们的工程中引入头文件#import

创建UI

支付按钮方法

我的测试机是国行的 必须要支持银联 否则会崩溃, [countryCode,currencyCode都要正确]

[我个人判断可能与Merchant ID证书创建的时候有关,我用的开发者账号只能选择YES ]

判断是否能使用Apple Pay

然后还需要遵循他的协议并且实现他的代理方法

遵循协议

实现代理方法:

在Apple Pay验证了支付之后,仍然需要开发者来完成交易,这可以用didAuthorizePayment委托方法来完成,它需要你连接服务器并上传支付令牌和其他信息,以完成整个支付流程。

效果[模拟器]



支付授权的流程:

1.框架发送支付请求给安全模块,只有安全模块可以访问存储在设备上的标记化的卡信息。

2.安全模块把特定的卡和商家等支付数据加密,以保证只有苹果可以读取,然后发送给框架。框架会将这些数据发送给苹果。

3.苹果服务器再次加密这些支付数据,以保证只有商家可以读取。然后服务器对它进行签名,生成支付token,然后发送给设备。

4.框架调用相应的代理方法并传入这个token,然后你的代理方法传送token给你的服务器。

也就说,Apple Pay只做了支付信息的传递,不做支付功能。真正实现Apple Pay功能的是我们公司的后台人员。

服务器接收到token后的一般处理流程

1.验证支付数据的哈希表和签名 为加密过的支付数据解码 向支付处理系统提交支付数据 向订单追踪系统提交订单

2.处理支付请求时,你有两个选择;你既可以利用支付平台处理支付请求,也可以自己实现支付请求处理流程。一个常用的支付平台可以完成上述大部分操作。

注: demo测试的时候 , 首先硬件要支持Apple Pay [iPhone 6 以上设备]

系统版本我用iOS 8.1.1测试的Apple Pay不可用, iOS 9.3.5测试的可以

[网上有资料说是,国内的要iOS 9.2 以上才可以]

相关参考:

1https://developer.apple.com/apple-pay/

2https://support.apple.com/zh-cn/HT203027

3https://developer.apple.com/apple-pay/get-started/cn/

4https://developer.apple.com/apple-pay/Apple-Pay-Identity-Guidelines-CN.pdf

5http://www.jianshu.com/p/347379007a14

证书准备:http://www.jianshu.com/p/2e5e45afc246

证书问题

http://www.jianshu.com/p/a5f0795cf781

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

推荐阅读更多精彩内容