Maison  >  Article  >  Applet WeChat  >  Développement WeChat WeChat envoie des messages

Développement WeChat WeChat envoie des messages

高洛峰
高洛峰original
2017-03-09 15:47:421829parcourir

Ce contenu concerne l'envoi de messages développés par WeChat

1. Tout d'abord, obtenez le compte de test du développeur (application), et le compte de test sera généré en fonction du compte fourni par le code de numérisation actuel : Adresse du lien : http:// mp.weixin.qq.com/wiki/home/index.html

微信开发之微信发送消息

À ce moment, vous pouvez obtenir l'appid et appsecret pour les tests, puis appelez Get the interface et appelez l'interface d'identification pour obtenir le access_token ; 2 Parlons de l'envoi d'informations, qui simule l'envoi d'informations par un seul utilisateur et un lot de messages multi-utilisateurs ; envoi

 (1) Méthode de base, méthode 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) Envoi analogique :

/// <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) Modèle à deux paramètres :

/// <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) Lien dans 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. Le test utilise ce paramètre impliquant touser Il s'agit de l'openID de l'objet qui doit être envoyé. est très simple. Obtenez-le à partir de la documentation du développeur (c'est-à-dire à l'étape 2 ci-dessus)

appid et appsecept, il y a un code QR sous la page actuelle Trouvez quelques personnes pour le scanner automatiquement avec WeChat. obtenez l'openID. A ce moment, apportez les paramètres dans le script pour simuler la

post qui est disponible

Notez également : le format du paramètre json suggéré dans le document

Remarque. 3 : La période de validité du jeton est de 7 200, soit deux heures. Vous devez déterminer la validité du jeton de l'utilisateur actuel qui envoie des informations et la limite quotidienne maximale. Le nombre de demandes est de 2 000.

Obtenir le jeton :

#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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn