最近在做微信公众号支付功能,iOS正常唤起微信支付并支付成功;android唤不起微信支付,显示失败。
2017-01-21 14:22
1216 查看
在调用微信支付的时候遇到提示“URL未注册”,这通常是因为没有在微信支付后台正确配置授权目录的问题,但我所遇到的并非如此。
我们的应用中有3个页面用到微信支付:
微信支付允许配置3个目录为授权目录,另外允许配置一个测试环境目录,授权目录必须配置到最后一级目录,配置在根目录不行。到这里其实还都不是问题,问题是微信判断当前路径的方式。
我们先定义两个名词:首先把当前页面叫做“Current Page”;当我们从微信别的地方点击链接呼出微信浏览器时所落在的页面、或者点击微信浏览器的刷新按钮时所刷新的页面,我们叫做“Landing Page”。举个例子,我们从任何地方点击链接进入页面A,然后依次浏览到B、C、D,那么Current Page就是D,而Landing Page是A,如果此时我们在D页面点击一下浏览器的刷新按钮,那么Landing Page就变成了D(以上均是在单页应用的环境下,即以hashbang模式通过js更改浏览器路径,直接href跳转的不算)。
问题来了,在ios和安卓下呼出微信支付的时候,微信支付判断当前路径的规则分别是:
IOS:Landing Page
安卓:Current Page
这个规则是我试了N次试出来的,非常的坑,这就意味着,在ios环境下,任何一个页面都有可能成为支付页面(因为我无法预知和控制用户在哪个页面点微信浏览器的刷新按钮,或是用户通过哪个连接从外部进入到系统)。我在网上用了各种方式搜索这个问题的解决方案,都没找到好的,有关这个问题的帖子都少之又少,都只有吐槽它而没有解决了的。
我把这个问题放了好几天,虽然有一个解决方案,就是进入到支付页面的时候使用href跳转的方式,会造成页面刷新,影响一些用户体验。就是因为这个方案不完美,我就一直搁着,今天呢就又把这个问题拿出来鼓捣。
今天不知道怎么来了灵感,寻思我靠这个不对啊,
这个页面的目录应该是
井号“#”后面应该都忽略才对。于是乎,我想了想,反正入口文件就是个静态html,服务器端也不直接接收query,于是就把链接改成了
就加了一个问号,于是微信浏览器妥妥的把井号“#”后面的内容给去掉了,这个困扰了好几天的问题,最后用一个问号解决了
我们的应用中有3个页面用到微信支付:
http://example.com/#!/cart/index http://example.com/#!/order/orderlist http://example.com/#!/order/orderinfo
微信支付允许配置3个目录为授权目录,另外允许配置一个测试环境目录,授权目录必须配置到最后一级目录,配置在根目录不行。到这里其实还都不是问题,问题是微信判断当前路径的方式。
我们先定义两个名词:首先把当前页面叫做“Current Page”;当我们从微信别的地方点击链接呼出微信浏览器时所落在的页面、或者点击微信浏览器的刷新按钮时所刷新的页面,我们叫做“Landing Page”。举个例子,我们从任何地方点击链接进入页面A,然后依次浏览到B、C、D,那么Current Page就是D,而Landing Page是A,如果此时我们在D页面点击一下浏览器的刷新按钮,那么Landing Page就变成了D(以上均是在单页应用的环境下,即以hashbang模式通过js更改浏览器路径,直接href跳转的不算)。
问题来了,在ios和安卓下呼出微信支付的时候,微信支付判断当前路径的规则分别是:
IOS:Landing Page
安卓:Current Page
这个规则是我试了N次试出来的,非常的坑,这就意味着,在ios环境下,任何一个页面都有可能成为支付页面(因为我无法预知和控制用户在哪个页面点微信浏览器的刷新按钮,或是用户通过哪个连接从外部进入到系统)。我在网上用了各种方式搜索这个问题的解决方案,都没找到好的,有关这个问题的帖子都少之又少,都只有吐槽它而没有解决了的。
我把这个问题放了好几天,虽然有一个解决方案,就是进入到支付页面的时候使用href跳转的方式,会造成页面刷新,影响一些用户体验。就是因为这个方案不完美,我就一直搁着,今天呢就又把这个问题拿出来鼓捣。
今天不知道怎么来了灵感,寻思我靠这个不对啊,
http://example.com/#!/cart/index
这个页面的目录应该是
http://example.com/
井号“#”后面应该都忽略才对。于是乎,我想了想,反正入口文件就是个静态html,服务器端也不直接接收query,于是就把链接改成了
http://example.com/?#!/cart/index
就加了一个问号,于是微信浏览器妥妥的把井号“#”后面的内容给去掉了,这个困扰了好几天的问题,最后用一个问号解决了
相关文章推荐
- android 仿微博发布功能,通知栏显示,发布中...,发布成功...,发布失败等
- iOS 当运行Xcode6时,编译代码成功,但是登陆模拟器失败,显示错误:The Operation couldn't be completed.(LaunchServicesError error
- android 微信支付功能支付返回-1问题
- iOS 调起微信支付页面后,点击取消或支付成功无法返回原APP问题
- 微信支付提示支付失败,但所有流水状态是成功的
- Android之项目全部能正常登录但是部分资源没有显示成功的解决办法
- IOS集成微信支付或者支付宝支付功能小结
- Android微信支付,支付成功后并返回指定页面
- 支付宝android/ios端和php端配合支付功能
- Android 微信支付,支付成功后不回调WXEntryActivity方法问题
- [坑]微信支付首次支付成功,第二次调用失败
- Android自定义之仿支付宝支付成功、失败状态的加载进度
- iOS- 微信支付 (服务器调起支付 )以及回调不成功的原因 不看后悔
- 微信支付通过服务端生成支付链接在ios唤起支付界面
- iOS实现微信/QQ显示最近拍摄图片的功能
- 关于Cocos2d-x 3.0正式版 粒子问题在IOS上正常显示,在Android下有问题的解决方案
- android 微信支付功能支付返回-1问题
- ##iOS中的微信支付 支付验证签名失败
- 支付宝SDK唤起H5页面支付第一次成功,之后再尝试失败问题
- iOS实现微信/QQ显示最近拍摄图片的功能实例代码