订单状态变更

This commit is contained in:
Billy 2025-10-28 14:51:33 +08:00
parent 89e5513272
commit 19d590a60b
2 changed files with 614 additions and 645 deletions

View File

@ -2,6 +2,7 @@
namespace addons\shopro\controller\order; namespace addons\shopro\controller\order;
use addons\shopro\library\ccblife\CcbOrderService;
use think\Db; use think\Db;
use addons\shopro\exception\ShoproException; use addons\shopro\exception\ShoproException;
use addons\shopro\controller\Common; use addons\shopro\controller\Common;
@ -182,6 +183,9 @@ class Order extends Common
// 订单未支付,处理 item 状态 // 订单未支付,处理 item 状态
$order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了 $order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了
$orderService = new CcbOrderService();
$orderService->updateOrderStatus($id, 4);//取消订单
$this->success('取消成功', $order); $this->success('取消成功', $order);
} }
@ -206,6 +210,10 @@ class Order extends Common
$order = OrderModel::with(['items', 'invoice'])->find($id); $order = OrderModel::with(['items', 'invoice'])->find($id);
$order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了 $order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了
$orderService = new CcbOrderService();
$orderService->updateOrderStatus($id, 0,1);//申请退款
$this->success('申请成功', $order); $this->success('申请成功', $order);
} }

View File

@ -132,7 +132,7 @@ class CcbOrderService
* @param string|null $refundStatus 退款状态0-无退款 1-退款申请 2-已退款 3-部分退款) * @param string|null $refundStatus 退款状态0-无退款 1-退款申请 2-已退款 3-部分退款)
* @return array * @return array
*/ */
public function updateOrderStatus($orderId, $status = null, $refundStatus = null) public function updateOrderStatus($orderId, $status = 0, $refundStatus = 0)
{ {
$startTime = microtime(true); $startTime = microtime(true);
$txSeq = CcbMD5::generateTransactionSeq(); $txSeq = CcbMD5::generateTransactionSeq();
@ -151,7 +151,6 @@ class CcbOrderService
} }
// 获取支付流水号 // 获取支付流水号
// ✅ 修复:订单表字段名是 ccb_pay_flow_id不是 pay_flow_id
$payFlowId = $order['ccb_pay_flow_id'] ?? null; $payFlowId = $order['ccb_pay_flow_id'] ?? null;
if (empty($payFlowId)) { if (empty($payFlowId)) {
throw new \Exception('订单缺少支付流水号,无法更新状态到建行'); throw new \Exception('订单缺少支付流水号,无法更新状态到建行');
@ -164,8 +163,6 @@ class CcbOrderService
} }
// 映射订单状态 // 映射订单状态
$payStatus = $status ?: $this->mapOrderStatus($order['status']);
$mappedRefundStatus = $refundStatus ?: $this->mapRefundStatus($order['refund_status'] ?? 0);
// 确定通知类型0-支付状态修改 1-退款状态修改) // 确定通知类型0-支付状态修改 1-退款状态修改)
$informId = !empty($refundStatus) && $refundStatus != '0' ? '1' : '0'; $informId = !empty($refundStatus) && $refundStatus != '0' ? '1' : '0';
@ -174,12 +171,11 @@ class CcbOrderService
$additionalParams = []; $additionalParams = [];
if ($informId == '0') { if ($informId == '0') {
// 支付状态修改 // 支付状态修改
$additionalParams['PAY_STATUS'] = $payStatus; $additionalParams['PAY_STATUS'] = $status;
$additionalParams['PAY_AMT'] = number_format($order['pay_fee'] ?? 0, 2, '.', ''); $additionalParams['PAY_AMT'] = number_format($order['pay_fee'] ?? 0, 2, '.', '');
} else { } else {
// 退款状态修改 // 退款状态修改
$additionalParams['REFUND_STATUS'] = $mappedRefundStatus; $additionalParams['REFUND_STATUS'] = $refundStatus;
$additionalParams['TOTAL_REFUND_AMT'] = number_format($order['refund_fee'] ?? 0, 2, '.', '');
} }
// 添加其他可选参数 // 添加其他可选参数
@ -462,8 +458,8 @@ class CcbOrderService
'ORDER_ID' => $order['order_sn'], // 订单号 'ORDER_ID' => $order['order_sn'], // 订单号
'ORDER_DT' => $orderDt, // 订单日期yyyyMMddHHmmss 'ORDER_DT' => $orderDt, // 订单日期yyyyMMddHHmmss
'TOTAL_AMT' => $totalAmount, // 订单原金额 'TOTAL_AMT' => $totalAmount, // 订单原金额
'ORDER_STATUS' => $this->mapOrderStatus($order['status']), // 订单状态 'ORDER_STATUS' => 0, // 订单状态
'REFUND_STATUS' => $this->mapRefundStatus($order['refund_status'] ?? 0), // 退款状态 'REFUND_STATUS' => 0, // 退款状态
'MCT_NM' => $this->config['merchant']['name'] ?? '商户名称', // 商户名称 'MCT_NM' => $this->config['merchant']['name'] ?? '商户名称', // 商户名称
'PAY_FLOW_ID' => $payFlowId, // ✅ 支付流水号(使用控制器传入的统一流水号) 'PAY_FLOW_ID' => $payFlowId, // ✅ 支付流水号(使用控制器传入的统一流水号)
'PAY_MRCH_ID' => $this->config['merchant_id'], // 支付商户号(必填!) 'PAY_MRCH_ID' => $this->config['merchant_id'], // 支付商户号(必填!)
@ -607,39 +603,4 @@ class CcbOrderService
Db::name('shopro_order')->where('id', $orderId)->update($updateData); Db::name('shopro_order')->where('id', $orderId)->update($updateData);
} }
/**
* 映射订单状态
*
* @param string $status Shopro订单状态
* @return string 建行订单状态
*/
private function mapOrderStatus($status)
{
$statusMap = [
'unpaid' => '0', // 待支付
'paid' => '1', // 已支付
'shipped' => '2', // 已发货
'received' => '3', // 已收货
'completed' => '4', // 已完成
'cancelled' => '5', // 已取消
'refunded' => '6' // 已退款
];
return $statusMap[$status] ?? '0';
}
/**
* 映射退款状态
*
* @param int $refundStatus 退款状态
* @return string
*/
private function mapRefundStatus($refundStatus)
{
if ($refundStatus == 0) return '0'; // 无退款
if ($refundStatus == 1) return '1'; // 退款中
if ($refundStatus == 2) return '2'; // 已退款
return '0';
}
} }