支付宝简单使用
支付宝
一 支付宝支付流程
二 准备支付测试步骤
# 1、在沙箱环境下实名认证:https://openhome.alipay.com/platform/appDaily.htm?tab=info
# 2、电脑网站支付API:https://docs.open.alipay.com/270/105898/
# 3、完成RSA密钥生成:https://docs.open.alipay.com/291/105971
# 4、在开发中心的沙箱应用下设置应用公钥:填入生成的公钥文件中的内容
# 5、Python支付宝开源框架:https://github.com/fzlee/alipay
# >: pip install python-alipay-sdk --upgrade
# 7、公钥私钥设置
"""
# alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----
# app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
用户私钥
-----END RSA PRIVATE KEY-----
"""
# 8、支付宝链接
"""
开发:https://openapi.alipay.com/gateway.do
沙箱:https://openapi.alipaydev.com/gateway.do
"""
三 aliapy二次封装包
1 依赖
>: pip install python-alipay-sdk --upgrade
2 结构
libs
├── iPay # aliapy二次封装包
│ ├── __init__.py # 包文件
│ ├── keys # 密钥文件夹
│ │ ├── alipay_public_key.pem # 支付宝公钥
│ │ └── app_private_key.pem # 应用私钥
└── └── settings.py # 应用配置
3 setting.py
import os
# 支付宝应用id
APP_ID = '2016101500689915'
# 默认异步回调的地址,通常设置None就行,在配置支付链接参数时再规定同步异步回调接口
APP_NOTIFY_URL = None
# 签名方式
SIGN_TYPE = 'RSA2'
# 是否是测试环境
DEBUG = True
# 上线后必须换成官网地址
# 同步回调的接口(get),前后台分离时一般设置前台页面url
RETURN_URL = 'http://127.0.0.1:8080/pay/success'
# 异步回调的接口(post),一定设置为后台服务器接口
NOTIFY_URL = 'http://127.0.0.1:8000/order/success/'
# 读取应用私钥字符串
app_private_key_string = open(os.path.join(os.path.dirname(__file__), 'keys', 'app_private_key.pem')).read()
# 读取支付宝公钥字符串
alipay_public_key_string = open(os.path.join(os.path.dirname(__file__), 'keys', 'alipay_public_key.pem')).read()
4 init.py
from alipay import AliPay
from .settings import *
# 对外提供
from .settings import RETURN_URL, NOTIFY_URL
# 对外提供支付对象
alipay = AliPay(
appid=APP_ID, # app id
app_notify_url=APP_NOTIFY_URL, # 异步请求接口
app_private_key_string=app_private_key_string, # 应用私钥字符串
alipay_public_key_string=alipay_public_key_string, # 支付宝公钥字符串
sign_type=SIGN_TYPE, # 加密类型
debug=DEBUG # debug=True 默认会测dev的请求连接
)
5 alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----
6 app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
应用私钥
-----END RSA PRIVATE KEY-----
7 补充:dev.py
# 上线后必须换成官网地址
# 同步回调的接口(get),前后台分离时一般设置前台页面url
RETURN_URL = 'http://127.0.0.1:8080/pay/success'
# 异步回调的接口(post),一定设置为后台服务器接口
NOTIFY_URL = 'http://127.0.0.1:8000/order/success/'
8 测试
ps:对于二次封装包的测试,测得是沙箱环境,会有模拟的账号,密码来作为用户测试。
scripts/t_aipay.py
from libs.my_pay import alipay, RETURN_URL, NOTIFY_URL
order_string = alipay.api_alipay_trade_page_pay(
subject='小飞机', # 商品名
out_trade_no='12345678', #订单号
total_amount='6.66', # 商品价格
return_url=RETURN_URL, # 同步前端调用接口 ,前端支付完了之后支付宝会控制你的浏览器调用该接口(也就是你的前端接口)
notify_url=NOTIFY_URL # 异步后端调用接口,支付宝后台会自己请求你的后端接口向你发送数据。
)
pay_url = '%s?%s' % (alipay._gateway, order_string)
print(pay_url)