目录
二、基于Django的支付Demo - 非官方,需pycryptodome模块
2-4 本地回调页面 - 处理支付宝回调信息 API官方文档
注意事项
- 沙箱支付测试,移动端只能使用安卓测试
- 只有将项目部署在公网IP上,才能实现支付宝支付后的回调页面
- 注意源码需要使用Crypto模块,默认文件夹小写存在查询不到错误
- 若在支付宝回调页面时,本地服务器宕机,支付宝会在24小时内一段时间发送一次请求,若超过24小时则无效。
- 支付宝支付成功,支付宝返回get回调和post回调,可以基于她来修改订单状态
一、支付宝沙箱
1-1 官网入口
1-2 官方 API 调用封装
from datetime import datetime from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 from Crypto.Hash import SHA256 from urllib.parse import quote_plus from base64 import decodebytes, encodebytes import json class AliPay(object): """ 支付宝支付接口(PC端支付接口) """ def __init__(self, appid, app_notify_url, app_private_key_path, alipay_public_key_path, return_url, debug=False): self.appid = appid self.app_notify_url = app_notify_url self.app_private_key_path = app_private_key_path self.app_private_key = None self.return_url = return_url with open(self.app_private_key_path) as fp: self.app_private_key = RSA.importKey(fp.read()) self.alipay_public_key_path = alipay_public_key_path with open(self.alipay_public_key_path) as fp: self.alipay_public_key = RSA.importKey(fp.read()) if debug is True: self.__gateway = "https://openapi.alipaydev.com/gateway.do" else: self.__gateway = "https://openapi.alipay.com/gateway.do" def direct_pay(self, subject, out_trade_no, total_amount, return_url=None, **kwargs): biz_content = { "subject": subject, "out_trade_no": out_trade_no, "total_amount": total_amount,