diff --git a/FlyCube/MpApi/Controller/PayController.class.php b/FlyCube/MpApi/Controller/PayController.class.php index 6005784..ede36b8 100644 --- a/FlyCube/MpApi/Controller/PayController.class.php +++ b/FlyCube/MpApi/Controller/PayController.class.php @@ -61,7 +61,7 @@ class PayController extends PublicController echo json_encode(array('status' => 0, 'msg' => '退款参数有误')); exit(); } - // 获取订单信息 + /*获取订单信息*/ $where['shop_id'] = $_REQUEST['shop_id']; $where['order_sn'] = $_REQUEST['order_sn']; $field = array('order_sn, total_price, pay_sn,main_status,shop_id'); @@ -70,10 +70,19 @@ class PayController extends PublicController echo json_encode(array('status' => 0, 'msg' => '订单不存在')); exit(); } + //后端订单检查 + if ($order['shipment_status'] == "已发货" && ($_REQUEST['refund_Shipment'] != "已送达" || $_REQUEST['refund_Shipment'] != "未送达")) { + echo json_encode(array('status' => 0, 'msg' => '请确认货物状态')); + exit(); + } if ($order['total_price'] < $_REQUEST['refund_price']) { echo json_encode(array('status' => 0, 'msg' => '退款申请超额')); exit(); } + if ($order['main_status'] == "已完成") { + echo json_encode(array('status' => 0, 'msg' => '已完成订单不可申请退款')); + exit(); + } if ($order['main_status'] == "已退款") { // 构建发布主题 并向地面终端提示刷新信息 $topic = 'refreshQuestList/' . $order['shop_id']; @@ -81,16 +90,17 @@ class PayController extends PublicController echo json_encode(array('status' => 1, 'msg' => '此订单已完成退款')); exit(); } - if ($order['main_status'] == "已完成") { - echo json_encode(array('status' => 0, 'msg' => '已完成订单不可申请退款')); - exit(); + + /*设置退款参数*/ + //如果订单是已送货状态并且 前端发过来货物状态为 在退款订单号里面标记delivered 再回调时判断有这个标记 把货物状态改为已送达 + if ($order['shipment_status'] == "已发货" && $_REQUEST['refund_Shipment'] == "已送达") { + $out_refund_no = $order['order_sn'] . '_' . $_REQUEST['refund_type'] . '_delivered'; // 商户退款单号 + } else { + $out_refund_no = $order['order_sn'] . '_' . $_REQUEST['refund_type']; } - - - // 设置退款参数 $refundParameter = [ 'out_trade_no' => $order['order_sn'], // 商户订单号 - 'out_refund_no' => $order['order_sn'] . '_' . $_REQUEST['refund_type'], // 商户退款单号 + 'out_refund_no' => $out_refund_no, // 商户退款单号 'amount' => [ 'refund' => $_REQUEST['refund_price'] * 100, // 退款金额,单位:分 'total' => $order['total_price'] * 100, // 订单金额,单位:分 @@ -130,6 +140,9 @@ class PayController extends PublicController } elseif ($refundType == "seller") { //卖家主动退 $data['refund_status'] = "主动退"; } + if (strpos($outRefundNo, 'delivered') !== false) { //有delivered标记 货物状态改为已送达 + $data['shipment_status'] = "已送达"; + } // 更新订单 $orderDb->where($where)->data($data)->save(); }