예제 #1
0
        /// <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);
            }
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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
            });
        }
예제 #5
0
        /// <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 },
            });
        }
예제 #6
0
        /// <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);
            }
        }
예제 #7
0
        /// <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);
        }