浅谈PHP实现订阅消息添加到个人模板库

可能是由于小程序订阅消息功能刚刚上线,感觉在小程序订阅消息模块添加个人模板库接口返回的结果并不是很友好,导致很多时候在请求后,即使错误了,接口返回也是Not Found,而不是返回错误码,无法很好的定位到是因为什么原因而导致错误,有点小坑,研究了一下,终于搞定这一功能,分享一下我的过程:

1.第一步,编写自己的添加个人模板库的接口:
   /**
     * [addTemplates 订阅消息添加到个人模板库
     * @param [type] $tid              [模板标题id]
     * @param [type] $kidList          [模板关键词列表]
     * @param [type] $sceneDesc        [服务场景描述]
     */
    public function addTemplates(){
        $param = [
          'appName'   => 'require',
          'tid'       => 'require',
          'kidList'   => 'require',
          'sceneDesc' => ''
        ];
        $post = (new validate($param,'post'))->goCheck();
        //以下是我传递的参数
        $appName   = trim($post['appName']);
        $tid       = trim($post['tid']);
        $kidList   = trim($post['kidList']);
        $sceneDesc = !empty(trim($post['sceneDesc'])) ? trim($post['sceneDesc']) : '';
        
        $kidList  = json_decode($kidList,true);
        //自定义封装的类
        $tService = new tService($appName);
        $list = $tService->addTemplates($tid,$kidList,$sceneDesc);
        //返回的结果
        return json_encode(['resultCode'=>1,'message'=>'success','priTmplId'=>$list]);
    }
2.第二步,封装工具类中的函数:
  /**
     * [addTemplates 组合模板并添加至帐号下的个人模板库](订阅消息)
     * @param [type] $tid              [模板标题id]
     * @param [type] $kidList          [模板关键词列表]
     * @param [type] $sceneDesc        [服务场景描述]
     */
    public function addTemplates($tid,$kidList,$sceneDesc){
        //请求连接(这里获取access_token应该都会的,就不做交代了)
        $url = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token=".$this->access_token;
 
        $data['tid']       = $tid;
        $data['kidList']   = $kidList;
        $data['sceneDesc'] = $sceneDesc;
        //进行请求
        $result = curl_datas($url,$data);  //封装好的公共函数
        $result = json_decode($result,true);

        if(!empty($result['errcode'])){
            throw new \Exception("获取数据错误(".$result['errcode']."): " . $result['errmsg']);
        }
        return $result['priTmplId'];
    }
3.第三步,封装curl公共函数:
// 請求方法(Post请求)
function curl_datas($url,$data=[],$timeout=30)
{
    $ch = curl_init();
    //取数据的地址
    curl_setopt($ch, CURLOPT_URL, $url);
    //传输为post
    curl_setopt($ch, CURLOPT_POST, true);

    //传输数据(这里data是二维数组,一定要加http_build_query,不然会报错)
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
    //隐藏返回结果
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //限制时间
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    //https支持
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//这个是重点。
    //执行
    $handles = curl_exec($ch);
    //断开
    curl_close($ch);

    return $handles;
}
4.第四步,使用postman进行请求,返回结果:

浅谈PHP实现订阅消息添加到个人模板库_第1张图片

5.第五步,查看微信公众后台,发现确实多了一个新模板

浅谈PHP实现订阅消息添加到个人模板库_第2张图片

到这里就大工告成了

以上完成的操作如有不正确的地方还望诸位多多指教

你可能感兴趣的:(Php)