APP应用接入ApplePay

2016年2月18日,ApplePay终于登陆中国了~ 
这对果粉尤其是苹果系开发者来说,无疑是一件好事,然而让开发者苦恼的是,我们应该如何接入ApplePay?开发指南只是讲解了如何获取token,但是如何通过token处理支付并没有相关说明,只是推荐大家通过第三方平台来处理支付流程:

In most cases, your app passes the encrypted payment token to a third-party payment platform to decrypt and process the payment. However, if your team has an existing payment infrastructure, you can decrypt and process the payment on your own server.

在苹果开发者中心可以看到,有如下几家第三方支付平台可以接入ApplePay: 
- CUP(中国银联) 
- LianlianPay (连连支付) 
- PayEase (首信易支付) 
- YeePay (易宝) 
- UMS(银联商务) 
详见:https://developer.apple.com/apple-pay/

嗯,接入渠道还是有的,只是没有广泛宣传而已,在这里我们就讲一下如何通过银联接入ApplePay。

在银联申请ApplePay

步骤一、成为银联手机支付入网商户

参照《全渠道业务运营服务指引》,签署业务 Apple Pay 线上支付合作协议,申请银联商户代码,准备接入的相关参数。

步骤二、登录银联商户服务平台,通过商户服务平台申请 CSR

1、 成为银联商户服务平台用户。 
在申请银联 Apple Pay 接入时,银联的联系人会分配商户服务平台的登录权限及 CSR 的申请权限。存量商户应确认是否开通了 Apple Pay 接入权限。 
2、 通过银联商户服务平台申请 CSR 
银联在商户服务平台 https://merchant.unionpay.com/中提供 Apple Pay 的 CSR 下载 
功能。登录商户服务平台,进入安全管理-CSR 文件下载,点击“生成 CSR”按钮,并将 获取的 CSR 保存。CSR 文件与商户代码一一对应,是交易安全保护的重要环节,请勿将 CSR 透漏给无关人员。 
3、 商户服务平台 CSR 生成页面示意 
这里写图片描述
重置 CSR 后,原 CSR 即刻失效,应重新向苹果公司的网站提交新的 CSR 文件。

在开发者中心开通ApplePay

步骤一、申请 MerchantID

登陆MemberCenter,选择Certificates, Identifiers & Profiles;  
在Identifiers下选择Merchant IDs,点击右上角添加按钮添加Merchant ID;  
输入描述信息和标识符(格式为merchant.com.company.productid),继续至完成即可。  
这里写图片描述

步骤二、请求证书

进入MemberCenter,根据之前步骤找到前面申请的Merchant ID;  
在这里可以编辑该项,上传之前生成的CSR文件并生成cer证书文件;  
下载证书文件即可。 
这里写图片描述

到这里,我们的ApplePay权限已经开通完毕,接下来就可以在项目中接入了。

需要注意的是,之前ApplePay没有入华前,证书申请需要苹果工作人员开通白名单,不知入华后是否还需要这一步。

在项目中接入ApplePay

步骤一、工程设置

在应用内集成Apple Pay,需要引用依赖库PassKit.framework,并且在Capability中启用Apple Pay权限(在这里需要配置merchantId)。  
这里写图片描述

步骤二、接入银联ApplePaySDK

支付流程如下: 
银联ApplePay支付流程
1-2、 商户生成订单,通过商户 SERVER 端将订单信息发送给银联支付网关; 3-4、银联支付网关记录订单信息,返回用来标识订单的 TN 号,经由商户 SERVER 返回至给 商户 APP; 
5、 商户 APP 调用银联 SDK,将 TN 号传递给银联 SDK 
6、 银联 SDK 向苹果公司的 PASSKIT FRAMEWORK 发起支付请求; 
7、 接口返回加密的支付 Token 信息; 
8-9、银联 SDK 将支付 Token 传递给银联支付网关,完成交易认证; 
10-12、银联将支付结果返回给商户 APP,商户 SERVER,商户 APP 负责提示用户交易结果。 
相信曾经接入过银联支付SDK的同学对这张图会比较熟悉,是的,这里的支付流程和之前几乎一模一样,只是多了银联SDK和PassKit交互的部分,之前的卡PIN输入变成了token获取。 
银联也是提供了专为ApplePay封装的SDK,与Passkit之间的交互完全由银联来代理。

<code class="hljs objectivec has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@interface</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UPAPayPlugin</span> : <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">NSObject</span></span>

<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//调起支付接口,比原先只多了APMechantID一个参数</span>
+ (<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">BOOL</span>)startPay:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span>*)tn mode:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span>*)mode viewController:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">UIViewController</span>*)viewController delegate:(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">id</span><UPAPayPluginDelegate>)delegate andAPMechantID:(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">NSString</span>* )mID;

<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@end</span>


<span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">//回调委托协议</span>
<span class="hljs-class" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@protocol</span> <span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">UPAPayPluginDelegate</span> <<span class="hljs-title" style="box-sizing: border-box; color: rgb(102, 0, 102);">NSObject</span>></span>
-(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span>) UPAPayPluginResult:(UPPayResult *) payResult;
<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">@end</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li></ul>

以上,就是应用内通过银联接入ApplePay的大体流程。 
控件包在此,包括接入文档、SDK及DEMO,大家可自行获取~资源地址

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值