1.获取access_token,有效期7200秒,我的方法是记录获取时间,超过时间再次获取。
提供:appid ,appsec
- public function get_token(){
- $m = new Common();
- $appid = $m->get_conf('UNION_WECHAT_MP_APPID');
- $appsec = $m->get_conf('UNION_WECHAT_MP_APPSEC');
- $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsec}";
- $raw = curl_get($url);
- if(strlen($raw)>0){
- $data = json_decode($raw,true);
- if(json_last_error()==JSON_ERROR_NONE){
- if(key_exists('access_token',$data)){
- return $data['access_token'];
- }else{
- return false;
- }
- }else{
- return false;
- }
- }else{
- return false;
- }
- }
2.获取模板id,公众号->添加功能插件->模板消息 里申请。
3.构造方法
- $data=[
- 'touser'=>用户openid,
- 'template_id'=>模板id,
- 'url'=>'链接url',
- 'topcolor'=>"#FF0000",
- 'data'=>array(
- 'toName'=>array('value'=>内容1,"color"=>"#173177"),
- 'gift'=>array('value'=>内容2<span style="font-family: Arial, Helvetica, sans-serif;">,"color"=>"#173177"),</span>
- 'time'=>array('value'=>date("Y-m-d h:i:s",time()),"color"=>"#173177"),
- 'remark'=>array('value'=>内容3,"color"=>"#173177")
- )
- ];
返回结果:$result 判断
- public function curl_post_send_information( $token,$vars,$second=120,$aHeader=array())
- {
- $ch = curl_init();
- //超时时间
- curl_setopt($ch,CURLOPT_TIMEOUT,$second);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
- //这里设置代理,如果有的话
- curl_setopt($ch,CURLOPT_URL,'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token='.$token);
- curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
- curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
- if( count($aHeader) >= 1 ){
- curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
- }
- curl_setopt($ch,CURLOPT_POST, 1);
- curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);
- $data = curl_exec($ch);
- if($data){
- curl_close($ch);
- return $data;
- }
- else {
- $error = curl_errno($ch);
- curl_close($ch);
- return $error;
- }
- }
返回码说明
在调用模板消息接口后,会返回JSON数据包。正常时的返回JSON数据包示例:
{ "errcode":0, "errmsg":"ok", "msgid":200228332 }
错误时的返回JSON数据,形式类似,错误码请见本页下方返回码说明。
返回码 | 说明 |
---|---|
-1 | 系统繁忙 |
0 | 请求成功 |
40001 | 验证失败 |
40002 | 不合法的凭证类型 |
40003 | 不合法的OpenID |
40004 | 不合法的媒体文件类型 |
40005 | 不合法的文件类型 |
40006 | 不合法的文件大小 |
40007 | 不合法的媒体文件id |
40008 | 不合法的消息类型 |
40009 | 不合法的图片文件大小 |
40010 | 不合法的语音文件大小 |
40011 | 不合法的视频文件大小 |
40012 | 不合法的缩略图文件大小 |
40013 | 不合法的APPID |
41001 | 缺少access_token参数 |
41002 | 缺少appid参数 |
41003 | 缺少refresh_token参数 |
41004 | 缺少secret参数 |
41005 | 缺少多媒体文件数据 |
41006 | access_token超时 |
42001 | 需要GET请求 |
43002 | 需要POST请求 |
43003 | 需要HTTPS请求 |
44001 | 多媒体文件为空 |
44002 | POST的数据包为空 |
44003 | 图文消息内容为空 |
45001 | 多媒体文件大小超过限制 |
45002 | 消息内容超过限制 |
45003 | 标题字段超过限制 |
45004 | 描述字段超过限制 |
45005 | 链接字段超过限制 |
45006 | 图片链接字段超过限制 |
45007 | 语音播放时间超过限制 |
45008 | 图文消息超过限制 |
45009 | 接口调用超过限制 |
46001 | 不存在媒体数据 |
47001 | 解析JSON/XML内容错误 |