国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

EasyWechat V6.x支付回調(diào)不停息

liziyu

版本是 EasyWechat V6.x最新版的,結合是webman1.3.x版本。

其中支付環(huán)節(jié)沒有問題,回調(diào)也可以正常拿到數(shù)據(jù),但回調(diào)通知一直不停通知。

// 處理支付結果事件
            $server->handlePaid(function ($message) {
                // $message 為微信推送的通知結果,詳看微信官方文檔
                file_put_contents(__DIR__ . '/notify_result.txt',
                    date('Y-m-d H:i:s') . ':' . var_export($message, true));
                echo '3'."\n";
                // 微信支付訂單號 $message['transaction_id']
                // 商戶訂單號 $message['out_trade_no']
                // 商戶號 $message['mchid']
                // 具體看微信官方文檔...
                // 進行業(yè)務處理,如存數(shù)據(jù)庫等...
            });

            return $server->serve();

隱約感覺問題出在 $server->serve(); 這里對回調(diào)的響應上。應該是 webman的Response與之不兼容問題,由于水平所限不知從何下手修改,還請大佬出的幫忙!

下面附上 EasyWechat 的serve()的代碼!

    /**
     * @throws \EasyWeChat\Kernel\Exceptions\InvalidArgumentException
     * @throws \EasyWeChat\Kernel\Exceptions\RuntimeException
     */
    public function serve(): ResponseInterface
    {
        $message = $this->getRequestMessage();

        try {
            $defaultResponse = new Response(200, [], \strval(\json_encode(['code' => 'SUCCESS', 'message' => '成功'], JSON_UNESCAPED_UNICODE)));
            $response = $this->handle($defaultResponse, $message);

            if (!($response instanceof ResponseInterface)) {
                $response = $defaultResponse;
            }

            return ServerResponse::make($response);
        } catch (\Exception $e) {
            return new Response(
                500,
                [],
                \strval(\json_encode(['code' => 'ERROR', 'message' => $e->getMessage()], JSON_UNESCAPED_UNICODE))
            );
        }
    }
3789 6 3
6個回答

liziyu

跟手冊里 version < 6.x 版本的處理辦法有點區(qū)別!
https://workerman.net/doc/webman/components/wechat.html

  • 暫無評論
admin

->server->server()

  • liziyu 2022-04-12

    提示 ->server為私有屬性!

nitron

不要

return $server->serve();

直接

return new Response(200, [], 'success');
  • liziyu 2022-04-13

    哈哈,我看到它serve()里有后續(xù)的處理(看不明白)如果直接響應成功,會不會有隱患?。?/p>

  • liziyu 2022-04-13

    剛試了下,改成你這種辦法就不回調(diào)了(收不到回調(diào)通知了)!
    我照葫蘆畫瓢,寫成return new \support\Response(200, [], \strval(\json_encode(['code' => 'SUCCESS', 'message' => '成功'], JSON_UNESCAPED_UNICODE))); 也收不到業(yè)務回調(diào)通知了。

banro512

return $server->serve()->getContent();

return response($server->serve()->getContent());

分別試下

  • liziyu 2022-04-13

    是的,這個與v5.x的用法相似,試了一下,不照!估計是沒有->getContent()此方法。

liziyu

根據(jù)騰訊官方的提示,臨時找了一個辦法,應急用一下。

$server->serve();
 return response();

成功的直接返回,失敗的在做一下判斷加上報文再返回。
不知道這種有沒有什么未知的bug在后面。
還請各位大佬指導?。?/p>

  • 暫無評論
test

大佬,easywechat6.x如何拿到回調(diào)數(shù)據(jù)?。?/p>

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??