浅谈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进行请求,返回结果:

image.png

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

image.png

到这里就大工告成了

以上完成的操作如有不正确的地方还望诸位多多指教
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值