如何将cancle_order_reason字段值替换退款transID的默认internal值
正确实现方案
错误方案根因
- 方案1参数顺序传递错误:
savePayment方法的第三个参数为$credit(固定传2标记退款),第四个参数才是$transID,你将退款原因放到第三个参数位置,第四个参数仍使用默认值internal,所以未生效。 - 方案2破坏了方法兼容性:移除
$transID的默认值后,所有原有只传3个参数的历史调用都会触发参数不足报错,影响其他业务逻辑。
最终修改代码
无需修改savePayment方法的原有定义,仅需调整add_refund_order方法内的savePayment调用逻辑即可:
// 原有代码不变 $amount = money_format('%(#4n',$this->post('credit_amount')); // 新增读取退款原因,为空时兜底保留internal避免空值 $transID = trim($this->request('cancle_order_reason')) ?: 'internal'; // 按参数顺序传值,第3位固定传2标记退款,第4位传退款原因 $ak->getController()->savePayment($avID, $amount, 2, $transID);
修改后会自动将模态框提交的cancle_order_reason字段值写入交易表的transactionID字段,同时兼容所有现有业务逻辑。
内容的提问来源于stack exchange,提问作者Justyn
相关产品推荐
相关产品推荐

