問題:微信公眾賬號 開發過程中配置 token 提示 驗證失敗如下圖:點擊修改配置:填寫相關url與token(自定義):點擊提交,會出現出現這種情況,主要是對相關參數不熟悉,要瞭解url與token的關係url可以訪問:頁面中有Token的定義。url地址如:http://www.***.com/...
問題:微信公眾賬號 開發過程中配置 token 提示 驗證失敗
如下圖:
點擊修改配置:
填寫相關url與token(自定義):點擊提交,會出現
出現這種情況,主要是對相關參數不熟悉,要瞭解url與token的關係
url可以訪問:頁面中有Token的定義。url地址如:http://www.***.com/pay/wx_token.aspx
Token:根據說明自定義即可,要與url對應頁面上的Token一致。
示例文件:
using System; using System.Web.Security; using System.Web.UI; using WxPayAPI; namespace Alipay { public partial class wx_token : Page { /// <summary> /// 要與基本配置中的Token一致 /// </summary> public string Token = "Token"; protected void Page_Load(object sender, EventArgs e) { string echoStr = Request.QueryString["echoStr"]; Log.Debug("Token", "測試輸出: echoStr = " + echoStr); if ( CheckSignature() && !string.IsNullOrEmpty(echoStr)) { Response.Write(echoStr); Response.End(); } } /// <summary> /// 驗證微信簽名 /// </summary> /// * 將token、timestamp、nonce三個參數進行字典序排序 /// * 將三個參數字元串拼接成一個字元串進行sha1加密 /// * 開發者獲得加密後的字元串可與signature對比,標識該請求來源於微信。 /// <returns></returns> private bool CheckSignature() { string signature = Request.QueryString["signature"]; string timestamp = Request.QueryString["timestamp"]; string nonce = Request.QueryString["nonce"]; Log.Debug("Token", "測試輸出: signature = " + signature); Log.Debug("Token", "測試輸出: timestamp = " + timestamp); Log.Debug("Token", "測試輸出: nonce = " + nonce); string[] arrTmp = { Token, timestamp, nonce }; Array.Sort(arrTmp); string tmpStr = string.Join("", arrTmp); tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1"); if (tmpStr != null) { tmpStr = tmpStr.ToLower(); return tmpStr == signature; } return false; } } }
示例文件中所用類庫可以從公眾號支付開發文檔頁面下載:https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=11_1