Python接入支付宝完整指南:SDK安装、沙箱配置与代码实现
本文详细介绍Python接入支付宝支付的全流程。涵盖python-alipay-sdk的安装、沙箱与正式环境的配置差异、公私钥生成与上传、API参数说明及完整代码示例。通过沙箱环境测试,帮助开发者快速实现Python后端与支付宝接口的对接与调试。
Python接入支付宝流程概述
Python接入支付宝的主要流程如下:
环境配置与SDK安装
第一步:
首先需要安装Python版的支付宝SDK。虽然支付宝官方开发者文档中未直接提供该SDK,但Python社区已开发出功能完善的第三方库。
安装命令为:pip install python-alipay-sdk。该SDK的GitHub源码地址为:https://github.com/fzlee/alipay
第二步:
SDK安装完成后,需对支付宝环境进行配置。支付宝环境分为两种:一是正式环境,即程序上线后的生产环境;
二是沙箱环境,供开发者在开发阶段进行功能测试。
若使用正式环境,需在支付宝后台创建应用,经审核通过后获取唯一的appid作为标识。具体创建应用的操作可参考下图。

本文示例使用沙箱环境,因此无需等待审核。进入开发者中心,点击“研发服务”下的“沙箱应用”,系统会自动分配一个测试appid。此时只需配置私钥和公钥即可,具体操作如下图所示。

密钥生成与环境配置
第三步:
需生成服务端的私钥和公钥。目前支付宝支持的加密算法包括sha256和sha1,
官方推荐使用sha256。支付宝提供了详细的密钥生成教程(https://docs.open.alipay.com/291/105971/ )。
访问上述链接即可查阅密钥生成的具体步骤。生成公钥和私钥后,需将公钥上传至支付宝后台的密钥设置中。同时,务必妥善保存本地的私钥、公钥以及支付宝返回的公钥(通常建议保存至本地项目目录中)。
支付宝交互流程详解
第四步:
熟悉支付宝的开发交互流程。下图展示了客户端通过后端程序与支付宝后端的交互过程:

1、用户选择使用支付宝进行付款;
2、用户客户端向商户服务器发起请求,获取签名后的订单信息;
3、商户服务端返回签名后的订单信息(以查询字符串或URL形式),例如:
app_id=201609239&biz_content=%7B%22subject%22%3A%22%5Cu6d4b%5Cu8bd5%5Cu8ba2%5Cu5%22out_trade_no%22%3A%22201702021111%22%2C%22total_amount%22%3A1000%2C%22product_code%22%3A%22FAST_INSTANT_TRADE_PAY%22%7D&charset=utf-8&method=alipay.trade.page.pay¬ify_url=http%3A%2F%dus.com%2F&return_url=http%3A%2F%2F47.92.87.172%3A8000%2F&sign_type=RSA2×tamp=2015+15%3A19%3A15&version=1.0&sign=BSzk6LzwNp
4、商户客户端调用支付接口;
5-8、支付宝服务端接收请求,并返回支付结果;
9、商户客户端向商户服务端发起请求,同步支付结果,服务端验证签名并解析结果;
10、返回支付结果;
11、商户客户端展示支付结果;
12、支付宝服务端向商户服务端异步发送支付通知;
13、商户服务端接收支付通知,并返回响应给支付宝服务端。
Python代码实现与测试
第五步:
Python核心代码如下:
# 业务处理: 使用python sdk调用支付宝的支付接口
# 初始化
from alipay import AliPay
alipay = AliPay(
appid="2016092300574189",
app_notify_url=None,
app_private_key_path=r"D:\python源代码\alipay_keys\private_keys",
alipay_public_key_path=r"D:\python源代码\alipay_keys\public_key",
sign_type="RSA2",
debug=True,
)
# 调用接口
# total_pay = order.total_price + order.transit_price
total_pay = 12311
order_string = alipay.api_alipay_trade_page_pay(
out_trade_no=1231231312313,
total_amount=str(total_pay),
subject='测试text%s' % 1,
return_url=None,
notify_url=None,
)
# 返回应答
pay_url = "https://openapi.alipaydev.com/gateway.do?" + order_string
print(pay_url)
该代码的主要功能是生成一个经过签名的URL,此URL即为访问支付宝支付页面的地址。
初始化参数说明:appid为支付宝分配的唯一应用ID;
app_notify_url为支付完成后,支付宝异步通知商户后台服务器的URL地址;
app_private_key_path为开发者生成的私钥文件路径;
alipay_public_key_path为支付宝的公钥文件路径。sign_type指定签名加密方式;
debug参数设为true时,使用非正式(沙箱)环境;若为线上正式环境,应将其改为false。
调用接口参数说明:out_trade_no为商户后台生成的唯一订单编号;
total_amount为支付金额(必须为字符串类型);subject为订单标题;return_url为支付成功后页面跳转的地址;
notify_url为异步通知的URL地址。
第六步:
运行上述代码,将生成一个签名后的URL。

访问该URL,页面显示结果如下:

此时可下载沙箱版支付宝APP,或点击右侧“登录账户付款”。沙箱应用中提供了专用的付款账号和密码用于测试。
第七步:
登录沙箱支付宝完成支付测试。

实例扩展:
Python对接支付宝支付的自实现功能示例。
# -*- coding: utf-8 -*-
import base64
import json
import urllib.parse
from datetime import datetime
import requests
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
class AliPayException(Exception):
def __init__(self, data):
super(AliPayException, self).__init__()
self.data = data
def __str__(self):
return "alipay - {}".format(self.data)
def __unicode__(self):
return u"alipay - {}".format(self.data)
class AliPayVerifyException(AliPayException):
def __init__(self, msg, data):
super(AliPayVerifyException, self).__init__('alipay verify except - {}:{}'.format(msg, data))
class AliPay:
def __init__(self, **kwargs):
"""
:param kwargs:
本文介绍了Python接入支付宝的完整实例操作,更多Python接入支付宝的相关内容,可搜索本站历史文章或继续浏览后续教程。感谢大家的支持!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









