博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP之 "微信模板消息推送" 的相关代码
阅读量:2159 次
发布时间:2019-05-01

本文共 3967 字,大约阅读时间需要 13 分钟。

温馨提示:

微信模板消息推送,得先去微信端,设置模板配置,会生成相应的消息模板id,这个是一串字符,需连同参数数据,传给微信端,切记!~

第一部分:主体部分代码,负责业务模块,准备微信端所需参数

/** * 用户订单完成后在微信端推送【订单完成】相关信息 * @param int $orderid 订单id * @return mixed */public function order_complete_wx_notice($orderid){    //$this->write_log(['order_cmp'=>1,'$orderid'=>$orderid]);    if($orderid){        // 通过orderid获取模板展示的相关信息        $order_info = $this->get_template_info($orderid, 3);        //$this->write_log(['order_cmp'=>2,'order_info'=>$order_info]);        if($order_info){            // 模板数据            $request = [];            $request['touser'] = $order_info['openid'];            $request['template_id'] = '84Muc5Er_gyddmU1sdfdXSssssdAvW93kI'; // 订单完成消息模板id            $request['page'] = 'pages/near/index'; // 点击模板卡片跳转页面            $request['form_id'] = $order_info['prepay_id']; // 本次支付的id            $request['data'] = [                'keyword1'=>['value'=>$order_info['course_name']], // 课程名称                'keyword2'=>['value'=>$order_info['order_complete_time']], // 完成时间                'keyword3'=>['value'=>$order_info['gym_name']], // 门店房名                'keyword4'=>['value'=>$order_info['address']], // 门店地址                'keyword5'=>['value'=>'已完成'], // 订单状态                'keyword6'=>['value'=>'400-010-88888'], // 客服电话                'keyword7'=>['value'=>'您的本次订单已完成,欢迎致电客服,提出宝贵意见哦!'], // 温馨提示            ];            //$request['emphasis_keyword'] = 'keyword5.DATA'; // 模板放大关键词            //$this->write_log(['order_cmp'=>3,'request'=>$request]);            // 发送数据            $this->wx_show_template($request);        }    }}/** * 通过订单id获取模板展示的信息 * @param int $id 订单id($type=2) || 订单id($type=3 or $type=1) * @param int $type 2,支付成功;3,订单完成。 * @return array */public function get_template_info($id, $type){    if($id && $type){        $this->load->dao('order_dao');        return $this->order_dao->get_template_info($id, $type);    }}

第二部分:负责将准备好的数据传输到微信端,微信再给用户微信推送模板消息

/** * 发送数据到微信端,显示模板界面 * @param array $request */public function wx_show_template($request){    // 获取 redis中的 redis_access_token 值    $access_token = $this->get_redis_access_token();    if(!$access_token){        // 从微信端获取        $access_token = $this->get_access_token();        // 获取存入redis        $this->load->library('dbredis');        $this->dbredis->set('redis_access_token', $access_token);    }    if(!$access_token){        exit('access_token有误!');    }    // 发送地址    $url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='.$access_token;    // 请求微信,微信端显示模板    $this->curl_post_weixin($url, $request);}/** * cURL方式POST数据到微信 * @param string $url 请求地址 * @param array $data 发送数据 */public function curl_post_weixin($url, $data){    if($url && count($data)){        $headers = ['Content-Type:application/json'];        $ch = curl_init();        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // 关键点        curl_setopt($ch, CURLOPT_URL, $url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);        curl_setopt($ch, CURLOPT_POST, 1);        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));        curl_exec($ch);        curl_close($ch);    }}/** * 获取access_token值 * @return string $access_token */public function get_access_token(){    $appConfig = [        'app_id' => 'wxsdd9asdfghe5efc',        'secret' => 'ec1879wiujhyytbdt786ddb7d29106'    ];    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appConfig['app_id'].'&secret='.$appConfig['secret'];    $ch = curl_init(); // 创建句柄    curl_setopt($ch, CURLOPT_URL, $url); // 通过url获取数据    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 跳过证书验证    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是    $output = json_decode(curl_exec($ch));    $access_token = $output->access_token;    curl_close($ch);    return $access_token;}

最后总结:

微信模板消息推送,关键的点,是先去微信端进行配置生成相应的模板,会生成模板id,然后,就是准备参数,通过curl函数对数据传送,微信端收到消息后,会根据openID,将消息推送给对应的用户的(手机)微信端!

转载地址:http://jrrwb.baihongyu.com/

你可能感兴趣的文章
PHPstudy中遇到的坑No input file specified,以及传到linux环境下遇到的坑,模板文件不存在
查看>>
TP5.1事务操作和TP5事务回滚操作多表
查看>>
composer install或composer update 或 composer require phpoffice/phpexcel 失败解决办法
查看>>
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>