ASP微信端開發獲取用戶openid


 

....

UsersManage userbll = new UsersManage();
UsersModels usermodel = new UsersModels();
public void ProcessRequest(HttpContext context)
{
string token = "fengcheng";
if (string.IsNullOrEmpty(token))
{
return;
}

string echoString = HttpContext.Current.Request.QueryString["echoStr"];
string signature = HttpContext.Current.Request.QueryString["signature"];
string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
string nonce = HttpContext.Current.Request.QueryString["nonce"];

if (!string.IsNullOrEmpty(echoString))
{
HttpContext.Current.Response.Write(echoString);
HttpContext.Current.Response.End();
}
string openid = context.Request["openid"].ToString();
string weixin = "";
weixin = PostInput();//獲取xml數據
if (!string.IsNullOrEmpty(weixin))
{
ResponseMsg(weixin, context);//調用消息適配器
}
//和頁面申請地址的一樣是自己取的要和頁面那個一樣

//context.Response.ContentType = "text/plain";
//context.Response.Write(GetUserInfo("",openid)); ;
}
private class ExmlMsg
{
/// <summary>
/// 本公眾賬號
/// </summary>
public string ToUserName { get; set; }
/// <summary>
/// 用戶賬號
/// </summary>
public string FromUserName { get; set; }
/// <summary>
/// 發送時間戳
/// </summary>
public string CreateTime { get; set; }
/// <summary>
/// 發送的文本內容
/// </summary>
public string Content { get; set; }
/// <summary>
/// 消息的類型
/// </summary>
public string MsgType { get; set; }
/// <summary>
/// 事件名稱
/// </summary>
public string EventName { get; set; }

}
private ExmlMsg GetExmlMsg(XmlElement root)
{
ExmlMsg xmlMsg = new ExmlMsg()
{
FromUserName = root.SelectSingleNode("FromUserName").InnerText,
ToUserName = root.SelectSingleNode("ToUserName").InnerText,
CreateTime = root.SelectSingleNode("CreateTime").InnerText,
MsgType = root.SelectSingleNode("MsgType").InnerText,
};
if (xmlMsg.MsgType.Trim().ToLower() == "text")
{
xmlMsg.Content = root.SelectSingleNode("Content").InnerText;
}
else if (xmlMsg.MsgType.Trim().ToLower() == "event")
{
xmlMsg.EventName = root.SelectSingleNode("Event").InnerText;
}
return xmlMsg;
}
#region 消息類型適配器
private string textCase(ExmlMsg xmlMsg)
{

int nowtime = ConvertDateTimeInt(DateTime.Now);
string msg = "";
msg = getText(xmlMsg);
string resxml = "<xml><ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName><CreateTime>" + nowtime + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + msg + "]]></Content><FuncFlag>0</FuncFlag></xml>";
return resxml;


}
private string getText(ExmlMsg xmlMsg)
{
string con = xmlMsg.Content.Trim();

System.Text.StringBuilder retsb = new StringBuilder(200);
retsb.Append("這里放你的業務邏輯");
//retsb.Append("接收到的消息:" + xmlMsg.Content);
retsb.Append("用戶的OPEANID:" + xmlMsg.FromUserName);

return retsb.ToString();
}
/// <summary>
/// datetime轉換為unixtime
/// </summary>
/// <param name="time"></param>
/// <returns></returns>
private int ConvertDateTimeInt(System.DateTime time)
{
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
return (int)(time - startTime).TotalSeconds;
}
private void ResponseMsg(string weixin, HttpContext context)// 服務器響應微信請求
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(weixin);//讀取xml字符串
XmlElement root = doc.DocumentElement;
ExmlMsg xmlMsg = GetExmlMsg(root);
string messageType = xmlMsg.MsgType;//獲取收到的消息類型。文本(text),圖片(image),語音等。
string resxml = "";

try
{

switch (messageType)
{

case "event":
if (!string.IsNullOrEmpty(xmlMsg.EventName) && xmlMsg.EventName.Trim() == "subscribe")
{
WeiXinHelper weixinhelpe = new WeiXinHelper();
//授權頁面
string url = "http://f1t7179366.imwork.net/Reg.aspx";
//剛關注時的時間,用於歡迎詞
int nowtime = ConvertDateTimeInt(DateTime.Now);
string msg = "感謝您的關注,我是特工,希望多多交流" + xmlMsg.FromUserName + "<a href='"+weixinhelpe.Get_code(url)+" '>注冊</a>"; //xmlMsg.FromUserName
resxml = "<xml><ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName><CreateTime>" + nowtime + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + msg + "]]></Content><FuncFlag>0</FuncFlag></xml>";



context.Response.Write(resxml);
}
break;
}

}
catch (Exception)
{
context.Response.Write(resxml);
}

}
#endregion
public bool IsReusable
{
get
{
return false;
}
}
#region 獲取post請求數據
/// <summary>
/// 獲取post請求數據
/// </summary>
/// <returns></returns>
private string PostInput()
{
Stream s = System.Web.HttpContext.Current.Request.InputStream;
byte[] b = new byte[s.Length];
s.Read(b, 0, (int)s.Length);
return Encoding.UTF8.GetString(b);
}
#endregion

....


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM