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

easywechat 6.x 回調(diào)報錯

aspire

問題描述

easywechat 6.x 回調(diào)拿不到數(shù)據(jù)

easywechat 官方提供的回調(diào)代碼

$server = $app->getServer();
$server->handlePaid(function (Message $message, \Closure $next) {
    // $message->out_trade_no 獲取商戶訂單號
    // $message->payer['openid'] 獲取支付者 openid
    // ?????? 注意:推送信息不一定靠譜哈,請務(wù)必驗證
    // 建議是拿訂單號調(diào)用微信支付查詢接口,以查詢到的訂單狀態(tài)為準
    return $next($message);
});

// 默認返回 ['code' => 'SUCCESS', 'message' => '成功']
return $server->serve();

報錯信息

 default.ERROR: Invalid request body. [] []

這個是因為收不到騰訊request請求內(nèi)容, 我想通過setRequest方法解決問題,但還是不會使用

$app->setRequest($request);

有大佬遇到過這個問題嗎?

@yzh52521 大佬的幫助下解決了問題: (已解決)

use Symfony\Component\HttpFoundation\HeaderBag;
use Symfony\Component\HttpFoundation\Request as SymfonyRequest;

    public function notify(Request $request)
    {

        $app = new Application(config('wx.config'));
        $symfony_request = new SymfonyRequest($request->get(), $request->post(), [], $request->cookie(), [], [], $request->rawBody());
        $symfony_request->headers = new HeaderBag($request->header());
        $app->setRequestFromSymfonyRequest($symfony_request);
        // $app 為你實例化的支付對象,此處省略實例化步驟
        $server = $app->getServer();
//        $response = $server->serve();
        // 處理支付結(jié)果事件
        $server->handlePaid(function (Message $message, \Closure $next) {
            var_dump($message['out_trade_no']);
            // $message 為微信推送的通知結(jié)果,詳看微信官方文檔

            // 微信支付訂單號 $message['transaction_id']
            // 商戶訂單號 $message['out_trade_no']
            // 商戶號 $message['mchid']
            // 具體看微信官方文檔...
            // 進行業(yè)務(wù)處理,如存數(shù)據(jù)庫等...
            return $next($message);
        });

        // 處理退款結(jié)果事件
        $server->handleRefunded(function (Message $message, \Closure $next) {
            // 同上,$message 詳看微信官方文檔
            // 進行業(yè)務(wù)處理,如存數(shù)據(jù)庫等...
            return $next($message);
        });
        return $server->serve();
    }

以上解決方案還有一些不完美,最完美的解決方案:http://m.wtbis.cn/a/1556

1922 2 1
2個回答

yzh52521
        $app                      = new Application( $config );
        $symfony_request          = new SymfonyRequest( $request->get(),$request->post(),[],$request->cookie(),[],[],$request->rawBody() );
        $symfony_request->headers = new HeaderBag( $request->header() );
        $app->setRequestFromSymfonyRequest( $symfony_request );
        $server   = $app->getServer();
        $response = $server->serve();
  • aspire 2023-08-17

    感謝大佬。 已解決

  • aspire 2023-08-17

    大佬,
    $symfony_request->headers = new HeaderBag( $request->header() );
    無法獲取header,
    報錯
    max(): Argument #1 ($value) must contain at least one element [] []
    好像拿不到header信息

  • yzh52521 2023-08-17

    new HeaderBag( $request->header() );

    參數(shù)必須是數(shù)組 你打印一下

  • aspire 2023-08-17

    是的返回的是數(shù)組 array(22) { }

    報錯信息:

    ValueError: max(): Argument #1 ($value) must contain at least one element in /vendor/w7corp/easywechat/src/Kernel/ServerResponse.php(193): max()
    
    default.ERROR: max(): Argument #1 ($value) must contain at least one element [] []

    報錯位置:

        public function __toString(): string
        {
            $headers = $this->getHeaders();
    
            ksort($headers);
    
            $max = max(array_map('strlen', array_keys($headers))) + 1;
            $headersString = '';
    
            foreach ($headers as $name => $values) {
                $name = ucwords($name, '-');
                foreach ($values as $value) {
                    $headersString .= sprintf("%-{$max}s %s\r\n", $name.':', $value);
                }
            }
    
            return sprintf(
                'HTTP/%s %s %s',
                $this->getProtocolVersion(),
                $this->getStatusCode(),
                $this->getReasonPhrase()
            )."\r\n".
                $headersString."\r\n".
                $this->getBody();
        }
  • yzh52521 2023-08-17

    你打印 header 是不是有key或者value是null的

  • yzh52521 2023-08-17

    max 前面 你加個 @ 試試

  • aspire 2023-08-17

    $request->header() 是返回數(shù)組, new HeaderBag($request->header())之后就變成了對象

  • aspire 2023-08-17

    max 是 vendor 里面的函數(shù)

  • aspire 2023-08-18

    感謝大佬,http://m.wtbis.cn/a/1556

latin
年代過于久遠,無法發(fā)表回答
??