/** * 公众号用于调用微信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; }
/** * 发送模板消息 * * @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); }
/** * 网页授权获取用户基本信息 流程第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); }
/** * 新增永久图文素材,所有参数全是必填,多图文素材一个参数传入数组即可,数组的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); }