問題:微信公眾賬號 開發過程中配置 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
