/// <summary> /// 发送消息 /// </summary> /// <param name="msg"></param> /// <param name="from"></param> /// <param name="to"></param> /// <param name="type"></param> public void SendMsg(string msg, string from, string to, int type) { string msg_json = "{{" + "\"BaseRequest\":{{" + "\"DeviceID\" : \"e" + NumHelper.RandomNum(15) + "\"," + "\"Sid\" : \"{0}\"," + "\"Skey\" : \"{6}\"," + "\"Uin\" : \"{1}\"" + "}}," + "\"Msg\" : {{" + "\"ClientMsgId\" : {8}," + "\"Content\" : \"{2}\"," + "\"FromUserName\" : \"{3}\"," + "\"LocalID\" : {9}," + "\"ToUserName\" : \"{4}\"," + "\"Type\" : {5}" + "}}," + "\"rr\" : {7}" + "}}"; Cookie sid = BaseService.GetCookie("wxsid"); Cookie uin = BaseService.GetCookie("wxuin"); if (sid != null && uin != null) { msg_json = string.Format(msg_json, sid.Value, uin.Value, msg, from, to, type, LoginService.SKey, DateTime.Now.Millisecond, DateTime.Now.Millisecond, DateTime.Now.Millisecond); byte[] bytes = BaseService.Request(StaticUrl.Url_SendMsg + sid.Value + "&pass_ticket=" + LoginService.Pass_Ticket, MethodEnum.POST, msg_json); string send_result = Encoding.UTF8.GetString(bytes); } }
/// <summary> /// 微信同步 /// </summary> /// <returns></returns> public JObject WeChatSync() { string sync_json = "{{\"BaseRequest\" : {{\"DeviceID\":\"e" + NumHelper.RandomNum(15) + "\",\"Sid\":\"{1}\", \"Skey\":\"{5}\", \"Uin\":\"{0}\"}},\"SyncKey\" : {{\"Count\":{2},\"List\":[{3}]}},\"rr\" :{4}}}"; Cookie sid = BaseService.GetCookie("wxsid"); Cookie uin = BaseService.GetCookie("wxuin"); if (sid != null && uin != null) { string sync_keys = ""; foreach (KeyValuePair <string, string> p in _syncKey) { sync_keys += "{\"Key\":" + p.Key + ",\"Val\":" + p.Value + "},"; } sync_keys = sync_keys.TrimEnd(','); sync_json = string.Format(sync_json, uin.Value, sid.Value, _syncKey.Count, sync_keys, TimeHelper.GetTimeStamp(), LoginService.SKey); StaticUrl.Url_Sync_ext = string.Format(StaticUrl.Url_Sync_ext, sid.Value, LoginService.SKey, LoginService.Pass_Ticket); byte[] bytes = BaseService.Request(StaticUrl.Url_Sync + StaticUrl.Url_Sync_ext, MethodEnum.POST, sync_json); string sync_str = Encoding.UTF8.GetString(bytes); JObject sync_result = JsonConvert.DeserializeObject(sync_str) as JObject; if (sync_result["SyncKey"]["Count"].ToString() != "0") { _syncKey.Clear(); foreach (JObject key in sync_result["SyncKey"]["List"]) { _syncKey.Add(key["Key"].ToString(), key["Val"].ToString()); } } return(sync_result); } return(null); }
/// <summary> /// 发送动态码 /// </summary> /// <param name="loginName"></param> /// <param name="type"></param> /// <returns></returns> public async Task <Resp> SendCode(string loginName, RegLoginType type) { var code = NumHelper.RandomNum(); var notifyMsg = new NotifyReq { targets = new List <string>() { loginName }, body_paras = new Dictionary <string, string> { { "code", code } }, t_code = type == RegLoginType.Mobile ? DirConfigKeys.plugs_notify_sms_portal_tcode : DirConfigKeys.plugs_notify_email_portal_tcode }; var res = await InsContainer <INotifyServiceProxy> .Instance.Send(notifyMsg); if (!res.IsSuccess()) { return(res ?? new Resp().WithResp(RespTypes.UnKnowSource, "未知类型!")); } var key = string.Concat(CacheKeys.Portal_Passcode_ByLoginName, loginName); await CacheHelper.SetAbsoluteAsync(key, code, TimeSpan.FromMinutes(2)); return(res); }
/// <summary> /// 获取授权token相关授权信息 /// todo 扩展每个AppId独立的加密秘钥 /// </summary> /// <param name="newIdentity"></param> /// <param name="plat"></param> /// <returns></returns> private PortalTokenResp GeneratePortalToken(UserIdentity newIdentity, SocialPlatform plat) { var tenantId = CoreAppContext.Identity.tenant_id; var tokenStr = string.Concat(newIdentity.id, "|", tenantId, "|", (int)newIdentity.auth_type, "|", (int)plat, "|", NumHelper.RandomNum(6)); var token = CoreUserContext.GetToken(_portalTokenSecret, tokenStr); return(new PortalTokenResp { token = token, data = newIdentity }); }
/// <summary> /// 获取js唤起支付的参数信息 /// </summary> /// <param name="payConfig"></param> /// <returns></returns> public Dictionary <string, string> GetJsPreParas(WechatPayConfig payConfig) { var timeStamp = DateTime.Now.ToUtcSeconds().ToString(); var appId = payConfig.app_id; var nonceStr = NumHelper.RandomNum(8); var package = $"prepay_id={prepay_id}"; var waitSignData = $"{appId}\n{timeStamp}\n{nonceStr}\n{package}\n"; var privateCert = WechatCertificateHelper.GetMchPrivateCertificate(payConfig); var signature = WechatCertificateHelper.Sign(privateCert.private_key, waitSignData); return(new Dictionary <string, string>() { //{"appId", appId}, { "timeStamp", timeStamp }, { "nonceStr", nonceStr }, { "package", package }, { "signType", "RSA" }, { "paySign", signature }, }); }
/// <summary> /// 微信同步检测 /// </summary> /// <returns></returns> public string WeChatSyncCheck() { string sync_key = ""; foreach (KeyValuePair <string, string> p in _syncKey) { sync_key += p.Key + "_" + p.Value + "%7C"; } sync_key = sync_key.TrimEnd('%', '7', 'C'); Cookie sid = BaseService.GetCookie("wxsid"); Cookie uin = BaseService.GetCookie("wxuin"); if (sid != null && uin != null) { StaticUrl.Url_SyncCheck_ext = string.Format(StaticUrl.Url_SyncCheck_ext, sid.Value, uin.Value, sync_key, TimeHelper.GetTimeStamp(), LoginService.SKey.Replace("@", "%40"), "e" + NumHelper.RandomNum(15)); byte[] bytes = BaseService.Request(StaticUrl.Url_SyncCheck + StaticUrl.Url_SyncCheck_ext + DateTime.Now.Ticks, MethodEnum.GET); if (bytes != null) { return(Encoding.UTF8.GetString(bytes)); } else { return(null); } } else { return(null); } }
/// <summary> /// 微信初始化 /// </summary> /// <returns></returns> public JObject WeChatInit() { string init_json = "{{\"BaseRequest\":{{\"Uin\":\"{0}\",\"Sid\":\"{1}\",\"Skey\":\"\",\"DeviceID\":\"e" + NumHelper.RandomNum(15) + "\"}}}}"; Cookie sid = BaseService.GetCookie("wxsid"); Cookie uin = BaseService.GetCookie("wxuin"); if (sid != null && uin != null) { init_json = string.Format(init_json, uin.Value, sid.Value); byte[] bytes = BaseService.Request(StaticUrl.Url_Init + TimeHelper.GetTimeStamp() + "&pass_ticket=" + LoginService.Pass_Ticket, MethodEnum.POST, init_json); string init_str = Encoding.UTF8.GetString(bytes); JObject init_result = JsonConvert.DeserializeObject(init_str) as JObject; if (init_result != null) { foreach (JObject syncKey in init_result["SyncKey"]["List"]) //同步键值 { _syncKey.Add(syncKey["Key"].ToString(), syncKey["Val"].ToString()); } } return(init_result); } return(null); }