您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
三六零分类信息网 > 滁州分类信息网,免费分类信息发布

微信公众平台SDK核心库的详细介绍

2025/3/9 18:01:03发布33次查看
nuget包地址:
    由于来的oymlcn.wechat存在深度封装,并没有做完整的测试,对于使用不友好,现已重新构建sdk的接收消息被动回复模块。
    现已做到最大程度的简易化及模块化,每个模块都已完成单元测试(根据微信说明文档的示例内容)。
    接下来将会重新构建微信接口的调用模块,将会在基本完成后发布。
    类jquery操作的方式将会在所有功能完善并完成测试以后再整合到oymlcn.wechat当中。
主要使用方式:
var postmodel = this.request.getquery().isvalidrequest(config);if (postmodel == null)return content();return content(new demohandler(wechatrequest.build(config, postmodel, this.request.getbody().readtoend())).result);
config是基础接口配置oymlcn.wechat.config的实例,参数依次为【公众平台微信号】、【appid】、【appsecret】、【token】以及可选的【aeskey】。     配置的参数顺序相对于以往版本有变更,若报错无法验证签名有效性则需要检查参数的赋值顺序。 request.getquery()是对request的扩展方法,封装在依赖包oymlcn.web当中,主要获取请求附带的参数。若在asp.net web api当中使用,需要安装兼容扩展包oymlcn.web.api。 request.getbody()主要是获取请求的正文,相当于request.body,为了使代码兼容webapi而设置的一个方法。 readtoend()是stream的扩展方法,主要是读取stream中的文本内容。 isvalidrequest(config)是dictionary<string, string>的扩展方法,用于验证请求的有效性并获取postmodel参数。验证失败则返回null。 当前示例是使用handler处理的。
public class demohandler : oymlcn.wechat.messagehandler {public demohandler(oymlcn.wechat.wechatrequest request) : base(request) { }public override oymlcn.wechat.wechatresponse defaultresponsemessage(oymlcn.wechat.wechatrequest request)     {return oymlcn.wechat.wechatresponse.responsetext(request, success);     } }
若需求简单,可不使用handler来处理,使用方式如下:
oymlcn.wechat.config config = new oymlcn.wechat.config(微信账号名, appid, appsecret, token, aeskey); oymlcn.wechat.postmodel postmodel = this.request.getquery().isvalidrequest(config);string body = this.request.getbody().readtoend(); oymlcn.wechat.wechatrequest request = oymlcn.wechat.wechatrequest.build(config, postmodel, body); oymlcn.wechat.wechatresponse response = null;if (request.messagetype == oymlcn.wechat.wechatrequestmessagetype.text)     response = oymlcn.wechat.wechatresponse.responsetext(request, 我是测试);else if (request.messagetype == oymlcn.wechat.wechatrequestmessagetype.event)if (request.eventtype == oymlcn.wechat.wechatrequesteventtype.event关注)         response = oymlcn.wechat.wechatresponse.responsetext(request, 你来晚了);if (response != null)return content(response.result);return content();
附上单元测试代码,基本用法均已展现。
   1 using system;   2 using system.collections.generic;   3 using microsoft.visualstudio.testtools.unittesting;   4 using system.linq;   5    6 namespace oymlcn.wechat.core.test   7 {   8     [testclass]   9     public class unittest  10     {  11         config config = new config(wxname, appid, appsecret, token, aes);  12         postmodel postmodel = postmodel.build(new dictionary<string, string>()  13         {  14             {nonce,1362870167 },  15             {openid,ook2xjhrbchp3tggzdgavhppo3bs },  16             {signature,7940891098b505c22f99b0e3708627ec715aa832 },  17             {timestamp,1496218735 }  18         });  19   20         [testmethod]  21         public void wechatrequesttest()  22         {  23             string textmsg = @<xml>  24  <tousername><![cdata[touser]]></tousername>  25  <fromusername><![cdata[fromuser]]></fromusername>  26  <createtime>1348831860</createtime>  27  <msgtype><![cdata[text]]></msgtype>  28  <content><![cdata[this is a test]]></content>  29  <msgid>1234567890123456</msgid>  30  </xml>;  31   32             var request = wechatrequest.build(config, postmodel, textmsg);  33             assert.areequal(request.messagetype, wechatrequestmessagetype.text);  34             assert.areequal(request.tousername, touser);  35             assert.areequal(request.fromusername, fromuser);  36             assert.areequal(request.createtime, 1348831860);  37             assert.areequal(request.msgid, 1234567890123456);  38             assert.areequal(request.messagetext.content, this is a test);  39   40             string imgmsg = @<xml>  41 <tousername><![cdata[touser]]></tousername>  42 <fromusername><![cdata[fromuser]]></fromusername>  43 <createtime>1348831860</createtime>  44 <msgtype><![cdata[image]]></msgtype>  45 <picurl><![cdata[this is a url]]></picurl>  46 <mediaid><![cdata[media_id]]></mediaid>  47 <msgid>1234567890123456</msgid>  48 </xml>;  49             request = wechatrequest.build(config, postmodel, imgmsg);  50             assert.areequal(request.messagetype, wechatrequestmessagetype.image);  51             assert.areequal(request.tousername, touser);  52             assert.areequal(request.fromusername, fromuser);  53             assert.areequal(request.createtime, 1348831860);  54             assert.areequal(request.messageimage.picurl, this is a url);  55             assert.areequal(request.messageimage.mediaid, media_id);  56             assert.areequal(request.msgid, 1234567890123456);  57   58             string voicemsg = @<xml>  59 <tousername><![cdata[touser]]></tousername>  60 <fromusername><![cdata[fromuser]]></fromusername>  61 <createtime>1357290913</createtime>  62 <msgtype><![cdata[voice]]></msgtype>  63 <mediaid><![cdata[media_id]]></mediaid>  64 <format><![cdata[format]]></format>  65 <msgid>1234567890123456</msgid>  66 </xml>;  67             request = wechatrequest.build(config, postmodel, voicemsg);  68             assert.areequal(request.messagetype, wechatrequestmessagetype.voice);  69             assert.areequal(request.tousername, touser);  70             assert.areequal(request.fromusername, fromuser);  71             assert.areequal(request.createtime, 1357290913);  72             assert.areequal(request.messagevoice.mediaid, media_id);  73             assert.areequal(request.messagevoice.format, format);  74             assert.areequal(request.msgid, 1234567890123456);  75   76             voicemsg = @<xml>  77 <tousername><![cdata[touser]]></tousername>  78 <fromusername><![cdata[fromuser]]></fromusername>  79 <createtime>1357290913</createtime>  80 <msgtype><![cdata[voice]]></msgtype>  81 <mediaid><![cdata[media_id]]></mediaid>  82 <format><![cdata[format]]></format>  83 <recognition><![cdata[腾讯微信团队]]></recognition>  84 <msgid>1234567890123456</msgid>  85 </xml>;  86             request = wechatrequest.build(config, postmodel, voicemsg);  87             assert.areequal(request.messagetype, wechatrequestmessagetype.voice);  88             assert.areequal(request.tousername, touser);  89             assert.areequal(request.fromusername, fromuser);  90             assert.areequal(request.createtime, 1357290913);  91             assert.areequal(request.messagevoice.mediaid, media_id);  92             assert.areequal(request.messagevoice.format, format);  93             assert.areequal(request.messagevoice.recognition, 腾讯微信团队);  94             assert.areequal(request.msgid, 1234567890123456);  95   96             var videomsg = @<xml>  97 <tousername><![cdata[touser]]></tousername>  98 <fromusername><![cdata[fromuser]]></fromusername>  99 <createtime>1357290913</createtime> 100 <msgtype><![cdata[video]]></msgtype> 101 <mediaid><![cdata[media_id]]></mediaid> 102 <thumbmediaid><![cdata[thumb_media_id]]></thumbmediaid> 103 <msgid>1234567890123456</msgid> 104 </xml>; 105             request = wechatrequest.build(config, postmodel, videomsg); 106             assert.areequal(request.messagetype, wechatrequestmessagetype.video); 107             assert.areequal(request.tousername, touser); 108             assert.areequal(request.fromusername, fromuser); 109             assert.areequal(request.createtime, 1357290913); 110             assert.areequal(request.messagevideo.mediaid, media_id); 111             assert.areequal(request.messagevideo.thumbmediaid, thumb_media_id); 112             assert.areequal(request.msgid, 1234567890123456); 113  114             videomsg = @<xml> 115 <tousername><![cdata[touser]]></tousername> 116 <fromusername><![cdata[fromuser]]></fromusername> 117 <createtime>1357290913</createtime> 118 <msgtype><![cdata[shortvideo]]></msgtype> 119 <mediaid><![cdata[media_id]]></mediaid> 120 <thumbmediaid><![cdata[thumb_media_id]]></thumbmediaid> 121 <msgid>1234567890123456</msgid> 122 </xml>; 123             request = wechatrequest.build(config, postmodel, videomsg); 124             assert.areequal(request.messagetype, wechatrequestmessagetype.shortvideo); 125             assert.areequal(request.tousername, touser); 126             assert.areequal(request.fromusername, fromuser); 127             assert.areequal(request.createtime, 1357290913); 128             assert.areequal(request.messagevideo.mediaid, media_id); 129             assert.areequal(request.messagevideo.thumbmediaid, thumb_media_id); 130             assert.areequal(request.msgid, 1234567890123456); 131  132             var locationmsg = @<xml> 133 <tousername><![cdata[touser]]></tousername> 134 <fromusername><![cdata[fromuser]]></fromusername> 135 <createtime>1351776360</createtime> 136 <msgtype><![cdata[location]]></msgtype> 137 <location_x>23.134521</location_x> 138 <location_y>113.358803</location_y> 139 <scale>20</scale> 140 <label><![cdata[位置信息]]></label> 141 <msgid>1234567890123456</msgid> 142 </xml>; 143             request = wechatrequest.build(config, postmodel, locationmsg); 144             assert.areequal(request.messagetype, wechatrequestmessagetype.location); 145             assert.areequal(request.tousername, touser); 146             assert.areequal(request.fromusername, fromuser); 147             assert.areequal(request.createtime, 1351776360); 148             assert.areequal(request.messagelocation.location_x, 23.134521); 149             assert.areequal(request.messagelocation.location_y, 113.358803); 150             assert.areequal(request.messagelocation.scale, 20); 151             assert.areequal(request.messagelocation.label, 位置信息); 152             assert.areequal(request.msgid, 1234567890123456); 153  154             var linkmsg = @<xml> 155 <tousername><![cdata[touser]]></tousername> 156 <fromusername><![cdata[fromuser]]></fromusername> 157 <createtime>1351776360</createtime> 158 <msgtype><![cdata[link]]></msgtype> 159 <title><![cdata[公众平台官网链接]]></title> 160 <description><![cdata[公众平台官网链接]]></description> 161 <url><![cdata[url]]></url> 162 <msgid>1234567890123456</msgid> 163 </xml>; 164             request = wechatrequest.build(config, postmodel, linkmsg); 165             assert.areequal(request.messagetype, wechatrequestmessagetype.link); 166             assert.areequal(request.tousername, touser); 167             assert.areequal(request.fromusername, fromuser); 168             assert.areequal(request.createtime, 1351776360); 169             assert.areequal(request.messagelink.title, 公众平台官网链接); 170             assert.areequal(request.messagelink.description, 公众平台官网链接); 171             assert.areequal(request.messagelink.url, url); 172             assert.areequal(request.msgid, 1234567890123456); 173  174         } 175  176         [testmethod] 177         public void wechatrequesteventtest() 178         { 179             var subscribeevent = @<xml> 180 <tousername><![cdata[touser]]></tousername> 181 <fromusername><![cdata[fromuser]]></fromusername> 182 <createtime>123456789</createtime> 183 <msgtype><![cdata[event]]></msgtype> 184 <event><![cdata[subscribe]]></event> 185 </xml>; 186             var request = wechatrequest.build(config, postmodel, subscribeevent); 187             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 188             assert.areequal(request.eventtype, wechatrequesteventtype.event关注); 189             assert.areequal(request.tousername, touser); 190             assert.areequal(request.fromusername, fromuser); 191             assert.areequal(request.createtime, 123456789); 192             assert.istrue(request.event关注); 193  194             subscribeevent = @<xml> 195 <tousername><![cdata[touser]]></tousername> 196 <fromusername><![cdata[fromuser]]></fromusername> 197 <createtime>123456789</createtime> 198 <msgtype><![cdata[event]]></msgtype> 199 <event><![cdata[unsubscribe]]></event> 200 </xml>; 201             request = wechatrequest.build(config, postmodel, subscribeevent); 202             assert.istrue(request.event取消关注); 203  204             subscribeevent = @<xml> 205 <tousername><![cdata[touser]]></tousername> 206 <fromusername><![cdata[fromuser]]></fromusername> 207 <createtime>123456789</createtime> 208 <msgtype><![cdata[event]]></msgtype> 209 <event><![cdata[subscribe]]></event> 210 <eventkey><![cdata[qrscene_123123]]></eventkey> 211 <ticket><![cdata[ticket]]></ticket> 212 </xml>; 213             request = wechatrequest.build(config, postmodel, subscribeevent); 214             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 215             assert.areequal(request.eventtype, wechatrequesteventtype.event关注); 216             assert.areequal(request.tousername, touser); 217             assert.areequal(request.fromusername, fromuser); 218             assert.areequal(request.createtime, 123456789); 219             assert.areequal(request.event扫描带参数二维码.eventkey, qrscene_123123); 220             assert.areequal(request.event扫描带参数二维码.sceneid, 123123); 221             assert.areequal(request.event扫描带参数二维码.ticket, ticket); 222  223             subscribeevent = @<xml> 224 <tousername><![cdata[touser]]></tousername> 225 <fromusername><![cdata[fromuser]]></fromusername> 226 <createtime>123456789</createtime> 227 <msgtype><![cdata[event]]></msgtype> 228 <event><![cdata[scan]]></event> 229 <eventkey><![cdata[scene_value]]></eventkey> 230 <ticket><![cdata[ticket]]></ticket> 231 </xml>; 232             request = wechatrequest.build(config, postmodel, subscribeevent); 233             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 234             assert.areequal(request.eventtype, wechatrequesteventtype.event扫描带参数二维码); 235             assert.areequal(request.tousername, touser); 236             assert.areequal(request.fromusername, fromuser); 237             assert.areequal(request.createtime, 123456789); 238             assert.areequal(request.event扫描带参数二维码.eventkey, scene_value); 239             assert.areequal(request.event扫描带参数二维码.sceneid, scene_value); 240             assert.areequal(request.event扫描带参数二维码.ticket, ticket); 241  242  243             var locationevent = @<xml> 244 <tousername><![cdata[touser]]></tousername> 245 <fromusername><![cdata[fromuser]]></fromusername> 246 <createtime>123456789</createtime> 247 <msgtype><![cdata[event]]></msgtype> 248 <event><![cdata[location]]></event> 249 <latitude>23.137466</latitude> 250 <longitude>113.352425</longitude> 251 <precision>119.385040</precision> 252 </xml>; 253             request = wechatrequest.build(config, postmodel, locationevent); 254             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 255             assert.areequal(request.eventtype, wechatrequesteventtype.event上报地理位置); 256             assert.areequal(request.tousername, touser); 257             assert.areequal(request.fromusername, fromuser); 258             assert.areequal(request.createtime, 123456789); 259             assert.areequal(request.event上报地理位置.latitude, 23.137466); 260             assert.areequal(request.event上报地理位置.longitude, 113.352425); 261             assert.areequal(request.event上报地理位置.precision, 119.385040); 262  263             var clickevent = @<xml> 264 <tousername><![cdata[touser]]></tousername> 265 <fromusername><![cdata[fromuser]]></fromusername> 266 <createtime>123456789</createtime> 267 <msgtype><![cdata[event]]></msgtype> 268 <event><![cdata[click]]></event> 269 <eventkey><![cdata[eventkey]]></eventkey> 270 </xml>; 271             request = wechatrequest.build(config, postmodel, clickevent); 272             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 273             assert.areequal(request.eventtype, wechatrequesteventtype.event点击自定义菜单); 274             assert.areequal(request.tousername, touser); 275             assert.areequal(request.fromusername, fromuser); 276             assert.areequal(request.createtime, 123456789); 277             assert.areequal(request.event点击自定义菜单.eventkey, eventkey); 278  279             var linkevent = @<xml> 280 <tousername><![cdata[touser]]></tousername> 281 <fromusername><![cdata[fromuser]]></fromusername> 282 <createtime>123456789</createtime> 283 <msgtype><![cdata[event]]></msgtype> 284 <event><![cdata[view]]></event> 285 <eventkey><![cdata[www.qq.com]]></eventkey> 286 <menuid>123</menuid> 287 </xml>; 288             request = wechatrequest.build(config, postmodel, linkevent); 289             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 290             assert.areequal(request.eventtype, wechatrequesteventtype.event点击菜单跳转链接); 291             assert.areequal(request.tousername, touser); 292             assert.areequal(request.fromusername, fromuser); 293             assert.areequal(request.createtime, 123456789); 294             assert.areequal(request.event点击菜单跳转链接.url, www.qq.com); 295             assert.areequal(request.event点击菜单跳转链接.menuid, 123); 296  297         } 298  299         [testmethod] 300         public void wechatrequestpusheventtest() 301         { 302             #region 模板消息发送结果 303             var tempplatepush = @<xml> 304 <tousername><![cdata[gh_7f083739789a]]></tousername> 305 <fromusername><![cdata[oia2tjuegtnoex76qejqnrcurxg8]]></fromusername> 306 <createtime>1395658920</createtime> 307 <msgtype><![cdata[event]]></msgtype> 308 <event><![cdata[templatesendjobfinish]]></event> 309 <msgid>200163836</msgid> 310 <status><![cdata[success]]></status> 311 </xml>; 312             var request = wechatrequest.build(config, postmodel, tempplatepush); 313             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 314             assert.areequal(request.eventtype, wechatrequesteventtype.push模板消息发送结果); 315             assert.areequal(request.tousername, gh_7f083739789a); 316             assert.areequal(request.fromusername, oia2tjuegtnoex76qejqnrcurxg8); 317             assert.areequal(request.createtime, 1395658920); 318             assert.areequal(request.push模板消息发送结果.status, success); 319             assert.istrue(request.push模板消息发送结果.success); 320  321             tempplatepush = @<xml> 322 <tousername><![cdata[gh_7f083739789a]]></tousername> 323 <fromusername><![cdata[oia2tjuegtnoex76qejqnrcurxg8]]></fromusername> 324 <createtime>1395658984</createtime> 325 <msgtype><![cdata[event]]></msgtype> 326 <event><![cdata[templatesendjobfinish]]></event> 327 <msgid>200163840</msgid> 328 <status><![cdata[failed:userblock]]></status> 329 </xml>; 330             request = wechatrequest.build(config, postmodel, tempplatepush); 331             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 332             assert.areequal(request.eventtype, wechatrequesteventtype.push模板消息发送结果); 333             assert.areequal(request.tousername, gh_7f083739789a); 334             assert.areequal(request.fromusername, oia2tjuegtnoex76qejqnrcurxg8); 335             assert.areequal(request.createtime, 1395658984); 336             assert.areequal(request.push模板消息发送结果.status, failed:userblock); 337             assert.isfalse(request.push模板消息发送结果.success); 338             tempplatepush = @<xml> 339 <tousername><![cdata[gh_7f083739789a]]></tousername> 340 <fromusername><![cdata[oia2tjuegtnoex76qejqnrcurxg8]]></fromusername> 341 <createtime>1395658984</createtime> 342 <msgtype><![cdata[event]]></msgtype> 343 <event><![cdata[templatesendjobfinish]]></event> 344 <msgid>200163840</msgid> 345 <status><![cdata[failed:system failed]]></status> 346 </xml>; 347             request = wechatrequest.build(config, postmodel, tempplatepush); 348             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 349             assert.areequal(request.eventtype, wechatrequesteventtype.push模板消息发送结果); 350             assert.areequal(request.tousername, gh_7f083739789a); 351             assert.areequal(request.fromusername, oia2tjuegtnoex76qejqnrcurxg8); 352             assert.areequal(request.createtime, 1395658984); 353             assert.areequal(request.push模板消息发送结果.status, failed:system failed); 354             assert.isfalse(request.push模板消息发送结果.success); 355             #endregion 356  357             #region 群发结果 358             var massresultpush = @<xml> 359 <tousername><![cdata[gh_4d00ed8d6399]]></tousername> 360 <fromusername><![cdata[ov5crjpxgagxnhiqigznlgltnwic]]></fromusername> 361 <createtime>1481013459</createtime> 362 <msgtype><![cdata[event]]></msgtype> 363 <event><![cdata[masssendjobfinish]]></event> 364 <msgid>1000001625</msgid> 365 <status><![cdata[err(30003)]]></status> 366 <totalcount>0</totalcount> 367 <filtercount>0</filtercount> 368 <sentcount>0</sentcount> 369 <errorcount>0</errorcount> 370 <copyrightcheckresult> 371 <count>2</count> 372 <resultlist> 373 <item> 374 <articleidx>1</articleidx> 375 <userdeclarestate>0</userdeclarestate> 376 <auditstate>2</auditstate> 377 <originalarticleurl><![cdata[url_1]]></originalarticleurl> 378 <originalarticletype>1</originalarticletype> 379 <canreprint>1</canreprint> 380 <needreplacecontent>1</needreplacecontent> 381 <needshowreprintsource>1</needshowreprintsource> 382 </item> 383 <item> 384 <articleidx>2</articleidx> 385 <userdeclarestate>0</userdeclarestate> 386 <auditstate>2</auditstate> 387 <originalarticleurl><![cdata[url_2]]></originalarticleurl> 388 <originalarticletype>1</originalarticletype> 389 <canreprint>1</canreprint> 390 <needreplacecontent>1</needreplacecontent> 391 <needshowreprintsource>1</needshowreprintsource> 392 </item> 393 </resultlist> 394 <checkstate>2</checkstate> 395 </copyrightcheckresult> 396 </xml>; 397             request = wechatrequest.build(config, postmodel, massresultpush); 398             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 399             assert.areequal(request.eventtype, wechatrequesteventtype.push群发结果); 400             assert.areequal(request.tousername, gh_4d00ed8d6399); 401             assert.areequal(request.fromusername, ov5crjpxgagxnhiqigznlgltnwic); 402             assert.areequal(request.createtime, 1481013459); 403             assert.areequal(request.push群发结果.msgid, 1000001625); 404             assert.areequal(request.push群发结果.status, err(30003)); 405             assert.isfalse(request.push群发结果.success); 406             assert.areequal(request.push群发结果.errorreason, 原创校验被判定为转载文且用户选择了被判为转载就不群发); 407             assert.areequal(request.push群发结果.totalcount, 0); 408             assert.areequal(request.push群发结果.filtercount, 0); 409             assert.areequal(request.push群发结果.sentcount, 0); 410             assert.areequal(request.push群发结果.errorcount, 0); 411             var checkresult = request.push群发结果.copyrightcheckresult; 412             var item = checkresult.first(); 413             assert.areequal(item.articleidx, 1); 414             assert.areequal(item.userdeclarestate, 0); 415             assert.areequal(item.auditstate, 2); 416             assert.areequal(item.originalarticleurl, url_1); 417             assert.areequal(item.originalarticletype, 1); 418             assert.areequal(item.canreprint, true); 419             assert.areequal(item.needreplacecontent, true); 420             assert.areequal(item.needshowreprintsource, true); 421             item = checkresult.last(); 422             assert.areequal(item.articleidx, 2); 423             assert.areequal(item.userdeclarestate, 0); 424             assert.areequal(item.auditstate, 2); 425             assert.areequal(item.originalarticleurl, url_2); 426             assert.areequal(item.originalarticletype, 1); 427             assert.areequal(item.canreprint, true); 428             assert.areequal(item.needreplacecontent, true); 429             assert.areequal(item.needshowreprintsource, true); 430             assert.areequal(request.push群发结果.checkstate, 2); 431             #endregion 432  433             #region 菜单相关推送 434             var scancodepush = @<xml> 435 <tousername><![cdata[gh_e136c6e50636]]></tousername> 436 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 437 <createtime>1408090502</createtime> 438 <msgtype><![cdata[event]]></msgtype> 439 <event><![cdata[scancode_push]]></event> 440 <eventkey><![cdata[6]]></eventkey> 441 <scancodeinfo><scantype><![cdata[qrcode]]></scantype> 442 <scanresult><![cdata[1]]></scanresult> 443 </scancodeinfo> 444 </xml>; 445             request = wechatrequest.build(config, postmodel, scancodepush); 446             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 447             assert.areequal(request.eventtype, wechatrequesteventtype.menupush扫码推事件); 448             assert.areequal(request.tousername, gh_e136c6e50636); 449             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 450             assert.areequal(request.createtime, 1408090502); 451             assert.areequal(request.menupush扫码推事件.eventkey, 6); 452             assert.areequal(request.menupush扫码推事件.scantype, qrcode); 453             assert.areequal(request.menupush扫码推事件.scanresult, 1); 454             scancodepush = @<xml> 455 <tousername><![cdata[gh_e136c6e50636]]></tousername> 456 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 457 <createtime>1408090606</createtime> 458 <msgtype><![cdata[event]]></msgtype> 459 <event><![cdata[scancode_waitmsg]]></event> 460 <eventkey><![cdata[6]]></eventkey> 461 <scancodeinfo><scantype><![cdata[qrcode]]></scantype> 462 <scanresult><![cdata[2]]></scanresult> 463 </scancodeinfo> 464 </xml>; 465             request = wechatrequest.build(config, postmodel, scancodepush); 466             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 467             assert.areequal(request.eventtype, wechatrequesteventtype.menupush扫码推等待事件); 468             assert.areequal(request.tousername, gh_e136c6e50636); 469             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 470             assert.areequal(request.createtime, 1408090606); 471             assert.areequal(request.menupush扫码推等待事件.eventkey, 6); 472             assert.areequal(request.menupush扫码推等待事件.scantype, qrcode); 473             assert.areequal(request.menupush扫码推等待事件.scanresult, 2); 474  475             var imagepush = @<xml> 476 <tousername><![cdata[gh_e136c6e50636]]></tousername> 477 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 478 <createtime>1408090651</createtime> 479 <msgtype><![cdata[event]]></msgtype> 480 <event><![cdata[pic_sysphoto]]></event> 481 <eventkey><![cdata[6]]></eventkey> 482 <sendpicsinfo><count>1</count> 483 <piclist><item><picmd5sum><![cdata[1b5f7c23b5bf75682a53e7b6d163e185]]></picmd5sum> 484 </item> 485 </piclist> 486 </sendpicsinfo> 487 </xml>; 488             request = wechatrequest.build(config, postmodel, imagepush); 489             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 490             assert.areequal(request.eventtype, wechatrequesteventtype.menupush系统拍照发图); 491             assert.areequal(request.tousername, gh_e136c6e50636); 492             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 493             assert.areequal(request.createtime, 1408090651); 494             assert.areequal(request.menupush系统拍照发图.eventkey, 6); 495             assert.areequal(request.menupush系统拍照发图.count, 1); 496             collectionassert.areequal(request.menupush系统拍照发图.picmd5sum, new string[] { 1b5f7c23b5bf75682a53e7b6d163e185 }); 497             imagepush = @<xml> 498 <tousername><![cdata[gh_e136c6e50636]]></tousername> 499 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 500 <createtime>1408090816</createtime> 501 <msgtype><![cdata[event]]></msgtype> 502 <event><![cdata[pic_photo_or_album]]></event> 503 <eventkey><![cdata[6]]></eventkey> 504 <sendpicsinfo><count>1</count> 505 <piclist><item><picmd5sum><![cdata[5a75aaca956d97be686719218f275c6b]]></picmd5sum> 506 </item> 507 </piclist> 508 </sendpicsinfo> 509 </xml>; 510             request = wechatrequest.build(config, postmodel, imagepush); 511             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 512             assert.areequal(request.eventtype, wechatrequesteventtype.menupush拍照或者相册发图); 513             assert.areequal(request.tousername, gh_e136c6e50636); 514             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 515             assert.areequal(request.createtime, 1408090816); 516             assert.areequal(request.menupush系统拍照发图.eventkey, 6); 517             assert.areequal(request.menupush系统拍照发图.count, 1); 518             collectionassert.areequal(request.menupush系统拍照发图.picmd5sum, new string[] { 5a75aaca956d97be686719218f275c6b }); 519             imagepush = @<xml> 520 <tousername><![cdata[gh_e136c6e50636]]></tousername> 521 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 522 <createtime>1408090816</createtime> 523 <msgtype><![cdata[event]]></msgtype> 524 <event><![cdata[pic_weixin]]></event> 525 <eventkey><![cdata[6]]></eventkey> 526 <sendpicsinfo><count>1</count> 527 <piclist><item><picmd5sum><![cdata[5a75aaca956d97be686719218f275c6b]]></picmd5sum> 528 </item> 529 </piclist> 530 </sendpicsinfo> 531 </xml>; 532             request = wechatrequest.build(config, postmodel, imagepush); 533             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 534             assert.areequal(request.eventtype, wechatrequesteventtype.menupush微信相册发图); 535             assert.areequal(request.tousername, gh_e136c6e50636); 536             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 537             assert.areequal(request.createtime, 1408090816); 538             assert.areequal(request.menupush系统拍照发图.eventkey, 6); 539             assert.areequal(request.menupush系统拍照发图.count, 1); 540             collectionassert.areequal(request.menupush系统拍照发图.picmd5sum, new string[] { 5a75aaca956d97be686719218f275c6b }); 541  542             var locationpush = @<xml> 543 <tousername><![cdata[gh_e136c6e50636]]></tousername> 544 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 545 <createtime>1408091189</createtime> 546 <msgtype><![cdata[event]]></msgtype> 547 <event><![cdata[location_select]]></event> 548 <eventkey><![cdata[6]]></eventkey> 549 <sendlocationinfo><location_x><![cdata[23]]></location_x> 550 <location_y><![cdata[113]]></location_y> 551 <scale><![cdata[15]]></scale> 552 <label><![cdata[广州市海珠区客村艺苑路 106号]]></label> 553 <poiname><![cdata[]]></poiname> 554 </sendlocationinfo> 555 </xml>; 556             request = wechatrequest.build(config, postmodel, locationpush); 557             assert.areequal(request.messagetype, wechatrequestmessagetype.event); 558             assert.areequal(request.eventtype, wechatrequesteventtype.menupush位置选择); 559             assert.areequal(request.tousername, gh_e136c6e50636); 560             assert.areequal(request.fromusername, omghvjngripvsoxg6tux3vz6gldg); 561             assert.areequal(request.createtime, 1408091189); 562             assert.areequal(request.menupush位置选择.eventkey, 6); 563             assert.areequal(request.menupush位置选择.location_x, 23); 564             assert.areequal(request.menupush位置选择.location_y, 113); 565             assert.areequal(request.menupush位置选择.scale, 15); 566             assert.areequal(request.menupush位置选择.label, 广州市海珠区客村艺苑路 106号); 567             assert.areequal(request.menupush位置选择.poiname, ); 568             #endregion 569         } 570  571         [testmethod] 572         public void wechatresponsetest() 573         { 574             var demomsg = @<xml> 575 <tousername><![cdata[appid]]></tousername> 576 <fromusername><![cdata[openid]]></fromusername> 577 <createtime>12345678</createtime> 578 </xml>; 579             var request = wechatrequest.build(config, postmodel, demomsg); 580             assert.areequal(wechatresponse.responsetext(request, 你好).source, @<xml> 581 <tousername><![cdata[openid]]></tousername> 582 <fromusername><![cdata[appid]]></fromusername> 583 <createtime>12345678</createtime> 584 <msgtype><![cdata[text]]></msgtype> 585 <content><![cdata[你好]]></content> 586 </xml>.removebr()); 587             assert.areequal(wechatresponse.responseimage(request, media_id).source, @<xml> 588 <tousername><![cdata[openid]]></tousername> 589 <fromusername><![cdata[appid]]></fromusername> 590 <createtime>12345678</createtime> 591 <msgtype><![cdata[image]]></msgtype> 592 <image> 593 <mediaid><![cdata[media_id]]></mediaid> 594 </image> 595 </xml>.removebr()); 596             assert.areequal(wechatresponse.responsevoice(request, media_id).source, @<xml> 597 <tousername><![cdata[openid]]></tousername> 598 <fromusername><![cdata[appid]]></fromusername> 599 <createtime>12345678</createtime> 600 <msgtype><![cdata[voice]]></msgtype> 601 <voice> 602 <mediaid><![cdata[media_id]]></mediaid> 603 </voice> 604 </xml>.removebr()); 605             assert.areequal(wechatresponse.responsevideo(request, media_id, title, description).source, @<xml> 606 <tousername><![cdata[openid]]></tousername> 607 <fromusername><![cdata[appid]]></fromusername> 608 <createtime>12345678</createtime> 609 <msgtype><![cdata[video]]></msgtype> 610 <video> 611 <mediaid><![cdata[media_id]]></mediaid> 612 <title><![cdata[title]]></title> 613 <description><![cdata[description]]></description> 614 </video> 615 </xml>.removebr()); 616             assert.areequal(wechatresponse.responsemusic(request, media_id, music_url, title, description, hq_music_url).source, @<xml> 617 <tousername><![cdata[openid]]></tousername> 618 <fromusername><![cdata[appid]]></fromusername> 619 <createtime>12345678</createtime> 620 <msgtype><![cdata[music]]></msgtype> 621 <music> 622 <title><![cdata[title]]></title> 623 <description><![cdata[description]]></description> 624 <musicurl><![cdata[music_url]]></musicurl> 625 <hqmusicurl><![cdata[hq_music_url]]></hqmusicurl> 626 <thumbmediaid><![cdata[media_id]]></thumbmediaid> 627 </music> 628 </xml>.removebr()); 629  630             assert.areequal(wechatresponse.responsenews(request, 631                 new wechatresponse.article(title1, description1, picurl, url), 632                 new wechatresponse.article(title, description, picurl, url) 633                 ).source, @<xml> 634 <tousername><![cdata[openid]]></tousername> 635 <fromusername><![cdata[appid]]></fromusername> 636 <createtime>12345678</createtime> 637 <msgtype><![cdata[news]]></msgtype> 638 <articlecount>2</articlecount> 639 <articles> 640 <item> 641 <title><![cdata[title1]]></title> 642 <description><![cdata[description1]]></description> 643 <picurl><![cdata[picurl]]></picurl> 644 <url><![cdata[url]]></url> 645 </item> 646 <item> 647 <title><![cdata[title]]></title> 648 <description><![cdata[description]]></description> 649 <picurl><![cdata[picurl]]></picurl> 650 <url><![cdata[url]]></url> 651 </item> 652 </articles> 653 </xml>.removebr()); 654             assert.areequal(wechatresponse.transfertocustomerservice(request).source, @<xml> 655 <tousername><![cdata[openid]]></tousername> 656 <fromusername><![cdata[appid]]></fromusername> 657 <createtime>12345678</createtime> 658 <msgtype><![cdata[transfer_customer_service]]></msgtype> 659 </xml>.removebr()); 660             assert.areequal(wechatresponse.transfertocustomerservice(request, test1).source, @<xml> 661 <tousername><![cdata[openid]]></tousername> 662 <fromusername><![cdata[appid]]></fromusername> 663 <createtime>12345678</createtime> 664 <msgtype><![cdata[transfer_customer_service]]></msgtype> 665 <transinfo><kfaccount><![cdata[test1@test]]></kfaccount></transinfo> 666 </xml>.removebr()); 667         } 668  669         [testmethod] 670         public void wechatextensiontest() 671         { 672             var demoquery = new dictionary<string, string>() 673             { 674                 {nonce,1362870167}, 675                 {openid,ook2xjhrbchp3tggzdgavhppo3bs}, 676                 {signature,7940891098b505c22f99b0e3708627ec715aa832}, 677                 {timestamp,1496218735}, 678                 {echostr,demoechostr} 679             }; 680             assert.isnotnull(demoquery.isvalidrequest(config)); 681             assert.areequal(demoquery.configverify(config), demoechostr); 682             demoquery = new dictionary<string, string>(); 683             assert.isnull(demoquery.isvalidrequest(config)); 684             assert.areequal(demoquery.configverify(config), ); 685         } 686  687         [testmethod] 688         public void wechathanddlertest() 689         { 690             string demomsg = @<xml> 691  <tousername><![cdata[touser]]></tousername> 692  <fromusername><![cdata[fromuser]]></fromusername> 693  <createtime>1348831860</createtime> 694  <msgtype><![cdata[test]]></msgtype> 695  <content><![cdata[this is a test]]></content> 696  <msgid>1234567890123456</msgid> 697  </xml>; 698             bool isokreponse(handlerdemo demo, string text) => demo.result.toxdocument().selectvalue(content).equals(text); 699  700             var request = wechatrequest.build(config, postmodel, demomsg); 701             var demohandler = new handlerdemo(request); 702             assert.areequal(demohandler.result, );//未支持消息,直接回复空字符串 703  704             #region 微信消息 705             demomsg = @<xml> 706  <tousername><![cdata[touser]]></tousername> 707  <fromusername><![cdata[fromuser]]></fromusername> 708  <createtime>1348831860</createtime> 709  <msgtype><![cdata[text]]></msgtype> 710  <content><![cdata[this is a test]]></content> 711  <msgid>1234567890123456</msgid> 712  </xml>; 713             request = wechatrequest.build(config, postmodel, demomsg); 714             demohandler = new handlerdemo(request); 715             assert.istrue(isokreponse(demohandler, onmessagetext)); 716  717             demomsg = @<xml> 718 <tousername><![cdata[touser]]></tousername> 719 <fromusername><![cdata[fromuser]]></fromusername> 720 <createtime>1348831860</createtime> 721 <msgtype><![cdata[image]]></msgtype> 722 <picurl><![cdata[this is a url]]></picurl> 723 <mediaid><![cdata[media_id]]></mediaid> 724 <msgid>1234567890123456</msgid> 725 </xml>; 726             request = wechatrequest.build(config, postmodel, demomsg); 727             demohandler = new handlerdemo(request); 728             assert.istrue(isokreponse(demohandler, onmessageimage)); 729  730             demomsg = @<xml> 731 <tousername><![cdata[touser]]></tousername> 732 <fromusername><![cdata[fromuser]]></fromusername> 733 <createtime>1357290913</createtime> 734 <msgtype><![cdata[voice]]></msgtype> 735 <mediaid><![cdata[media_id]]></mediaid> 736 <format><![cdata[format]]></format> 737 <recognition><![cdata[腾讯微信团队]]></recognition> 738 <msgid>1234567890123456</msgid> 739 </xml>; 740             request = wechatrequest.build(config, postmodel, demomsg); 741             demohandler = new handlerdemo(request); 742             assert.istrue(isokreponse(demohandler, onmessagevoice)); 743  744             demomsg = @<xml> 745 <tousername><![cdata[touser]]></tousername> 746 <fromusername><![cdata[fromuser]]></fromusername> 747 <createtime>1357290913</createtime> 748 <msgtype><![cdata[video]]></msgtype> 749 <mediaid><![cdata[media_id]]></mediaid> 750 <thumbmediaid><![cdata[thumb_media_id]]></thumbmediaid> 751 <msgid>1234567890123456</msgid> 752 </xml>; 753             request = wechatrequest.build(config, postmodel, demomsg); 754             demohandler = new handlerdemo(request); 755             assert.istrue(isokreponse(demohandler, onmessagevideo)); 756  757             demomsg = @<xml> 758 <tousername><![cdata[touser]]></tousername> 759 <fromusername><![cdata[fromuser]]></fromusername> 760 <createtime>1357290913</createtime> 761 <msgtype><![cdata[shortvideo]]></msgtype> 762 <mediaid><![cdata[media_id]]></mediaid> 763 <thumbmediaid><![cdata[thumb_media_id]]></thumbmediaid> 764 <msgid>1234567890123456</msgid> 765 </xml>; 766             request = wechatrequest.build(config, postmodel, demomsg); 767             demohandler = new handlerdemo(request); 768             assert.istrue(isokreponse(demohandler, onmessageshortvideo)); 769  770             demomsg = @<xml> 771 <tousername><![cdata[touser]]></tousername> 772 <fromusername><![cdata[fromuser]]></fromusername> 773 <createtime>1351776360</createtime> 774 <msgtype><![cdata[location]]></msgtype> 775 <location_x>23.134521</location_x> 776 <location_y>113.358803</location_y> 777 <scale>20</scale> 778 <label><![cdata[位置信息]]></label> 779 <msgid>1234567890123456</msgid> 780 </xml>; 781             request = wechatrequest.build(config, postmodel, demomsg); 782             demohandler = new handlerdemo(request); 783             assert.istrue(isokreponse(demohandler, onmessagelocaltion)); 784  785             demomsg = @<xml> 786 <tousername><![cdata[touser]]></tousername> 787 <fromusername><![cdata[fromuser]]></fromusername> 788 <createtime>1351776360</createtime> 789 <msgtype><![cdata[link]]></msgtype> 790 <title><![cdata[公众平台官网链接]]></title> 791 <description><![cdata[公众平台官网链接]]></description> 792 <url><![cdata[url]]></url> 793 <msgid>1234567890123456</msgid> 794 </xml>; 795             request = wechatrequest.build(config, postmodel, demomsg); 796             demohandler = new handlerdemo(request); 797             assert.istrue(isokreponse(demohandler, onmessagelink)); 798             #endregion 799  800             #region 事件消息 801             demomsg = @<xml> 802 <tousername><![cdata[touser]]></tousername> 803 <fromusername><![cdata[fromuser]]></fromusername> 804 <createtime>123456789</createtime> 805 <msgtype><![cdata[event]]></msgtype> 806 <event><![cdata[subscribe]]></event> 807 </xml>; 808             request = wechatrequest.build(config, postmodel, demomsg); 809             demohandler = new handlerdemo(request); 810             assert.istrue(isokreponse(demohandler, onevent关注)); 811  812  813             demomsg = @<xml> 814 <tousername><![cdata[touser]]></tousername> 815 <fromusername><![cdata[fromuser]]></fromusername> 816 <createtime>123456789</createtime> 817 <msgtype><![cdata[event]]></msgtype> 818 <event><![cdata[unsubscribe]]></event> 819 </xml>; 820             request = wechatrequest.build(config, postmodel, demomsg); 821             demohandler = new handlerdemo(request); 822             assert.throwsexception<notimplementedexception>(() => { string result = demohandler.result; }, onevent取消关注); 823  824             demomsg = @<xml> 825 <tousername><![cdata[touser]]></tousername> 826 <fromusername><![cdata[fromuser]]></fromusername> 827 <createtime>123456789</createtime> 828 <msgtype><![cdata[event]]></msgtype> 829 <event><![cdata[subscribe]]></event> 830 <eventkey><![cdata[qrscene_123123]]></eventkey> 831 <ticket><![cdata[ticket]]></ticket> 832 </xml>; 833             request = wechatrequest.build(config, postmodel, demomsg); 834             demohandler = new handlerdemo(request); 835             assert.istrue(isokreponse(demohandler, onevent关注-扫描带参数二维码)); 836  837             demomsg = @<xml> 838 <tousername><![cdata[touser]]></tousername> 839 <fromusername><![cdata[fromuser]]></fromusername> 840 <createtime>123456789</createtime> 841 <msgtype><![cdata[event]]></msgtype> 842 <event><![cdata[scan]]></event> 843 <eventkey><![cdata[scene_value]]></eventkey> 844 <ticket><![cdata[ticket]]></ticket> 845 </xml>; 846             request = wechatrequest.build(config, postmodel, demomsg); 847             demohandler = new handlerdemo(request); 848             assert.istrue(isokreponse(demohandler, onevent扫描带参数二维码)); 849  850             demomsg = @<xml> 851 <tousername><![cdata[touser]]></tousername> 852 <fromusername><![cdata[fromuser]]></fromusername> 853 <createtime>123456789</createtime> 854 <msgtype><![cdata[event]]></msgtype> 855 <event><![cdata[location]]></event> 856 <latitude>23.137466</latitude> 857 <longitude>113.352425</longitude> 858 <precision>119.385040</precision> 859 </xml>; 860             request = wechatrequest.build(config, postmodel, demomsg); 861             demohandler = new handlerdemo(request); 862             assert.istrue(isokreponse(demohandler, onevent上报地理位置)); 863  864             demomsg = @<xml> 865 <tousername><![cdata[touser]]></tousername> 866 <fromusername><![cdata[fromuser]]></fromusername> 867 <createtime>123456789</createtime> 868 <msgtype><![cdata[event]]></msgtype> 869 <event><![cdata[click]]></event> 870 <eventkey><![cdata[eventkey]]></eventkey> 871 </xml>; 872             request = wechatrequest.build(config, postmodel, demomsg); 873             demohandler = new handlerdemo(request); 874             assert.istrue(isokreponse(demohandler, onevent点击自定义菜单)); 875  876             demomsg = @<xml> 877 <tousername><![cdata[touser]]></tousername> 878 <fromusername><![cdata[fromuser]]></fromusername> 879 <createtime>123456789</createtime> 880 <msgtype><![cdata[event]]></msgtype> 881 <event><![cdata[view]]></event> 882 <eventkey><![cdata[www.qq.com]]></eventkey> 883 <menuid>123</menuid> 884 </xml>; 885             request = wechatrequest.build(config, postmodel, demomsg); 886             demohandler = new handlerdemo(request); 887             assert.throwsexception<notimplementedexception>(() => { string result = demohandler.result; }, onevent点击菜单跳转链接); 888             #endregion 889  890             #region 微信服务相关 891             demomsg = @<xml> 892 <tousername><![cdata[gh_7f083739789a]]></tousername> 893 <fromusername><![cdata[oia2tjuegtnoex76qejqnrcurxg8]]></fromusername> 894 <createtime>1395658920</createtime> 895 <msgtype><![cdata[event]]></msgtype> 896 <event><![cdata[templatesendjobfinish]]></event> 897 <msgid>200163836</msgid> 898 <status><![cdata[success]]></status> 899 </xml>; 900             request = wechatrequest.build(config, postmodel, demomsg); 901             demohandler = new handlerdemo(request); 902             assert.throwsexception<notimplementedexception>(() => { string result = demohandler.result; }, onpush模板消息发送结果); 903  904             demomsg = @<xml> 905 <tousername><![cdata[gh_4d00ed8d6399]]></tousername> 906 <fromusername><![cdata[ov5crjpxgagxnhiqigznlgltnwic]]></fromusername> 907 <createtime>1481013459</createtime> 908 <msgtype><![cdata[event]]></msgtype> 909 <event><![cdata[masssendjobfinish]]></event> 910 <msgid>1000001625</msgid> 911 <status><![cdata[err(30003)]]></status> 912 <totalcount>0</totalcount> 913 <filtercount>0</filtercount> 914 <sentcount>0</sentcount> 915 <errorcount>0</errorcount> 916 </xml>; 917             request = wechatrequest.build(config, postmodel, demomsg); 918             demohandler = new handlerdemo(request); 919             assert.throwsexception<notimplementedexception>(() => { string result = demohandler.result; }, onpush群发结果); 920             #endregion 921  922             #region 菜单相关推送 923             demomsg = @<xml> 924 <tousername><![cdata[gh_e136c6e50636]]></tousername> 925 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 926 <createtime>1408090502</createtime> 927 <msgtype><![cdata[event]]></msgtype> 928 <event><![cdata[scancode_push]]></event> 929 <eventkey><![cdata[6]]></eventkey> 930 <scancodeinfo><scantype><![cdata[qrcode]]></scantype> 931 <scanresult><![cdata[1]]></scanresult> 932 </scancodeinfo> 933 </xml>; 934             request = wechatrequest.build(config, postmodel, demomsg); 935             demohandler = new handlerdemo(request); 936             assert.istrue(isokreponse(demohandler, onpushmenu扫码推事件)); 937  938             demomsg = @<xml> 939 <tousername><![cdata[gh_e136c6e50636]]></tousername> 940 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 941 <createtime>1408090606</createtime> 942 <msgtype><![cdata[event]]></msgtype> 943 <event><![cdata[scancode_waitmsg]]></event> 944 <eventkey><![cdata[6]]></eventkey> 945 <scancodeinfo><scantype><![cdata[qrcode]]></scantype> 946 <scanresult><![cdata[2]]></scanresult> 947 </scancodeinfo> 948 </xml>; 949             request = wechatrequest.build(config, postmodel, demomsg); 950             demohandler = new handlerdemo(request); 951             assert.istrue(isokreponse(demohandler, onpushmenu扫码推等待事件)); 952  953             demomsg = @<xml> 954 <tousername><![cdata[gh_e136c6e50636]]></tousername> 955 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 956 <createtime>1408090651</createtime> 957 <msgtype><![cdata[event]]></msgtype> 958 <event><![cdata[pic_sysphoto]]></event> 959 <eventkey><![cdata[6]]></eventkey> 960 <sendpicsinfo><count>1</count> 961 <piclist><item><picmd5sum><![cdata[1b5f7c23b5bf75682a53e7b6d163e185]]></picmd5sum> 962 </item> 963 </piclist> 964 </sendpicsinfo> 965 </xml>; 966             request = wechatrequest.build(config, postmodel, demomsg); 967             demohandler = new handlerdemo(request); 968             assert.istrue(isokreponse(demohandler, onpushmenu系统拍照发图)); 969  970             demomsg = @<xml> 971 <tousername><![cdata[gh_e136c6e50636]]></tousername> 972 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 973 <createtime>1408090816</createtime> 974 <msgtype><![cdata[event]]></msgtype> 975 <event><![cdata[pic_photo_or_album]]></event> 976 <eventkey><![cdata[6]]></eventkey> 977 <sendpicsinfo><count>1</count> 978 <piclist><item><picmd5sum><![cdata[5a75aaca956d97be686719218f275c6b]]></picmd5sum> 979 </item> 980 </piclist> 981 </sendpicsinfo> 982 </xml>; 983             request = wechatrequest.build(config, postmodel, demomsg); 984             demohandler = new handlerdemo(request); 985             assert.istrue(isokreponse(demohandler, onpushmenu拍照或者相册发图)); 986  987             demomsg = @<xml> 988 <tousername><![cdata[gh_e136c6e50636]]></tousername> 989 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername> 990 <createtime>1408090816</createtime> 991 <msgtype><![cdata[event]]></msgtype> 992 <event><![cdata[pic_weixin]]></event> 993 <eventkey><![cdata[6]]></eventkey> 994 <sendpicsinfo><count>1</count> 995 <piclist><item><picmd5sum><![cdata[5a75aaca956d97be686719218f275c6b]]></picmd5sum> 996 </item> 997 </piclist> 998 </sendpicsinfo> 999 </xml>;1000             request = wechatrequest.build(config, postmodel, demomsg);1001             demohandler = new handlerdemo(request);1002             assert.istrue(isokreponse(demohandler, onpushmenu微信相册发图));1003 1004             demomsg = @<xml>1005 <tousername><![cdata[gh_e136c6e50636]]></tousername>1006 <fromusername><![cdata[omghvjngripvsoxg6tux3vz6gldg]]></fromusername>1007 <createtime>1408091189</createtime>1008 <msgtype><![cdata[event]]></msgtype>1009 <event><![cdata[location_select]]></event>1010 <eventkey><![cdata[6]]></eventkey>1011 <sendlocationinfo><location_x><![cdata[23]]></location_x>1012 <location_y><![cdata[113]]></location_y>1013 <scale><![cdata[15]]></scale>1014 <label><![cdata[广州市海珠区客村艺苑路 106号]]></label>1015 <poiname><![cdata[]]></poiname>1016 </sendlocationinfo>1017 </xml>;1018             request = wechatrequest.build(config, postmodel, demomsg);1019             demohandler = new handlerdemo(request);1020             assert.istrue(isokreponse(demohandler, onpushmenu位置选择));1021             #endregion1022 1023 1024             string filldemocontent(string text) => $@<xml>1025  <tousername><![cdata[touser]]></tousername>1026  <fromusername><![cdata[fromuser]]></fromusername>1027  <createtime>1348831860</createtime>1028  <msgtype><![cdata[text]]></msgtype>1029  <content><![cdata[{text}]]></content>1030  <msgid>1234567890123456</msgid>1031  </xml>;1032             demomsg = filldemocontent(123);1033             request = wechatrequest.build(config, postmodel, demomsg);1034             demohandler = new handlerdemo(request);1035             assert.istrue(isokreponse(demohandler, 123));1036 1037             demomsg = filldemocontent(34567);1038             request = wechatrequest.build(config, postmodel, demomsg);1039             demohandler = new handlerdemo(request);1040             assert.istrue(isokreponse(demohandler, 123456));1041 1042             demomsg = filldemocontent(abc);1043             request = wechatrequest.build(config, postmodel, demomsg);1044             demohandler = new handlerdemo(request);1045             assert.istrue(isokreponse(demohandler, abc));1046 1047             demomsg = filldemocontent(bcdefgh);1048             request = wechatrequest.build(config, postmodel, demomsg);1049             demohandler = new handlerdemo(request);1050             assert.istrue(isokreponse(demohandler, abcdef));1051 1052 1053             demomsg = @<xml>1054 <tousername><![cdata[touser]]></tousername>1055 <fromusername><![cdata[fromuser]]></fromusername>1056 <createtime>123456789</createtime>1057 <msgtype><![cdata[event]]></msgtype>1058 <event><![cdata[click]]></event>1059 <eventkey><![cdata[test_menu]]></eventkey>1060 </xml>;1061             request = wechatrequest.build(config, postmodel, demomsg);1062             demohandler = new handlerdemo(request);1063             assert.istrue(isokreponse(demohandler, event点击自定义菜单test));1064 1065             demomsg = @<xml>1066 <tousername><![cdata[touser]]></tousername>1067 <fromusername><![cdata[fromuser]]></fromusername>1068 <createtime>123456789</createtime>1069 <msgtype><![cdata[event]]></msgtype>1070 <event><![cdata[subscribe]]></event>1071 <eventkey><![cdata[qrscene_scanid]]></eventkey>1072 <ticket><![cdata[ticket]]></ticket>1073 </xml>;1074             request = wechatrequest.build(config, postmodel, demomsg);1075             demohandler = new handlerdemo(request);1076             assert.istrue(isokreponse(demohandler, event扫描带参数二维码scanid));1077 1078             demomsg = @<xml>1079 <tousername><![cdata[touser]]></tousername>1080 <fromusername><![cdata[fromuser]]></fromusername>1081 <createtime>123456789</createtime>1082 <msgtype><![cdata[event]]></msgtype>1083 <event><![cdata[scan]]></event>1084 <eventkey><![cdata[scanid]]></eventkey>1085 <ticket><![cdata[ticket]]></ticket>1086 </xml>;1087             request = wechatrequest.build(config, postmodel, demomsg);1088             demohandler = new handlerdemo(request);1089             assert.istrue(isokreponse(demohandler, event扫描带参数二维码scanid));1090 1091         }1092         public class handlerdemo : messagehandler1093         {1094             public handlerdemo(wechatrequest request) : base(request)1095             {1096                 addtextkeywordhandler(new handlerrule(handlercontrast.equal, 123), (req, msg) =>1097                  {1098                      return wechatresponse.responsetext(req, 123);1099                  });1100                 addtextkeywordhandler(new handlerrule(handlercontrast.contain, 456), (req, msg) =>1101                 {1102                     return wechatresponse.responsetext(req, 123456);1103                 });1104                 addtextkeywordhandler(new handlerrule(handlercontrast.superficial, abc), (req, msg) =>1105                 {1106                     return wechatresponse.responsetext(req, abc);1107                 });1108                 addtextkeywordhandler(new handlerrule(handlercontrast.containsuperficial, def), (req, msg) =>1109                 {1110                     return wechatresponse.responsetext(req, abcdef);1111                 });1112 1113                 addeventmenuclickhandler(test_menu, (req, msg) =>1114                 {1115                     return wechatresponse.responsetext(req, event点击自定义菜单test);1116                 });1117                 addeventscanidhandler(scanid, (req, msg) =>1118                 {1119                     return wechatresponse.responsetext(req, event扫描带参数二维码scanid);1120                 });1121             }1122 1123             public override wechatresponse defaultresponsemessage(wechatrequest request)1124             {1125                 return null; //未定义处理的默认方法,不处理则直接返回null以回复空字符串给微信服务器1126             }1127             public override wechatresponse onmessagetext(wechatrequest request, wechatrequest.wechatmessagetext text)1128             {1129                 return wechatresponse.responsetext(request, onmessagetext);1130             }1131             public override wechatresponse onmessageimage(wechatrequest request, wechatrequest.wechatmessageimage image)1132             {1133                 return wechatresponse.responsetext(request, onmessageimage);1134             }1135             public override wechatresponse onmessagevoice(wechatrequest request, wechatrequest.wechatmessagevoice voice)1136             {1137                 return wechatresponse.responsetext(request, onmessagevoice);1138             }1139             public override wechatresponse onmessagelocaltion(wechatrequest request, wechatrequest.wechatmessagelocation location)1140             {1141                 return wechatresponse.responsetext(request, onmessagelocaltion);1142             }1143             public override wechatresponse onmessagevideo(wechatrequest request, wechatrequest.wechatmessagevideo video)1144             {1145                 return wechatresponse.responsetext(request, onmessagevideo);1146             }1147             public override wechatresponse onmessageshortvideo(wechatrequest request, wechatrequest.wechatmessagevideo shortvideo)1148             {1149                 return wechatresponse.responsetext(request, onmessageshortvideo);1150             }1151             public override wechatresponse onmessagelink(wechatrequest request, wechatrequest.wechatmessagelink link)1152             {1153                 return wechatresponse.responsetext(request, onmessagelink);1154             }1155 1156             public override wechatresponse onevent关注(wechatrequest request)1157             {1158                 return wechatresponse.responsetext(request, onevent关注);1159             }1160             public override wechatresponse onevent关注(wechatrequest request, wechatrequest.wechatevent扫描带参数二维码 msg)1161             {1162                 return wechatresponse.responsetext(request, onevent关注-扫描带参数二维码);1163             }1164             public override void onevent取消关注(wechatrequest request)1165             {1166                 throw new notimplementedexception(onevent取消关注);1167             }1168             public override wechatresponse onevent扫描带参数二维码(wechatrequest request, wechatrequest.wechatevent扫描带参数二维码 msg)1169             {1170                 return wechatresponse.responsetext(request, onevent扫描带参数二维码);1171             }1172             public override wechatresponse onevent上报地理位置(wechatrequest request, wechatrequest.wechatevent上报地理位置 msg)1173             {1174                 return wechatresponse.responsetext(request, onevent上报地理位置);1175             }1176             public override wechatresponse onevent点击自定义菜单(wechatrequest request, wechatrequest.wechatevent点击自定义菜单 msg)1177             {1178                 return wechatresponse.responsetext(request, onevent点击自定义菜单);1179             }1180             public override void onevent点击菜单跳转链接(wechatrequest request, wechatrequest.wechatevent点击菜单跳转链接 msg)1181             {1182                 throw new notimplementedexception(onevent点击菜单跳转链接);1183             }1184 1185             public override wechatresponse onpushmenu位置选择(wechatrequest request, wechatrequest.wechatmenupush位置选择 msg)1186             {1187                 return wechatresponse.responsetext(request, onpushmenu位置选择);1188             }1189             public override wechatresponse onpushmenu扫码推事件(wechatrequest request, wechatrequest.wechatmenupush扫码事件 msg)1190             {1191                 return wechatresponse.responsetext(request, onpushmenu扫码推事件);1192             }1193             public override wechatresponse onpushmenu扫码推等待事件(wechatrequest request, wechatrequest.wechatmenupush扫码事件 msg)1194             {1195                 return wechatresponse.responsetext(request, onpushmenu扫码推等待事件);1196             }1197             public override wechatresponse onpushmenu系统拍照发图(wechatrequest request, wechatrequest.wechatmenupush拍照发图 msg)1198             {1199                 return wechatresponse.responsetext(request, onpushmenu系统拍照发图);1200             }1201             public override wechatresponse onpushmenu微信相册发图(wechatrequest request, wechatrequest.wechatmenupush拍照发图 msg)1202             {1203                 return wechatresponse.responsetext(request, onpushmenu微信相册发图);1204             }1205             public override wechatresponse onpushmenu拍照或者相册发图(wechatrequest request, wechatrequest.wechatmenupush拍照发图 msg)1206             {1207                 return wechatresponse.responsetext(request, onpushmenu拍照或者相册发图);1208             }1209 1210             public override void onpush模板消息发送结果(wechatrequest request, wechatrequest.wechatpush模板消息发送结果 msg)1211             {1212                 throw new notimplementedexception(onpush模板消息发送结果);1213             }1214             public override void onpush群发结果(wechatrequest request, wechatrequest.wechatpush群发结果 msg)1215             {1216                 throw new notimplementedexception(onpush群发结果);1217             }1218         }1219 1220     }1221 }
单元测试示例代码


以上就是微信公众平台sdk核心库的详细介绍的详细内容。
滁州分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录