1. 程式人生 > >使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆圖片訊息

使用.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;
}