<%@Language="VBScript" CodePage="65001"%> <%'On Error Resume Next%> <% '********************************************** '接口信息 encodingAesKey = "1eSbetpojD5hX4PqLpXkdXUdTPDs2Pmepr2gxEqnamX" token = "966120" corpId = "wx248505bfbab6d0c1" msg_signature=request("msg_signature") timestamp=request("timestamp") nonce=request("nonce") url="https://sys.966120.com.cn/weixin/Enterprise/index.php" '//定义要获取源代码的网址,一般是通过变量传递过来 Origin="encodingAesKey="&encodingAesKey Origin=Origin&"&token="&token Origin=Origin&"&corpId="&corpId Origin=Origin&"&msg_signature="&msg_signature Origin=Origin&"×tamp="×tamp Origin=Origin&"&nonce="&nonce 'Origin=Origin&"&echostr="&Server.URLEncode(request("echostr")) 'HTMLCODE= GetBody(url,Origin) 'Response.Write HTMLCODE 'Response.end set xml_dom = Server.CreateObject("MSXML2.DOMDocument") xml_dom.load request ToUserName=xml_dom.getelementsbytagname("ToUserName").item(0).text 'ToUserName为企业微信的CorpID,当为第三方套件回调事件时,CorpID的内容为suiteid toAgentID=xml_dom.getelementsbytagname("AgentID").item(0).text 'AgentID为接收的应用id,可在应用的设置页面获取 Encrypt=xml_dom.getelementsbytagname("Encrypt").item(0).Text 'msg_encrypt为经过加密的密文 set xml_dom=Nothing If ToUserName<>"" Then Origin=Origin&"&ToUserName="&ToUserName Origin=Origin&"&AgentID="&ToAgentID Origin=Origin&"&Encrypt="&Server.URLEncode(Encrypt) HTMLCODE= GetBody(url,Origin) End If 'Response.Write HTMLCODE If HTMLCODE<>"" Then set xml_Content = Server.CreateObject("MSXML2.DOMDocument") xml_Content.preserveWhiteSpace = true xml_Content.async = false xml_Content.LoadXML(HTMLCODE) Set nodes=xml_Content.documentElement.childNodes For i=0 To nodes.length-1 select case nodes(i).nodeName case "ToUserName" '发送者微信账号/成员UserID ToUserName = nodes(i).childNodes(0).Text case "FromUserName" FromUserName = nodes(i).childNodes(0).Text case "ToUserName" '接收者微信账号。即我们的企业微信CorpID。 ToUserName = nodes(i).childNodes(0).Text case "CreateTime" '消息创建时间(整型) CreateTime = nodes(i).childNodes(0).Text case "MsgType" '消息类型,文本:text 图片:image 语音:voice 视频:video 位置:location 链接:link MsgType = nodes(i).childNodes(0).Text case "AgentID" '企业应用的id,整型。可在应用的设置页面查看 AgentID = nodes(i).childNodes(0).Text case "Content" '文本消息内容 Content = nodes(i).childNodes(0).Text case "PicUrl" '文本消息内容 PicUrl = nodes(i).childNodes(0).Text case "MediaId" '文本消息内容 MediaId = nodes(i).childNodes(0).Text case "MsgId" '消息id,64位整型 MsgId = nodes(i).childNodes(0).Text end select Next Set xml_Content=Nothing Set rs = Server.CreateObject("ADODB.Recordset") '消息类型,文本消息:text if MsgType="text" Then If Len(Content)=8 Or Len(Content)=14 Then '更换调度单号 selectDate=API_selectSql("wxDispatch|"&toAgentID&"|",FromUserName,0) If selectDate<>"" then selectDateSP = SPLIT(selectDate,"|") WX_DispatchOrdID=selectDateSP(2) WX_PicUrl=selectDateSP(3) WX_Id=selectDateSP(4) If Len(Content)=8 Then OrdClass="SA" NS_Time_year=CInt(Mid(Content,1,1)) If NS_Time_year>=6 Then NS_Time_year="201"&NS_Time_year Else NS_Time_year="202"&NS_Time_year End If NS_Time_month=Mid(Content,2,2) NS_Time_day=Mid(Content,4,2) OrdNo=Mid(Content,6,3) Else OrdClass=Mid(Content,1,2) NS_Time_year=Mid(Content,3,4) NS_Time_month=Mid(Content,7,2) NS_Time_day=Mid(Content,9,2) OrdNo=Mid(Content,12,3) End If sql="" If IsNumeric(NS_Time_year) And IsNumeric(NS_Time_month) And IsNumeric(NS_Time_day) And IsNumeric(OrdNo) Then sql="select DispatchOrdID,DispatchOrdPicUrl,DispatchOrd_NS_Time,DispatchOrdNo,DispatchOrdClass,ServiceOrdPtName from DispatchOrd,ServiceOrder where ServiceOrdID=ServiceOrdIDDt and DispatchOrdClass='"&OrdClass&"' and DatePart(year,DispatchOrd_NS_Time)="&NS_Time_year&" and DatePart(Month,DispatchOrd_NS_Time)="&NS_Time_month&" and DatePart(Day,DispatchOrd_NS_Time)="&NS_Time_day&" and DispatchOrdNo="&OrdNo End If If sql<>"" Then rs.open sql,objConn,1,1 If not rs.Eof then DispatchOrdID = rs("DispatchOrdID") '调度单号 DispatchOrdPicUrl = rs("DispatchOrdPicUrl") '图片路径 ServiceOrdPtName = rs("ServiceOrdPtName") '病人姓名 DispatchOrdNo = rs("DispatchOrdClass")& year(rs("DispatchOrd_NS_Time"))&Right("0"&month(rs("DispatchOrd_NS_Time")),2)&Right("0"&day(rs("DispatchOrd_NS_Time")),2) & "-"&Right("00"&rs("DispatchOrdNo"),3) '调度单编号 sql="update API_Json set method='wxDispatch|"&toAgentID&"|"&DispatchOrdID&"',Json_time=getdate() where id="&WX_Id objConn.Execute sql If DispatchOrdPicUrl="0" Then ToContent="是否确认上传"&DispatchOrdNo&"["&ServiceOrdPtName&"]的转运同意书"&chr(13)&chr(10)&chr(13)&chr(10)&"确认请回复1"&chr(13)&chr(10)&chr(13)&chr(10)&"取消请回复0"&chr(13)&chr(10)&chr(13)&chr(10)&"其它调度单请回复单号后8位数字,例如70718001" Else ToContent=DispatchOrdNo&"["&ServiceOrdPtName&"]已上传转运同意书,是否继续?"&chr(13)&chr(10)&chr(13)&chr(10)&"继续请回复1"&chr(13)&chr(10)&"覆盖请回复2"&chr(13)&chr(10)&"取消请回复0"&chr(13)&chr(10)&chr(13)&chr(10)&"其它调度单请回复单号后8位数字,例如70718001" End If Else ToContent="调度单号不存在,请重新输入!" End If rs.close() Else ToContent="调度单号格式错误,请重新输入!" End If strsend= API_strsend(FromUserName,ToContent) End If ElseIf Content="1" Then '同意上传 selectDate=API_selectSql("wxDispatch|"&toAgentID&"|",FromUserName,1) If selectDate<>"" then selectDateSP = SPLIT(selectDate,"|") WX_DispatchOrdID=selectDateSP(2) WX_PicUrl=selectDateSP(3) WX_PicUrl=downFile(WX_PicUrl,"/upload/","jpg") sql="update DispatchOrd set DispatchOrdPicUrl=DispatchOrdPicUrl+',"&WX_PicUrl&"' where DispatchOrdID="&WX_DispatchOrdID objConn.Execute sql ToContent="上传完成" strsend= API_strsend(FromUserName,ToContent) End If ElseIf Content="2" Then '覆盖上传 selectDate=API_selectSql("wxDispatch|"&toAgentID&"|",FromUserName,1) If selectDate<>"" then selectDate = SPLIT(selectDate,"|") WX_DispatchOrdID=selectDate(2) WX_PicUrl=selectDate(3) WX_PicUrl=downFile(WX_PicUrl,"/upload/","jpg") sql="update DispatchOrd set DispatchOrdPicUrl='0,"&WX_PicUrl&"' where DispatchOrdID="&WX_DispatchOrdID objConn.Execute sql ToContent="上传完成" strsend= API_strsend(FromUserName,ToContent) End If ElseIf Content="0" Then '取消操作 selectDate=API_selectSql("wxDispatch|"&toAgentID&"|",FromUserName,1) ToContent="上传已取消" strsend= API_strsend(FromUserName,ToContent) Else ToContent="已收到" strsend= API_strsend(FromUserName,ToContent) End If 'Call API_JsonSql("url",ToContent,"vicgame") '消息类型,图片消息:image ElseIf MsgType="image" Then sql="select DispatchOrdID,DispatchOrdPicUrl,DispatchOrd_NS_Time,DispatchOrdNo,DispatchOrdClass,ServiceOrdPtName from DispatchOrd,OA_User,DispatchOrd_Entourage,ServiceOrder where ServiceOrdID=ServiceOrdIDDt and DispatchOrdState>=4 and DispatchOrdState<=7 and DispatchOrdID=DispatchOrdIDDt and EntourageOAid=OA_User_ID and EntourageLead=1 and EntourageState=3 and OA_weixinUserID='"&FromUserName&"' order by DispatchOrdID desc" rs.open sql,objConn,1,1 If not rs.Eof then DispatchOrdID = rs("DispatchOrdID") '调度单号 DispatchOrdPicUrl = rs("DispatchOrdPicUrl") '图片路径 ServiceOrdPtName = rs("ServiceOrdPtName") '病人姓名 DispatchOrdNo = rs("DispatchOrdClass")& year(rs("DispatchOrd_NS_Time"))&Right("0"&month(rs("DispatchOrd_NS_Time")),2)&Right("0"&day(rs("DispatchOrd_NS_Time")),2) & "-"&Right("00"&rs("DispatchOrdNo"),3) '调度单编号 If DispatchOrdPicUrl="0" And PicUrl<>"" Then Call API_JsonSql("wxDispatch|"&toAgentID&"|"&DispatchOrdID,PicUrl,FromUserName) ToContent="是否确认上传"&DispatchOrdNo&"["&ServiceOrdPtName&"]的转运同意书"&chr(13)&chr(10)&chr(13)&chr(10)&"确认请回复1"&chr(13)&chr(10)&chr(13)&chr(10)&"取消请回复0"&chr(13)&chr(10)&chr(13)&chr(10)&"其它调度单请回复单号后8位数字,例如70718001" strsend= API_strsend(FromUserName,ToContent) ElseIf PicUrl<>"" Then Call API_JsonSql("wxDispatch|"&toAgentID&"|"&DispatchOrdID,PicUrl,FromUserName) ToContent=DispatchOrdNo&"["&ServiceOrdPtName&"]已上传转运同意书,是否继续?"&chr(13)&chr(10)&chr(13)&chr(10)&"继续请回复1"&chr(13)&chr(10)&"覆盖请回复2"&chr(13)&chr(10)&"取消请回复0"&chr(13)&chr(10)&chr(13)&chr(10)&"其它调度单请回复单号后8位数字,例如70718001" strsend= API_strsend(FromUserName,ToContent) End If Else Call API_JsonSql("wxDispatch|"&toAgentID&"|0",PicUrl,FromUserName) ToContent="你现在没有正在执行的出车任务"&chr(13)&chr(10)&chr(13)&chr(10)&"其它调度单请回复单号后8位数字,例如70718001" strsend= API_strsend(FromUserName,ToContent) End If rs.close() end If End If response.write strsend 'Call API_JsonSql("url",strsend,"vicgame") '信息回复 Private Function API_strsend(FromUserName,ToContent) strsend="" strsend=strsend&"" strsend=strsend&"" strsend=strsend&""&CreateTime&"" strsend=strsend&"" strsend=strsend&"" strsend=strsend&"" url="http://api.v.com.cn/weixin/Enterprise/" '//定义要获取源代码的网址,一般是通过变量传递过来 Origin="encodingAesKey="&encodingAesKey Origin=Origin&"&token="&token Origin=Origin&"&corpId="&corpId Origin=Origin&"×tamp="×tamp Origin=Origin&"&nonce="&nonce Origin=Origin&"&RespData="&Server.URLEncode(strsend) 'Call API_JsonSql("url",url&"?"&Origin,"vicgame") API_strsend= GetBody(url,Origin) End Function '查询数据库最后一次回复结果 Private Function API_selectSql(method,reserve,isJson) 'Call API_JsonSql(method,reserve,"vicgame") sql="select top 1 * from API_Json where method like '"&method&"%' and reserve='"&reserve&"' and is_Json=0 and datediff(Hour,is_Json_time,getdate())<=10 order by id desc" rs.open sql,objConn,1,1 If not rs.Eof Then API_selectSql=rs("method")&"|"&rs("Json")&"|"&rs("id") sql="update API_Json set is_Json="&isJson&",Json_time=getdate() where id="&rs("id") objConn.Execute sql Else API_selectSql="" End If rs.close() End Function '返回结果写入数据库 Private Function API_JsonSql(method,HTMLCODE,reserve) sql="Insert into API_Json (method,Json,reserve) values ('"&method&"','"&HTMLCODE&"','"&reserve&"')" objConn.Execute sql End Function %>