request() protected static method

请求微信平台服务器,并解析返回的json字符串为数组,失败抛异常
protected static request ( $url, $data = null, $jsonEncode = true ) : array
$url
$data
return array
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;
 }
Example #2
0
 /**
  * 发送模板消息
  *
  * @param string $openid
  * @param string $templateId 模板ID
  * @param array $data 详细内容
  *
  * 比如:保养过期通知 详细内容如下:
  * {{first.DATA}}
  *    保养到期时间:{{keynote1.DATA}}
  *    上次保养时间:{{keynote2.DATA}}
  *    上次保养里程:{{keynote3.DATA}}
  * {{remark.DATA}}
  *
  * 对应data数据为:
  * $data = array(
  *    'first' => '尊敬的车主,您的爱车保养以过期'
  *    'keynote1'=> '2014年12月12日',
  *    'keynote2'=> '2013年12月12日',
  *    'keynote3'=> '555KM',
  *    'remark'=> '点击保养,惊喜不断!',
  * );
  *
  * 如果需要指定每项颜色:
  * $data = array(
  *    'first' => array(
  *         'value' => '尊敬的车主,您的爱车保养以过期'
  *         'color' => '#FC5C48'
  *      ),
  *    'keynote1' => array(
  *         'value' => '2014年12月12日'
  *         'color' => '#173177'
  *      ),
  *    'keynote2' => array(
  *         'value' => '2014年12月12日'
  *         'color' => '#173177'
  *      ),
  *    'keynote3' => array(
  *         'value' => '2013年12月12日'
  *         'color' => '#173177'
  *      ),
  *    'remark' => array(
  *         'value' => '点击保养,惊喜不断!'
  *         'color' => '#173177'
  *      ),
  * );
  *
  * @param string $url
  * @param string $topColor
  * @param string $defaultItemColor
  * @return array
  * array(
  *      'errcode' => int 0
  *      'errmsg' => string 'ok' (length=2)
  *      'msgid' => int 413100638
  * )
  */
 public static function template($openid, $templateId, array $data, $url = '', $topColor = '#FF0000', $defaultItemColor = '#173177')
 {
     $apiUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN';
     foreach ($data as $key => $val) {
         if (!is_array($val)) {
             $data[$key] = array('value' => "{$val}", 'color' => "{$defaultItemColor}");
         }
     }
     $postData = array('touser' => $openid, 'template_id' => $templateId, 'url' => $url, 'topcolor' => $topColor, 'data' => $data);
     return parent::request($apiUrl, $postData);
 }
Example #3
0
 /**
  * 网页授权获取用户基本信息 流程第4步 拉取用户信息
  * @param $openId
  * @param $accessToken
  * @return array
  * [
  *    'openid'      //用户的唯一标识
  *    'nickname'    //用户昵称
  *    'sex'         //用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
  *    'province'    //用户个人资料填写的省份
  *    'city'        //普通用户个人资料填写的城市
  *    'country'     //国家,如中国为CN
  *    'headimgurl'  //用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
  * ]
  */
 public static function getOauthUserInfo($openId, $accessToken)
 {
     $url = "https://api.weixin.qq.com/sns/userinfo?access_token={$accessToken}&openid={$openId}&lang=zh_CN";
     return parent::request($url);
 }
Example #4
0
 /**
  * 新增永久图文素材,所有参数全是必填,多图文素材一个参数传入数组即可,数组的key与本方法参数一致
  * @param string|array $title
  * @param string $thumb_media_id
  * @param string $author
  * @param string $digest
  * @param string $show_cover_pic
  * @param string $content
  * @param string $content_source_url
  * @return array
  * @throws \PFinal\Wechat\WechatException
  */
 public static function uploadNews($title, $thumb_media_id = null, $author = null, $digest = null, $show_cover_pic = null, $content = null, $content_source_url = null)
 {
     $url = 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token=ACCESS_TOKEN';
     if (!is_array($title)) {
         $title = array(compact(array('title', 'thumb_media_id', 'author', 'digest', 'show_cover_pic', 'content', 'content_source_url')));
     }
     $data = array('articles' => $title);
     return parent::request($url, $data);
 }