Python 支付整合開發包
python 支付整合開發包
輕量級支付方式整合整合,實現支付與業務完全剝離,快速簡單完成支付模組的開發
特性
- 遮蔽支付方式之間接入API和資料結構的差異,統一API和資料結構
- 支援支付型別橫向擴充套件
- 統一異常處理
支援支付方式及功能
支付方式
pay_type=ali_pay pay_type=wx_pay
通用功能
平臺特有功能
使用說明
安裝
# installation pip install all-pay --upgrade
核心說明
配置(dict)
ALIPAY_CONFIG = { 'pay_type': 'ali_pay', # 必填 區分支付型別 'app_id': 'xxx', #必填 應用id 'private_key_path': 'xxx', #必填 私鑰 'public_key_path': 'xxx',#必填 公鑰 'notify_url': 'xxx',# 非同步回撥地址 'sign_type': 'RSA2',# 簽名演算法 RSA 或者 RSA2 'debug': False, # 是否是沙箱模式 } WECHAT_CONFIG = { 'pay_type': 'wx_pay', # 必填 區分支付型別 'app_id': 'xxx',# 必填,應用id 'mch_key': 'xxx',# 必填,商戶平臺金鑰 'mch_id': 'xxx',# 必填,微信支付分配的商戶號 'app_secret': 'xxx', # 應用金鑰 'notify_url': 'xxx'# 非同步回撥地址 'api_cert_path': 'xxx', # API證書 'api_key_path': 'xxx' # API證書 key }
其中pay_type
為本專案所需,用來區分支付型別,其餘為對應支付方式所需配置引數,具體參考對應支付方式對應的官方文件。
Pay類
支付閘道器,支付方式分配和轉發入口
PayOrder類
統一封裝支付訂單資訊,主要用於支付下單
生成統一訂單例子
order = PayOrder.Builder().subject('商品標題') .out_trade_no('商品訂單號').total_fee('商品費用').build()
通過Builder模式+鏈式呼叫
靈活組合通用引數和特殊引數
更多引數說明參見原始碼
PayResponse類
統一封裝支付返回業務資訊,主要用於支付查詢
生成統一回單例子
response = PayResponse.Builder().trade_no('平臺訂單號').out_trade_no('商家訂單號').build()
通過Builder模式+鏈式呼叫
靈活組合通用引數和特殊引數
更多引數說明參見原始碼
demo
from all_pay import PayOrder from all_pay import Pay ALIPAY_CONFIG = { 'pay_type': 'ali_pay', # 必填 區分支付型別 'app_id': 'xxx', #必填 應用id 'private_key_path': 'xxx', #必填 私鑰 'public_key_path': 'xxx',#必填 公鑰 'notify_url': 'xxx',# 非同步回撥地址 'sign_type': 'RSA2',# 簽名演算法 RSA 或者 RSA2 'debug': False, # 是否是沙箱模式 } # 額外引數,某些支付方式有些選填的引數在PayOrder並沒有封裝,可以自行傳遞 extra_params= { 'xxx':'xxx' 'xxx':'xxx' 'xxx':'xxx' } order = PayOrder.Builder().subject('商品標題') .out_trade_no('商品訂單號').total_fee('商品費用').build() pay = Pay(ALIPAY_CONFIG) # 傳入對應支付方式配置 order_res= pay.trade_page_pay(order,extra_params)# 傳入對應訂單和額外引數(要是需要)
功能說明
電腦網站支付[trade_page_pay]
pay = Pay(ALIPAY_CONFIG) # 傳入對應支付方式配置 order_res= pay.trade_page_pay(order)# 傳入對應訂單
手機網站支付[trade_wap_pay]
pay = Pay(ALIPAY_CONFIG) # 傳入對應支付方式配置 order_res= pay.trade_wap_pay(order)# 傳入對應訂單
APP支付[trade_app_pay]
pay = Pay(ALIPAY_CONFIG) # 傳入對應支付方式配置 order_res= pay.trade_app_pay(order)# 傳入對應訂單
非同步通知校驗[parse_and_verify_result]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應支付方式返回的原始資料,校驗成功會返回解析成json資料 data = pay.parse_and_verify_result(req_xml)
微信JS支付[trade_js_pay]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應訂單 data = pay.trade_js_pay(order)
微信企業付款到零錢[enterprise_pay]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應訂單 data = pay.enterprise_pay(order)
交易查詢[trade_query]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應回單資訊 data = pay.trade_query(response)
交易取消[trade_cancel]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應回單資訊 data = pay.trade_cancel(response)
退款[trade_refund]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應回單資訊 data = pay.trade_refund(response)
退款查詢[trade_refund_query]
# 傳入對應支付方式配置 pay = Pay(WECHAT_CONFIG) # 傳入對應回單資訊 data = pay.trade_refund_query(response)
貢獻
本專案目前支援的支付方式和API還不多,歡迎你給本專案提pull request,擴充套件新的的支付介面,同時如果你有好的意見或建議,也歡迎給本專案提issue
宣告:
本專案主要目標的是支付整合,統一支付API和資料結構,在具體支付模組的接入實現參考了一些開源專案
支付寶模組基於python-alipay-sdk
微信模組基於wx_pay_python