微信公众号开发 总结

最近在做一个微信公众号的接口开发 遇上不少问题 现在总结下。
公众号需求:关注公众号以后 点击菜单 生成带有自己二维码的海报 来进行发圈宣传 其他用户扫码关注后 称为该用户的下线(有点像是直销模式),并新关注用户获得一定数量的UV值 上线也获取对应的UV值。
微信公众号提供了很多接口 功能基本上都调用接口就可以了。我这次开发用的是PHP 操作起来相对简单一些。关于使用CURL进行GET POST进行请求微信的url接口。关于curl的POST请求之前有过一片文章 写的是关于post不执行。遇上的问题总结:
1. 微信提供了可以设置参数的二维码生成接口,但分两种一种是临时一个是永久,临时可以设置时间有效期,生成数量无上限,永久的只能生成10W个。我选用的是临时的。设置参数的时候 提供的接口 分两种场景 如果使用临时的 那二维码的生成参数只能设置一个int值 如果想使用字符串 那就只能设置永久的。我这里是在数据库里做了对应主键ID对应用户微信的openid 这样就可以使用临时二维码 扫码后获取到上线用户的openid值 进行数据库记录 建立上下线关系。

  1. 二维码生成的步骤 在微信平台接口中都有详细介绍。二维码生成以后给客户只发一个图片,微信平台中提供的接口中只有固定几种。带图片的就是发送news格式的。
    解决:微信有个素材管理,将生成的二维码上传到素材管理,上传成功后获取返回的MEDIA_ID,然后通过客服消息中的发送图片 指定MEDIA_ID进行图片的发送。
//调用客服接口 主动发消息
function KF_message($touser,$content,$type='text'){
    $url='https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='.CURL::getAccess_token();
    $text='{
                "touser":"'.$touser.'",
                "msgtype":"text",
                "text":
                {
                     "content":"'.$content.'"
                }
            }';
    $image='{
            "touser":"'.$touser.'",
            "msgtype":"image",
            "image":
            {
              "media_id":"'.$content.'"
            }
        }';
    $request=new CURL();
    switch($type){
        case 'text' :$request->POSTDATA=$text;break;
        case 'image':$request->POSTDATA=$image;break;
    }
    $request->URL=$url;
    $request->POST();
  1. 图片模板和二维码的生成。类似水印的效果。使用内置GD的图片操作类imagecreatefromjpeg,微信接口提供的二维码接口是一个Url地址,在获取图片文件流的时候 不能直接使用imagecreatefromjpeg,改为: erm=imagecreatefromstring( this->file_get_content($file));
    图片合成 imagecopyresized 该方法在合成石可以设置图片的比较大小。
    $this->filename=self::$codePath.'\\'.$openid.'.jpg';
    //目标文件
    $imasrc=imagecreatefromjpeg(self::$muban);
    //二维码
    $erm=imagecreatefromstring($this->file_get_content($file));
    imagecopyresized($imasrc,$erm,245,430,0,0,100,100,430,430) or die('error');
    //imagejpeg 参数2指定后 是直接生成图片文件
    imagejpeg($imasrc,$this->filename);
    imagedestroy($imasrc);

你可能感兴趣的:(微信公众号开发 总结)