企业微信创建过第三方网页应用后, 在服务商后台-应用管理-网页应用,点击创建的应用后, 会发现, 回调配置中, 数据回调url, 指令回调url部分显示感叹号, 并提示:服务商未相应,将无法获取用户时间回调
如下图:
解决该方法,需要在回调url地址的页面中,处理如下程序, 然后将程序上线, 重新进行校验,即可显示回调正常
回调页面程序:
[C#] 纯文本查看 复制代码
if (Request.HttpMethod.ToUpper() == "GET")
{
string signature = HttpContext.Current.Request.QueryString["msg_signature"];
string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
string nonce = HttpContext.Current.Request.QueryString["nonce"];
string echostr = HttpContext.Current.Request.QueryString["echostr"];
string decryptEchoString = "";
WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(WXConfig.sToken, WXConfig.sEncodingAESKey, WXConfig.sCorpID);
int ret = wxcpt.VerifyURL(signature, timestamp, nonce, echostr, ref decryptEchoString);
if (ret != 0)
{
//有错误的话记录日志
//WriteLogFile("ERR: VerifyURL fail, ret: " + ret);
}
HttpContext.Current.Response.Write(decryptEchoString);
HttpContext.Current.Response.End();
return;
}
[C#] 纯文本查看 复制代码 /验证URL
// @param sMsgSignature: 签名串,对应URL参数的msg_signature
// @param sTimeStamp: 时间戳,对应URL参数的timestamp
// @param sNonce: 随机串,对应URL参数的nonce
// @param sEchoStr: 随机串,对应URL参数的echostr
// @param sReplyEchoStr: 解密之后的echostr,当return返回0时有效
// @return:成功0,失败返回对应的错误码
public int VerifyURL(string sMsgSignature, string sTimeStamp, string sNonce, string sEchoStr, ref string sReplyEchoStr)
{
int ret = 0;
if (m_sEncodingAESKey.Length != 43)
{
return (int)WXBizMsgCryptErrorCode.WXBizMsgCrypt_IllegalAesKey;
}
ret = VerifySignature(m_sToken, sTimeStamp, sNonce, sEchoStr, sMsgSignature);
if (0 != ret)
{
return ret;
}
sReplyEchoStr = "";
string cpid = "";
try
{
sReplyEchoStr = Cryptography.AES_decrypt(sEchoStr, m_sEncodingAESKey, ref cpid); //m_sReceiveId);
}
catch (Exception)
{
sReplyEchoStr = "";
return (int)WXBizMsgCryptErrorCode.WXBizMsgCrypt_DecryptAES_Error;
}
if (cpid != m_sReceiveId)
{
sReplyEchoStr = "";
return (int)WXBizMsgCryptErrorCode.WXBizMsgCrypt_ValidateCorpid_Error;
}
return 0;
}
程序上线后, 点击编辑, 进入编辑页面后,点击申请校验
验证通过的话,会出现下图, 表示校验通过:
点击确定并返回, 页面显示如下:
再次点击应用进入后,会发现,页面上的 红色感叹号已经全部消失, 可以进行后续测试使用了
|