Board logo

标题: iOS应用之银联支付集成 [打印本页]

作者: look_w    时间: 2019-2-18 19:41     标题: iOS应用之银联支付集成

1.事前准备工作

    添加工程所需的银联支付(iOS)SDK,如下图:
    1319216-0cc426b59101654d.png
    导入工程中的SDK

2. 开发流程

    导入头文件 #import "UPPayPlugin.h" 以及设置代理 <UPPayPluginDelegate>
    触发唤起银联支付的方法(本次对订单的签名处理都在后台进行,在此附上后台银联支付SDK)。

    #pragma mark - 银联支付相关方法
    - (IBAction)yinlianPayAct {
        NSString *strUrl = [NSString stringWithFormat"%@/App/Index/index/",SERVERURL]; //从后台获取tn字符串的API地址
        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"为测试版本支付模式,官方给的有测试账号,如下图:

1319216-244633d109bea71e.png
截图来自银联iOS开发指南

    设置回调方法,对支付结果进行相应操作,后台数据相应的加减

    #pragma mark - UPPayPluginDelegate
    -(void)UPPayPluginResultNSString*)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++支付分享,待续...




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0