From 8ea79574dca4f80a7e09f457c6ca0aa55262e1a4 Mon Sep 17 00:00:00 2001 From: wucongxing <815046773@qq.com> Date: Tue, 7 Mar 2023 17:59:55 +0800 Subject: [PATCH] 1 --- app/Controller/CallBackController.php | 27 +++++++++++++++++++++++++++ config/routes.php | 3 +++ extend/Wechat/WechatPay.php | 4 +--- 3 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/Controller/CallBackController.php b/app/Controller/CallBackController.php index 896f762..bacf037 100644 --- a/app/Controller/CallBackController.php +++ b/app/Controller/CallBackController.php @@ -136,7 +136,34 @@ class CallBackController extends AbstractController Db::rollBack(); Log::getInstance()->error("微信支付回调数据验证失败:" . $e->getMessage()); return $this->wxPayErrorReturn($e->getMessage()); + } + } + + public function wxPayRefundCallBack(): ResponseInterface + { + try { + // 处理支付结果事件 + $WechatPay = new WechatPay(1); + $app = $WechatPay->createApp(); + $server = $app->getServer(); + + $message = $server->getRequestMessage(); + if (empty($message)){ + Db::rollBack(); + return $this->response->withStatus(500)->withBody(new SwooleStream(strval(json_encode(['code' => 'ERROR', 'message' => "回调数据为空"], JSON_UNESCAPED_UNICODE)))); } + + // 验证推送消息签名 + $app->getValidator()->validate($app->getRequest()); + + Log::getInstance()->info("微信支付回调数据:" . json_encode($message,JSON_UNESCAPED_UNICODE)); + return $server->serve(); + }catch (\Exception $e) { + // 验证失败 + Db::rollBack(); + Log::getInstance()->error("微信支付回调数据验证失败:" . $e->getMessage()); + return $this->wxPayErrorReturn($e->getMessage()); + } } /** diff --git a/config/routes.php b/config/routes.php index 99bc025..0d2c343 100644 --- a/config/routes.php +++ b/config/routes.php @@ -378,6 +378,9 @@ Router::addGroup('/callback', function () { Router::addGroup('/inquiry', function () { // 支付成功回调 Router::post('/success', [CallBackController::class, 'wxPaySuccessCallBack']); + + // 退款回调 + Router::post('/refund', [CallBackController::class, 'wxPayRefundCallBack']); }); }); diff --git a/extend/Wechat/WechatPay.php b/extend/Wechat/WechatPay.php index d49cede..5765ea8 100644 --- a/extend/Wechat/WechatPay.php +++ b/extend/Wechat/WechatPay.php @@ -178,9 +178,7 @@ class WechatPay try { $app = $this->createApp(); - $options = [ - "notify_url " => env('DOMAIN_NAME_DEV') . $this->config['refund_notify_url'], - ]; + $options['notify_url'] = env('DOMAIN_NAME_DEV') . $this->config['refund_notify_url']; $response = $app->getClient()->postJson("v3/refund/domestic/refunds", $options); if ($response->isFailed()) {