说明
此DEMO依赖第三方库,如果报依赖错误,请先执行
pip install pycrypto
Python3 - DEMO
import base64
import json
import urllib.parse
import urllib.request
from Crypto.Hash import SHA
from Crypto.PublicKey import RSA
from Crypto.Signature import PKCS1_v1_5
root_url = 'https://bankliquidation-sxpay-test.wechatpark.com/gateway' # 服务器地址
# 初始化参数
data = {
'app_id': '20170523111533399',
'method': 'fshows.liquidation.alipay.trade.query',
'version': '1.0',
'content': {
'trade_no': '20178888888888'
}
}
# 将content中的内容转为JSON格式字符串
data['content'] = json.dumps(data['content'])
# 准备签名,先生成准备签名字符串
keys = sorted(data.keys())
string = ''
for key in keys:
string += key
string += '='
string += data[key]
string += '&'
string = string[0:-1]
# RSA加签
with open('rsa_private_key.pem') as f:
key = f.read()
rsakey = RSA.importKey(key)
signer = PKCS1_v1_5.new(rsakey)
digest = SHA.new()
digest.update(string.encode('utf-8'))
sign = signer.sign(digest)
sign = base64.b64encode(sign)
sign = sign.decode()
# 将签名加到data中
data['sign'] = sign
# urlencode数据
post_data = urllib.parse.urlencode(data).encode('utf-8')
# 请求服务器
request = urllib.request.Request(root_url, post_data, method='POST')
response = urllib.request.urlopen(request).read().decode('utf-8')
# 获取返回值
print(response)