使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复图片消息

目录

  1. 使用.net 操作 微信公众平台 —— 接入

  2. 使用.net 操作 微信公众平台 —— 生成微信菜单

  3. 使用.net 操作 微信公众平台 —— 接收并回复用户消息

    3.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 详细解析

        3.1.1 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号

        3.1.2 使用.net 操作 微信公众平台 —— 接收用户操作 —— 接收用户发送的消息

    3.2 使用.net 操作 微信公众平台 —— 回复用户消息

        3.2.1 使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复文本消息

        3.2.2 使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复图片消息

        3.2.3 使用.net 操作 微信公众平台 —— 回复用户消息 —— 回复图文消息​​​​​​​

  4. 使用.net 操作 微信公众平台 —— 第三方登录​​​​​​​


 工具


回复图片消息

<xml>
    <ToUserName>< ![CDATA[toUser] ]></ToUserName>
    <FromUserName>< ![CDATA[fromUser] ]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType>< ![CDATA[image] ]></MsgType>
    <Image>
        <MediaId>< ![CDATA[media_id] ]></MediaId>
    </Image>
</xml>
参数 是否必须 描述
ToUserName 接收方帐号(收到的OpenID)
FromUserName 开发者微信号
CreateTime 消息创建时间 (整型)
MsgType image
MediaId 通过素材管理中的接口上传多媒体文件,得到的id。

上传图片到微信

/// <summary>
/// 微信上传多媒体文件
/// </summary>
/// <param name="viewmodel">请求参数</param>
public Response_UploadMultimedia WxUpLoad(Request_UploadMultimedia viewmodel)
{
    using (WebClient client = new WebClient())
    {
        var url = string.Format("http://file.api.weixin.qq.com/cgi-bin/media/upload?access_token={0}&type={1}", viewmodel.token, viewmodel.mt.ToString());
        byte[] b = client.UploadFile(url, file);//调用接口上传文件
        string retdata = Encoding.Default.GetString(b);//获取返回值
        if (retdata.Contains("media_id"))//判断返回值是否包含media_id,包含则说明上传成功,然后将返回的json字符串转换成json
        {
            return JsonConvert.DeserializeObject<Response_UploadMultimedia>(retdata);
        }
        else
        {
            //否则,写错误日志
            return null;
        }
    }
}

/// <summary>
/// 微信上传多媒体文件 请求参数
/// </summary>
public class Request_UploadMultimedia
{
    /// <summary>
    /// 文件 绝对路径(例:C:\1.jpg)
    /// </summary>
    public string filePath { get; set; }

    /// <summary>
    /// AccessToken
    /// </summary>
    public string token { get; set; }

    /// <summary>
    /// 多媒体类型
    /// </summary>
    public Enum_MediaType mt { get; set; }
}

/// <summary>
/// 微信接口运行接口参数
/// </summary>
public class WxResult {

    /// <summary>
    /// 错误代码
    /// </summary>
    public int errcode { get; set; }

    /// <summary>
    /// 错误描述
    /// </summary>
    public string errmsg { get; set; }
}

/// <summary>
/// 微信上传多媒体文件 响应请求
/// </summary>
public class Response_UploadMultimedia : WxResult
{
    /// <summary>
    /// 多媒体类型
    /// </summary>
    public string type { get; set; }

    /// <summary>
    /// 多媒体Id
    /// </summary>
    public string media_id { get; set; }

    /// <summary>
    /// 多媒体有效期
    /// </summary>
    public long created_at { get; set; }
}

// 枚举
public enum Enum_MediaType
{
    /// <summary>
    /// 图片(image): 1M,支持JPG格式
    /// </summary>
    image,

    /// <summary>
    /// 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
    /// </summary>
    voice,

    /// <summary>
    /// 视频(video):10MB,支持MP4格式
    /// </summary>
    video,

    /// <summary>
    /// 缩略图(thumb):64KB,支持JPG格式
    /// </summary>
    thumb
}

被动回复

/// <summary>
/// 发送图片消息 - 被动消息
/// </summary>
/// <returns></returns>
private void SendImage()
{
    int nowtime = ConvertDateTimeInt(DateTime.Now); // 查看工具 DateTime转为微信所需要的时间类型
    string resxml = "<xml>"
    resxml += "    <ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName>"
    resxml += "    <FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName>"
    resxml += "    <CreateTime>" + nowtime + "</CreateTime>"
    resxml += "    <MsgType><![CDATA[image]]></MsgType>"
    resxml += "    <Image>"
    resxml += "        <MediaId>< ![CDATA[" + media_id + "] ]></MediaId>"
    resxml += "    </Image>"
    resxml += "</xml>";
    Response.Write(resxml);
    Response.End();
}

客服消息

/// <summary>
/// 发送图片消息 - 客服消息
/// </summary>
/// <param name="token">工具 生成AccessToken</param>
/// <returns></returns>
private void SendImageCase(string token)
{
    string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}", token);

    JObject data = new JObject();
    data.Add("touser", xmlMsg.FromUserName);
    data.Add("msgtype", "image");
    dataP.Add("image", JObject.FromObject(new
    {
        media_id = media_id
    }));

    var res = HttpPost(data.ToString(), url);
}

/// <summary>
/// 远程获取数据(POST)
/// </summary>
/// <param name="param"></param>
/// <param name="url"></param>
/// <returns></returns>
private dynamic HttpPost(string param, string url)
{
    //转换输入参数的编码类型,获取bytep[]数组 
    byte[] byteArray = Encoding.UTF8.GetBytes(param);
    //初始化新的webRequst
    //1. 创建httpWebRequest对象
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
    //2. 初始化HttpWebRequest对象
    webRequest.Method = "POST";
    webRequest.ContentType = "application/json";
    webRequest.ContentLength = byteArray.Length;
    Stream newStream = webRequest.GetRequestStream();
    newStream.Write(byteArray, 0, byteArray.Length);
    newStream.Close();
    //4. 读取服务器的返回信息
    HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    string srend = sr.ReadToEnd();
    sr.Close();
    response.Close();
    return srend;
}

 

猜你喜欢

转载自blog.csdn.net/qq_31267183/article/details/83214315