? ???? ??? ???? WeChat ?? ?? ?? ? ??? ? ???? ???? ??? ?????. (1) ???(???) ?? (2) ???? ?? ?? ??(4) ???? ????? ?????. (5) ?? ???? ????.
1 ???(???) ??
?? WeChat ???? ?? ???? ???? ???? WeChat ??? ?? ???? ???? ???? WeChat ???? XML ???? POST???. ???(???) ??? ???? ??? ?? ?? ?? URL? ??? ? ?? ???? ?????.
1.1 ??? ?? ????
??? ???? ?? ?? WeChat ???? ?? ?? ??? ?? ???? ?? ????? ????. ?? ?? ???? WeChat ??? ?? ???? ????? ???. (??) ???? ?? ???? ?? ?? ???? ?????.
?? ? ?? ???? ?? ??? ?? ??? ????.
1.2 ?? ???
?? ????? ?? ??? ???, ???, ??? ?? ??? ?? ??? ????.
?? ?? ???? ??? ? ?? ??? ??? ? ????. ??? ??? ?? ?? ?????.
消息類型 | 是否事件 | 能夠被動回復(fù) | 備注 |
文本 | × | √ | ? |
圖片 | × | √ | ? |
聲音 | × | √ | ? |
視頻 | × | 未知 | 接收不到視頻消息,不知道是否能被動回復(fù) |
地理位置 | × | √ | ? |
鏈接 | × | √ | ? |
訂閱 | √ | √ | ? |
取消訂閱 | √ | × | ? |
掃描二維碼 | √ | × | ? |
上報地理位置 | √ | × | ? |
點擊菜單拉取消息 | √ | √ | ? |
點擊菜單跳轉(zhuǎn)鏈接 | √ | × | ? |
點擊菜單掃碼推 | √ | × | ? |
點擊菜單掃碼等待回復(fù) | √ | √ | ? |
點擊菜單系統(tǒng)發(fā)圖 | √ | 未知 | 接收不到系統(tǒng)發(fā)圖事件;微信服務(wù)器會發(fā)送圖片消息,可回復(fù) |
點擊菜單拍照或相冊發(fā)圖 | √ | × | 微信服務(wù)器會發(fā)送圖片消息,可回復(fù) |
點擊菜單微信發(fā)圖 | √ | × | 微信服務(wù)器會發(fā)送圖片消息,可回復(fù) |
點擊菜單選擇地理位置 | √ | × | 微信服務(wù)器會發(fā)送地理位置消息,可回復(fù) |
推送群發(fā)消息結(jié)果 | √ | × | ? |
推送發(fā)送模板消息結(jié)果 | √ | × | ? |
1.3 ?? ???
?? ???? ??? ??? ??? ????.
2 ?? ??? ?????. ???
?? ?? ??? ?? ????? ??? ?? ? ?? ?? ?? ? ?? ???? ?? ??? ???? ????.
Utility.CheckSignature ???? ??? ??? ???? ???? ? ?????.
??? ??? ????:
/// <summary> /// 驗證消息的有效性 /// </summary> /// <param name="context"></param> /// <returns>如果消息有效,返回true;否則返回false。</returns> private bool Validate(HttpContext context) { string username = RequestEx.TryGetQueryString("username"); //在接口配置的URL中加入了username參數(shù),表示哪個微信公眾號 AccountInfo account = AccountInfoCollection.GetAccountInfo(username); if (account == null) return false; string token = account.Token; string signature = RequestEx.TryGetQueryString("signature"); string timestamp = RequestEx.TryGetQueryString("timestamp"); string nonce = RequestEx.TryGetQueryString("nonce"); if (string.IsNullOrWhiteSpace(signature) || string.IsNullOrWhiteSpace(timestamp) || string.IsNullOrWhiteSpace(nonce)) return false; return xrwang.weixin.PublicAccount.Utility.CheckSignature(signature, token, timestamp, nonce); } 驗證消息真實性
??? ?? ??
3 ??? ?? ??
??? ??? ???? ?? ??, XML ??? ??? ???? ?? ??? ??? ?? ???? ?? RequestMessageHelper ???? ???? ? ??? ?????.
RequestMessageHelper helper = new RequestMessageHelper(context.Request); if(helper.Message != null) { //消息解析成功,對它進(jìn)行處理 }
???? ????? ?? ??? ? helper.Message? ??? ?? ??? RequestBaseMessage? ??? ? ????. MsgType ? Event ???(???) ??? ?? ??? ?? ???? ?????. ?:
RequestBaseMessage bm=helper.Message; switch(bm.MsgType) { case RequestMessageTypeEnum.text: //文本消息 HandleTextMessage((RequestTextMessage)bm); break; case RequestMessageTypeEnum.image: //圖片消息 HandleImageMessage((RequestImageMessage)bm); break; //處理其他消息 case RequestMessageTypeEnum.event: //事件 RequestEventMessage ev=(RequestEventMessage)bm; switch(ev.Event) { case RequestEventTypeEnum.subscribe: //訂閱 HandleSubscribeMessage((RequestSubscribeMessage)ev); break; case RequestEventTypeEnum.unsubscribe: //取消訂閱 HandleUnsubscribeMessage((RequestUnsubscribeMessage)ev); break; //處理其他事件 } break; default: break; }
??? ?? ??? ?? ??? ??? ?? ??? ?????: http://git.oschina.net/xrwang2/xrwang.weixin.PublicAccount /blob/master/PublicAccount /RequestMessage/RequestMessageHelper.cs
4 ?? ?? ???
WeChat ???? ???(???)? ??? ? ??( ???) 5? ?? ???? ?????. ?? ? ???? ?? ??? ? 48?? ??? ?? ??? ???? ??? ?? ????.
?? ResponseXxxMessage? ???? ?? ToXml ???? ???? ?? ??? ??? ?????.
?? ?? ???? ?? ??? ????.
/// <summary> /// 處理微信的POST請求 /// </summary> /// <param name="context"></param> /// <returns>返回xml響應(yīng)</returns> private string HandlePost(HttpContext context) { RequestMessageHelper helper = new RequestMessageHelper(context.Request); if (helper.Message != null) { ResponseBaseMessage responseMessage = HandleRequestMessage(helper.Message); return responseMessage.ToXml(helper.EncryptType); } else return string.Empty; } /// <summary> /// 處理請求消息,返回響應(yīng)消息 /// </summary> /// <returns>返回響應(yīng)消息</returns> private ResponseBaseMessage HandleRequestMessage(RequestBaseMessage requestMessage) { ResponseTextMessage response = new ResponseTextMessage(requestMessage.FromUserName, requestMessage.ToUserName, DateTime.Now, string.Format("自動回復(fù),請求內(nèi)容如下:\r\n{0}", requestMessage)); return response; }
5 ?? ??? ???
??? ???? ?? ?? ??? ?? ??? ??? ???, ?? ??? ???, ??? ??? ??? ?? ??? ??? ? ????. ??? ??? ?? ???? ??? ???????.
? ??? .net WeChat ?? ?? ?? ?? ? ???? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

PHP? ? ?? ? ?? ? ?????, ?? WeChat ??? ?? ???? ?? ?? ???? ?????. ??? ?? ? ?? ??? ???? WeChat ??? PHP? ???? ???? ????. PHP? ??? ?? ???? ?? ?? ???? ?????. WeChat ???? ??? ??? ? ???? ??? ??? ???? ?? ??? ?? ??? ?????. ??? ? ??? ??? ?? ???? ?? ??? ?? ???? ??? ? ?? ????? ??? ? ? ????.

WeChat ?? ??? ??? ? ?? ??? ?? ?????. ?? ??? ????? ?? ??? ??? ??? ? ?? ?? ????, ??? ?? ? ?? ??? ?? ??? ????? ???. ? ????? PHP? ???? WeChat ?? ??? ???? ??? ?????. WeChat ?? ?? ??? ???? ?? WeChat ?? ?? ??? ??? ???. WeChat ?? ?????? WeChat ?? ??, ?? ?? ? ?? ??? ???? ??? API ??? ???? ???. PHP ??? ???? ???? ???? WeChat?? ????? ???? PH? ???? ???.

WeChat? ??? ?? ?? ? ?? ??? WeChat? ??? ??? ???? ??????. WeChat ?? ??? ??? ??? WeChat ???? ???? ??? ?? ? ?????. ??? ?? ???? ????? ??? ?????? ?? ??? ?? ??? ?? ?????. ??? WeChat ?? ??? ??? ???? ?? ?? ?????. ? ????? PHP? ???? WeChat ?? ??? ??? ???? ??? ?????. 1. ?? ?? WeChat ?? ??? ??? ????? ?? ?? ??? ???? ???. PHP WeChat ?? ??? ??? ?? ?? ?? ?? ??: Sub

WeChat? ?? ???? ?? ? ??? ??? ??? ?? ??? ? ?????. ??? ???? ??? ?? ?? ? ?? ???? WeChat ???? ???? ??? ??????. WeChat ???? ??? ? ?? ???? ??? ?????. ?? ??? ?? ?? ? ? ???? ?? WeChat ??? PHP ??? ??? ? ????. 1. PHP ?? WeChat ?? PHP? ? ?? ???? ?? ???? ?? ?? ?? ? ???? ?????. WeChat ?? ????? ???? ?? ?????? ???? PHP ??? ???? WeChat? ??? ? ????.

WeChat ?? ?? ???? ??? ?? ??? ???? ???? ? ? ???? ??? ? ??? ?? ?? ??? ?????. ? ????? PHP? ???? WeChat ??? ?? ?? ??? ???? ??? ?????. 1. WeChat ???? openid? ?????. WeChat ??? ?? ?? ??? ???? ?? ?? ???? openid? ???? ???. WeChat ?? ??? ??? ? ??? ??? ?? openid? ?? ?? ???? ?????. ??? ??? ???? ?? ??? ?? ???? ?? ? ????.

WeChat? ???? ??? ?? ? ??? ?????? ??? ???, WeChat? ??? ??? ??? ?? ??? ??? ??? ??? ?? ????. ??? ?? WeChat? ??? ????? ???? ?? ??? ??? ???? WeChat ??? ???? ?? ?? ???? ????. ? ? ?? ?? ??? ?? ?? ?????. ???? PHP ??????? ?? ??? ?? ??? ??? ???? ???? ??? ??? ?????. 1. WeChat ?? ??? ??? ?? ??? ?????. ?? ??? ?? ??? ???? ??? ?????.

PHP? ???? WeChat ?? ??? ???? ?? WeChat ?? ??? ?? ??? ?? ? ?? ??? ?? ??? ??? ????, ????? ???? ? ??? PHP? ???? WeChat ?? ??? ??? ?? ????. ? ????? PHP? ???? WeChat ?? ??? ???? ???? ??? ?????. 1??: WeChat ?? ??? ??? ??? ????. WeChat ?? ?? ??? ???? ?? WeChat ?? ??? ??? ??? ???? ???. ???? ?? ??? WeChat ?? ??? ?? ????? ?????.

???? ??? ??? ??? ???? WeChat? ?? ? ??? ???? ???? ?? ??? ?????. ?? ? ?????? ??? WeChat ??? PHP? ???? ??? ?? ???? ??? ?????. ? ????? ?? WeChat ??? PHP? ???? ??? ?? ?? ?? ???? ?? ? ? ?? ??? ?????. 1. ?? ?? ?? WeChat? ???? ?? ?? ?? ?? ??? ???? ???. ??, PHP ?? ??? WeChat ?? ???? ???? ???.
