微信支付发起失败(get_brand_wcpay_request:fail)

原创 小玛丽打怪兽 随笔 页面优化 432阅读 2018-04-25 14:34:39 举报

最近在做微信支付的时候,遇到了一个可能大家都会遇到的问题就是明明发起支付的参数验证都已经通过了,但是微信debug却一直提示get_brand_wcpay_request:fail,这是为什么呢??!!

产生的环境

访问:domain/#/payment

结果:微信debug弹窗提示get_brand_wcpay_request:fail

分析:是因为vue-router的hash模式的#导致的问题

解决方式:在页面加载的时候重定向页面地址到domain/?#/payment

这样之后你就会发现,微信支付弹窗就粗来了!!是不是很神奇哈哈。

为什么这么解决:因为微信支付的目录配置项只有一个(如图所示,微信后台支付授权目录配置)

而vue-router的hash模式在微信内部解析成/#/之后是每一个单独的目录,就是有多少个页面用到支付就有多少个被解析成微信支付的目录项导致。
所以在#/之前加上一个?,微信在解析url的时候,会认为?后面的是参数,会自动进行过滤,所以加上?之后,当前的支付地址就会被微信解析成:domain/?,符合了微信后台配置支付授权目录的结构。

笼统的来说,就是SPA应用中hash模式路径下微信后台的支付目录与访问的路径识别不匹配的问题,加上?以后,使得微信识别路径的方式使得配置一致了。

评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复