实用技术——支付_银联

作者: 阁子菌 | 来源:发表于2016-08-16 23:04 被阅读400次
    • 入网签约

    签约地址

    • 导入支付需要的SDK相关文件

    • 配置App跳转的白名单。

    LSApplicationQueriesSchemes Array并加入uppaysdk、uppaywallet、uppayx1、uppayx2、uppayx3五个item

    • 添加URL Schemes

    • 配置代码

      1. 支付控件调起
        支付信息都在<tn>中,后台提供即可
        "00"代表接入生产环境(正式版本需要);
        "01"代表接入开发测试环境(测试版本需要);
        if (tn == nil || tn.length == 0) return;
        [[UPPaymentControl defaultControl] startPay:tn fromScheme:@"Demo" mode:@"00" viewController:self];
      • 支付回调处理
        - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
        [self handlePaymentResult:url];
        return YES;
        }

        - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
            [self handlePaymentResult:url];
            return YES;
        }
        - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options{
            [self handlePaymentResult:url];
            return YES;
        }
        - (void)handlePaymentResult:(NSURL *)url{
            [[UPPaymentControl defaultControl] handlePaymentResult:url completeBlock:^(NSString *code, NSDictionary *data) {
            //结果code为成功时,先校验签名,校验成功后做后续处理
            if([code isEqualToString:@"success"]) {
            //判断签名数据是否存在
            if(data == nil){
                //如果没有签名数据,建议商户app后台查询交易结果
                return;
            }
            //数据从NSDictionary转换为NSString
            NSData *signData = [NSJSONSerialization dataWithJSONObject:data options:0 error:nil];
            NSString *sign = [[NSString alloc] initWithData:signData encoding:NSUTF8StringEncoding];
            //验签证书同后台验签证书
            //此处的verify,商户需送去商户后台做验签
            if([self verify:sign]) {
                  //支付成功且验签成功,展示支付成功提示
              }else {
                  //验签失败,交易结果数据被篡改,商户app后台查询交易结果
              }
              }else if([code isEqualToString:@"fail"]) {
              //交易失败
              }else if([code isEqualToString:@"cancel"]) {
              //交易取消
              }
            }];
        }
        
        -(BOOL) verify:(NSString *) resultStr {
            //验签证书同后台验签证书
            //此处的verify,商户需送去商户后台做验签
            return NO;
        }
        
    • 注意事项:

      1. 支付金额必须大于1分钱,否则会报错
      • 如果出现@“网络错误,请重试”提示
        请确认是否有网络,以及是否进行过HTTP请求设置


      • 出现@“-[__NSCFString
        newSizeWithFont:forWidth:lineBreakMode:]: unrecognized selector sent to
        instance 0x7fd99bfa3480”调用支付控件崩溃


    相关文章

      网友评论

        本文标题:实用技术——支付_银联

        本文链接:https://www.haomeiwen.com/subject/pezpsttx.html