PFinal\Wechat\Service\BaseService::request PHP Method

request() protected static method

请求微信平台服务器,并解析返回的json字符串为数组,失败抛异常
protected static request ( $url, $data = null, $jsonEncode = true ) : array
$url
$data
return array
    protected static function request($url, $data = null, $jsonEncode = true)
    {
        $executeUrl = str_replace('ACCESS_TOKEN', self::getApi()->getAccessToken(), $url);
        if ($jsonEncode) {
            $data = Json::encode($data);
        }
        try {
            return Json::parseOrFail(Curl::execute($executeUrl, is_null($data) ? 'get' : 'post', $data));
        } catch (WechatException $ex) {
            //更新AccessToken再次请求
            if ($ex->getCode() == 40001) {
                $executeUrl = str_replace('ACCESS_TOKEN', self::getApi()->getAccessToken(false), $url);
                return Json::parseOrFail(Curl::execute($executeUrl, is_null($data) ? 'get' : 'post', $data));
            }
            throw $ex;
        }
    }

Usage Example

Example #1
0
 /**
  * 公众号用于调用微信JS接口的临时票据
  *
  * http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95
  * jsapi_ticket 的type为jsapi (腾讯demo中的JSSDK.php代码中type为1 不知为何)
  * 卡券 api_ticket 的type为 wx_card
  *
  * @param string $type
  * @return string
  */
 public static function getJsApiTicket($type = 'jsapi')
 {
     $cacheKey = parent::getApi()->getAppId() . $type . 'jsapi_ticket';
     $ticket = Cache::get($cacheKey);
     if ($ticket !== false) {
         return $ticket;
     }
     $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type={$type}&access_token=ACCESS_TOKEN";
     $data = parent::request($url);
     $ticket = $data['ticket'];
     //jsapi_ticket的有效期为7200秒
     Cache::set($cacheKey, $ticket, $data['expires_in'] - 200);
     return $ticket;
 }
All Usage Examples Of PFinal\Wechat\Service\BaseService::request