支付宝支付

1 支付宝支付介绍

# 项目中需要有在线支付功能
    -支付宝支付
    -微信支付:备案过域名
    -云闪付
    
    
# 咱们项目以支付宝支付为例
    -支付流程
    -API,sdk
        -sdk:第三方sdk,基于API封装的
        -官方sdk:https://opendocs.alipay.com/open/02no41
# 支付宝支付介绍
    -申请条件很严苛
    -沙箱环境:Sandbox:程序的虚拟执行环境,不需要申请各种认证,直接写程序,后期只需要换成只是的秘钥即可

 

 

 

 

 1.1 使用支付宝支付

# 使用沙箱环境
# 第三方的sdk:https://github.com/fzlee/alipay
    -基于支付宝的API接口封装的,开源软件,
    -pip3 install python-alipay-sdk
# 官方sdk

# 生成公钥私钥:支付宝提供咱们一个生成的工具
    -https://opendocs.alipay.com/open/02np9g
    -生成公钥私钥,在本地(私钥好好保管)
    -非对称加密:
        -公钥,私钥
        -加密使用公钥,解密使用私钥
    -对称加密:加密和解密使用同一个秘钥 :AES,DES
        -我能保证秘钥不丢失
        -解密也要同样的秘钥,解密的人万一把秘钥丢失了
        
        
# 把公钥填在支付宝网站上(沙箱环境,正式环境)
    -把咱么的公钥填进网站,会生成一个支付宝公钥,以后项目中咱们使用支付宝公钥来做

2 支付宝支付二次封装

alipay_common  # 包名
    pem        # 放公钥私钥
        alipay_public_key.pem
        app_private_key.pem
    __init__.py 
    pay.py    # 核心文件
    settings.py #配置文件
    
    
# 保证公钥私钥的安全:
    1 环境变量
    2 专门写一个公钥私钥管理的服务(项目),发送请求去获取,接口中带很多认证
#init
from .pay import alipay
from .settings import GATEWAY
#pay.py
from alipay import AliPay
from alipay.utils import AliPayConfig
from . import settings

# 初始化得到对象,传入一堆参数
alipay = AliPay(
    appid=settings.APPID,  # app的id号
    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)  # 可选,请求超时时间
)
#settings.py
import os

APPID = '2016092000554611'
# 应用私钥
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()
# 加密方式
SIGN = 'RSA2'

# 是否是支付宝测试环境(沙箱环境),如果采用真是支付宝环境,配置False
DEBUG = True

# 支付网关
GATEWAY = 'https://openapi.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'

然后在pem下创建alipay_public_key.pem和app_private_key.pem把支付宝公钥和你的私钥放在里面具体格式如下

alipay_public_key.pem
-----BEGIN PUBLIC KEY-----
拿应用公钥跟支付宝换来的支付宝公钥
-----END PUBLIC KEY-----
app_private_key.pem
-----BEGIN RSA PRIVATE KEY-----
通过支付宝公钥私钥签发软件签发的应用私钥
-----END RSA PRIVATE KEY-----

之后在后端调用就好了

posted @ 2022-11-23 19:59  shangxin_bai  阅读(166)  评论(0编辑  收藏  举报