|
一直以來,Discuz! 的站長有一個痛苦,安裝了2個支付相關的插件,一個支付一個界面,界面極為不統一。
這種問題在 X5 時代徹底終極了。其實相關接口 X3.5 的時候已經出了,只是沒對外公開過文檔,很少有人知道。但是在 X5 中不僅拓展了它,還徹底優化加強了。
容我細細道來~~咳咳!
假設我們制作了一個需要用戶支付的插件,現在到了支付的地方,你要自己開發支付接口嗎?不必哦。你只需要對接 X5 自己的支付接口就行了,如下圖,假設我們定好了價格只需調用創建訂單的接口,生成一個鏈接,讓用戶點擊
1.jpg (4.59 KB, 下載次數: 1)
下載附件
2024-10-31 08:42 上傳
就會調到統一的系統支付頁面
2.jpg (41.32 KB, 下載次數: 2)
下載附件
2024-10-31 08:43 上傳
支付完成后會跳回到插件自己的頁面中
3.jpg (25.36 KB, 下載次數: 2)
下載附件
2024-10-31 08:46 上傳
4.jpg (20.03 KB, 下載次數: 0)
下載附件
2024-10-31 08:46 上傳
而這流程你只需要調用一個函數:
- $ret = payment::create_order('sample:test', 'test title', 'test desc', $price, $_G['siteurl'].'/index.php?app=plugin&id=sample:pay_callback');
復制代碼 $ret 為返回的鏈接,你視情況輸出即可
然后在 pay_callback.inc.php 腳本中可以直接判斷支付完成后的處理過程
另一方面
如果您想對接自己的支付體系,也是可以的,我們支持開發者新增新的支付通道
通過如下代碼,創建一個新的通道
- payment::channels_add('sample', [
- 'id' => 'sample:test',
- 'title' => 'sample',
- 'logo' => 'static/image/common/logo.svg',
- ]);
復制代碼 刪除可以這樣
- payment::channels_delete('sample');
復制代碼 這樣支付的時候自然會出現你新增的支付方式
5.jpg (38.92 KB, 下載次數: 3)
下載附件
2024-10-31 09:16 上傳
pay/pay_test.php 腳本中我們可以定義此支付體系的具體支付過程
- class pay_test extends \pay_base {
- public function pay($order) {
- ......
- }
- }
復制代碼
在 pay_notify.inc.php 中可以進行支付完成的通知的接收
- payment::finish_order('sample:test', $_GET['out_biz_no'], $_GET['trade_no'], time());
復制代碼 在 pay/pay_test.php 中完成回調處理
- class pay_test extends \pay_base {
- public function callback($data, $order) {
- ......
- }
- }
復制代碼 同時,我們還為自定義支付通道的插件提供了,直接嵌入后臺的入口,添加 admin/payment/payment_test.php 文件接口把你增加的支付方式的設置內嵌在后臺和系統的設置項放在一起
6.jpg (42.37 KB, 下載次數: 2)
下載附件
2024-10-31 09:32 上傳
- class payment_test {
- var $name = 'test支付';
- public function admincp() {
- }
- }
復制代碼
|
|