之前在做和支付宝联调的工作中,因为验签和加签传输数据的问题,挣扎了好久,这里就把这部分代码发布出来,方便一些做支付宝接口的伙伴们参考查阅。
# 验签
def check_alipay_sign(request):
sign = request.pop('sign') # 取出传过来的签
request.pop('sign_type') # 去除传过来的sign_type
params = sorted(request.items(), key=lambda e: e[0], reverse=False) # 取出字典元素按key的字母升序排序形成列表
message = "&".join(u"{}={}".format(k, v) for k, v in params).encode() # 将列表转为二进制参数字符串
status = verify_with_rsa(publicKey, message, sign) # 验签
return status
# 加签
def add_alipay_sign(content):
alipay_client_config = AlipayClientConfig()
alipay_client_config.server_url = serverUrl
alipay_client_config.app_id = appId
alipay_client_config.app_private_key = privateKey
alipay_client_config.alipay_public_key = publicKey
alipayClient = DefaultAlipayClient(alipay_client_config=alipay_client_config)
request = AlipayCreditCreditriskDataPutRequest()
# 拼接待提交数据
request.biz_content = content
# 提交数据请求
response = alipayClient.execute(request)
print(response)
response = eval(response)
if response['msg'] == 'Success':
print(response['msg'], "推送数据成功")
else:
print(response['msg'], "推送数据失败")