说明

此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)

results matching ""

    No results matching ""