当前位置: 代码迷 >> 综合 >> iOS Apple Pay(银联渠道) 、云闪付
  详细解决方案

iOS Apple Pay(银联渠道) 、云闪付

热度:78   发布时间:2023-10-26 13:42:06.0

首先提一下。Apple pay 和 云闪付是两个东西。刚开始的时候产品理解不清楚,他们就认为是一个东西

Apple Pay:用的是苹果的设备,内部的资金的流向都是第三方操作的,我这边用的是银联渠道。你们可以用别的渠道
云闪付:用的是银联的SDK,走的是银联的口子,资金也是银联处理(相当于是接 支付宝支付、微信支付)。

Apple Pay

  1. 在银联平台下载CSR文件https://merchant.unionpay.com/(一般你找后台要)
    在这里插入图片描述
    在这里插入图片描述

  2. 拿第一步下载的CSR去 https://developer.apple.com 创建Merchant ID (商户ID)。再生成Apple Pay证书
    在这里插入图片描述
    在这里插入图片描述点击完成就生成了Merchant ID。然后生成证书
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择CSR文件之后,点击完成就生成了证书了

  3. 去银联下载SDK 。直接把文件拖入工程,导入相应的库(我这里是Apple Pay 和银联的都包含了)
    在这里插入图片描述

(1) 添 加 CFNetwork.framework 、 libUPAPayPlugin.a 、 PassKit.framework 、 SystemConfiguration.framework 到商户 App 工程中
(2) 在工程中配置你的merchant id
在这里插入图片描述
(4)导入UPAPayPlugin.h。下面是支付核心代码
iOS9.2以下是没有Apple Pay的。没有绑定银行卡的去绑定银行卡

  if (@available(iOS 9.2, *)) {
    if([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkChinaUnionPay]] ){
    if (tn.length>0) {
    [UPAPayPlugin startPay:tn mode:@"00" viewController:self.rootViewC delegate:self andAPMechantID:@"xxxxxx"];}//有绑定银联的卡片 - 支付代码}else{
    //跳转到钱包页面[user setObject:@"pushToWallet" forKey:PayManagerUserDefaults];NSURL * myURL_APP_A = [NSURL URLWithString:@"shoebox://"];if ([[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) {
    NSLog(@"canOpenURL");[[UIApplication sharedApplication] openURL:myURL_APP_A];}return;}} else {
    return;//9.2一下的系统不做处理}
#pragma mark -ApplePay 支付回调
-(void) UPAPayPluginResult:(UPPayResult *) payResult{
    NSLog(@" ------------ %@",payResult.errorDescription);if (payResult.paymentResultStatus == UPPaymentResultStatusSuccess) {
    }else if (payResult.paymentResultStatus == UPPaymentResultStatusFailure) {
    }else if (payResult.paymentResultStatus == UPPaymentResultStatusCancel) {
    }else if (payResult.paymentResultStatus == UPPaymentResultStatusUnknownCancel) {
    }
}

最后就是Apple Pay的图标一定要规范
最后就是Apple Pay的图标一定要规范
最后就是Apple Pay的图标一定要规范
不然会审核被拒





云闪付

云闪付就比较简单了和接入支付宝、微信支付差不多
  1. 导入SDK 。直接拖入到项目中(我这里包含了Apple Pay和云闪付的SDK)
    在这里插入图片描述

  2. 添加 CFNetwork.framework、SystemConfiguration.framework 、libz、libPaymentControl.a到工程中,

  3. 在工程info.plist设置中添加一个URL Types回调协议(在xxxxxxx工程中使用“xxxxxx”作为协议),用于在支付完成后返回商户客户端。请注意URL Schemes需要是唯一的(自己弄一个 复杂点就行,成功回调会用到)。
    在这里插入图片描述

  4. 在info.plist文件中添加白名单

<key>LSApplicationQueriesSchemes</key><array><string>uppaysdk</string><string>uppaywallet</string><string>uppayx1</string><string>uppayx2</string><string>uppayx3</string></array>
  1. 调用支付代码
#pragma mark -云闪付app(银联app) 支付
-(void)unionPay:(NSDictionary *)data andPushType:(NSString *)pushType{
    self.unionpay = data[@"unionpay"];NSString *tn = self.unionpay[@"tn"];if (tn.length>0) {
    [[UPPaymentControl defaultControl] startPay:tn fromScheme:kSmallUPPay mode:@"00" viewController:self.rootViewC];}
}

支付回调

  - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
    if ([url.scheme isEqualToString:@"xxxxxx"]) {
    //这里的xxxxxxx就是URL Schemes中填写的[[UPPaymentControl defaultControl] handlePaymentResult:url completeBlock:^(NSString *code, NSDictionary *data) {
    NSDictionary * resultDic;NSString *alipayJudge = [[NSUserDefaults standardUserDefaults] objectForKey:AlipayJudge];if([code isEqualToString:@"success"]) {
    //结果code为成功时,去商户后台查询一下确保交易是成功的再展示成功else if([code isEqualToString:@"fail"]) {
    //交易失败}else if([code isEqualToString:@"cancel"]) {
    //交易取消}}];}    
}

有问题可以去尹丽娜开放平台查看(我只是代码的搬运工)。那边都有更详细的Demo下载
https://open.unionpay.com/tjweb/index

更新文档: 由于要更新SDK ,下载地址https://open.unionpay.com/tjweb/doc/mchnt/list

云闪付就是手机支付控件(含安卓Pay) ,以及Apple Pay
文档下载

  相关解决方案