第一步:测试用支付宝的沙箱环境:支付宝开放平台 (alipay.com)
第二步:生成公钥私钥:生成密钥 - 支付宝文档中心 (alipay.com)
第三步:配置公钥私钥
第三步:安装模块
pip install python-alipay-sdk
第四步:基本使用
from alipay import AliPay from alipay.utils import AliPayConfig app_private_key_string = open("./应用私钥2048.txt").read() alipay_public_key_string = open("./支付宝公钥.txt").read() # 应用私钥格式 """ -----BEGIN RSA PRIVATE KEY----- base64 encoded content -----END RSA PRIVATE KEY----- """ # 支付宝公钥格式 """ -----BEGIN PUBLIC KEY----- base64 encoded content -----END PUBLIC KEY----- """ alipay = AliPay( appid="2021000121627616", app_notify_url=None, # 默认回调 url app_private_key_string=app_private_key_string, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, alipay_public_key_string=alipay_public_key_string, sign_type="RSA2", # RSA 或者 RSA2 debug=False, # 默认 False verbose=False, # 输出调试数据 config=AliPayConfig(timeout=15) # 可选,请求超时时间 ) res = alipay.api_alipay_trade_page_pay( out_trade_no='1000101', # 订单号 total_amount=float(999), # 价格 subject='气球', # 名称 return_url='http://127.0.0.1:8000', notify_url='http://127.0.0.1:8000', ) gataway = 'https://openapi.alipaydev.com/gateway.do?' # 支付链接 pay_url = gataway + res print(pay_url)
二次封装方便项目使用
包目录结构:
包名 ├── __init__.py ├── pem -- 存放公钥私钥文件夹 ├ ├── alipay_public_key.pem -- 支付宝公钥 ├ └── app_private_key.pem -- 应用私钥 ├── pay.py -- 生成一个alipay对象 └── settings.py -- 配置文件
__init.py__
from .pay import alipay from .settings import GATEWAY
settings.py
import os # 应用私钥 APP_PRIVATE_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'app_private_key.pem')).read() # 支付宝公钥 ALIPAY_PUBLIC_KEY_STRING = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'pem', 'alipay_public_key.pem')).read() # 应用ID APP_ID = '100' # 加密方式 SIGN = 'RSA2' # 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False DEBUG = True # 支付网关 GATEWAY = 'https://openapi.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'
pay.py
from alipay import AliPay from alipay.utils import AliPayConfig from . import settings alipay = AliPay( appid="2021000121627616", app_notify_url=None, # 默认回调 url app_private_key_string=settings.APP_PRIVATE_KEY_STRING, # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥, alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING, sign_type=settings.SIGN, # RSA 或者 RSA2 debug=settings.DEBUG, # 默认 False verbose=False, # 输出调试数据 config=AliPayConfig(timeout=15) # 可选,请求超时时间 )
项目中使用:
# 导入包中的alipay对象和GATEWAY网关接口 res = alipay.api_alipay_trade_page_pay( out_trade_no='1000101', # 订单号 total_amount=float(999), # 价格 subject='气球', # 名称 return_url='http://127.0.0.1:8000', notify_url='http://127.0.0.1:8000', ) pay_url = GATEWAY + res print(pay_url)