callmez\wechat\sdk\Wechat::parseHttpResult PHP Method

parseHttpResult() protected method

解析api回调请求 会根据返回结果处理响应的回调结果.如 40001 access_token失效(会强制更新access_token后)重发, 保证请求的的有效
protected parseHttpResult ( $url, $params, $method, boolean $force = true ) : boolean | mixed
$url
$params
$method
$force boolean 是否强制更新access_token 并再次请求
return boolean | mixed
    protected function parseHttpResult($url, $params, $method, $force = true)
    {
        if (stripos($url, 'http://') === false && stripos($url, 'https://') === false) {
            $url = self::WECHAT_BASE_URL . $url;
        }
        $return = $this->http($url, $params, $method);
        $return = json_decode($return, true) ?: $return;
        if (isset($return['errcode']) && $return['errcode']) {
            $this->lastErrorInfo = $return;
            $log = ['class' => __METHOD__, 'arguments' => func_get_args(), 'result' => $return];
            switch ($return['errcode']) {
                case 40001:
                    //access_token 失效,强制更新access_token, 并更新地址重新执行请求
                    if ($force) {
                        Yii::warning($log, 'wechat.sdk');
                        $url = preg_replace_callback("/access_token=([^&]*)/i", function () {
                            return 'access_token=' . $this->getAccessToken(true);
                        }, $url);
                        $return = $this->parseHttpResult($url, $params, $method, false);
                        // 仅重新获取一次,否则容易死循环
                    }
                    break;
            }
            Yii::error($log, 'wechat.sdk');
        }
        return $return;
    }
Wechat