public OutputData DoAction(IInputData input) { if (!input.IsPost) { int appId = input.QueryString["AppId"].Value <int>(); string returnStr = WeCorpUtil.VerifyURL(appId, input.QueryString[QueryStringConst.QS_MSG_SIGNATURE], input.QueryString[QueryStringConst.QS_TIMESTAMP], input.QueryString[QueryStringConst.QS_NONCE], input.QueryString[QueryStringConst.QS_ECHO_STR]); if (!string.IsNullOrEmpty(returnStr)) { return(OutputData.Create(returnStr)); } return(OutputData.Create("验名错误")); } else { if (input.PostObject == null) { return(OutputData.Create(string.Empty)); } ReceiveMessage message = input.PostObject.Convert <ReceiveMessage>(); BaseSendMessage result = WeixinToolkitSettings.Current.CorpReply(message); EncodeReplyMessage reply; if (result != null) { reply = WeCorpUtil.EncryptMsg(message.AgentId, result.ToXml(), input.QueryString[QueryStringConst.QS_TIMESTAMP], input.QueryString[QueryStringConst.QS_NONCE]); } else { reply = null; } WeixinToolkitSettings.Current.Log(message); if (result != null) { return(OutputData.CreateToolkitObject(reply)); } else { return(OutputData.Create(string.Empty)); } } }
public static string DecryptMsg(EncodeReceiveMessage message, string msgSignature, string timeStamp, string nonce) { string encryptMsg = message.Encrypt; var setting = WeixinSettings.Current; //verify signature if (WeCorpUtil.VerifySignature(setting.Token, timeStamp, nonce, encryptMsg, msgSignature)) { string appId; string sMsg = Cryptography.AesDecrypt(encryptMsg, setting.EncodingAESKey, out appId); return(sMsg); } return(null); }
private static JsAccessToken CreateToken() { string url; if (WeixinSettings.Current.Mode == WeixinMode.Normal) { url = WeUtil.GetUrl(WeConst.JS_TICKET); } else { url = WeCorpUtil.GetCorpUrl(WeCorpConst.JS_TICKET, WeixinSettings.Current.CorpUserManagerSecret); } JsAccessToken token = ReadToken(url, WeConst.JS_MODE, new JsAccessToken()); SaveToken(token); return(token); }