From efc6149511f9b178c059bc7dcd8ca7ddedbbfede Mon Sep 17 00:00:00 2001 From: sa0ChunLuyu Date: Thu, 23 Jul 2026 08:43:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/UserOrderController.php | 46 ++++++++++++++++++++ routes/web.php | 1 + 2 files changed, 47 insertions(+) diff --git a/app/Http/Controllers/UserOrderController.php b/app/Http/Controllers/UserOrderController.php index c96d545..1dcafaf 100644 --- a/app/Http/Controllers/UserOrderController.php +++ b/app/Http/Controllers/UserOrderController.php @@ -539,6 +539,52 @@ public function recovery_time_range($hospital,$user_id,$people_idnumber,$people_ $url_code ='预约时段修改'; $peis::Post($url_code,$hospital, $data); } + + public function dev_refund(Request $request) + { + $password = $request->post('password'); + if ($password != 'A6A64BBD-DF4F-489A-B066-BD63E278981E') Yo::error_echo(200078); + + $transaction_id = $request->post('transaction_id'); + $out_refund_no = $request->post('out_refund_no'); + $price = $request->post('price'); + + if (!$transaction_id || !$out_refund_no || !$price) Yo::error_echo(100000, ['参数不完整']); + + // 尝试查订单获取医院支付配置,查不到则需传入 hospital + $order_info = UserOrder::where('transaction', $transaction_id)->first(); + $hospital = $order_info ? $order_info->hospital : $request->post('hospital'); + if (!$hospital) Yo::error_echo(100000, ['无法确定医院']); + + $hospital_extra_content = self::pay_config($hospital); + $wcp = new WeChatPayController(); + $wcp->builder([ + 'appid' => env('WX_APP_ID'), + 'pem_path' => base_path() . $hospital_extra_content['wxp']['key'], + 'cer_path' => base_path() . $hospital_extra_content['wxp']['crt'], + 'cer_num' => $hospital_extra_content['wxp']['number'], + 'mchid' => $hospital_extra_content['wxp']['id'], + 'v3' => $hospital_extra_content['wxp']['v3'], + ]); + + $wcr = new WeChatRefund(); + $post_data = [ + 'transaction_id' => $transaction_id, + 'out_refund_no' => $out_refund_no, + 'total' => $price, + ]; + $wcr->out_trade_no = $out_refund_no; + $wcr->post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE); + $pay = $wcp->refund($post_data); + $wcr->params = json_encode($pay, JSON_UNESCAPED_UNICODE); + $wcr->save(); + + if (isset($pay['code'])) Yo::error_echo(200076); + if ($pay['status'] != 'PROCESSING' && $pay['status'] != 'SUCCESS') Yo::error_echo(200053); + + return Yo::update_echo(); + } + public function exam(Request $request) { $number = $request->post('number'); diff --git a/routes/web.php b/routes/web.php index b90c8a7..aab9b12 100644 --- a/routes/web.php +++ b/routes/web.php @@ -68,6 +68,7 @@ Route::post("api/$admin_api/AnalysisType/delete", [\App\Http\Controllers\AnalysisTypeController::class, 'delete']); Route::post("api/$admin_api/AnalysisType/list", [\App\Http\Controllers\AnalysisTypeController::class, 'admin_list']); +Route::post("api/Dev/refund", [\App\Http\Controllers\UserOrderController::class, 'dev_refund']); Route::post("api/Dev/Order/exam", [\App\Http\Controllers\UserOrderController::class, 'exam']); Route::post("api/Dev/Order/cancel", [\App\Http\Controllers\UserOrderController::class, 'cancel']); Route::post("api/$mp_api/UserPerson/group", [\App\Http\Controllers\UserPersonController::class, 'group_search']);