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;
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user