支付宝支付

入门

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
"""

支付流程

aliapy二次封装包

GitHub开源框架

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                  # 应用配置  
alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----
setting.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 = '2016093000631831'

# 加密方式
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 . 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
__init__.py
# 包对外提供的变量
from .pay import gateway, alipay

补充:在自己项目的配置文件中配置支付宝回调接口:settings.py | dev.py

# 上线后必须换成公网地址
# 后台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个字符
"""
原文地址:https://www.cnblogs.com/baohanblog/p/12432565.html