|
|
|
|
using System;
|
|
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Net;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Web;
|
|
|
|
|
using System.Web.Security;
|
|
|
|
|
using System.Web.UI;
|
|
|
|
|
using System.Web.UI.WebControls;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace TradeManage.WeiXin
|
|
|
|
|
{
|
|
|
|
|
public partial class weixin_api : System.Web.UI.Page
|
|
|
|
|
{
|
|
|
|
|
const string Token = "qianyun"; //你的token
|
|
|
|
|
static string appId = "wx2f5849d8aa573da3";//公众号的appId
|
|
|
|
|
static string appSecret = "34cc0ed309a8250eed74ea4df0b59fb5";//公众号的appSecret
|
|
|
|
|
static string appUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
|
|
|
|
|
static string postUrl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=";
|
|
|
|
|
static string postDelUrl = "https://api.weixin.qq.com/cgi-bin/menu/delete?access_token=";
|
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
if (!IsPostBack)
|
|
|
|
|
{
|
|
|
|
|
string postStr = "";
|
|
|
|
|
if (Request.HttpMethod.ToUpper() == "GET")
|
|
|
|
|
{
|
|
|
|
|
Valid();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (Request.HttpMethod.ToUpper() == "POST")
|
|
|
|
|
{
|
|
|
|
|
Stream s = System.Web.HttpContext.Current.Request.InputStream;
|
|
|
|
|
byte[] b = new byte[s.Length];
|
|
|
|
|
s.Read(b, 0, (int)s.Length);
|
|
|
|
|
postStr = Encoding.UTF8.GetString(b);
|
|
|
|
|
if (!string.IsNullOrEmpty(postStr))
|
|
|
|
|
{
|
|
|
|
|
ResponseMsg(postStr);
|
|
|
|
|
}
|
|
|
|
|
//WriteLog("postStr:" + postStr);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 验证微信签名
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// * 将token、timestamp、nonce三个参数进行字典序排序
|
|
|
|
|
/// * 将三个参数字符串拼接成一个字符串进行sha1加密
|
|
|
|
|
/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private bool CheckSignature()
|
|
|
|
|
{
|
|
|
|
|
string signature = "";
|
|
|
|
|
string timestamp = "";
|
|
|
|
|
string nonce = "";
|
|
|
|
|
if ((Server.UrlDecode(Page.Request.QueryString["signature"]) != null) && (Server.UrlDecode(Page.Request.QueryString["signature"]) != ""))
|
|
|
|
|
{
|
|
|
|
|
signature = Request.QueryString["signature"].ToString();
|
|
|
|
|
timestamp = Request.QueryString["timestamp"].ToString();
|
|
|
|
|
nonce = Request.QueryString["nonce"].ToString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string[] ArrTmp = { Token, timestamp, nonce };
|
|
|
|
|
Array.Sort(ArrTmp); //字典排序
|
|
|
|
|
string tmpStr = string.Join("", ArrTmp);
|
|
|
|
|
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
|
|
|
|
|
tmpStr = tmpStr.ToLower();
|
|
|
|
|
if (tmpStr == signature)
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Valid()
|
|
|
|
|
{
|
|
|
|
|
string echoStr = "";
|
|
|
|
|
if ((Server.UrlDecode(Page.Request.QueryString["echoStr"]) != null) && (Server.UrlDecode(Page.Request.QueryString["echoStr"]) != ""))
|
|
|
|
|
{
|
|
|
|
|
echoStr = Request.QueryString["echoStr"].ToString();
|
|
|
|
|
}
|
|
|
|
|
if (CheckSignature())
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(echoStr))
|
|
|
|
|
{
|
|
|
|
|
Response.Write(echoStr);
|
|
|
|
|
Response.End();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 将xml文件转换成Hashtable
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="xml"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static Hashtable ParseXml(String xml)
|
|
|
|
|
{
|
|
|
|
|
XmlDocument xmlDocument = new XmlDocument();
|
|
|
|
|
xmlDocument.LoadXml(xml);
|
|
|
|
|
XmlNode bodyNode = xmlDocument.ChildNodes[0];
|
|
|
|
|
Hashtable ht = new Hashtable();
|
|
|
|
|
if (bodyNode.ChildNodes.Count > 0)
|
|
|
|
|
{
|
|
|
|
|
foreach (XmlNode xn in bodyNode.ChildNodes)
|
|
|
|
|
{
|
|
|
|
|
ht.Add(xn.Name, xn.InnerText);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return ht;
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 返回信息结果(微信信息返回)
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="weixinXML"></param>
|
|
|
|
|
private void ResponseMsg(string weixinXML)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
//ErrorFollow.TraceWrite("微信接收", "", weixinXML);
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
|
|
doc.LoadXml(weixinXML);//读取XML字符串
|
|
|
|
|
XmlElement rootElement = doc.DocumentElement;
|
|
|
|
|
|
|
|
|
|
XmlNode MsgType = rootElement.SelectSingleNode("MsgType");//获取字符串中的消息类型
|
|
|
|
|
|
|
|
|
|
string resxml = "";
|
|
|
|
|
//var model = new
|
|
|
|
|
//{
|
|
|
|
|
// ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
|
|
|
|
|
// FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
|
|
|
|
|
// CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
|
|
|
|
|
// MsgType = MsgType.InnerText,
|
|
|
|
|
// PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText,
|
|
|
|
|
// MsgId = rootElement.SelectSingleNode("MsgId").InnerText
|
|
|
|
|
//};
|
|
|
|
|
//resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到云界健康馆!]]></Title><Description><![CDATA[赶快进去看看吧!]]></Description><PicUrl><![CDATA[http://121.43.228.63/images/wxlj.png]]></PicUrl><Url><![CDATA[http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
//Response.Write(resxml);
|
|
|
|
|
|
|
|
|
|
//return;
|
|
|
|
|
if (MsgType.InnerText == "text")//如果消息类型为文本消息
|
|
|
|
|
{
|
|
|
|
|
var model = new
|
|
|
|
|
{
|
|
|
|
|
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
|
|
|
|
|
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
|
|
|
|
|
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
|
|
|
|
|
MsgType = MsgType.InnerText,
|
|
|
|
|
Content = rootElement.SelectSingleNode("Content").InnerText,
|
|
|
|
|
MsgId = rootElement.SelectSingleNode("MsgId").InnerText
|
|
|
|
|
};
|
|
|
|
|
//resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";
|
|
|
|
|
resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到云界健康馆!]]></Title><Description><![CDATA[赶快进去看看吧!]]></Description><PicUrl><![CDATA[http://121.43.228.63/images/wxlj.png]]></PicUrl><Url><![CDATA[http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
|
|
|
|
|
if (!string.IsNullOrEmpty(model.Content))//如果接收到消息
|
|
|
|
|
{
|
|
|
|
|
string xz = "";
|
|
|
|
|
//if (model.Content.Contains("摩羯"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年由于受到木星与天王星良好相位的影响,摩羯座在各方面的表现都称心如意。但由于土星在前半年一直对冲摩羯座,摩羯们在心情方面可能会感到有些压抑,以致思想和行动力上都有些保守、退缩不前,有时还会特别固执...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("金牛"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年整体而言,财富有赚有赔、有高成长也有大支出,所幸在收支相抵后仍有盈余。不少人兴起换屋、买车、添购电脑、大型家电用品或奢侈品的冲动,花钱请客较平日慷慨大方,投资运明显欠佳,不利投机或风险过高的投资活动...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("双子"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "双子座对事业充满了理想,也能投入在负责的事务之中,各个方面都能够运作得很顺利。对工作认真积极的态度,为双子们带来不错的绩效,而且实质的回收也很可观。若接受友人的建议和帮助...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("巨蟹"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "巨蟹们在个人心态上会有些保守,但不顽固。而天王星的加入会使巨蟹座渴望尝试一些新的东西,但又害怕改变原有的生活模式。在今年,巨蟹打工族们在工作上的表现还算不错,是非常忙碌的一年。在7、8、9月,巨蟹们要特别小心,别出差错...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("狮子"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "于狮子座自我的成就感不足,造成疲惫与受挫,对於原本的工作内容与职务,开始思考与反省。到了2014年下半年,狮子座的朋友的事业运有所好转,可能因为工作环境改变或者是更换跑道,从而找到最适合自己的方向...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("处女"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年情运对处女座来说变化多端的一年,要鼓起勇气去面对一连串的变化,似乎是冥冥中的缘分促成一些奇遇,如:工作上的场合或是跟新旧朋友的相聚,而使感情进展颇为快速,能够陶醉其中...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("天秤"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "天秤座2014年恋爱运不是很平稳,由于恋爱宫位受到火星和天王星的干扰,可能有一些小风波,需要用心去面对来化解问题。有伴侣的天秤座,大约八九月的年中,或许会出现一个考验和危机,不过只要彼此都有诚心,问题应该不难解决...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("天蝎"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年天蝎座的运势起伏不断,历经周遭环境的动荡,然而天蝎座的适应力会适时发挥,展现出极强的生命力。后半年天蝎座的运势会开始好转,并逐渐旺盛起来。前后形成了强烈的对比,不过都同样都是以强韧生命力展现,贯穿了这一整年...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("射手"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年射手座的感情变动很大,由於你的恋爱宫位,受黯月(月孛)投射的影响,与月轨交点同时产生感应,因而产生层面广泛的宿命作用力。射手会发觉感情事件的际遇和演变,似乎是早已注定的...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("水瓶") || model.Content.Contains("水平"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "2014年海王星将一直坐守于水瓶座,水瓶们在情绪上会显得有些敏感 、忧虑,行事之前想法过于周密,甚至对于感情也陷入一种暧昧不清的状态。 此外,今年的木星也一直在给予水瓶们正面的影响,虽然经经常会有不顺利的时候, 但最终达成目标...";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("双鱼"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "双鱼座2014年受爱神星的笼罩,感情运会非常好,特别是在五月之後,更有绝佳的好运!有伴侣的你,与对方的感情会越来越深,有机会踏上新的阶段。如果你们原本就非常不合适,有可能会换新的伴侣......";
|
|
|
|
|
//}
|
|
|
|
|
//else if (model.Content.Contains("白羊"))//
|
|
|
|
|
//{
|
|
|
|
|
// xz = "精力旺盛、办事能力强的白羊座,在2014年事业运较好。所谓种瓜得瓜,种豆得豆,一份耕耘,一份收获。辛苦的付出终会有回报,努力拼博的你,不仅各种业务都能应付自如,还能走出一片新的天空。对于工薪阶层,7月份将有机会获得提升...";
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// xz = "你好,欢迎来到汇众视界,我们是一家专门从事软硬件开发,系统集成的高新技术公司,当前这个服务号还处于测试阶段,更多功能近请期待";
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
//resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + xz + "]]></Content><FuncFlag>0</FuncFlag></xml>";
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
//else//没有接收到消息
|
|
|
|
|
//{
|
|
|
|
|
// resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好,欢迎来到汇众视界,我们是一家专门从事软硬件开发,系统集成的高新技术公司,当前这个服务号还处于测试阶段,更多功能近请期待]]></Content><FuncFlag>0</FuncFlag></xml>";
|
|
|
|
|
//}
|
|
|
|
|
// ErrorFollow.TraceWrite("微信回复", "", resxml);
|
|
|
|
|
Response.Write(resxml);
|
|
|
|
|
}
|
|
|
|
|
else if (MsgType.InnerText == "image")//如果消息类型为图片消息
|
|
|
|
|
{
|
|
|
|
|
var model = new
|
|
|
|
|
{
|
|
|
|
|
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
|
|
|
|
|
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
|
|
|
|
|
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
|
|
|
|
|
MsgType = MsgType.InnerText,
|
|
|
|
|
PicUrl = rootElement.SelectSingleNode("PicUrl").InnerText,
|
|
|
|
|
MsgId = rootElement.SelectSingleNode("MsgId").InnerText
|
|
|
|
|
};
|
|
|
|
|
//resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到汇众科技!]]></Title><Description><![CDATA[非常感谢您的关注!]]></Description><PicUrl><![CDATA[http://122.227.245.29/images/1rj2.jpg]]></PicUrl><Url><![CDATA[http://122.227.245.29/login.aspx]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到云界健康馆!]]></Title><Description><![CDATA[赶快进去看看吧!]]></Description><PicUrl><![CDATA[http://121.43.228.63/images/wxlj.png]]></PicUrl><Url><![CDATA[http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
|
|
|
|
|
Response.Write(resxml);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
if (MsgType.InnerText == "event")//如果消息类型为图片消息
|
|
|
|
|
{
|
|
|
|
|
var model = new
|
|
|
|
|
{
|
|
|
|
|
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
|
|
|
|
|
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
|
|
|
|
|
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
|
|
|
|
|
MsgType = MsgType.InnerText,
|
|
|
|
|
EventKey = rootElement.SelectSingleNode("EventKey").InnerText,//用于自定义菜单
|
|
|
|
|
Event = rootElement.SelectSingleNode("Event").InnerText
|
|
|
|
|
// MsgId = rootElement.SelectSingleNode("MsgId").InnerText
|
|
|
|
|
};
|
|
|
|
|
// resxml = "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到云界健康馆!]]></Title><Description><![CDATA[赶快进去看看吧!]]></Description><PicUrl><![CDATA[http://121.43.228.63/images/wxlj.png]]></PicUrl><Url><![CDATA[http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
// Response.Write(resxml);
|
|
|
|
|
resxml = "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime>";
|
|
|
|
|
//if (model.EventKey.ToLower() == "v1001_hb")
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
string xz = "终于等到你!送个红包当见面礼!猛戳下方菜单栏-最新活动-点击“新人红包”即可领取现金红包奥~持续关注乾云健康生活馆,享更多优惠!";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
resxml += "<MsgType><![CDATA[text]]></MsgType><Content><![CDATA[" + xz + "]]></Content><FuncFlag>0</FuncFlag></xml>";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
Response.Write(resxml);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
else//如果是其余的消息类型
|
|
|
|
|
{
|
|
|
|
|
var model = new
|
|
|
|
|
{
|
|
|
|
|
ToUserName = rootElement.SelectSingleNode("ToUserName").InnerText,
|
|
|
|
|
FromUserName = rootElement.SelectSingleNode("FromUserName").InnerText,
|
|
|
|
|
CreateTime = rootElement.SelectSingleNode("CreateTime").InnerText,
|
|
|
|
|
};
|
|
|
|
|
resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>1</ArticleCount><Articles><item><Title><![CDATA[欢迎您来到云界健康馆!]]></Title><Description><![CDATA[赶快进去看看吧!]]></Description><PicUrl><![CDATA[http://121.43.228.63/images/wxlj.png]]></PicUrl><Url><![CDATA[http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop]]></Url></item></Articles><FuncFlag>1</FuncFlag></xml>";
|
|
|
|
|
|
|
|
|
|
//resxml += "<xml><ToUserName><![CDATA[" + model.FromUserName + "]]></ToUserName><FromUserName><![CDATA[" + model.ToUserName + "]]></FromUserName><CreateTime>" + ConvertDateTimeInt(DateTime.Now) + "</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[你好,欢迎来到汇众视界,我们是一家专门从事软硬件开发,系统集成的高新技术公司,当前这个服务号还处于测试阶段,更多功能近请期待]]></Content><FuncFlag>0</FuncFlag></xml>";
|
|
|
|
|
Response.Write(resxml);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
throw ex;
|
|
|
|
|
}
|
|
|
|
|
Response.End();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// unix时间转换为datetime
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="timeStamp"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private DateTime UnixTimeToTime(string timeStamp)
|
|
|
|
|
{
|
|
|
|
|
DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
|
|
|
|
|
long lTime = long.Parse(timeStamp + "0000000");
|
|
|
|
|
TimeSpan toNow = new TimeSpan(lTime);
|
|
|
|
|
return dtStart.Add(toNow);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 写日志(用于跟踪)
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void WriteLog(string strMemo)
|
|
|
|
|
{
|
|
|
|
|
string filename = Server.MapPath("/logs/log.txt");
|
|
|
|
|
if (!Directory.Exists(Server.MapPath("//logs//")))
|
|
|
|
|
Directory.CreateDirectory("//logs//");
|
|
|
|
|
StreamWriter sr = null;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (!File.Exists(filename))
|
|
|
|
|
{
|
|
|
|
|
sr = File.CreateText(filename);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sr = File.AppendText(filename);
|
|
|
|
|
}
|
|
|
|
|
sr.WriteLine(strMemo);
|
|
|
|
|
}
|
|
|
|
|
catch
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
if (sr != null)
|
|
|
|
|
sr.Close();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 获取自定义菜单token
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static string GetAccessToken()
|
|
|
|
|
{
|
|
|
|
|
WebClient webClient = new WebClient();
|
|
|
|
|
Byte[] bytes = webClient.DownloadData(string.Format("{0}&appid={1}&secret={2}", appUrl, appId, appSecret));
|
|
|
|
|
string result = Encoding.GetEncoding("utf-8").GetString(bytes);
|
|
|
|
|
|
|
|
|
|
//JObject jObj = JObject.Parse(result);
|
|
|
|
|
//JToken token = jObj["access_token"];
|
|
|
|
|
//return token.ToString().Substring(1, token.ToString().Length - 2);
|
|
|
|
|
|
|
|
|
|
string[] temp = result.Split(',');
|
|
|
|
|
string[] tp = temp[0].Split(':');
|
|
|
|
|
return tp[1].ToString().Replace('"', ' ').Trim().ToString();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 创建自定义菜单
|
|
|
|
|
/// </summary>
|
|
|
|
|
private void CreateWxMenu()
|
|
|
|
|
{
|
|
|
|
|
string weixin1 = "";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
// weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
//第一个菜单
|
|
|
|
|
weixin1 += "\"name\":\"汇众科技\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"公司介绍\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1001_About\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"组织结构\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1001_Dept\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
//第二个菜单
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
//weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"产品目录\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"智慧医疗\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1002_Hospital\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"教育信息化\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1002_School\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"汇众视界\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1002_View\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
//第三个菜单
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"name\":\"合作加盟\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"人才招聘\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1003_Rczp\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"合作共赢\",\n";
|
|
|
|
|
weixin1 += "\"key\":\"V1003_Hzgy\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "}\n";
|
|
|
|
|
weixin1 += "]\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "}\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PostMenuData(postUrl + GetAccessToken(), weixin1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void CreateWxMenu2()
|
|
|
|
|
{
|
|
|
|
|
string weixin1 = "";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
// weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
//第一个菜单
|
|
|
|
|
weixin1 += "\"name\":\"最新活动\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"新人红包\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx2f5849d8aa573da3&redirect_uri=http%3a%2f%2fwww.mntkj.com%2foauth2.aspx&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"热卖商品\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/?userid=318755832&wfr=wechatpo_keywords_shop\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
//第二个菜单
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
//weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界儿童\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界贝比亲\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1336709846\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界儿童宝\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1312408696\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
//第三个菜单
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
//weixin1 += "\"type\":\"click\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界护理\",\n";
|
|
|
|
|
weixin1 += "\"sub_button\":[\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界护爱宝\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1338347234\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界快好\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1338342667\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界旅行宝\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1338359027\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界内衣净\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1338368589\"\n";
|
|
|
|
|
weixin1 += "},\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "{\n";
|
|
|
|
|
weixin1 += "\"type\":\"view\",\n";
|
|
|
|
|
weixin1 += "\"name\":\"云界抑菌剂\",\n";
|
|
|
|
|
weixin1 += "\"url\":\"http://weidian.com/item.html?itemID=1338355466\"\n";
|
|
|
|
|
weixin1 += "}]\n";
|
|
|
|
|
weixin1 += "}\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "]\n";
|
|
|
|
|
|
|
|
|
|
weixin1 += "}\n";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PostMenuData(postUrl + GetAccessToken(), weixin1);
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="url"></param>
|
|
|
|
|
/// <param name="postData"></param>
|
|
|
|
|
private void PostMenuData(string url, string postData)
|
|
|
|
|
{
|
|
|
|
|
Stream outstream = null;
|
|
|
|
|
Stream instream = null;
|
|
|
|
|
StreamReader sr = null;
|
|
|
|
|
HttpWebResponse response = null;
|
|
|
|
|
HttpWebRequest request = null;
|
|
|
|
|
Encoding encoding = Encoding.UTF8;
|
|
|
|
|
byte[] data = encoding.GetBytes(postData);
|
|
|
|
|
// 准备请求...
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
// 设置参数
|
|
|
|
|
request = WebRequest.Create(url) as HttpWebRequest;
|
|
|
|
|
CookieContainer cookieContainer = new CookieContainer();
|
|
|
|
|
request.CookieContainer = cookieContainer;
|
|
|
|
|
request.AllowAutoRedirect = true;
|
|
|
|
|
request.Method = "POST";
|
|
|
|
|
request.ContentType = "application/x-www-form-urlencoded";
|
|
|
|
|
request.ContentLength = data.Length;
|
|
|
|
|
outstream = request.GetRequestStream();
|
|
|
|
|
outstream.Write(data, 0, data.Length);
|
|
|
|
|
outstream.Close();
|
|
|
|
|
//发送请求并获取相应回应数据
|
|
|
|
|
response = request.GetResponse() as HttpWebResponse;
|
|
|
|
|
//直到request.GetResponse()程序才开始向目标网页发送Post请求
|
|
|
|
|
instream = response.GetResponseStream();
|
|
|
|
|
sr = new StreamReader(instream, encoding);
|
|
|
|
|
//返回结果网页(html)代码
|
|
|
|
|
string content = sr.ReadToEnd();
|
|
|
|
|
string err = string.Empty;
|
|
|
|
|
// return content;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
string err = ex.Message;
|
|
|
|
|
//return string.Empty;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
protected void Button1_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
CreateWxMenu();
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除自定义菜单
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="url"></param>
|
|
|
|
|
private void DelMenu(string url)
|
|
|
|
|
{
|
|
|
|
|
if (string.IsNullOrEmpty(url))
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentNullException("url");
|
|
|
|
|
}
|
|
|
|
|
Encoding encoding = Encoding.UTF8;
|
|
|
|
|
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
|
|
|
|
|
request.Method = "GET";
|
|
|
|
|
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
|
|
|
|
|
Stream instream = response.GetResponseStream();
|
|
|
|
|
StreamReader sr = new StreamReader(instream, encoding);
|
|
|
|
|
string content = sr.ReadToEnd();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void Button2_Click(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
DelMenu(postDelUrl + GetAccessToken());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void Button1_Click1(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
CreateWxMenu2();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected void Button2_Click1(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
DelMenu(postDelUrl + GetAccessToken());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|