mirror of
https://gitee.com/liuxioabin/fengketrade.git
synced 2026-04-17 21:03:17 +08:00
订单状态变更
This commit is contained in:
parent
89e5513272
commit
19d590a60b
@ -2,6 +2,7 @@
|
||||
|
||||
namespace addons\shopro\controller\order;
|
||||
|
||||
use addons\shopro\library\ccblife\CcbOrderService;
|
||||
use think\Db;
|
||||
use addons\shopro\exception\ShoproException;
|
||||
use addons\shopro\controller\Common;
|
||||
@ -182,6 +183,9 @@ class Order extends Common
|
||||
// 订单未支付,处理 item 状态
|
||||
$order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了
|
||||
|
||||
$orderService = new CcbOrderService();
|
||||
$orderService->updateOrderStatus($id, 4);//取消订单
|
||||
|
||||
$this->success('取消成功', $order);
|
||||
}
|
||||
|
||||
@ -206,6 +210,10 @@ class Order extends Common
|
||||
|
||||
$order = OrderModel::with(['items', 'invoice'])->find($id);
|
||||
$order = $order->setOrderItemStatusByOrder($order); // 这里订单转 数组了
|
||||
|
||||
$orderService = new CcbOrderService();
|
||||
$orderService->updateOrderStatus($id, 0,1);//申请退款
|
||||
|
||||
$this->success('申请成功', $order);
|
||||
}
|
||||
|
||||
|
||||
@ -132,7 +132,7 @@ class CcbOrderService
|
||||
* @param string|null $refundStatus 退款状态(0-无退款 1-退款申请 2-已退款 3-部分退款)
|
||||
* @return array
|
||||
*/
|
||||
public function updateOrderStatus($orderId, $status = null, $refundStatus = null)
|
||||
public function updateOrderStatus($orderId, $status = 0, $refundStatus = 0)
|
||||
{
|
||||
$startTime = microtime(true);
|
||||
$txSeq = CcbMD5::generateTransactionSeq();
|
||||
@ -151,7 +151,6 @@ class CcbOrderService
|
||||
}
|
||||
|
||||
// 获取支付流水号
|
||||
// ✅ 修复:订单表字段名是 ccb_pay_flow_id,不是 pay_flow_id
|
||||
$payFlowId = $order['ccb_pay_flow_id'] ?? null;
|
||||
if (empty($payFlowId)) {
|
||||
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-退款状态修改)
|
||||
$informId = !empty($refundStatus) && $refundStatus != '0' ? '1' : '0';
|
||||
@ -174,12 +171,11 @@ class CcbOrderService
|
||||
$additionalParams = [];
|
||||
if ($informId == '0') {
|
||||
// 支付状态修改
|
||||
$additionalParams['PAY_STATUS'] = $payStatus;
|
||||
$additionalParams['PAY_STATUS'] = $status;
|
||||
$additionalParams['PAY_AMT'] = number_format($order['pay_fee'] ?? 0, 2, '.', '');
|
||||
} else {
|
||||
// 退款状态修改
|
||||
$additionalParams['REFUND_STATUS'] = $mappedRefundStatus;
|
||||
$additionalParams['TOTAL_REFUND_AMT'] = number_format($order['refund_fee'] ?? 0, 2, '.', '');
|
||||
$additionalParams['REFUND_STATUS'] = $refundStatus;
|
||||
}
|
||||
|
||||
// 添加其他可选参数
|
||||
@ -462,8 +458,8 @@ class CcbOrderService
|
||||
'ORDER_ID' => $order['order_sn'], // 订单号
|
||||
'ORDER_DT' => $orderDt, // 订单日期(yyyyMMddHHmmss)
|
||||
'TOTAL_AMT' => $totalAmount, // 订单原金额
|
||||
'ORDER_STATUS' => $this->mapOrderStatus($order['status']), // 订单状态
|
||||
'REFUND_STATUS' => $this->mapRefundStatus($order['refund_status'] ?? 0), // 退款状态
|
||||
'ORDER_STATUS' => 0, // 订单状态
|
||||
'REFUND_STATUS' => 0, // 退款状态
|
||||
'MCT_NM' => $this->config['merchant']['name'] ?? '商户名称', // 商户名称
|
||||
'PAY_FLOW_ID' => $payFlowId, // ✅ 支付流水号(使用控制器传入的统一流水号)
|
||||
'PAY_MRCH_ID' => $this->config['merchant_id'], // 支付商户号(必填!)
|
||||
@ -607,39 +603,4 @@ class CcbOrderService
|
||||
|
||||
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';
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user