最近在做微信支付,被一个 urlencode 的问题恶心到了,想问下大家有什么好办法

2014-05-19 17:54:09 +08:00
 kier
微信支付在计算签名时要求对参数进行urlencode,本来用quote_plus可以,但是encode的替换字符都是大写的,比如'http://www.qq.com', encode后是:http%3A%2F%2Fwww.qq.com, 但是微信给的示例文档的结果要求是:http%3a%2f%2fwww.qq.com, 就因为这个不同,导致后面签名的结果不一样,因为是所有参数都要urlenocde,而且有些参数本身是大写的,所以最后统一转小写不太现实,想问下大家有没有什么办法,urlencode用来替换的字符都是小写的?
6648 次点击
所在节点    Python
8 条回复
spoony
2014-05-19 18:04:51 +08:00
tolower()?
spoony
2014-05-19 18:06:53 +08:00
中间用大小写敏感的加密算法做一次加密。。
lanceli
2014-05-19 18:11:44 +08:00
生成sign的时候转小写就可以了

package里面该大写还是大写
123123
2014-05-19 18:18:36 +08:00
最近正好也做了回微信支付,urlencode 之后的确是大写,不过当时也没注意这个问题,也就是说直接用大写的转义字符提交了校验ok。

原理是微信服务器校验签名签名时需要把 urlencode 之后的 URL 转换成原 URL,所以转义字符的部分就无所谓大小写了。
123123
2014-05-19 18:20:45 +08:00
所以 LZ 签名校验失败应该不是这里的问题
kier
2014-05-19 18:39:06 +08:00
@123123 我现在遇到的问题就是在支付时,弹出提示'系统繁忙,正在升级,请稍后再试', 以及好几天了,都是这个提示。。
123123
2014-05-19 18:43:48 +08:00
@kier 这个提示没碰上过,直接找微信客服问一下
wallstreet007
2015-01-26 10:42:24 +08:00
@kier 欢迎使用 Ping++(pingxx.com),支付接入非常简单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/113275

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX