实用技术——支付_银联

  • 入网签约

签约地址

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

  • 配置App跳转的白名单。

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

  • 添加URL Schemes

实用技术——支付_银联_第1张图片
  • 配置代码

    1. 支付控件调起
      支付信息都在中,后台提供即可
      "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 *)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”调用支付控件崩溃


      实用技术——支付_银联_第2张图片

你可能感兴趣的:(实用技术——支付_银联)