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