首页 > 编程语言 >php 小程序信息推送公众号消息模版

php 小程序信息推送公众号消息模版

时间:2023-10-30 09:22:21浏览次数:28  
标签:ch return 模版 推送 curl php data id CURLOPT

1.登录公众号,新建消息推送模版

2.打开微信官方文档 ->找到模版消息接口 https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html

3. 代码

 /**
     * User: xxg
     * Date: 2023/10/27 11:58
     * @Notes:数据处理
     */
    public function getSen($customerId,$phone,$data,$djbh,$tablename){
        $custome = $this->customers($customerId);

        if ($custome['code'] == 500){
            return ["code" => '500' , "msg" => "客户信息未查到"];
        }
        # 通过客户ID查询客户下用户
        $user_info = AdminWechat::where("phone",$phone)->first()->toArray();
        if (empty($user_info)){
            return ["code" => '500',"msg" => '此客户未关注注册公众号'];
        }
        $dataArr = array(
            "thing1" => ["value" => $data->KHMC], //公司门店
            "thing2" =>  ["value" =>  '配货通知'], //单据类型
            "character_string3" => ["value" =>  $data->DJBH], //订单编号
            "thing4" => ["value" => $data->SL], //单据数量
            "amount5" => ["value" => $data->JE], //订单金额
        );
        return $this->sendWechatMessage($user_info['openid'],$custome,$dataArr,$djbh,$tablename);
    }

    /**
     * User: xxg
     * Date: 2023/10/27 11:54
     * @Notes:微信消息发送
     */
    public function sendWechatMessage($openid,$custome,$data)
    {
        $dataArr= array(
            "touser"        => $openid,  //openid
            "template_id"   =>  $custome['template_id'], //模板id
            "url"    =>  "",
            "miniprogram" => array(
                "appid" => env('WECHAT_MINI_PROGRAM_APPID', ''), //小程序APPID
                "pagepath" => 'pages_gzh/index/formgzh',
            ),
            "client_msg_id" => $openid.rand(1000000,999999),
            "data"  =>   $data,
        );

        //下单用户发送
        $access_token = $this->access_token($custome);

        if ($access_token == 400){
            return ['code'=>0,'message'=>'获取access_token失败'];
        }
        $urls = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;
        $result = $this->http_post_json($urls,$dataArr); //发送请求
        if($result['errcode'] == 0){
            return ['code'=>200,'data'=>'推送成功'];
        }
        return ['code'=>0,'message'=>$result[1]['errmsg']];
    }



    public function http_post_json($send_template_url,$template)//接受消息的用户openid,发送的消息,点击详情跳转的url
    {
        $data=json_encode($template);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $send_template_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        $res = curl_exec($ch);
        curl_close($ch);
        return json_decode($res,true);;
    }

    /**
     * User: xxg
     * Date: 2023/10/27 11:48
     * @Notes:获取access_token
     * $custome 客户配置项
     */
    public function access_token($custome){
        $appId = $custome['app_id'];
        $appSecret = $custome['secret'];
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
        $ch = curl_init();//初始化curl
        curl_setopt($ch, CURLOPT_URL,$url); //要访问的地址
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过证书验证
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
        $data = json_decode(curl_exec($ch),true);
        if(curl_errno($ch)){
            var_dump(curl_error($ch)); //若错误打印错误信息
        }
        curl_close($ch);//关闭curl
        return $data['access_token'];
    }


    /**
     * User: xxg
     * Date: 2023/10/27 11:48
     * @Notes:查询客户
     */
    public function customers($id){
        if (empty($id)){
            return ["code" => '',"msg" => ''];
        }
        $row = Customer::where("id",$id)->first()->toArray();
        if (empty($row)){
            return ["code" => '500',"msg" => ''];
        }
        return [
            "code" => '200',
            "app_id" => $row['AppID'],
            "secret" => $row['AppSecret'],
            "template_id" => $row['template_id']
        ];
    }

  

4.展示效果

 

标签:ch,return,模版,推送,curl,php,data,id,CURLOPT
From: https://www.cnblogs.com/ixiangang06/p/17797048.html

相关文章

  • ctf中常见php漏洞
    PHP特性漏洞一.intval()函数---获取变量的整数值函数说明intintval(mixed$var[,int$base=10]):通过使用指定的进制base转换(默认是十进制),返回变量var的integer数值。intval()不能用于object,否则会产生E_NOTICE错误并返回1。如果base是0,则通过检测va......
  • php-SER-libs-main反序列化靶场部分wp
    什么是序列化/反序列化,为什么要进行序列化/反序列化序列化:有时需要把一个对象在网络上传输,为了方便传输,可以把整个对象转化为二进制串,等到达另一端时,再还原为原来的对象,这个过程称之为串行化(也叫序列化)。反序列化:将序列化的结果还原PHP序列化:把对象转化为二进制的字符......
  • 【安洵杯 2019】easy_serialize_php
    【安洵杯2019】easy_serialize_php收获php反序列化逃逸数组变量覆盖POST请求体传递数组分析代码:<?php$function=@$_GET['f'];functionfilter($img){$filter_arr=array('php','flag','php5','php4','fl1g');......
  • php代码审计学习----蜜蜂cms代码审计
    php代码审计学习----蜜蜂cms代码审计源码https://github.com/Betsy0/CMSVulSource/tree/main/beescms环境搭建这个需要用docker搭建环境用windows的phpstudy会出现403然后chmod-R777html在docker容器里mysql-uroot-prootcreatedatabasebeescms;然后再/etc/mysq......
  • php反序列化2023/10/28
    题目来源:[第五空间2021]pklovecloud题目代码如下:<?phpinclude'flag.php';classpkshow{functionecho_name(){return"Pkverysafe^.^";}}classacp{protected$cinder;public......
  • php对接海康卫视NVR监控设备全过程
    1、确定方式用监控设备里启用:使用ISUP协议,填写服务端的网关IP,端口(这里比较坑,默认是7660,实际是7661,导致设备一直没法注册成功。)服务器端:安装海康的Gateway网关2、服务端Linux系统里安装海康的Gateway网关(官网下载)./install.sh--port=81Checkingportscompleted.Port81will......
  • vscode+phpstudy配置php环境
       php文件路径可以写phpstudy下载好的php文件目录 按照上面的步骤配置之后发现还是出错此时需要按照步骤添加fiveserver的js文件,设置php路径,使得fiveserver能够运行php文件 然后直接右键点击openwithfivesever即可成功打开 当然也可以点击右上角的小三角......
  • php代码审计学习----八哥cms代码审计
    php代码审计学习----八哥cms代码审计源码https://github.com/Betsy0/CMSVulSource/tree/main/bagecms环境搭建打开php.ini全局搜索soap将extension前的;删掉创建一个名为bagecms的数据库createdatabasebagecms;输入网址/index.php?r=install完成安装然后再输入/inde......
  • php代码审计学习----骑士cms代码审计
    php代码审计学习----骑士cms代码审计源码下载https://github.com/Betsy0/CMSVulSource环境搭建删掉data里的install.lock然后把源码放在phpstudy的网站目录下访问http://xxx/74cms/install.php使用phpstorm调试使用seay进行辅助代码审计(主要phpstorm不知为什么总是无法......
  • APNs苹果推送
    转载自:https://zhuanlan.zhihu.com/p/622475157做App总少不了消息推送,公司的App为了开发敏捷方便都直接上的三方推送诸如某盟、某推、某光,安卓和苹果都一套代码,高效好维护,只要按时给推送vip付费就好了。最近心血来潮想手搓下苹果的消息推送,踩踩以前没踩过的坑。看了下苹果官方文......