银联支付集成,十分简单,前台做工作很少。
- 借助于前几天项目刚刚上线,也在此继续分享下银联支付的相关方法和总结。本次分享的为支持纯无卡交易。
- 鉴于上两次的支付分享,本次所做的内容比较简单,签名工作移到了后台进行,前端所做的工作非常少,只需要往后台POST过去商品价格,后台对订单进行相应的签名,返回签名后的tn字符串即可。
1.事前准备工作
2. 开发流程
- 导入头文件
#import "UPPayPlugin.h" 以及设置代理 <UPPayPluginDelegate>
- 触发唤起银联支付的方法(本次对订单的签名处理都在后台进行,在此附上后台银联支付SDK)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #pragma mark - 银联支付相关方法 - (IBAction)yinlianPayAct { NSString *strUrl = [NSString stringWithFormat:@"%@/App/Index/index/",SERVERURL]; NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"money"] = payCount; [LXHttpTool post:strUrl params:params success:^(id json) { LXLog(@"%@", json); NSString *tnStr = [NSString stringWithFormat:@"%@", json[@"tn"]]; if (tnStr) { [UPPayPlugin startPay:tnStr mode:@"00" viewController:self delegate:self]; } else { [MBProgressHUD showError:json[@"error"]]; } } failure:^(NSError *error) { LXLog(@"请求失败-%@", error); }]; }
|
注:mode:@"00"为正式版本支付模式, mode:@"01"为测试版本支付模式,官方给的有测试账号,如下图:

- 设置回调方法,对支付结果进行相应操作,后台数据相应的加减
1 2 3 4 5 6 7 8 9 10 11
| #pragma mark - UPPayPluginDelegate -(void)UPPayPluginResult:(NSString*)result { LXLog(@"%@", result); if ([result isEqual:@"success"]) { [self pay_success]; } else if ([result isEqual:@"fail"]) { [MBProgressHUD showError:@"支付失败"]; } else { [MBProgressHUD showError:@"您已取消支付"]; } }
|
注:支付成功后,往后台发送数据是必需的,对后台数据进行相应的更新。
3. 总结
- 对于以上分享的支付方法,仔细琢磨一下,发现有漏洞。通过第三方支付,如果支付成功返回App之后,此时网络突然出现问题,不能往后台正常发送相应数据,导致后台数据更新不了,可是银子已经扣过,这不是要挂的节奏么(求高人指点,如何避免此种BUG)。
- 鉴于上个项目中各种单个支付方法,太过累赘,对于目前开发的项目启用Ping++支付方法,度娘解释:Ping++ 是上海简米网络科技有限公司旗下的移动支付 SDK 产品,整合了目前市面上各种支付渠道。
- Ping++支付分享,待续…