Apple Pay支付从0到1

常识篇

  • 版本要求:iOS操作系统9.2及以上系统版本,WatchOS需要2.1及以上版本。

  • 设备要求:与 Apple Pay 兼容的设备

    • iPhone:iPhone XS、iPhone XS Max、iPhone X、iPhone 8、iPhone 8 Plus、iPhone 7、iPhone 7 Plus、iPhone 6s、iPhone 6s Plus、iPhone 6、iPhone 6 Plus、iPhone SE
    • iPad: iPad(第 6 代)、iPad Pro、iPad(第 5 代)、iPad Air 2、iPad mini 4、iPad mini 3
    • iWatch:Apple Watch Series 4、Apple Watch Series 3、Apple Watch Series 2、Apple Watch Series 1、Apple Watch(第 1 代)
    • Mac:配备触控 ID 功能的 Mac 机型、2012 年或之后推出的 Mac 机型,与支持 Apple Pay 的 iPhone 或 Apple Watch 配合使用
  • 银行要求:官方声明参与的银行和发卡机构

  • 其他要求:安全隐私

证书篇

登录开发者账号

点击进入Certificates, Identifiers & Profiles

Apple Pay支付从0到1_第1张图片
Certificates, Identifiers & Profiles

点击左侧App IDs

Apple Pay支付从0到1_第2张图片
App IDs

查看iOS App IDs中是否有你项目的id(Bundle identifier),有的话点开编译[编辑的方式参照如下]。为了展示完成的证书创建思路,按照未含有,重写创建处理。

首先我创建一个名为Apple Pay Demo 。Bundle identifier为com.text.checkstand测试Demo。点击证书页面右上角的➕Register iOS App IDs

Add
Apple Pay支付从0到1_第3张图片
Register iOS App ID

选中Apple Pay Payment Processing

Apple Pay支付从0到1_第4张图片
选择Apple Pay

点击Continue确认,发现Apple Pay Payment Processing 的状态是橘色-Configurable,需要进一步配置

Apple Pay支付从0到1_第5张图片
查看证书状态

点击Merchant IDs,添加Register Merchant IDs

Apple Pay支付从0到1_第6张图片
Merchant IDs
Add
Apple Pay支付从0到1_第7张图片
Register Merchant ID
Apple Pay支付从0到1_第8张图片
Register

注册完Merchant IDs 之后回到iOS App IDs页面 点击新建的App ID进行编辑

Apple Pay支付从0到1_第9张图片
App ID
Apple Pay支付从0到1_第10张图片
查看状态

App ID编辑

Apple Pay支付从0到1_第11张图片
编辑

选择刚才所建的Merchant ID

Apple Pay支付从0到1_第12张图片
选择

确认之后返回,Apple Pay Payment Processing 的状态是绿色-Enabled

Apple Pay支付从0到1_第13张图片
查看Apple Pay状态

到这里Apple Pay证书创建之路已经走完一半,接下来再点击Merchant IDs,对刚刚生成的Apple Pay Demo Merchant进行编辑,生成(RSA).cer。

Apple Pay支付从0到1_第14张图片
创建证书

这里着重号❗️❗️❗️❗️表示,如果是接入银联SDK可直接跳过钥匙串部分操作,直接跳到下方银联SDK接入篇-配置处理

电脑打开钥匙串,点击钥匙串访问 -> 证书助理 -> 从证书把发机构请求证书

Apple Pay支付从0到1_第15张图片
钥匙串
Apple Pay支付从0到1_第16张图片
生成证书助理

生成一个.certSigningRequest的白色文件

Apple Pay支付从0到1_第17张图片
certSigningRequest文件

回到Certificates, Identifiers & Profiles 的 iOS Merchant ID Settings页面点击页面上的 Create Certificate

Apple Pay支付从0到1_第18张图片
证书
Apple Pay支付从0到1_第19张图片
证书

选择钥匙串生成的白色文件

Apple Pay支付从0到1_第20张图片
选择文件
Apple Pay支付从0到1_第21张图片
下载

Download 如下图

Apple Pay支付从0到1_第22张图片
cer文件
双击前去钥匙串中查看
证书状态
当然你也可能显示是如下的红色文字此证书是由未知颁发机构的签名
Apple Pay支付从0到1_第23张图片
证书状态 error
点击如下两个链接安装证书,然后移除未知颁发机构的证书、再次双击安装

WWDR Certificate 证书

Worldwide Developer Relations - G2 Certificate 证书

Apple Pay支付从0到1_第24张图片
WWDR/Worldwide

Xcode设置篇

Apple Pay支付从0到1_第25张图片
Xcode
Xcode

原生实现篇

代码实现思路

  • 导入PassKit框架

  • 进行设备和最低版本判断,参考条件查看最上方

  • 创建PKPayment类来创建支付请求,设置国家代码,币种,由商家支持的支付网络 所支持的卡类型。设置merchantIdentifier-要和你在开发者中心生成的id保持一致如我demo设置的merchant.com.text.checkstand

  • 创建PKPaymentSummaryItem来创建商品信息,显示认证视图设置代理-PKPaymentAuthorizationViewControllerDelegate

  • 在paymentAuthorizationViewController代理回调中处理token值和商品的其他信息上传到服务器后台。通过这个字段PKPaymentAuthorizationStatus来判断最终支付结果。

注!我就不直接复制代码块。

接入银联SDK实现篇

配置处理

跳过了钥匙串生成这部是为什么?
因为:生成cer文件是要选择文件上传进行生成,而如果接入银联SDK的话,这个文件是通过银联申请的。
Apple Pay支付从0到1_第26张图片
银联配置文件

如上图的步骤二取代了钥匙串生成的部分,在选择文件的时候选择的是银联那获取的cer文件。具体银联接入可查看-银联Apple Pay控件接入指引等文件。

然后生成RSA,下载。

代码实现思路

  • 导入相关文件和依赖
  • UPAPayPlugin 调startPay的类方法
/**
 *  支付接口
 *
 *  @param tn             订单信息
 *  @param mode           接入模式,标识商户以何种方式调用支付控件,00生产环境,01测试环境
 *  @param viewController 启动支付控件的viewController
 *  @param delegate       实现 UPAPayPluginDelegate 方法的 UIViewController
 *  @param mID            苹果公司分配的商户号,表示调用Apple Pay所需要的MerchantID;
 *  @return 返回函数调用结果,成功或失败
 */
+ (BOOL)startPay:(NSString*)tn
            mode:(NSString*)mode
  viewController:(UIViewController*)viewController
        delegate:(id)delegate
  andAPMechantID:(NSString* )mID;
  • 遵守代理,实现代理方法,获取支付回调
#pragma mark 响应控件返回的支付结果 - 银联Apple Pay 
- (void)UPAPayPluginResult:(UPPayResult *)result
{
    if(result.paymentResultStatus == UPPaymentResultStatusSuccess) {

        NSLog(@"付款成功");
        //交易成功
    }
    else if(result.paymentResultStatus == UPPaymentResultStatusFailure) {
        
        NSLog(@"付款失败")
        //交易失败
    }
    else if(result.paymentResultStatus == UPPaymentResultStatusCancel) {
        
        NSLog(@"付款取消")
        //交易取消
    }
    else if(result.paymentResultStatus == UPPaymentResultStatusUnknownCancel) {
        
        NSLog(@"支付过程中取消了,请查询后台确认订单");
        //交易取消
    }
}
Apple Pay支付从0到1_第27张图片
支付调用

博客地址

你可能感兴趣的:(Apple Pay支付从0到1)