支付宝接口调用实现支付功能笔记
登录支付宝开放平台,进入沙箱服务。支付宝牛皮!

def alipay(request):
params = {
"app_id": "2016102700769765",
"method": "alipay.trade.page.pay",
"format": "JSON",
"return_url": "支付成功调用的网址",GET请求,一次#
# "notify_url": "支付成功调用的网址,POST请求,如服务器宕机,不断发送请求,直到回复成功"
"charset": "utf-8",
"sign_type": "RSA2",
"sign": "签名",
"timestamp": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
"version": "1.0",
"biz_content": json.dumps({
"out_trade_no": order_num,
"product_code": "FAST_INSTANT_TRADE_PAY",
"total_amount": money,
"subject": "买家:"+user.user_name+"\t商家:胡吃海喝店"
},separators=(",",":")) # 将字典转换为字符串,去掉空格。
}
print(params["timestamp"])
params.pop("sign") # 先剔除sign
# 获取待签名的字符串
unsigned_string = "&".join(["{0}={1}".format(i,params[i]) for i in sorted(params)])
print(unsigned_string)
# SHA256WithRSA + 应用私钥 对 待签名的字符串
private_key = RSA.importKey(open('file/应用私钥2048.txt').read())
signer = PKCS1_v1_5.new((private_key))
signatrue = signer.sign(SHA256.new(unsigned_string.encode('utf-8')))
# 签名之后进行base64 编码,转换为字符串
sign_string = encodebytes(signatrue).decode("utf8").replace("\n","")
# 把生成的签名赋值给sign参数,拼接到请求参数中
result = "&".join(["{0}={1}".format(k, quote_plus(params[k])) for k in sorted(params)]) # quote_plus()转成url支持的格式
result = result+"&sign="+quote_plus(sign_string)
# 网关
gateway = "https://openapi.alipaydev.com/gateway.do"
ali_pay_url = "{}?{}".format(gateway, result)
return redirect(ali_pay_url)

浙公网安备 33010602011771号