php 微信公众号指定用户推送消息


namespace app\index\controller;

class Pushmess
{
    private $appId = "**********";
    private $appSecret = "**********";

    // public function __construct($appId, $appSecret) {
    //     $this->appId = $appId;
    //     $this->appSecret = $appSecret;
    // }

    public function send($openid,$username,$countpunch){

        $tokens = $this->getAccessToken(); //获取token

        $url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" . $tokens;
        
        $params = [
            'touser' =>$openid,//接收消息的openid
            'template_id' => '',//模板ID
            'url' => '', //点击详情后的URL可以动态定义
            'data'=>[
                'first'=>[
                    'value'=>'您好!这次是你第次打卡。',
                    'color'=>'#173177'
                ],
                'keyword1'=>[
                    'value'=>$username,
                    'color'=>'#173177'
                ],
                'keyword2'=>[
                    'value'=>date("Y-m-d H:i", time()),
                    'color'=>'#173177'
                ],
                'keyword3'=>[
                    'value'=>'打卡成功',
                    'color'=>'#173177'
                ]
                // 'remark'=>[
                //     'value'=>'打卡成功',
                //     'color'=>'#173177'
                // ]
            ]
        ];

        $data = json_encode($params,JSON_UNESCAPED_UNICODE);

        $curl = curl_init();
        curl_setopt($curl,CURLOPT_URL,$url);
        curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
        curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
        if(!empty($data)){
            curl_setopt($curl,CURLOPT_POST,1);
            curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
        }

        curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
        curl_exec($curl);
        curl_close($curl);
    }

    private function getAccessToken() {
        // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
        // 如果是企业号用以下URL获取access_token
        // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
        $res = json_decode($this->httpGet($url));
        $access_token = $res->access_token;
        return $access_token;
    }
    /**
     * @Description: curl请求
     * @Author: Yang
     * @param $url
     * @param null $data
     * @param string $method
     * @param array $header
     * @param bool $https
     * @param int $timeout
     * @return mixed
     */
    function httpGet($url, $data=null, $method='get', $header = array("content-type: application/json"), $https=true, $timeout = 5){
        $method = strtoupper($method);
        $ch = curl_init();//初始化
        curl_setopt($ch, CURLOPT_URL, $url);//访问的URL
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
        if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//https请求 不验证证书
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//https请求 不验证HOST
        }
        if ($method != "GET") {
            if($method == 'POST'){
                curl_setopt($ch, CURLOPT_POST, true);//请求方式为post请求
            }
            if ($method == 'PUT' || strtoupper($method) == 'DELETE') {
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method); //设置请求方式
            }
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);//请求数据
        }
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header); //模拟的header头
        //curl_setopt($ch, CURLOPT_HEADER, false);//设置不需要头信息
        $result = curl_exec($ch);//执行请求
        curl_close($ch);//关闭curl,释放资源
        return $result;
    }
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值