二维码已经生成但是那个scene_id怎么才能得到,NET
求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解求解
微信后台需要开启开发者模式,用户扫描二维码会推送你的scene_id值到你配置的接口去,自己获取信息就行了
如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者,发送xml结构如下面的
event节点值为SCAN,EventKey节点就是scene_id
https://mp.weixin.qq.com/wiki?action=doc&id=mp1421140454&t=0.7641179934827862#2
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[FromUser]]></FromUserName>
<CreateTime>123456789</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[SCENE_VALUE]]></EventKey>
<Ticket><![CDATA[TICKET]]></Ticket>
</xml>
上面的xml字符串内容可以通过Request.InputStream来获取,然后XmlDocument加载xml字符串,进行xml节点获取操作,你微信后台配置的接口代码大概如下
if (Request.InputStream.Length > 0)
{
System.IO.StreamReader reader = new System.IO.StreamReader(Request.InputStream, System.Text.Encoding.UTF8);
string s = reader.ReadToEnd();//xml字符串
reader.Close();
System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.LoadXml(s);
System.Xml.XmlNodeList xnl = doc.GetElementsByTagName("Event");
if (xnl.Count > 0 && xnl[0].InnerText == "SCAN")//扫码事件
{
xnl = doc.GetElementsByTagName("EventKey");
if (xnl.Count > 0)
{
string scene_id = xnl[0].InnerText;///
//....其他操作
}
}
}