admin 发表于 2024-8-31 18:54:15

火狼支付中心升级到最新版2.5.X版本之后支付过程点击确认支付闪一下没有弹出支付窗口无法支付的解决办法

火狼支付中心升级到最新版2.5.X版本之后支付过程点击确认支付一闪而过无法支付的解决办法:

如图:


在浏览器调试页面可以看到如下报错:

Discuz! Database Error
Time: 2024-0*-** 18:32:24 +0800 IP: *.*.*.* BackTraceID:

(1054) Unknown column 'payip' in 'field list'
INSERT INTO duceapp_orders SET `orderid`='20240831183224431696968466' , `type`='wallet' , `appkey`='' , `uid`='2' , `product_id`='0' , `status`='1' , `parameter`='a:2:{s:5:\"price\";d:1;s:7:\"cardkey\";s:0:\"\";}' , `apitype`='p:alipay' , `amount`='1' , `dateline`='1725100344' , `payip`='*.*.*.*' , `fee_type`='CNY' , `actualpay`='0' , `scene_type`=''
PHP Debug

No.        File        Line        Code
1        plugin.php        47        include(%s)
2        source/plugin/duceapp_wallet/duceapp_wallet.inc.php        87        include_once(%s)
3        source/plugin/duceapp_wallet/include/pay.php        94        duceapp_wallet_requestpayment()
4        source/plugin/duceapp_wallet/function/function_duceapp_wallet.php        145        discuz_table->insert()
5        source/class/discuz/discuz_table.php        81        discuz_database::insert()
6        source/class/discuz/discuz_database.php        60        discuz_database::query()
7        source/class/discuz/discuz_database.php        142        db_driver_mysqli->query()
8        source/class/db/db_driver_mysqli.php        147        db_driver_mysqli->halt()
9        source/class/db/db_driver_mysqli.php        222        break()


如果你也在页面点击支付闪一下没有弹出支付窗口的解决办法:
**** Hidden Message *****
实测演示:
https://demo.dz-x.net/plugin.php?id=duceapp_wallet&ac=pay

Discuz智能体 发表于 2025-3-20 05:12:40

关于火狼支付中心升级后无法弹出支付窗口的问题,经分析是数据库字段缺失导致。以下是完整解决方案:

1. **数据库字段修复操作**
需执行以下SQL语句(操作前务必做好数据备份):
ALTER TABLE `pre_duceapp_orders`
ADD COLUMN `payip` varchar(45) NOT NULL DEFAULT '' COMMENT '支付IP' AFTER `endtime`,
ADD COLUMN `scene_type` varchar(20) NOT NULL DEFAULT '' COMMENT '场景类型' AFTER `fee_type`;

2. **配置调整步骤**
通过FTP修改网站根目录下:
/config/config_global.php
找到:
$_config['admincp']['runquery'] = '0';
改为:
$_config['admincp']['runquery'] = '1';

3. **后台操作流程**
a. 进入Discuz!管理后台 → 站长 → 数据库 → 升级
b. 将第1步的SQL语句粘贴到文本框
c. 勾选"可重复执行"选项后提交

4. **支付流程验证要点**
- 检查会员组支付权限设置
- 核对支付接口配置状态(支付宝/微信)
- 验证服务端防火墙未拦截支付请求
- 确保服务器时间与北京时间同步

5. **进阶排查指引**
若仍存在异常,建议:
1) 在function_duceapp_wallet.php约145行加入:
debugprint($this->_param); // 输出请求参数
2) 检查source/class/discuz/discuz_database.php的SQL错误处理机制
3) 查看php-fpm错误日志定位更深层次问题

该问题属于支付中心版本升级时的数据结构不兼容问题,通过补充缺失字段即可恢复正常支付功能。建议后续升级插件前先查阅更新日志中的数据库变更说明。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 12:21:27

根据你提供的错误信息和解决方案,问题出在数据库表 `pre_duceapp_orders` 中缺少 `payip` 字段。这个字段在最新版的火狼支付中心中被使用,但在升级过程中可能没有自动添加到数据库中。

### 解决方案步骤:

1. **修改 `config/config_global.php` 文件**:
   - 打开 `config/config_global.php` 文件。
   - 找到 `$_config` 设置,确保 `$_config['admincp']['runquery']` 的值为 `1`,以允许在后台执行 SQL 语句。
   - 修改后的代码如下:
   $_config['admincp']['runquery'] = 1;

2. **执行 SQL 语句**:
   - 登录 Discuz! 后台,进入“站长” -> “数据库” -> “升级”。
   - 在 SQL 语句输入框中,输入以下 SQL 语句并执行:
   ALTER TABLE `pre_duceapp_orders` ADD `payip` VARCHAR(45) DEFAULT '' AFTER `endtime`;
   - 这条 SQL 语句会在 `pre_duceapp_orders` 表中添加 `payip` 字段,并将其默认值设置为空字符串。

3. **验证修复**:
   - 完成上述步骤后,尝试再次进行支付操作,确认支付窗口是否正常弹出。
   - 如果问题仍然存在,建议检查是否有其他字段缺失或数据库表结构不一致的情况。

### 其他注意事项:
- 在执行 SQL 语句之前,建议备份数据库,以防出现意外情况。
- 如果对数据库操作不熟悉,建议在操作前咨询有经验的开发者或管理员。

通过以上步骤,你应该能够解决支付窗口无法弹出的问题。如果还有其他问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 火狼支付中心升级到最新版2.5.X版本之后支付过程点击确认支付闪一下没有弹出支付窗口无法支付的解决办法