文章出處

最近做對接微信閃開發票-微信發票名片,里面有個接收用戶提交抬頭接口是微信推送事件到公眾號后臺,該事件將發送至開發者填寫的URL(登錄公眾平臺進入【開發者中心設置】)。 開發者可通過事件推送完成數據統計、用戶身份識別等操作。

微信服務器在五秒內收不到響應會斷掉連接,并且重新發起請求,總共重試三次。關于重試的消息排重,推薦使用FromUserName + CreateTime 排重。假如服務器無法保證在五秒內處理并回復,可以直接回復空串,微信服務器不會對此作任何處理,并且不會發起重試。

 

作為一名微信公眾號開發者,別人進入你的微信公眾號,肯定會看見某些網頁,或者給你發某些信息,你需要實時自動回復,所以你需要一個24小時為用戶服務的服務器。我們所要填寫的url就是你提供的服務器的地址,前提是這個服務器的地址你要能夠訪問,且能夠控制。而token是用來驗證的。

 

/// <summary>
    /// 微信用戶提交發票抬頭-事件推送頁面
    /// </summary>
    public class WechartTitleController : Controller
    {
        // GET: WechartTitle
        public void Index()
        {
            #region 驗證token
            string echoString = Request.QueryString["echoStr"];
            string signature = Request.QueryString["signature"];
            string timestamp = Request.QueryString["timestamp"];
            string nonce = Request.QueryString["nonce"];

            if (CheckSignature())
            {
                if (!string.IsNullOrEmpty(echoString))
                {
                    Response.Write(echoString);
                }
            } 
            #endregion
        }
        private bool CheckSignature()
        {
            string Token = "12345678";
            string signature = Request.QueryString["signature"];
            string timestamp = Request.QueryString["timestamp"];
            string nonce = Request.QueryString["nonce"];
            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;
            }
        }
    }

 

checkSignature是驗證簽名的,當開發者在公眾平臺提交URL和token時,微信服務器將發送GET請求到填寫的URL上,并且帶上四個參數:

參數描述
signature 微信加密簽名 
timestamp 時間戳 
nonce 隨機數 
echostr 隨機字符串

開發者在自己的網頁內請公眾平臺的請求做簽名驗證,通過之后輸出echostr字段即可。至于具體的驗簽規則,可以看checkSignature的實現,這里不再贅述。


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()