zoukankan      html  css  js  c++  java
  • 微信开发

    本内容为,微信消息发送参考:

    1,首先,获取开发者测试账号(申请),会根据当前扫码提供的账号生成测试账号: 链接地址:http://mp.weixin.qq.com/wiki/home/index.html

      这时候可以获取到测试用的appid和appsecrept,然后调用获取接口调用凭证 接口获取access_token;

    2,下面说信息发送,模拟了单用户信息发送和多用户消息批量发送

      (1)基础方法,http方法

        

    /// <summary>
            ///      http  get/post 公用方法
            /// </summary>
            /// <param name="requestUrl">请求链接</param>
            /// <param name="requestJsonParams">请求参数值(如果是get方式此处为“”值,默认为 "")</param>
            /// <param name="requestMethod">请求方式  post or get</param>
            /// <returns></returns>
            public static string Request(this string requestUrl, string requestMethod, string requestJsonParams = "")
            {
                string returnText = "";
                StreamReader streamReader = null;
                HttpWebRequest request = null;
                HttpWebResponse response = null;
    
                Encoding encoding = Encoding.UTF8;
                request = (HttpWebRequest)WebRequest.Create(requestUrl);
                request.Method = requestMethod;
                if (!string.IsNullOrEmpty(requestJsonParams) && requestMethod.ToLower() == "post")
                {
                    byte[] buffer = encoding.GetBytes(requestJsonParams);
                    request.ContentLength = buffer.Length;
                    request.GetRequestStream().Write(buffer, 0, buffer.Length);
                }
    
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                    using (streamReader = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("gb2312")))//utf-8
                    {
                        returnText = streamReader.ReadToEnd();
                    }
                }
                catch (Exception ex)
                {
                    returnText = ex.Message;
                }
    
                return returnText;
            }

    (2)模拟发送:

      

    /// <summary>
            ///     发送微信信息(单用户发送)
            /// </summary>
            /// <param name="access_token">授权码(微信token)</param>
            /// <param name="messageInfo">发送信息模型</param>
            /// <returns></returns>
            public static string SendSingleMessage(WeChatParamEntity messageInfo, string access_token)
            {
                messageInfo.MsgType = string.IsNullOrEmpty(messageInfo.MsgType) ? "text" : messageInfo.MsgType;
                string jsonDataParams = messageInfo == null ? "" : JsonConvert.SerializeObject(new
                {
                    touser = messageInfo.ToUser,
                    msgtype = messageInfo.MsgType,
                    text = new { content = messageInfo.Text }
                });
                string requestUrl = string.Format(Consts.URL_POSTSINGLETEXTMESSAGE, access_token);
                return requestUrl.Request("POST", jsonDataParams);
            }
            /// <summary>
            ///     发送微信信息(多用户批量发送)
            /// </summary>
            /// <param name="access_token">授权码(微信token)</param>
            /// <param name="messageInfo">发送信息模型</param>
            /// <returns></returns>
            public static string SendMessages(WeChatParamsEntity messageInfo, string access_token)
            {
                messageInfo.MsgType = string.IsNullOrEmpty(messageInfo.MsgType) ? "text" : messageInfo.MsgType;
                string jsonDataParams = messageInfo == null ? "" : JsonConvert.SerializeObject(new
                {
                    touser = messageInfo.ToUser,
                    msgtype = messageInfo.MsgType,
                    text = new { content = messageInfo.Text }
                });
                string requestUrl = string.Format(Consts.URL_POSTTEXTMESSAGES, access_token);
                return requestUrl.Request("POST", jsonDataParams);
            }

      (3)两个参数 模型:

      

    /// <summary>
        ///     微信 发送信息 参数实体模型
        /// </summary>
        public class WeChatParamEntity
        {
            /// <summary>
            ///     普通用户openid
            /// </summary>
            public string ToUser { get; set; }
            /// <summary>
            ///     传输的文件类型(text,image, and so on)
            /// </summary>
            public string MsgType { get; set; } = "text";
            /// <summary>
            ///     传输文本内容
            /// </summary>
            public string Text { get; set; }
    
        }
    
        /// <summary>
        ///     微信 发送信息 参数实体模型
        /// </summary>
        public class WeChatParamsEntity
        {
            /// <summary>
            ///     普通用户openid
            /// </summary>
            public string[] ToUser { get; set; }
            /// <summary>
            ///     传输的文件类型(text,image, and so on)
            /// </summary>
            public string MsgType { get; set; } = "text";
            /// <summary>
            ///     传输文本内容
            /// </summary>
            public string Text { get; set; }
    
        }

       (4)web.config中的链接

      

      <!--微信接口-->
    
        <add key="appid" value="wx123456789021"/>
        <add key="appSecret" value="adasdsadasdasdsadasdsaqweqw"/>
        <add key="getAccessTokenUrl" value="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&amp;appid={0}&amp;secret={1}"/>
        <!--单用户信息发送-->
        <add key="postSingleTextMessageUrl" value="https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}"/>
        <!--多用户批量发送-->
        <add key="postTextMessagesUrl" value="https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token={0}"/>
        <!--微信接口-->
        
        

    3,测试使用涉及到  touser的这个参数,这个是需要发送的对象的  openID,这个很简单,在开发者文档(也就是上面的步骤二中,)获取

    appid  和appsecrept的时候,当前这个页面下面有一个二维码,找几个人用微信扫扫就可以自动获取openID ,这时候将参数带入脚本模拟

    post即可

      另外需要注意:文档中提示的  json 参数格式

      注意三:token有效时间为7200,俩小时,需要判断当前发送信息用户的token有效性,同时每天最大可请求次数为2000.

    获取token :

      #region 获取token,并验证token过期时间
    
            public static string GetAccessToken(string appid, string appSecret)
            {
                string token = "";
                string requestUrl = string.Format(ConfigBLL.URL_GETACCESSTOKEN, appid, appSecret);
                string requestResult = WebAPITransfer.Request(requestUrl, "GET", "");
    
                CommonBLL.DebugLog(requestResult, "AccessToken-token-Params");
                string[] strArray = requestResult.Split(',');
                token = strArray[0].Split(':')[1].Replace(""", "");
    
                return token;
            }
    
            #endregion
  • 相关阅读:
    Bean生命周期
    Bean的作用域
    神经网络训练中,傻傻分不清Epoch、Batch Size和迭代
    jQuery中选择器有哪几种
    数据库的事务机制
    多线程面试题
    HTTP请求报文和HTTP响应报文
    linux tomcat单机部署多应用
    flexbox预习
    作业
  • 原文地址:https://www.cnblogs.com/Tmc-Blog/p/5141542.html
Copyright © 2011-2022 走看看