1、支付宝API:六大接口
https://docs.open.alipay.com/270/105900/
2、支付宝工作流程(见下图):
https://docs.open.alipay.com/270/105898/
3、支付宝8次异步通知机制(支付宝对我们服务器发送POST请求,索要 success 7个字符)
https://docs.open.alipay.com/270/105902/
# 1、在沙箱环境下实名认证:https://openhome.alipay.com/platform/appDaily.htm?tab=info # 2、电脑网站支付API:https://docs.open.alipay.com/270/105900/ # 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 """
https://github.com/fzlee/alipay
>: pip install python-alipay-sdk --upgrade # 如果抛ssl相关错误,代表缺失该包 >: pip install pyopenssl
libs ├── iPay # aliapy二次封装包 │ ├── __init__.py # 包文件 │ ├── pem # 公钥私钥文件夹 │ │ ├── alipay_public_key.pem # 支付宝公钥文件 │ │ ├── app_private_key.pem # 应用私钥文件 │ ├── pay.py # 支付文件 └── └── settings.py # 应用配置
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----
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 = '2016093000631831' # 加密方式 SIGN = 'RSA2' # 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False DEBUG = True # 支付网关 GATEWAY = 'https://openapi.alipaydev.com/gateway.do' if DEBUG else 'https://openapi.alipay.com/gateway.do'
from alipay import AliPay from . import settings # 支付对象 alipay = AliPay( appid=settings.APP_ID, app_notify_url=None, app_private_key_string=settings.APP_PRIVATE_KEY_STRING, alipay_public_key_string=settings.ALIPAY_PUBLIC_KEY_STRING, sign_type=settings.SIGN, debug=settings.DEBUG ) # 支付网关 gateway = settings.GATEWAY
# 包对外提供的变量 from .pay import gateway, alipay
# 上线后必须换成公网地址 # 后台http根路径 BASE_URL = 'http://127.0.0.1:8000' # 前台http根路径 LUFFY_URL = 'http://127.0.0.1:8080' # 订单支付成功的后台异步回调接口 NOTIFY_URL = BASE_URL + '/order/success/' # 订单支付成功的前台同步回调接口 RETURN_URL = LUFFY_URL + '/pay/success'
小结:
""" 1、简述以下支付宝的支付流程 商家商品页 -> 支付宝价格页 -> 支付宝登录页 -> 支付宝确认页 -> 商家展示支付宝支付结果页 2、简述支付宝的同步异步回调机制 同步:支付完成立即回调,采用get请求,访问支付链接中配置的return_url(前台页面路由) 异步:支付完成立即回调(之后还有不同时间间隔的7次回调),采用post请求,访问支付链接的notify_url(后台路由),,我们服务器在支付宝回调时,需要success 7个字符 """