首页
直播
美图
视频
更多
统计
推荐
电子书站
免费视频站
好书推荐
Search
1
yii2框架融合workman 消息推送socketIO 插件
246 阅读
2
模板 源码 下载地址 集合
210 阅读
3
wordpress 插件 (主题)在线安装失败 解决办法探索
152 阅读
4
PHP使用json_encode()处理数组时,不转义 中文和 反斜线 等字符串
146 阅读
5
mysql 精准匹配时;字符串字段不区分大小写解决办法
127 阅读
我的博客
错误记录
登录
Search
标签搜索
php
mysql
wordpress
nginx
mysql安全
linux
typecho
redis
index.php
多继承
trait
微信公众号
微信
图片
文字
图文
用户权限
navicat
mysql用户权限
弱类型语言
周周
累计撰写
28
篇文章
累计收到
2
条评论
首页
栏目
我的博客
错误记录
页面
直播
美图
视频
统计
推荐
电子书站
免费视频站
好书推荐
搜索到
1
篇与
的结果
2021-12-02
微信公众号发送图文和图片 , 微信公众号被动回复用户信息
微信公众号回复用户信息有两种方式: 1、被动回复用户消息; 2、通过客服接口发送消息;(可以通过调用客服接口发送)本文不做阐述,可以看看微信文档,一、发送图片 1、可以将图片上传服务器上,代码如下:/** * 上传到本地服务器 * @param $content * @param $type * @return array * */ public static function filePathUrl($content,$type){ $ext_path = isset(self::$ext_path[$type]) ? self::$ext_path[$type] : '/file' ; $local_doc_dir = dirname(__DIR__) . "/web".$ext_path;//本地文件夹 if (!is_dir($local_doc_dir)){ mkdir($local_doc_dir,0777,true);//本地如果没有文件夹则创建文件夹 } // $name = uniqid().time().'.jpg' ; $name = uniqid().time().'.png' ; $res = file_put_contents($local_doc_dir.$name,$content) ; if($res){ return [ 'status' => 1 , 'url' => $local_doc_dir.$name , ] ; } else { return [ 'status' => 0 , 'msg' => '上传失败' , 'url' => $local_doc_dir.$name , ] ; } } 2、得到图片的绝对地址通过微信临时素材接口上传到微信服务器得到临时素材的media_id,/** * @todo * @param $media_path * @param string $type * @return mixed * @throws \Exception * */ public static function uploadWeChatWeb($media_path,$type = 'image'){ $access_token = getWeChatAccessToken(self::weChatAppId, self::weChatAppSecret); $url = "https://api.weixin.qq.com/cgi-bin/media/upload?access_token={$access_token}"; if(class_exists('CURLFile')){ //7.0 $param = [ 'media' => new \CURLFile($media_path) , 'access_token' => $access_token, 'type' => $type, ]; }else{ //5.6以及5.6以下 $param = array( 'media' => '@'.$media_path, 'access_token' => $access_token, 'type' => $type, ); } $json_ret = requestHttp($url,'POST',$param,'',60,1) ; $ret = json_decode($json_ret,true) ; if($ret){ $ret['param_data'] = $param ; $ret['json_ret'] = $json_ret ; } else { $ret['param_data'] = $param ; $ret['json_ret'] = $json_ret ; } return $ret ; }注意: 1、media_path 是图片的绝对的地址,不是图片的url ; 这一点需要注意。 2、php 版本的不同导致代码有所差异,这边的考虑curl 的CURLOPT_SAFE_UPLOAD参数问题 代码调整: if(class_exists('CURLFile')){ //7.0 $param = [ 'media' => new \CURLFile($media_path) , 'access_token' => $access_token, 'type' => $type, ]; }else{ //5.6以及5.6以下 $param = array( 'media' => '@'.$media_path, 'access_token' => $access_token, 'type' => $type, ); } 微信回复的xml 组装: content参数发送文本时时文本内容,发送图片时图片的media_id;有参数不明白的可以阅读微信文档,或者咨询在下/** * 微信单文本信息回复 * @param $content */ private function respond_text($content,$img = 0){ if($img == 1){ // 发送图片xml $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>"; $info = sprintf($template,$this->from_user,$this->to_user,time(),'image',$content); } else { // 发送文本消息的xml $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>"; $info = sprintf($template,$this->from_user,$this->to_user,time(),'text',$content); } exit($info); } 通过sprintf 函数将参数与xml字段替换 ; 得到想要的xml文件 ; 这样接口得到想要的功能 ; 如图 二、发送图文消息 通过组织图文的xml/** * 发送一条图文信息 * @param $title 图文标题 * @param $des 图文的介绍 * @param $picUrl 图片的url链接地址 * @param string $url 文章的第三方链接地址url * */ public static function respondOneNewsText($title,$des,$picUrl,$url){ $template = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> </xml>" ; $info = sprintf($template,self::$to_user_open_id,self::$form_user_open_id,time(),'news',$title,$des,$picUrl,$url); exit($info); } 通过sprintf 函数将参数与xml字段替换 ; 得到想要的xml文件 ; 这样接口得到想要的功能展示 ; 如图
2021年12月02日
103 阅读
0 评论
0 点赞