V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
kier
V2EX  ›  Python

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

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

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

    原理是微信服务器校验签名签名时需要把 urlencode 之后的 URL 转换成原 URL,所以转义字符的部分就无所谓大小写了。
    123123
        5
    123123  
       2014-05-19 18:20:45 +08:00
    所以 LZ 签名校验失败应该不是这里的问题
    kier
        6
    kier  
    OP
       2014-05-19 18:39:06 +08:00
    @123123 我现在遇到的问题就是在支付时,弹出提示'系统繁忙,正在升级,请稍后再试', 以及好几天了,都是这个提示。。
    123123
        7
    123123  
       2014-05-19 18:43:48 +08:00
    @kier 这个提示没碰上过,直接找微信客服问一下
    wallstreet007
        8
    wallstreet007  
       2015-01-26 10:42:24 +08:00
    @kier 欢迎使用 Ping++(pingxx.com),支付接入非常简单
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   914 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:36 · PVG 04:36 · LAX 13:36 · JFK 16:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.