post(); echo getDateFull()."==webhook==\n"; print_r($param); if (empty($param['event'])) return error("参数错误"); if (empty($param['content'])) return error("参数错误"); switch ($param['event']) { case "verify_webhook": $return = ['challenge' => $param['content']['challenge']]; break; case "life_trade_order_notify": // 支付成功 $resp = json_decode($param['content'], true); if ($resp['action'] == "pay_success") { $order = (new SaasOrderLife)->where("order_id",$resp['order']['order_id'])->findOrEmpty(); if ($order->isEmpty()) { $store = (new SaasStore)->where("store_id",$resp['order']['account_id'])->findOrEmpty(); $order->insertGetId([ "agent_id" => $store['agent_id']??'', "store_id" => $store['store_id']??'', "order_id" => $resp['order']['order_id'], "pay_amount" => $resp['order']['pay_amount'], "order_amount" => $resp['order']['original_amount'], "pay_at" => getDateFull("",$resp['order']['pay_time']) ]); (new SaasOrderLog)->insertGetId([ "order_id" => $resp['order']['order_id'], "title" => "发起订单", "remark" => "下单并完成支付" ]); } } $return = []; break; case "life_trade_certificate_notify": // 退款 $resp = json_decode($param['content'], true); if ($resp['action'] == "refund_success") { $order = (new SaasOrderLife)->where("order_id",$resp['certificate']['order_id'])->findOrEmpty(); if (!$order->isEmpty()) { $order->status = 4; $order->refund_at = getDateFull(); $order->save(); } } $return = []; break; default: $return = []; break; } return json($return); } catch (\Throwable $e) { echo $e->getMessage()."\n"; echo $e->getFile()."\n"; echo $e->getLine()."\n"; return error($e->getMessage()); } } /** * 核销工具解决方案-spi * @param Request $request * @return Response */ #[Route(path: "pay",methods: ['get','post'])] public function getPayStatue(Request $request): Response { try { if ($request->method() == "POST") { $param = $request->post(); } else { $param = $request->get(); } echo getDateFull()."===支付结果回调===方式{$request->method()}\n"; echo getDateFull()."==支付结果回调==\n"; print_r($param); return json([ "err_no" => 0, "err_tips" => "success" ]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 核销工具解决方案-spi * @param Request $request * @return Response */ #[Route(path: "mini",methods: ['get','post'])] public function getSpiData(Request $request): Response { try { print_r($request->rawHead()); print_r($request->rawBody()); if ($request->method() == "POST") { $param = $request->post(); } else { $param = $request->get(); } echo getDateFull()."===统一===方式{$request->method()}\n"; echo getDateFull()."=={$param['type']}==\n"; print_r($param); return json([ "err_no" => 0, "err_tips" => "success" ]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } /** * 核销工具解决方案-扩展点-spi * @param Request $request * @return Response */ #[Route(path: "expand",methods: ['get','post'])] public function getExpandData(Request $request): Response { try { print_r($request->rawHead()); print_r($request->rawBody()); if ($request->method() == "POST") { $param = $request->post(); } else { $param = $request->get(); } echo getDateFull()."===扩展点===方式{$request->method()}\n"; switch ($param['type']) { case "pre_create_order": // 预下单回调 $orderData = json_decode($param['msg']); $orderGoods = (new SaasGoods)->where("out_id",$orderData['goods'][0]['goods_id'])->findOrEmpty(); if ($orderGoods->isEmpty()) return json([ "err_no" => 0, "err_tips" => "success" ]); (new SaasOrderLife)->insertGetId([ "open_id" => $orderData['open_id'], "agent_id" => $orderGoods['agent_id'], "store_id" => $orderGoods['agent_id'], "order_id" => $orderData['order_id'], "product_name" => $orderData['goods'][0]['title'], "product_img" => $orderData['goods'][0]['img_url'], "out_id" => $orderData['goods'][0]['goods_id'], "order_amount" => $orderData['goods'][0]['price'], "pay_amount" => $orderData['goods'][0]['price'], "count" => $orderData['goods'][0]['quantity'], "status" => 0 ]); return json([ "out_order_no" => $orderData['order_id'], "order_entry_schema" => [ "path" => "page/order/detail", "params" => ['order' => $orderData['order_id']] ], "pay_notify_url" => "https://hx-mini-api.jsshuita.com.cn/notify/pay" ]); break; case "pre_create_refund": // 退款审核回调 break; } echo getDateFull()."=={$param['type']}==\n"; print_r($param); return json([ "err_no" => 0, "err_tips" => "success" ]); } catch (\Throwable $throwable) { return error($throwable->getMessage()); } } }