首先提一下。Apple pay 和 云闪付是两个东西。刚开始的时候产品理解不清楚,他们就认为是一个东西
Apple Pay:用的是苹果的设备,内部的资金的流向都是第三方操作的,我这边用的是银联渠道。你们可以用别的渠道
云闪付:用的是银联的SDK,走的是银联的口子,资金也是银联处理(相当于是接 支付宝支付、微信支付)。
Apple Pay
-
在银联平台下载CSR文件https://merchant.unionpay.com/(一般你找后台要)
-
拿第一步下载的CSR去 https://developer.apple.com 创建Merchant ID (商户ID)。再生成Apple Pay证书
点击完成就生成了Merchant ID。然后生成证书
选择CSR文件之后,点击完成就生成了证书了 -
去银联下载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的图标一定要规范
不然会审核被拒
云闪付
云闪付就比较简单了和接入支付宝、微信支付差不多-
导入SDK 。直接拖入到项目中(我这里包含了Apple Pay和云闪付的SDK)
-
添加 CFNetwork.framework、SystemConfiguration.framework 、libz、libPaymentControl.a到工程中,
-
在工程info.plist设置中添加一个URL Types回调协议(在xxxxxxx工程中使用“xxxxxx”作为协议),用于在支付完成后返回商户客户端。请注意URL Schemes需要是唯一的(自己弄一个 复杂点就行,成功回调会用到)。
-
在info.plist文件中添加白名单
<key>LSApplicationQueriesSchemes</key>
<array>
<string>uppaysdk</string>
<string>uppaywallet</string>
<string>uppayx1</string>
<string>uppayx2</string>
<string>uppayx3</string>
</array>
- 调用支付代码
#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