支付模块
微信和支付宝支付,支持多租户

介绍

本模块为系统增加 yansongda/pay 支付依赖,并在后台提供可视化的支付宝和微信支付配置功能,支持多租户配置。

安装使用

  1. 在后台配置好支付参数后,在后端任意位置使用 \ba\PayLib::getConfig() 即可获得组装好的参数数组。
  2. 发起支付、查询、退款等非常简单,请 参考这里
  3. 我们在 app/api/controller/PayNotify.php 提供了支付回调示例。
  4. 如需使用日志系统,请确保已经安装了 monolog: composer require monolog/monolog,之后于支付配置中开启日志功能即可。
  5. 以下对发起支付提供了一个快速预览的示例。
php 复制代码
// 支付1元
$amount = 1;
$amount = intval(bcmul($amount, 100));
$order = [
    'out_trade_no' => time().'',
    'description' => 'subject-测试',
    'amount' => [
        'total' => $amount,
    ],
];
$result = Pay::wechat(PayLib::getConfig())->scan($order);
var_dump($result);

常见问题

多租户使用

v1.0.6 版本开始,支持了多租户功能,所以,不同租户有不同的配置项,如果想要在使用时切换配置项怎么办呢?

其实很简单,传参时,加一个参数即可: '_config' => 'default'

例如,我们想在查询支付宝支付订单时,使用另外一个租户的配置文件。

php 复制代码
Pay::config(PayLib::getConfig());

$order = [
    'out_trade_no' => '1514027114',
    '_config' => 'default', // 注意这一行
];

$result = Pay::alipay()->find($order);

例如,如果你想在回调的时候使用非默认配置,则可以:

php 复制代码
Pay::alipay()->callback(null, ['_config' => 'buildadmin']);

切换为 buildadmin 这个租户的配置信息。

证书私钥/公钥路径问题?

需要你证书所在位置的绝对路径

Image

实际项目中不建议将证书放在 public,可以在网站根目录建立文件夹,保证程序能访问到即可

微信平台公钥证书的获取?(或报错 Get Wechat Public Cert Error)

2024-11 之后的新商户号,如果使用了微信支付公钥验证微信支付身份,那么微信平台公钥证书路径字段必填
证书下载位置:微信支付平台 > 账户中心 > API安全 > 验证微信支付身份 > 微信支付公钥 > 文件名一般是 PUB_KEY_ID_****.pem

回调通知配置问题?

ba 项目接口需要加 ?server=1 而微信不支持传参,可参考以下修改

方式一:URLindex.php

  • 模块自带微信回调:https://xxx.com/index.php/api/PayNotify/wechat
  • 模块自带支付宝回调:https://xxx.com/index.php/api/PayNotify/alipay
Image

方式二:如果有多个回调通知地址,可在配置里只配置域名,可通过支付参数的 notify_url 字段进行替换或拼接

Image

拼接完整的回调地址:

php 复制代码
$config = PayLib::getConfig();
$domain = $config['wechat']['default']['notify_url'];  // 配置的域名
$notify_url = $domain . '/index.php/api/xxx/xxx'; // 加入index.php 拼接回调地址

$result     = Pay::wechat($config)->mini([
    'out_trade_no' => $order_no, //订单号
    'description'  => '订单支付', //订单描述
    'amount'       => [
        'total'    => $totalPrice, //支付金额
        'currency' => 'CNY',
    ],
    'payer'        => [
        'openid' => $openid, //支付者openid
    ],
    'notify_url'   => $notify_url, //异步通知地址
])->toArray();

更新日志

  • 2026-01-23 17:18:19

    v1.0.6

    新增多租户配置功能和优化细节
    1. 优化配置页面样式
    2. 多租户可视化配置支持
    3. 路径类配置保存前对路径进行更多预处理以避免错误和兼容服务器迁移
    4. 其他细节...
  • 2025-03-14 22:01:21

    v1.0.5

    修复已知问题,升级依赖
    1. 修复支付模式类型,子商户号字段错误
    2. 升级 yansongda/pay 包版本
  • 2025-02-27 22:07:45

    v1.0.4

    修复已知问题
    • 修复微信平台公钥证书配置
  • 2024-07-30 09:31:08

    v1.0.3

    修复已知问题
    • 修复支付配置可能保存失败的问题
    • 清理多余的跨域配置
  • 2023-07-14 04:51:56

    v1.0.2

    更新依赖
    • 更新yansongda/pay依赖至v3版本
    • 此版本仅提供给>=v2.0.0版本的BuildAdmin
  • 2022-10-31 16:03:02

    v1.0.1

    lodash改为lodash-es

    无详细更新日志

  • 2022-10-20 04:05:07

    v1.0.0

    首次发布

    无详细更新日志

小猪
小猪
这家伙很懒,什么也没写~
模块授权
正版授权,允许商业使用
免费更新至一年内发布的所有版本
一年内发布的所有版本永久免费下载
不加密源代码,私有部署,二开方便
可复制产品,不支持七天无理由退款
禁止转售、分享等任何形式的再分发
仅 BuildAdmin 后台管理系统可以使用
模块信息
模块价格
5积分
访问次数
18150
模块标识
pay
下载次数
1634
模块分类
基础设施
上次更新
2026-01-23 17:18:19
开发者主页
-
购买送积分
-
官方共同开发TypeScript纯手写