python如何搭建支付宝三方支付
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关python如何搭建支付宝三方支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。为什么使用三方支付? 再没有三方支付平台之前,用户发起
千家信息网最后更新 2026年11月01日python如何搭建支付宝三方支付
这篇文章将为大家详细讲解有关python如何搭建支付宝三方支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
为什么使用三方支付?
再没有三方支付平台之前,用户发起支付请求的时候,用户要去和银行签约(转账),特别的不方便,为了解决这些问题,就有了三方支付,三方平台去完成签约,给用户节省时间。
支付宝支付的流程
商户拿到支付宝的公钥、自己的私钥(私钥加密、公钥解密),用私钥请求支付宝,支付宝解密、验签、进行支付处理,支付宝将处理的返回值传给商户,当支付成功后,返还给商户订单号、金额、时间戳等消息,支付失败后同样给商户反馈结果。
配置流程
1、获取APPID
支付宝开放平台:https://open.alipay.com/
登录支付宝开放平台->点击控制台

点击沙箱(复制APPID)

2、在线生成密钥
点击文档,找到开发助手,点击在线加密。
获取私钥
3、获取公钥
点击应用公钥
生成公钥
现在已经拿到了需要的公钥。
python项目中集成支付宝
构建支付类
from datetime import datetimefrom Crypto.PublicKey import RSAfrom Crypto.Signature import PKCS1_v1_5from Crypto.Hash import SHA256from urllib.parse import quote_plusfrom base64 import decodebytes, encodebytesimport jsonclass AliPay: """ 支付宝支付接口(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, "product_code": "FAST_INSTANT_TRADE_PAY", } biz_content.update(kwargs) data = self.build_body("alipay.trade.page.pay", biz_content, self.return_url) return self.sign_data(data) def build_body(self, method, biz_content, return_url=None): data = { "app_id": self.appid, "method": method, "charset": "utf-8", "sign_type": "RSA2", "timestamp": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "version": "1.0", "biz_content": biz_content } if return_url is not None: data["notify_url"] = self.app_notify_url data["return_url"] = self.return_url return data def sign_data(self, data): data.pop("sign", None) unsigned_items = self.ordered_data(data) unsigned_string = "&".join("{0}={1}".format(k, v) for k, v in unsigned_items) sign = self.sign(unsigned_string.encode("utf-8")) quoted_string = "&".join("{0}={1}".format(k, quote_plus(v)) for k, v in unsigned_items) signed_string = quoted_string + "&sign=" + quote_plus(sign) return signed_string def ordered_data(self, data): complex_keys = [] for key, value in data.items(): if isinstance(value, dict): complex_keys.append(key) for key in complex_keys: data[key] = json.dumps(data[key], separators=(',', ':')) return sorted([(k, v) for k, v in data.items()]) def sign(self, unsigned_string): key = self.app_private_key signer = PKCS1_v1_5.new(key) signature = signer.sign(SHA256.new(unsigned_string)) sign = encodebytes(signature).decode("utf8").replace("\n", "") return sign def _verify(self, raw_content, signature): key = self.alipay_public_key signer = PKCS1_v1_5.new(key) digest = SHA256.new() digest.update(raw_content.encode("utf8")) if signer.verify(digest, decodebytes(signature.encode("utf8"))): return True return False def verify(self, data, signature): if "sign_type" in data: data.pop("sign_type") unsigned_items = self.ordered_data(data) message = "&".join(u"{}={}".format(k, v) for k, v in unsigned_items) return self._verify(message, signature)实例化类
def init_alipay(): # 初始化Alipay alipay = AliPay( appid="appid", app_notify_url="回调地址", return_url="回调地址", app_private_key_path="私钥相对路径", alipay_public_key_path="公钥相对路径", debug=True # 支付环境 ) return alipay
API
async def get(self): alipay = init_alipay() # 传一个标题 订单号 订单价格 params = alipay.direct_pay("三方广告平台", order_no, money) url = f"https://openapi.alipaydev.com/gateway.do?{params}" return self.write(ret_json(url))# 构建一个回调地址,用于支付成功后回调,在回调地址中可以获取订单号(out_trade_no)、金额(total_amount)、时间戳(timestamp),然后进行处理业务逻辑。关于"python如何搭建支付宝三方支付"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
支付
三方
公钥
平台
商户
地址
订单
时间
用户
篇文章
订单号
处理
成功
接口
更多
流程
路径
金额
utf-8
加密
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳市人人互联网科技有限公司
广州百单互联网科技有限公司
盈实互联网科技
互联网科技社
北京互联网科技有限公司
互联网 卓越科技
奇酷互联网科技
万易互联网科技有限公司
互联网科技的未来发展
农村开互联网科技讲堂
中国科技互联网公司收入
字节跳动和互联网科技
互联网科技项目计划书材料类
互联网还是高科技吗
互联网保险科技创业
乌苏新华互联网科技做什么的
互联网科技大赛获奖感言
无锡工业互联网科技有限公司
互联网金融科技元年
万物互联网智能科技
猪兼强互联网科技
互联网科技美容
重庆科技学院互联网
移动互联网年度科技创新
深圳市优智互联网科技有限公司
互联网科技和信息
科技互联网海报
九思连强互联网电子科技有限公司
江苏互联网智能科技产品出厂价
绵阳真晨互联网科技有限公司