微信网页支付提示未注册问题的解决方案

最近开发单页应用,然后集成在微信端。因为项目需要接通微信支付,而在开发过程中也遇上了一些问题。所以便写下这篇文章,希望给同样遇上问题的朋友一个参考。

MG9NUM5V$YQPV83SVNHZMMF.png

在项目打包上线,微信上测试的时候结果报出以上错误。网上查看了很多资料,但是都没有比较详细的解决方案。

如果你也遇上以上的问题,那么我这篇文章也许能够帮到你。

也许是出于安全的考虑,在使用微信提供的JSSDK的时候,我们需要给当前的网址签名。我们需要在微信公众平台上填写当前网址的url。具体如下:

  www.test.com/orderPlus/demo1  //微信浏览器中访问的网址

那么我们微信公众平台上绑定的url就应该是www.test.com/orderPlus/。微信允许网址最后一个参数可变化,此刻我们就能够正常调用微信支付接口了。

  www.test.com/orderPlus/  //微信公众平台中授权url地址

如果你访问的网址如下,就会出现上图中的错误,当前页面url未注册的警告。

  www.test.com/orderPlus/demo1/demo2  //注意,这种情况下会报错

因为微信签名url只能允许url地址最后一个参数可变化。但是,实际开发中,我们的支付页面可能有很多个,而且深入程度不同,而微信允许添加的url授权地址又只有5个。那样的话如何解决呢!

使用H5新特性,来修改url地址

如果遇到以上问题,我们可以使用H5的history.pushState()和history.replaceState()这两个方法。这两个方法的作用是相同的,他们只会修改当前url的地址,但是不会刷新我们的网页,唯一不同点在于一个重新创建一个url地址,而另外一个会修改当前的url地址,导致路由历史记录被覆盖。那么,我们的问题就可以解决了。而这两个方法具体的使用,大家可以查询官方文档。

大致的解决方法是,比如一个充值页面,当我们输入完金额之后,点击充值按钮的时候,首先触发history.pushState(null,null,"A.html"),传入三个参数,前两个参数大家参考官方,最后一个参数是我们需要修改的url地址。

这里我说明一下,自己使用上述方法后的一点心得。上述方法第三个参数,有一些注意点。

  当前网址:www.test.com/orderPlus/demo1
  传入参数:history.pushState(null,null,"/A.html")
  最后网址:www.test.com/A.html

当我们传入"/A.html"的时候,他会将我们域名后的参数全部去掉,然后将我们的参数添加上去。

  当前网址:www.test.com/orderPlus/demo1
  传入参数:history.pushState(null,null,"A.html")
  最后网址:www.test.com/orderPlus/A.html

当我们传入"A.html"的时候,他只会把网址最后一个参数修改掉。

  当前网址:www.test.com/orderPlus/demo1
  传入参数:history.pushState(null,null,"?A.html")
  最后网址:www.test.com/orderPlus/demo1?A.html

当我们传入"?A.html"的时候,他会将我们的添加的参数,添加到我们的url后。
以上就是需要注意的地方。

关于安卓可以唤起支付,ios不能唤起的问题

原本以为通过上诉的方法,一切会很顺利。结果,在我实际测试的时候,又出现了一个坑爹的情况。测试上安卓手机能够成功唤起支付,而ios却不能唤起。(ios下第一次能够唤起,关闭网页,再次打开就不能正常唤起了)。
查看许多的资料,最后得出的结果是,对于单页应用,ios系统获取签名的url是我们首次进入的地址,而安卓系统获取的是当前的url地址。

  ios系统
  首次进入网址:www.test.com/orderPlus/demo1
  进入到支付页面的网址:www.test.com/orderPlus/demo1/#/test1
  我们授权的:url:www.test.com/orderPlus/

我们之前说过,微信能够允许url后一个可变参数,而现在出现两个参数,结果就无法唤起支付了。而安卓是拿取当前的url地址,而我们每次去唤起支付的时候,都会去修改这个地址,所以安卓就没有问题,而ios拿取的是我们首次进入的地址。
既然如此,就只能为ios系统在一开始进入的时候,就将url地址修改掉。
本人使用react框架开发单页应用,所以我在app.js也就是最顶层的组件中将url地址修改掉。成功解决问题。

url地址中的参数是可变的情况

本来以为一切就此结束,结果,又一个麻烦的问题出现了。项目中url中的一个参数是根据微信授权后,后台根据不同用户产生的不同的id值。这样的话,问题就出现了。

   用户A登入,url地址为:www.test.com/orderPlus/A/demo1
   用户B登入,url地址为:www.test.com/orderPlus/B/demo1
   用户C登入,url地址为:www.test.com/orderPlus/C/demo1

以上只是一个举例,实际上用户是无法预测的。而我们通过微信公众平台后台授权的url地址只有5个,就算没有限制,手动添加也是不可能的。
想了许久,最后我想到了一个方法。这里要使用history.pushState()第三个参数的第三种写法,也就是增加一个"?"。因为,在浏览器中,系统会默认将?后面的参数全都忽略。

    比如:www.test.com/orderPlus?C/demo1

以上url,系统只会识别www.test.com/orderPlus/demo至于后面的参数都不会管,而微信授权签名也只会寻找前面有效的参数。那么我们就可以通过这种方式将url地址修改掉。

    www.test.com/orderPlus/ab85s56d45d8e6f56/demo1#/list  //这是我们一开始的地址。
    而其中"ab85s56d45d8e6f56"是后台自动生成的一个参数,我们可以在JSP页面中获取得到,比如我将这个参数放在变量appconfig中,那么我们就可以通过下面这种方式修改了。
    history.pushState(null,null,`/orderPlus/${appconfig}?`)  //如此就能将我们的url修改成自己正常的了。

而且通过这种方式修改的url地址,并不会对单页应用内部路由产生问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容