iOS 【问题记录】微信支付-商户支付下单ID非法

问题描述

h5页面点击微信支付跳转到微信app的时候显示商户支付下单ID非法,无法完成支付流程。


weixinxx.png

问题分析与解决

据调试发现,跳转微信时,也就是执行[[UIApplication sharedApplication] openURL:[NSURL URLWithString:requestUrl]时的url是编码过的。如:

weixin://wap/pay?prepayid%3Dwx21094105515649f5d998591a1564214100&package=3426540539&noncestr=1574300488&sign=9ec3a7ef14728b673f6c71572e8c3092

如果是是编码后的url执行openURL,跳转到微信,那么就会导致商户支付下单ID非法。所以在跳转之前对url进行urlDecode,再跳转。

由于之前使用一切正常,而现在出现了这个问题,那么就代表了app外部微信支付的某些逻辑发生了变化,而这会导致url在跳转前出现编码和未编码两种情况,为了兼容这两种情况,需要url特征做判断并进行解码,具体如下。

if ([requestUrl containsString:@"%3D"]) {
            //如果跳转之前被转码了一次会出现id非法,微信支付失败,判断一下
            //weixin://wap/pay?prepayid%3Dwx21094105515649f5d998591a1564214100&package=3426540539&noncestr=1574300488&sign=9ec3a7ef14728b673f6c71572e8c3092
            requestUrl = [self URLDecodedString:requestUrl];
            //weixin://wap/pay?prepayid=wx21094105515649f5d998591a1564214100&package=3426540539&noncestr=1574300488&sign=9ec3a7ef14728b673f6c71572e8c3092
        }
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:requestUrl]];
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 准备工作: 需要公司的营业执照,税务信息,等老板的身份证信息等,我记得,用这些材料,去支付宝注册一个商家账户(审核...
    Hevin_Chen阅读 6,824评论 0 9
  • 本文只讨论你已经成功实现客户端->支付宝支付流程,仅仅是支付完成后无法返回自己的APP的问题。 如果你的支付流程是...
    魔力双鱼阅读 14,690评论 3 12
  • 微信H5支付流程 1、发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB 2、统一下单接口...
    一张小A阅读 12,130评论 1 6
  • 前言:本篇文章目的在于梳理知识,巩固思想,学习总结。有什么好的建议,都可以留言。互相促进!总观,微信支付,也没心思...
    麦穗0615阅读 10,097评论 8 70
  • 实现支付宝支付的准备工作: 1.向支付宝签约,成为支付宝的商户 签约完成后,支付宝会提供一些必要的数据给我们 商户...
    Anson杨春安阅读 8,265评论 0 6