𝕷𝖎𝖑𝖏𝖆𝖈𝖐 发表于 2025-5-1 08:16:17

在 X5 中拓展自己的支付

一直以来,Discuz! 的站长有一个痛苦,安装了2个支付相关的插件,一个支付一个界面,界面极为不统一。


这种问题在 X5 时代彻底终极了。其实相关接口 X3.5 的时候已经出了,只是没对外公开过文档,很少有人知道。但是在 X5 中不仅拓展了它,还彻底优化加强了。

容我细细道来~~咳咳!

假设我们制作了一个需要用户支付的插件,现在到了支付的地方,你要自己开发支付接口吗?不必哦。你只需要对接 X5 自己的支付接口就行了,如下图,假设我们定好了价格只需调用创建订单的接口,生成一个链接,让用户点击


就会调到统一的系统支付页面

支付完成后会跳回到插件自己的页面中


而这流程你只需要调用一个函数:

$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');这样支付的时候自然会出现你新增的支付方式

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 文件接口把你增加的支付方式的设置内嵌在后台和系统的设置项放在一起


class payment_test {    var $name = 'test支付';    public function admincp() {    }}

IT618发布 发表于 2025-5-1 08:16:39

沙发位已占

独家记忆 发表于 2025-5-1 08:17:22

沙發占了

IT618发布 发表于 2025-5-1 08:18:06

{:7_172:}

TyCoding 发表于 2025-5-1 08:18:52

前排占位,其实支付这部分的对接,X3.5就支持,大家在X3.5就可以这么做了

婷姐 发表于 2025-5-1 08:19:28

稍微有点点差别

拾光 发表于 2025-5-1 08:20:11

基本一致,创建订单,回调,这些基础该有的都有

TyCoding 发表于 2025-5-1 08:20:26

本不想改的,但发现不改别扭,不统一。何况想加点东西
页: [1]
查看完整版本: 在 X5 中拓展自己的支付