# 第三方支付
niucloud-admin框架已經內置實現支付寶支付、微信支付、微信支付v3。
框架可設置不同端口,對于不同支付方式的配置與開啟,以及調整支付方式的優先順序。
### 支付配置
~~~
return [
//默認驅動
'default' => 'wechatpay',
//驅動
'drivers' => [
//微信
'wechatpay' => [],
//支付寶
'alipay' => [],
]
];
~~~
驅動里面可以配置支付的額外參數。default為系統默認支付方法。目前系統并沒有調用上述配置的具體的參數。只是為了裝載器來裝載對應的類(反射)。具體的各個支付方式的參數配置調用都取自數據庫表。
### 裝載器加載入口
~~~
class PayLoader extends Loader
{
/**
* 空間名
* @var string
*/
protected $namespace = '\\core\\pay\\';
protected $config_name = 'pay';
/**
* 默認驅動
* @return mixed
*/
protected function getDefault()
{
return config('pay.default');
}
}
~~~
### 使用方法
~~~
$notify_url = (string)url("/api/pay/notify/$this->site_id/$this->channel/$this->type/$action", [], '', true);//異步回調通知地址
$this->config['notify_url'] = $notify_url;
return new PayLoader($this->type, $this->config);
~~~
一般來說,系統已經把具體的各種支付方法進行了封裝(CorePayEventService )。不需要用戶調用上面的具體支付方法。
具體的使用在相關業務類中調用。一般在Service中,app\service\pay\ 進行調用。
<br>
*****
### 開發擴展支付插件
**舉例開發銀聯支付**
#### 首先增加支付類型配置
1. 修改config/pay.php
~~~
return [
//默認驅動
'default' => 'wechatpay',
//驅動
'drivers' => [
//微信
'wechatpay' => [],
//支付寶
'alipay' => [],
//銀聯支付
'union_pay '=>[
'driver' \=> 'addon\\unionPay\\unionPay', //反射類的名字
],
]
];
~~~
上面配置文件需要注意的地方,對于框架內置的路徑來說,一般為app\core\pay\。裝載器會自動裝載本命名空間實例化。對于第三方開發者開發,一般為插件Addon下,所以要指定具體的驅動命名空間位置。系統會自動加載該驅動。
2. 創建文件:/Addon/unionPay/UnionPay.php
需要完成以下接口
~~~
namespace core\pay;
use core\loader\Storage;
/**
* 支付管理驅動類
* Class BasePay
*/
class UnionPay extends BasePay
{
protected $config;//配置
/**
* 初始化
* @param array $config
* @return mixed|void
*/
protected function initialize(array $config = [])
{
}
/**
* 網頁支付
* @param $save_dir
* @return mixed
*/
abstract protected function web(array $params);
/**
* 手機網站支付
* @param $dir
* @return mixed
*/
abstract protected function wap(array $params);
/**
* app支付
* @param $dir
* @return mixed
*/
abstract protected function app(array $params);
/**
* 小程序支付
* @param $dir
* @return mixed
*/
abstract protected function mini(array $params);
/**
* 付款碼支付
* @param $dir
* @return mixed
*/
abstract protected function pos(array $params);
/**
* 掃碼支付
* @param $dir
* @return mixed
*/
abstract protected function scan(array $params);
/**
* 轉賬
* @param $dir
* @return mixed
*/
abstract protected function transfer(array $params);
/**
* 公眾號支付
* @param $dir
* @return mixed
*/
abstract protected function mp(array $params);
/**
* 支付關閉
* @param string $out_trade_no
* @return mixed
*/
abstract protected function close(string $out_trade_no);
/**
* 退款
* @param array $params
* @return mixed
*/
abstract protected function refund(array $params);
/**
* 支付通知
* @param callable $callback
* @return mixed
*/
abstract protected function notify(Callable $callback);
/**
* 查詢支付訂單
* @param array $params
* @return mixed
*/
abstract protected function getOrder(array $params);
/**
* 查詢退款訂單
* @param string|null $out_trade_no
* @param string|null $refund_no
* @return mixed
*/
abstract protected function getRefund(string $out_trade_no, ?string $refund_no);
/**
* 查詢轉賬訂單
* @param string $transfer_no
* @return mixed
*/
abstract protected function getTransfer(string $transfer_no);
}
~~~
##### 銀聯擴展使用方法
增加銀聯支付后,系統的CorePayEventService 會自動調用 銀聯支付。
整個的支付流程會與上面的微信支付、支付寶支付一樣。
- 源碼下載
- 安裝部署
- 環境要求
- 安裝視頻教程
- 寶塔部署
- 授權綁定
- 二次開發須知
- 技術棧
- 目錄結構
- 命名規范
- 二次開發指導
- 二次開發環境搭建步驟
- 二次開發注意事項
- 單站和Saas模式開發
- 插件結構描述
- MENU開發
- DIY組件/頁面開發
- 自定義手機端DIY裝修頁面
- Route 路由處理
- Services中的core文件夾
- 自定義站點管理端控制臺頁面樣式
- 調用素材資源
- Resource資源文件
- 引入圖標ICON
- SMS發送短信開發
- Job 消息隊列和計劃任務
- 消息隊列
- 計劃任務開發
- 生產環境編譯打包處理步驟
- 生產環境搭建步驟
- 插件安裝時npm,composer檢測不可用問題處理
- 上傳圖片大小限制修改
- 插件uniapp開發
- 菜單語言包
- 插件打包
- 插件內測在線升級
- 自定義端口開發
- 如何開發自定義布局后臺布局
- 二次開發應用插件視頻教程
- 二次開發安裝視頻教程
- 準備工作與創建插件
- 插件目錄整體說明
- 插件admin目錄
- 插件app目錄說明(adminapi、api、驗證器)
- 插件app目錄(dict、job)
- 插件app目錄說明(lang、listener)
- 插件app目錄說明(model、service)
- 插件uniapp目錄說明
- 插件開發之后臺功能開發(代碼生成器)
- 插件開發之uniapp功能開發(api)第一節
- 插件開發之uniapp功能開發(api)第二節
- 插件開發之uniapp功能開發(api)第三節
- 插件安裝與打包原理
- 消息隊列開發
- 計劃任務開發
- DIY組件和自定義頁面裝修開發
- 支付接口開發
- 插件升級包打包流程以及云編譯功能
- 常見問題
- 怎么添加菜單,添加了菜單不出現怎么回事
- 怎么配置跨域的問題
- 站點site端(租戶端、商家端)和saas管理端(平臺端)究竟啥意思,有啥區別
- 框架中是有訂單表order,假如開發一個商城插件,請問商城的訂單數據是不是重新搞一個訂單表shop_order
- 有些支付平臺是綁定回調唯一網址或目錄,如果有幾個開發者開發插件都有支付那這塊怎么解決?
- 站點過期,可以登錄,這樣對嗎?
- 計劃任務怎么啟動啊
- Git多分支開發,切換分支
- 安裝應用出現is_dir():報錯處理方案
- 綁定授權時出現“請求來源產品與授權產品不一致”解決方案
- “未找到admin源碼所在目錄”的解決方案
- 頁面裝修本地開發環境配置
- 接口請求錯誤處理方案
- 未獲取到授權信息問題處理方案
- 騰訊地圖配置
- 請求超時問題處理方案
- 下載應用時提示找不到zip解決方案
- 怎么關閉開發調試模式
- 獲取數據失敗問題處理方案
- 框架安裝后,訪問域名無法進入admin端(多數發生在本地)
- 底部導航失效問題
- 開放平臺小程序審核通過發布失敗問題
- 先升級插件后升級框架,導致云編譯報debounce的錯誤
- 微信公眾號自動回復不通
- 修改訪問域名默認跳轉端口
- 插件與框架的兼容問題處理
- 升級提示mkdir()處理方案
- 云編譯時node.js內存不足導致內存溢出處理方案
- 報錯Allowed memory size of ** bytes exhausted (tried to allocate ** bytes)處理方法
- 代碼生成器
- 設計數據表
- 導入數據表
- 添加字段
- 代碼生成
- 效果預覽
- niucloud (服務端)
- 服務端目錄結構
- 整體運行流程
- 入口文件
- 模塊
- 中間件
- 控制器
- 路由
- 模型類
- 服務類
- 驗證類
- 消息隊列
- 開發消息隊列
- 多語言
- 裝載器
- 短信發送
- 上傳文件
- 第三方支付
- 第三方登錄
- 數據字典裝載器
- 打印
- 事件
- 消息提醒(模版消息)
- 數據字典
- admin (后臺管理端)
- 準備工作
- 新手入門
- 目錄結構
- 系統配置
- 路由
- 接口
- 管理端編譯上傳
- uni-app(手機端前端)
- 準備工作
- 前端目錄結構
- Hbuilder開發
- 發行h5
- 運行uniapp
- 發行uniapp
- Visual Studio Code開發
- 發行 uniapp
- 運行 uniapp
- 配置項
- 路由
- 接口
- 分包建議
- 手機端編譯
- 微信小程序編譯上傳
- web端(PC前端)
- 準備工作
- 目錄結構
- 代碼運行
- 路由
- 接口
- 黑暗主題
- web端打包上線
- api接口
- 配置手冊
- 阿里云oss云存儲配置
- 三方開放平臺小程序托管
- 計劃任務配置
- 站點域名配置
- 小票打印配置
- 電子面單配置
- 微信小程序客服配置
- 微信打款配置