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

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

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

Apple Pay

  1. 在银联平台下载CSR文件https://merchant.unionpay.com/(一般你找后台要)
    iOS Apple Pay(银联渠道) 、云闪付_第1张图片
    iOS Apple Pay(银联渠道) 、云闪付_第2张图片

  2. 拿第一步下载的CSR去 https://developer.apple.com 创建Merchant ID (商户ID)。再生成Apple Pay证书
    iOS Apple Pay(银联渠道) 、云闪付_第3张图片
    iOS Apple Pay(银联渠道) 、云闪付_第4张图片点击完成就生成了Merchant ID。然后生成证书
    iOS Apple Pay(银联渠道) 、云闪付_第5张图片
    iOS Apple Pay(银联渠道) 、云闪付_第6张图片
    iOS Apple Pay(银联渠道) 、云闪付_第7张图片
    iOS Apple Pay(银联渠道) 、云闪付_第8张图片
    选择CSR文件之后,点击完成就生成了证书了

  3. 去银联下载SDK 。直接把文件拖入工程,导入相应的库(我这里是Apple Pay 和银联的都包含了)
    iOS Apple Pay(银联渠道) 、云闪付_第9张图片

(1) 添 加 CFNetwork.framework 、 libUPAPayPlugin.a 、 PassKit.framework 、 SystemConfiguration.framework 到商户 App 工程中
(2) 在工程中配置你的merchant id
iOS Apple Pay(银联渠道) 、云闪付_第10张图片
(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)
    iOS Apple Pay(银联渠道) 、云闪付_第11张图片

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

  3. 在工程info.plist设置中添加一个URL Types回调协议(在xxxxxxx工程中使用“xxxxxx”作为协议),用于在支付完成后返回商户客户端。请注意URL Schemes需要是唯一的(自己弄一个 复杂点就行,成功回调会用到)。
    iOS Apple Pay(银联渠道) 、云闪付_第12张图片

  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
iOS Apple Pay(银联渠道) 、云闪付_第13张图片

你可能感兴趣的:(iOS)