微信消息接口_微信消息推送接口 - CSDN
  • 调用微信接口发送消息

    万次阅读 2017-07-14 16:05:18
    微信接口

    region 微信接口

        /// <summary> 
        /// 请求Url,发送json数据 
        /// </summary> 
        public static string PostUrl(string url, string postData)
        {
            byte[] data = Encoding.UTF8.GetBytes(postData);
    
            // 设置参数 
            HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            request.AllowAutoRedirect = true;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;
            Stream outstream = request.GetRequestStream();
            outstream.Write(data, 0, data.Length);
            outstream.Close();
    
            //发送请求并获取相应回应数据 
            HttpWebResponse response = request.GetResponse() as HttpWebResponse;
            //直到request.GetResponse()程序才开始向目标网页发送Post请求 
            Stream instream = response.GetResponseStream();
            StreamReader sr = new StreamReader(instream, Encoding.UTF8);
            //返回结果网页(html)代码 
            string content = sr.ReadToEnd();
            return content;
        }
    
        /// <summary>
        /// 获取密钥
        /// </summary>
        /// <param name="corpid">appID</param>
        /// <param name="corpsecret">secID</param>
        /// <returns></returns>
        public static string GetQYAccessToken(string corpid, string corpsecret)
        {
            string getAccessTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}";
            string accessToken = "";
    
            string respText = "";
    
            //获取josn数据
            string url = string.Format(getAccessTokenUrl, corpid, corpsecret);
    
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    
            using (Stream resStream = response.GetResponseStream())
            {
                StreamReader reader = new StreamReader(resStream, Encoding.Default);
                respText = reader.ReadToEnd();
                resStream.Close();
            }
    
            try
            {
                int start = respText.IndexOf("access_token");
                int end = respText.IndexOf("expires_in");
                start += 15;
                end -= 3;
                respText = respText.Substring(start, end - start);
    
                //通过键access_token获取值
                accessToken = respText;
            }
            catch (Exception ex) { }
    
            return accessToken;
        }
    
        /// <summary>
        /// 填充数据后返回json字符串
        /// </summary>
        /// <param name="touser"></param>
        /// <param name="tmpid"></param>
        /// <param name="title"></param>
        /// <returns></returns>
        public static string FillData(string touser,string tmpid,string title)
        {
            string responeJsonStr = "{";
            responeJsonStr += "\"touser\": \"" + touser + "\",";
            responeJsonStr += "\"template_id\": \"" + tmpid + "\",";
            responeJsonStr += "\"url\": \"\",";
            responeJsonStr += "\"topcolor\": \"#FF0000\",";
            responeJsonStr += "  \"data\": {";
            responeJsonStr += "  \"first\": {\"value\":\"" + title + "\",\"color\":\"#FF0000\"},";
            responeJsonStr += "  \"name\": {\"value\":\"用户你好\",\"color\":\"#FF0000\"},";
            responeJsonStr += "  \"user\": {\"value\":\"感谢你的支持\",\"color\":\"#FF0000\"}";
            responeJsonStr += "}";
            responeJsonStr += "}";
            return responeJsonStr;
        }
    
        /// <summary>
        /// 发送微信消息
        /// </summary>
        /// <param name="user">用户</param>
        /// <param name="title">标题</param>
        public static void SendWXmessage(string user,string title)
        {
            string mytoken = GetQYAccessToken("wx9f04b66052974517", "d4624c36b6795d1d99dcf0547af5443d");
            PostUrl(string.Format("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={0}", mytoken), FillData("oEA4av_bAk7ew5k8qLc-kmzX7_SM", "dZetMJDGa9yr-aej8r3oxXWO3eOtlWIZD_DVddOe5mM", title));
        }
        #endregion 
    
    展开全文
  • 微信公众平台消息接口API指南

    千次阅读 2013-07-23 17:02:59
    微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用http...

     

    简介

    微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。

    申请消息接口

    点击申请,填写网址url和token,其中token可由开发者可以任意填写,用作生成签名。


    填写信息

    网址接入

    公众平台用户提交信息后,微信服务器将发送GET请求到填写的URL上,并且带上四个参数:

    参数描述
    signature 微信加密签名
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

    signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

    加密/校验流程:
    1. 将token、timestamp、nonce三个参数进行字典序排序
    2. 将三个参数字符串拼接成一个字符串进行sha1加密
    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    

    消息推送

    当普通微信用户向公众账号发消息时,微信服务器将POST该消息到填写的URL上。结构如下:

    文本消息

     <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName> 
     <CreateTime>1348831860</CreateTime>
     <MsgType><![CDATA[text]]></MsgType>
     <Content><![CDATA[this is a test]]></Content>
     <MsgId>1234567890123456</MsgId>
     </xml>
    
    参数描述
    ToUserName 开发者微信号
    FromUserName 发送方帐号(一个OpenID)
    CreateTime 消息创建时间 (整型)
    MsgType text
    Content 文本消息内容
    MsgId 消息id,64位整型

     

    图片消息

     <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName>
     <CreateTime>1348831860</CreateTime>
     <MsgType><![CDATA[image]]></MsgType>
     <PicUrl><![CDATA[this is a url]></PicUrl>
     <MsgId>1234567890123456</MsgId>
     </xml>
    
    参数描述
    ToUserName 开发者微信号
    FromUserName 发送方帐号(一个OpenID)
    CreateTime 消息创建时间 (整型)
    MsgType image
    PicUrl 图片链接
    MsgId 消息id,64位整型

     

    地理位置消息

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>1351776360</CreateTime>
    <MsgType><![CDATA[location]]></MsgType>
    <Location_X>23.134521</Location_X>
    <Location_Y>113.358803</Location_Y>
    <Scale>20</Scale>
    <Label><![CDATA[位置信息]]></Label>
    <MsgId>1234567890123456</MsgId>
    </xml> 
    
    参数描述
    ToUserName 开发者微信号
    FromUserName 发送方帐号(一个OpenID)
    CreateTime 消息创建时间 (整型)
    MsgType location
    Location_X 地理位置维度
    Location_Y 地理位置经度
    Scale 地图缩放大小
    Label 地理位置信息
    MsgId 消息id,64位整型

     

    链接消息

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>1351776360</CreateTime>
    <MsgType><![CDATA[link]]></MsgType>
    <Title><![CDATA[公众平台官网链接]]></Title>
    <Description><![CDATA[公众平台官网链接]]></Description>
    <Url><![CDATA[url]]></Url>
    <MsgId>1234567890123456</MsgId>
    </xml> 
    
    参数描述
    ToUserName 接收方微信号
    FromUserName 发送方微信号,若为普通用户,则是一个OpenID
    CreateTime 消息创建时间
    MsgType 消息类型,link
    Title 消息标题
    Description 消息描述
    Url 消息链接
    MsgId 消息id,64位整型

     

    事件推送

    事件推送只支持微信4.5版本,即将开放,敬请期待。

    <xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[LOCATION]]></Event>
    <Latitude>23.137466</Latitude>
    <Longitude>113.352425</Longitude>
    <Precision>119.385040</Precision>
    </xml>
    
    参数描述
    ToUserName 接收方微信号
    FromUserName 发送方微信号,若为普通用户,则是一个OpenID
    CreateTime 消息创建时间
    MsgType 消息类型,event
    Event 事件类型,有ENTER(进入会话)和LOCATION(地理位置)
    Latitude 地理位置维度,事件类型为LOCATION的时存在
    Longitude 地理位置经度,事件类型为LOCATION的时存在
    Precision 地理位置精度,事件类型为LOCATION的时存在

    消息回复

    对于每一个POST请求,开发者在响应包中返回特定xml结构,对该消息进行响应(现支持回复文本、图文、语音、视频、音乐和对收到的消息进行星标操作)。

    微信服务器在五秒内收不到响应会断掉连接。

    回复xml结构如下:

    回复文本消息

     <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName>
     <CreateTime>12345678</CreateTime>
     <MsgType><![CDATA[text]]></MsgType>
     <Content><![CDATA[content]]></Content>
     <FuncFlag>0</FuncFlag>
     </xml>
    
    参数描述
    ToUserName 接收方帐号(收到的OpenID)
    FromUserName 开发者微信号
    CreateTime 消息创建时间
    MsgType text
    Content 回复的消息内容
    FuncFlag 位0x0001被标志时,星标刚收到的消息。

     

    回复音乐消息

     <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName>
     <CreateTime>12345678</CreateTime>
     <MsgType><![CDATA[music]]></MsgType>
     <Music>
     <Title><![CDATA[TITLE]]></Title>
     <Description><![CDATA[DESCRIPTION]]></Description>
     <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl>
     <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl>
     </Music>
     <FuncFlag>0</FuncFlag>
     </xml>
    
    参数描述
    ToUserName 接收方帐号(收到的OpenID)
    FromUserName 开发者微信号
    CreateTime 消息创建时间
    MsgType music
    MusicUrl 音乐链接
    HQMusicUrl 高质量音乐链接,WIFI环境优先使用该链接播放音乐
    FuncFlag 位0x0001被标志时,星标刚收到的消息。

     

    回复图文消息

     <xml>
     <ToUserName><![CDATA[toUser]]></ToUserName>
     <FromUserName><![CDATA[fromUser]]></FromUserName>
     <CreateTime>12345678</CreateTime>
     <MsgType><![CDATA[news]]></MsgType>
     <ArticleCount>2</ArticleCount>
     <Articles>
     <item>
     <Title><![CDATA[title1]]></Title> 
     <Description><![CDATA[description1]]></Description>
     <PicUrl><![CDATA[picurl]]></PicUrl>
     <Url><![CDATA[url]]></Url>
     </item>
     <item>
     <Title><![CDATA[title]]></Title>
     <Description><![CDATA[description]]></Description>
     <PicUrl><![CDATA[picurl]]></PicUrl>
     <Url><![CDATA[url]]></Url>
     </item>
     </Articles>
     <FuncFlag>1</FuncFlag>
     </xml> 
    
    参数描述
    ToUserName 接收方帐号(收到的OpenID)
    FromUserName 开发者微信号
    CreateTime 消息创建时间
    MsgType news
    ArticleCount 图文消息个数,限制为10条以内
    Articles 多条图文消息信息,默认第一个item为大图
    Title 图文消息标题
    Description 图文消息描述
    PicUrl 图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80,限制图片链接的域名需要与开发者填写的基本资料中的Url一致
    Url 点击图文消息跳转链接

     

     

    注意事项

    1.用户OpenID对一个公众号是固定唯一的串

    2.请使用80端口

    3.用户关注公众号,微信公众平台服务器推送一条内容为Hello2BizUser的文本消息到第三方服务器

     
     
     

     关注豆立方(账号BeanCube)方法:

    1. 依次进入以下路径:朋友们—>添加朋友—>搜号码,输入BeanCube,不区分大小写,点击查找,然后点击关注

    2. 扫描二维码:

     

    展开全文
  • 微信开发之发送消息接口

    万次阅读 2016-12-25 21:36:18
    本文将基于Java语言以及个人微信测试号,说明被动回复、客服消息接口以及模板消息接口的使用实现,群发接口并未涉及。 1. 被动回复 被动回复只能应用于在接收到用户的互动数据之后,才能向用户发送消息。这一部分...

    发送消息,是指用户公众号向用户发送相应形式的消息。根据微信开发文档,由以下四种形式:被动回复,群发接口,客服消息接口以及模板消息接口。本文将基于Java语言以及个人微信测试号,说明被动回复、客服消息接口以及模板消息接口的使用实现,群发接口并未涉及。
    1. 被动回复
    被动回复只能应用于在接收到用户的互动数据之后,才能向用户发送消息。这一部分较为简单,正式进行微信开发的第一步就是,在公众号中基本配置->服务器配置中设置URL(服务器地址)时,这时该URL链接指定的地址就是对应着Java Web下的一个Servlet,配置好对应的Token及相关参数之后,则微信服务器将会将所有的用户与公众号的互动信息都转发到该Servlet,然后开发者根据接收到的用户互动数据,再进行处理。所谓的被动回复,就是在该Servlet中判断接收到你指定的消息时(例如某个字眼),则直接将想要回复的消息打包成官方指定的XML数据格式,写回到输出流中即可。在这里不过过多解释,如下示例代码:

    response.getWriter().write( MessageUtil.MessageToXML(new TextMessage.Builder(fromUserName,toUserName,new Date().getTime(),"最新资讯请查看下方微信菜单栏,谢谢您的关注").build()));

    2.客服消息接口
    客服消息接口,应用于公众号主动向特定用户(必须满足该用户在48小时内与公众号有交互)发送特定格式的消息,应用场景例如:用户在微页面上完成了抽奖,而这时候公众号主动向用户推送中奖信息。所回复的不同消息的格式,参见开发者文档,下面以回复文本消息作为示例,需要注意的是推送的消息data必须满足json格式,请求类型为post。返回的json数据中,若errorcode为0,则代表推送成功。

     //推送中奖消息
            String data = "{"+
                    "\"touser\":\""+openid+"\","+
                    "\"msgtype\":\"text\","+
                    "\"text\":"+
                    "{"+
                    "\"content\":\""+content+"\""+
                    "}"+
                    "}";
            System.out.println(data);
            String reMsg0 = UrlReqUtil.post("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token="+access_token,data);
            JSONObject jsonObject = JSONObject.fromObject(reMsg0);
            if(0 != (Integer) jsonObject.get("errcode")) throw new RuntimeException("通知用户失败");

    3.模板消息接口
    模板消息接口的使用场景大体与客服消息接口一致,只是不需要证明对象用户“在线”,即48小时内与当前公众号有交互记录,因而应用范围更为广泛。在具有权限的服务号中使用该接口时,需要向系统申请对应模板,并得到模板号,作为调用凭据。在测试号环境下,则需要自定义模板。例如:
    这里写图片描述
    其中模板内容需要严格遵循指定的格式,即在需要调用才填入的变量值的定义方式为:{{xxxx.DATA}},其中“xxxx”为调用时对应的字段名。
    以下是调用代码:jsonData数据部分遵循json数据格式。
    其中touser:为用户在该公众号下的openid
    template_id:为模板id
    对于每个字段,包含两个值,一是value,即填入模板的具体值;二是color,即对应的字体颜色。
    请求方式为post,判断是否成功同样是依据errcode字段,为0则成功。

            //推送模板消息
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            String jsonData = "{" +
                    "\"touser\":\""+openid+"\"," +
                    "\"template_id\":\"maD2W1yaTvkXmh1dRjXEsMHUc9dDP8Xh1eANP***ig\"," +
                    "\"topcolor\":\"#FF0000\"," +
                    "\"data\":{" +
                    "\"title\":{\"value\":\"恭喜您中奖啦\",\"color\":\"#173177\"}," +
                    "\"nickname\":{\"value\":\""+nickname+"\",\"color\":\"#173177\"}," +
                    "\"prizeLevel\":{\"value\":\""+rewardLevel+"\",\"color\":\"#173177\"}," +
                    "\"prizeContent\":{\"value\":\""+ ConfigParamUtil.PRIZE_CONTENT.split(",")[rewardLevel]+"\",\"color\":\"#173177\"}," +
                    "\"time\":{\"value\":\""+dateFormat.format(new Date())+"\",\"color\":\"#173177\"}," +
                    "\"bonus\":{\"value\":\"10积分\",\"color\":\"#173177\"}}}";
            String reMsg1 = UrlReqUtil.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token,jsonData);
            JSONObject jsonObject = JSONObject.fromObject(reMsg1);
            if(0 != (Integer) jsonObject.get("errcode")) throw new RuntimeException("通知用户失败");
    展开全文
  • 1 行代码,实现微信消息发送

    万次阅读 2018-08-23 16:31:05
    看到最近好多大神写操作微信的文章,于是,我又想,是不是可以将消息发送到微信上? 微信发送消息有如下几个思路: itchat 模块 使用个人公众号 使用其他公众号封装好的发送消息的功能; ...
  • 想想将个人微信变为一个机器人...将微信消息传输到机器人接口(这里以图灵为例),获取机器人的返回消息。将返回消息返回给微信消息的发送人。 通过以上就可以实现将微信个人号变为聊天机器人的目的。 开发步骤 1、...
  • 转自:...现在微信很热,微信公众平台...
  • 微信API接口文档

    千次阅读 2019-05-24 01:03:22
    微信API接口文档 微信API接口文档,微信API接口,个人微信聊天接口api 微信手机客户端上传的通知类消息 1、手机客户端微信上线通知 WeChatOnlineNotice = 1020; 2、手机客户端微信下线通知 ...
  • 各位,请问微信消息接口测试错误原因是not xml format,并且下面的解密前和解密后的xml的内容什么都没有,怎么办
  • java微信模板消息接口的使用

    万次阅读 多人点赞 2015-11-14 20:56:49
    用Java做微信开发也有一段时间了,我发现Java拿来开发微信经常会被反对,也不知道是为什么总有一些人有类似“php开发微信应用才是最好的”这种偏执或偏见;个人觉得选何种语言要综合自身或团队的情况来选择,尽量...
  • 微信支付接口的调用

    万次阅读 多人点赞 2018-04-13 10:53:16
    在上周的博客中我讲了调用支付宝的接口实现支付,这周我们继续来讲一讲如何调用微信的支付接口。 在讲之前依然先给出微信的官方接口说明。官方的场景介绍图如下: 其实pc端的支付场景都差不多,用户点击按钮,...
  • 我们知道,要想使用微信支付实现扫码支付、公众号、商城、小程序、网页等产品或者服务购买,需要申请微信服务号,并且要企业认证,还要提交微信支付申请。这些都是企业有条件才会去做的事,那么个人开发者,如何拥有...
  • 通过微信客服接口发送一条信息,微信的服务号里却同时接受到三条一模一样的数据。 经过我反复调试,最后发现与微信的响应机制有关:微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如何...
  • 微信支付接口开发流程

    千次阅读 2018-07-18 16:41:03
    第一步,微信支付接口申请: 【1】首先需要申请成为服务号,并在申请微信认证后; 【2】填写商户基本资料、业务基本资料、财务审核资料。 【3】通过审核进入开发流程,通过开发接口文档的指引,完成开发。 【4】签订...
  • 文章结构 ...1、怎么调用微信高级接口微信高级接口微信普通接口的区别后台服务器可以调用微信接口微信用户进行讯息的通信,这样的行为就是在调用微信接口,这些接口是基础接口,你不需要任
  • 企业微信API接口

    千次阅读 2019-12-20 15:22:01
    企业微信功能不断完善,能提供的API也日趋成熟。...企业微信目前提供了通讯录管理、外部联系人管理、身份验证、应用管理、消息推送、素材管理、OA数据接口、企业支付和电子发票功能等API。接口使用H...
  • 微信公众平台消息接口c#版

    千次下载 热门讨论 2020-07-30 23:30:40
    微信只有php版,自己改写的微信公众平台消息接口c#版
  • 封装好了的微信登陆接口微信支付接口,完整demo实例案例源码,传参数直接使用,我自己个人封装的,版本是V2 【特点】:传入参数即可使用 【注意】:例如appid,appsct,key,mchid等参数需要自己到对应的地方...
  • 需要解决这个问题我们首先需要知道网页版的微信游哪些接口可以用。 关键词:微信网页版api、微信机器人、微信群直播、微信登录。 微信登录有以下三步: 第一步:获取uuid 说明:获取uuid,用户可以通过uuid获取...
  • PHP开发APP微信支付接口

    千次阅读 2019-09-10 15:06:50
    这段时间在给一个iOS应用程序开发一个微信支付接口,之前并没有接触过微信支付,翻阅了一上午的微信开发文档,对其流程做了大致的了解后,便开始着手该接口程序的编写。 编写的过程中也遇到了各种各样的问题,各方...
1 2 3 4 5 ... 20
收藏数 181,852
精华内容 72,740
关键字:

微信消息接口