首页 > 其他分享 >支付宝支付二次封装

支付宝支付二次封装

时间:2022-12-07 20:48:26浏览次数:28  
标签:alipay 支付宝 封装 key 二次 settings pem __

前言:前面用了第三方支付宝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

相关文章

  • 006.封装ResponseUtils工具类
    1.封装ResponseUtils(对标准的Code、Message进行设置)packagecom.imooc.oa.utils;importcom.fasterxml.jackson.annotation.JsonInclude;importcom.fasterxml.jackson......
  • vue-router封装结构
    index.js文件importVuefrom'vue'importVueRouterfrom"vue-router"importroutesfrom'./routes'Vue.use(VueRouter)//解決编程式路由住同一地址跳转时......
  • js 加减乘除方法封装(处理精度问题)
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><scriptsrc="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script></head><......
  • [c++11新特性]09-chrono的使用与封装
    时间类的简介​时间类的简介​​​duration简介​​​​借助chrono实现的定时器​​​​time_point​​​时间类的封装​​​时间格式化​​​​日期变化​​duration简......
  • vue select组件封装后用v-model
    封装好的组件<styletype="text/css"scoped>.ipt-select-title{color:#6D89AF;flex-shrink:0;font-weight:500;}.ipt-holder{display:flex;f......
  • 第三方集成 | 支付宝支付
    前端调用 this.payOrder.payType===‘alipay’{aliPayApi.tradePagePay(this.payOrder.productId).then((response)=>{document.write(response.data.formSt......
  • 支付宝继承支付
    支付宝集成的一些知识点 应用公钥(publickey)需提供给支付宝账号管理者上传到支付宝开放平台。应用私钥(privatekey)由开发者自己保存,需填写到代码中供签名时使用。生成......
  • vue tinymce富文本编辑器封装
    <template><divstyle="position:relative;"><divstyle="text-align:right;margin-bottom:20px;"><el-popoverplacement="right"wi......
  • 记录--react native 封装人脸 检测、美颜组件
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助本组件目前只能用在ReactNative的iOS端本组件来之实际中的开发需求:可以检测并且标记人脸,实现基本的美......
  • 【ES系列四】——ESjdbc的封装
    一、es的jdbc类-packagecom.yunshi.index.dao.esdb;importorg.apache.log4j.Logger;importorg.elasticsearch.client.transport.TransportClient;importorg.ela......