前言:前面用了第三方支付宝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就是一个支付链接了。(支付宝网关 + 加密串)
标签:alipay,支付宝,封装,key,二次,settings,pem,__ From: https://www.cnblogs.com/tully/p/16964466.html