_valid([ "order.require" => trans("empty.require") ],$request->method()); if (!is_array($param)) return error($param); $data = $this->model->where("order_sn",$param['order'])->findOrEmpty(); if ($data->isEmpty()) return errorTrans("empty.data"); if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data"); if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作"); $data->status = 1; $data->is_error = 0; $state = $data->save(); (new SaasOrderAddress)->where(['order_sn' => $data['out_order_no'],"openid" => $data['openid']])->delete(); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 备用退款 * @param Request $request * @return Response */ #[PostMapping('refund2')] public function orderRefund2(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],$request->method()); if (!is_array($param)) return error($param); $data = $this->model->where("order_sn",$param['order'])->findOrEmpty(); if ($data->isEmpty()) return errorTrans("empty.data"); if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data"); if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作"); $orderCode = (new OrderData)->config([ "appid" => sConf("wechat.appid"), "secret" => sConf("wechat.secret"), "account" => sConf("wechat.shop_id"), ])->token()->getCertificate($data['order_sn']); echo getDateFull()."===手动退款\n"; print_r($orderCode); if (empty($orderCode['certificates'])) return error("获取订单数据失败"); $encrypted_code = array_map(function ($v) { return $v['certificate_id']; }, $orderCode['certificates']); print_r($encrypted_code); $orderDone = (new OrderData)->config([ "appid" => sConf("wechat.appid"), "secret" => sConf("wechat.secret"), "account" => sConf("wechat.shop_id"), ])->token()->cancelOrder($data['order_sn'],$encrypted_code); echo getDateFull()."===手动退款\n"; print_r($orderDone); if ($orderDone['error_code'] <> 0) return error("退款失败"); $data->status = 3; $data->done_at = getDateFull(); $state = $data->save(); if (!$state) return errorTrans("error.data"); return successTrans("success.data"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 核销 * @param Request $request * @return Response */ #[PostMapping('done')] public function orderDone(Request $request): Response { try { $param = $this->_valid([ "order.require" => trans("empty.require") ],$request->method()); if (!is_array($param)) return error($param); $data = $this->model->where("order_sn",$param['order'])->findOrEmpty(); if ($data->isEmpty()) return errorTrans("empty.data"); if ($request->user['store_id'] <> $data['poi_id'] && $request->user['is_super'] == 0) return errorTrans("empty.data"); if (strtotime("+24 hour",strtotime($data['error_at'])) < time()) return error("异常订单需24小时后方可操作"); Redis::send("order-done",['order' => $data['order_sn']]); return success("已发起核销,请等待1-2分钟后刷新列表查看状态"); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }