1. 程式人生 > 其它 >支付寶支付二次封裝

支付寶支付二次封裝

前言:前面用了第三方支付寶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就是一個支付連結了。(支付寶閘道器 + 加密串)