微信公众号接口调用说明之一:常用接口及方法(v5.0)
    2021-12-15
  
前期工作

  调用微信公众号接口前,请先熟悉微信公众平台开发的前期准备工作与接口调用模式,具体详情请参考:
  https://mp.weixin.qq.com/wiki

1、获取access token

调用方法
  
weixin::get_access_token()

相关参数

  无

调用实例
  
$access_token = weixin::get_access_token();

2、网页授权(获取用户openid)

  该接口网页授权模式为snsapi_base,并且返回用户的openid,在得到用户openid后缓存起来,以便后续使用。注意:不要将该方法作为获取openid的手段。

调用方法
  
weixin::get_openid()

相关参数

  无

调用实例

  启用网页授权,并将得到openid缓存起来。   
$openid = weixin::get_openid();
$_SESSION['openid] = $openid;

3、POST提交json类型数据

  发起微信公众号接口可使用该方法,并将请求数据原样返回(JSON)。

调用方法
  
weixin::post2json()

相关参数

  共2个必要参数,具体如下:
   1、待提交的json数据
   2、提交的接口网址,不可带任何参数,包括“access_token=xxx”

调用实例

  发送消息模板   
$json = '{"touser": "abc", "template_id": "uWZSO", "url": "www.mlecms.com"}';
$send_result = weixin::post2json($json,"https://api.weixin.qq.com/cgi-bin/message/template/send"));
echo $send_result;

// 打印结果为接口返回的原样数据,如:{"errcode": 40001, "errmsg": "invalid credential, access_token is invalid or not latest"}

4、POST上传文件

调用方法
  
weixin::post2json_file()

相关参数

  共1个必要参数,具体如下:
   1、待提交的数据
   2、提交的接口网址

调用实例

  发送消息模板   
$data = array('media' => new CURLFile('demo.jpg'));
$url = "https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=abc&kf_account=123";
weixin::json2array(weixin::post2json_file($data,$url));

5、数组转JSON格式

  与json_encode()方法类似,可将数组转换成JSON格式,并且处理中文转码问题,如无特殊需求,并不建议使用该方法。
  注:PHP5.4+ 版本可直接使用 json_encode($data,JSON_UNESCAPED_UNICODE) ,无需使用该方法。

调用方法
  
weixin::array2json()

相关参数

  共1个必要参数,具体如下:
   1、待转换的数组

调用实例

  将数据转换JSON,并发送消息模板   
$data = array(
    "touser" => "abc",
    "template_id" => "uWZSO",
    "url" => "www.mlecms.com"
);
$send_result = weixin::post2json(weixin::array2json($data),"https://api.weixin.qq.com/cgi-bin/message/template/send"));

6、对象转数组

调用方法
  
weixin::object2array()

相关参数

  共1个必要参数,具体如下:
   1、待转换的对象

调用实例
  
weixin::object2array($obj);

7、设置cookie缓存

  该方法区别于setcookie()函数,使用缓存文件保存到服务器中,用于缓存全局数据,如:access token、微信用户信息等。

调用方法
  
weixin::set_cookie()

相关参数

  共2个必要参数,2个可选参数,具体如下:
   1、变量名
   2、变量值
   3、文件名,默认为用户openid,如果缓存全局通用数据需另起文件名
   4、有效期(秒),默认为3200秒

调用实例

  1、保存用户微信信息到服务端cookie文件中,并记录保存时间。   
// 获取微信用户信息
$wxuser = weixin::get_fans_info('abc');

// 保存微信用户信息
weixin::set_cookie('wxuser',$wxuser);

// 记录保存微信用户信息的时间
weixin::set_cookie('wxuser_updatetime',time());

  2、缓存access token,有效时间为7200秒   
weixin::set_cookie('access_token','aaa','access_token_time');

8、获取cookie缓存

  获取由 weixin::set_cookie() 方法缓存的所有数据,返回一维数组。

调用方法
  
weixin::get_cookie()

相关参数

  共1个可选参数,具体如下:
   1、文件名,默认为当前用户openid

调用实例

  1、获取当前用户的cookie   
$cookie = weixin::get_cookie();
echo $cookie['wxuser']['openid'];

  2、获取缓存于cookie的access token   
$cookie = weixin::get_cookie('access_token_time');
echo $cookie['access_token'];

9、file_get_contents 替代函数

  如果服务器开通了curl扩展,则使用curl发起请求,否则使用file_get_contents()函数。

调用方法
  
weixin::file_get_contents()

相关参数

  共1个必选参数,具体如下:
   1、待请求的url

调用实例
  
weixin::file_get_contents('http://www.mlecms.com')

10、返回码转换请求结果

  可以将微信公众号接口返回的"errcode"转换成错误信息

调用方法
  
weixin::code2msg()

相关参数

  共1个必选参数,具体如下:
   1、微信接口返回码

调用实例

  发送模板消息,并将返回码转换成错误信息   
$data = array(
    "touser" => "abc",
    "template_id" => "uWZSO",
    "url" => "www.mlecms.com"
);
$send_result = weixin::post2json(weixin::array2json($data),"https://api.weixin.qq.com/cgi-bin/message/template/send"));
$msg = weixin::code2msg($send_result['errcode']);
echo $msg;