版本是 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))
);
}
}
跟手冊里 version < 6.x 版本的處理辦法有點區(qū)別!
https://workerman.net/doc/webman/components/wechat.html
不要
return $server->serve();
直接
return new Response(200, [], 'success');
根據(jù)騰訊官方的提示,臨時找了一個辦法,應急用一下。
$server->serve();
return response();
成功的直接返回,失敗的在做一下判斷加上報文再返回。
不知道這種有沒有什么未知的bug在后面。
還請各位大佬指導?。?/p>