feat(shopro_huifu): 完善汇付分账服务功能

- 实现分账确认金额解析逻辑,确保与汇付待确认金额一致
- 添加分账项目缩放调整功能,防止分配总额超出限制
- 优化分账金额计算精度处理,使用BC数学函数保证准确性
- 改进后台重试接口错误提示,提供详细的失败原因信息
```
这个提交包含在:
可乐加冰
2026-10-02 14:21:59 +08:00
父节点 bb0d95ac36
当前提交 246935728e
共有 2 个文件被更改,包括 111 次插入 和 4 次删除

查看文件

@@ -31,8 +31,36 @@ class Order extends Base
public function retry($ids = null)
{
$id = $ids ?: $this->request->post('id');
$row = $this->model->get($id);
$result = (new SplitExecutor())->retry($id);
$result ? $this->success('重试成功') : $this->error('重试失败,请查看记录');
if ($result) {
$this->success('重试成功');
}
$hint = '';
if ($row) {
$latest = $this->model->where('order_id', $row['order_id'])
->where('channel', $row['channel'] ?? 'wechat')
->order('id', 'desc')
->find();
if ($latest && !empty($latest['wx_result'])) {
$raw = is_string($latest['wx_result']) ? $latest['wx_result'] : json_encode($latest['wx_result'], JSON_UNESCAPED_UNICODE);
$decoded = json_decode($raw, true);
if (is_array($decoded)) {
$parts = array_filter([
$decoded['resp_desc'] ?? '',
$decoded['resp_code'] ?? '',
$decoded['bank_message'] ?? '',
]);
$hint = $parts ? (':' . implode(' ', $parts)) : (':' . mb_substr($raw, 0, 300));
} else {
$hint = ':' . mb_substr($raw, 0, 300);
}
}
}
if ($hint === '') {
$hint = ':常见为分账明细为空(佣金/规则未匹配到汇付接收方)、汇付未开通分账/延时分账权限、接收方未绑定分账关系';
}
$this->error('重试失败,请查看分账记录 wx_result' . $hint);
}
public function query($ids = null)