支付宝封装包

前言:前面用了第三方支付宝SDK实现了支付,以后我想在别的项目需要用支付宝,也要用到这些代码,那么我可以把它写成一个包,以后直接把这个二次封装包拷贝过去就可以了。

之前已经将第三方包安装过了,安装命令:

>: pip install python-alipay-sdk --upgrade

# 如果抛ssl相关错误,代表缺失该包
>: pip install pyopenssl

1. 包结构

lib
    ├── alipay_sdk                     # 支付宝二次封装包
    │   ├── __init__.py                # 包文件
    │   ├── pem                        # 公钥私钥文件夹
    │   │   ├── alipay_public_key.pem  # 支付宝公钥文件
    │   │   ├── app_private_key.pem    # 应用私钥文件
    │   ├── pay.py                     # 支付核心文件
    └── └── settings.py                # 应用配置    

如图显示:

2. __init__.py 

# 因为想以后在外部用alipay对象和gateway,所以直接在__init__.py文件中导入变量,以后使用的时候就直接from lib.alipay_sdk import alipay,gateway 就可以了
from .pay import alipay, gateway

3. pem/alipay_public_key.pem

按照这个格式,里面填入申请的支付宝公钥

-----BEGIN PUBLIC KEY-----
支付宝公钥
-----END PUBLIC KEY-----

4. pem/app_private_key.pem

按照这个格式,里面填入自己的私钥

-----BEGIN RSA PRIVATE KEY-----
应用私钥
-----END RSA PRIVATE KEY-----

5. 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

6. settings.py

import os

# 应用私钥
# __file__是当前文件,os.path.abspath(__file__)是当前文件的绝对路径,也就是alipay_sdk,在这一层拼了一个pem,又拼了app_private_key.pem
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', 'aplipay_public_key.pem')).read()

# 应用ID
APP_ID = '2021000121697113'

# 加密方式
SIGN = 'RSA2'

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

# 支付网关
# 如果是测试环境,走前面的沙箱环境支付链接,如果是生成环境,走后面正式的支付链接
GATEWAY = 'https://openapi.alipaydev.com/gateway.do?' if DEBUG else 'https://openapi.alipay.com/gateway.do?'  # 后面写了一个问号,这样后面就可以直接拼接加密串了

以上就是二次封装好的Python支付宝支付,以后想要使用,就直接把alipay_sdk (包名自定义)这个包拷到lib,导入语句 from lib.alipay_sdk import alipay,gateway ,再调用 alipay的方法,即alipay.api_alipay_trade_page_pay(),在括号里面传一堆参数,再加上gateway就是一个支付链接了。(支付宝网关 + 加密串)

posted @ 2022-12-07 20:30  Tutu007  阅读(52)  评论(0编辑  收藏  举报