Apple Pay

证书配置

Posted by RocketsChen on December 19, 2018

常识篇

  • 版本要求: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

w200

点击左侧App IDs

w200

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

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

选中Apple Pay Payment Processing

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

点击Merchant IDs,添加Register Merchant IDs

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

App ID编辑

选择刚才所建的Merchant ID

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

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

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

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

生成一个.certSigningRequest的白色文件

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

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

Download 如下图

双击前去钥匙串中查看

当然你也可能显示是如下的红色文字此证书是由未知颁发机构的签名

点击如下两个链接安装证书,然后移除未知颁发机构的证书、再次双击安装

WWDR Certificate 证书

Worldwide Developer Relations - G2 Certificate 证书

Xcode设置篇

接入银联SDK实现篇

配置处理

跳过了钥匙串生成这部是为什么?
因为:我们生成cer文件是要选择文件上传进行生成,而如果接入银联SDK的话,这个文件是通过银联申请的。如果不通过银联生成最终会导致支付失败❗️❗️❗️❗️

如上图的步骤二取代了我们钥匙串生成的部分,在选择文件的时候选择的是银联那获取的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<UPAPayPluginDelegate>)delegate
  andAPMechantID:(NSString* )mID;
  • 遵守代理,实现代理方法,获取支付回调
#pragma mark 响应控件返回的支付结果 - 银联Apple Pay <UPAPayPluginDelegate>
- (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证书配置