getAccessTokenWithCode($code); LogFile::info('电子面单应用授权: ' . json_encode($accessToken, 256)); } protected function getAccessTokenWithCode($code) { $type = 'pdd.pop.auth.token.create'; $res = $this->doRequest($type, ['code' => $code]); return $res['pop_auth_token_create_response']; } public function doRequest($type, $appendParams = [], $url = 'https://gw-api.pinduoduo.com/api/router') { $publicParams = [ 'type' => $type, 'client_id' => $this->clientId, 'timestamp' => time() ]; $publicParams = array_merge($publicParams, $appendParams); $publicParams['sign'] = $this->getSign($publicParams); return $this->formDataPostRequest($url, $publicParams); } protected function getSign($params) { ksort($params); $str = ''; foreach ($params as $key => $val) { $str .= $key . $val; } $str = $this->clientSecret . $str . $this->clientSecret; return strtoupper(md5($str)); } protected function formDataPostRequest($url, $params) { $method = 'POST'; $headers = [ 'headers' => ['Content-type' => 'application/x-www-form-urlencoded;charset=UTF-8'], 'form_params' => $params ]; $res = (new Client())->request($method, $url, $headers); return json_decode($res->getBody()->getContents(), true); } }