博客
关于我
python-aliyay-sdk中verify函数一直返回false的解决办法
阅读量:639 次
发布时间:2019-03-14

本文共 1800 字,大约阅读时间需要 6 分钟。

最近flask项目在使用支付宝沙箱支付时出现了以下问题:

def verify(self, data, signature):    if "sign_type" in data:        sign_type = data.pop("sign_type")        if sign_type != self._sign_type:            raise AliPayException(None, "Unknown sign type: {}".format(sign_type))        # 排序后的字符串        unsigned_items = self._ordered_data(data)        message = "&".join(u"{}={}".format(k, v) for k, v in unsigned_items)        return self._verify(message, signature)

verify函数接收两个变量,其中data是支付宝发送过的除了sign(签名信息)以外的其他信息,signature是支付宝发送过来的签名信息,verify函数会更具data信息来生成一个前面信息和支付宝的signature做比较,如果相等则返回true,不相等返回false。

在运行过程中该函数的返回结果一直是false,verify函数中把sign_type参数给剔除掉了。
解决办法对verify函数进行以下修改:

def verify(self, data, signature):        # if "sign_type" in data:        #     sign_type = data.pop("sign_type")        #     if sign_type != self._sign_type:        #         raise AliPayException(None, "Unknown sign type: {}".format(sign_type))        # 排序后的字符串        unsigned_items = self._ordered_data(data)        message = "&".join(u"{}={}".format(k, v) for k, v in unsigned_items)        return self._verify(message, signature)

支付宝请求的网址如下:GET /payComplete.html?charset=utf-8&out_trade_no=25&method=alipay.trade.wap.pay.return&total_amount=5000.00&sign=TqQXWB0glO95D3usCbvES38L%2BZn4XjG8mR%2FhoTMmbR8CU0GJePMFTcN%2Flh%2FoaebCzZcQytmO2QV1DRdyJJhaVx618T0t0WlV4V%2F4ItVZbWt8VfUOJUD8Mvv5c1qmPwIo05FaoIa9crF6qX8SWKweSiuaU7bRFbmwGfIYGE1Ga00f7HpqH3BOUs6eT4KkmUq5mVVLIOPftsPyQDF9zs%2FYlcnHGsBb4RRMS1uRGASNuoax6VrPpOKC%2BpsMqAoROB5SPC2FZTBEKd48rEZ6MaGA9zdTnbKGyWajJ2lmZZwfjbKpgsDkCFgD%2F2VL4upxfDwMoqRv%2Fbn3F%2F4sDD%2FUCpUMPg%3D%3D&trade_no=2020090722001475820501161374&auth_app_id=2016101900722989&version=1.0&app_id=2016101900722989&sign_type=RSA2&seller_id=2088102180276586&timestamp=2020-09-07+11%3A22%3A56 HTTP/1.1" 200 -

如果有不对的地方希望大家多多指教!

转载地址:http://eihoz.baihongyu.com/

你可能感兴趣的文章
netty 主要组件+黏包半包+rpc框架+源码透析
查看>>
Netty 异步任务调度与异步线程池
查看>>
Netty中集成Protobuf实现Java对象数据传递
查看>>
Netty事件注册机制深入解析
查看>>
Netty原理分析及实战(四)-客户端与服务端双向通信
查看>>
Netty和Tomcat的区别已经性能对比
查看>>
Netty学习总结(5)——Netty之TCP粘包/拆包问题的解决之道
查看>>
Netty客户端断线重连实现及问题思考
查看>>
Netty工作笔记0006---NIO的Buffer说明
查看>>
Netty工作笔记0007---NIO的三大核心组件关系
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0013---Channel应用案例4Copy图片
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0020---Selectionkey在NIO体系
查看>>
Vue踩坑笔记 - 关于vue静态资源引入的问题
查看>>
Netty工作笔记0024---SelectionKey API
查看>>
Netty工作笔记0025---SocketChannel API
查看>>
Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
查看>>
Netty工作笔记0028---NIO 网络编程应用--群聊系统3--客户端编写1
查看>>
Netty工作笔记0034---Netty架构设计--线程模型
查看>>