实用技术——支付_银联

  • 入网签约

签约地址

  • 导入支付需要的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”调用支付控件崩溃


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 开发前的准备工作 SDK说明 接口说明 1、支付接口 - (BOOL)startPay:(NSString*)tn...
    Detailscool阅读 3,598评论 5 50
  • 这是开头语前不久做了一个项目,涉及到支付宝和银联支付,支付宝和银联都是业界的老大哥,文档、SDK都是很屌,屌的找不...
    Mr丶炎阅读 593评论 0 2
  • 项目最近需要集成银联,在网上搜了一下发现都并不是最新版的银联集成教程,自己摸索了一下,总结写了下来。 附上3.3....
    嗜糖63阅读 710评论 2 5
  • 项目最近需要集成银联,在网上搜了一下发现都并不是最新版的银联集成教程,自己摸索了一下,总结写了下来。附上3.3.0...
    麦兜兜买兜兜阅读 436评论 2 0
  • 2010年,美国空军学院做了一项研究,想知道为什么有些学员经历了四年的军校生活,体型变好了,而有些学员的体型没...
    认真断舍离阅读 1,003评论 0 0

友情链接更多精彩内容