Exemplo n.º 1
0
        /// <summary>
        /// GET方式请求URL,并返回T类型
        /// </summary>
        /// <typeparam name="T">接收JSON的数据类型</typeparam>
        /// <param name="sm"></param>
        /// <param name="url"></param>
        /// <param name="encoding"></param>
        /// <param name="maxJsonLength">允许最大JSON长度</param>
        /// <returns></returns>
        public T GetJson <T>(Stream sm, string url, Encoding encoding = null, int?maxJsonLength = null)
        {
            using (WebClient client = new WebClient())
            {
                client.Encoding = Encoding.UTF8;
                string returnText = client.DownloadString(url);

                JavaScriptSerializer js = new JavaScriptSerializer();
                if (maxJsonLength.HasValue)
                {
                    js.MaxJsonLength = maxJsonLength.Value;
                }

                if (returnText.Contains("errcode"))
                {
                    //可能发生错误
                    WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                    if (errorResult.errcode != ReturnCode.请求成功)
                    {
                        var str =
                            string.Format("\r\n微信请求发生错误!错误代码:{0},说明:{1}",
                                          (int)errorResult.errcode, errorResult.errmsg, null, errorResult, url);
                        //发生错误
                        byte[] aa = Encoding.Default.GetBytes(str);
                        sm.Write(aa, 0, aa.Length);
                    }
                }

                T result = js.Deserialize <T>(returnText);

                return(result);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 动态点赞通知
        /// </summary>
        /// <param name="userId">接收者(用户)的 userId</param>
        /// <param name="date">点赞时间,4小时制时间格式(支持+年月日)	例如:15:01,或:2019年10月1日 15:01</param>
        /// <param name="page"></param>
        public static CommonResult SendGoodNotice(string userId, string date, string page)
        {
            CommonResult result = new CommonResult();
            User         user   = new UserApp().GetUserById(userId);

            if (user != null && !string.IsNullOrEmpty(date))
            {
                MessageTemplates template = messageTemplatesService.GetByMessageType("RemarkNotice");

                if (!string.IsNullOrEmpty(template.WxAppletSubscribeTemplateId) && template.UseInWxApplet)
                {
                    MemberSubscribeMsg memberSubscribeMsg = memberSubscribeMsgService.GetByMessageTemplateIdAndUser(template.Id, userId, "WxApplet");
                    if (memberSubscribeMsg.SubscribeStatus == "accept")
                    {
                        UserOpenIds userOpenIds = new UserApp().GetUserOpenIdById(userId, "yuebon.openid.wxapplet");
                        if (userOpenIds != null)
                        {
                            WxJsonResult wxJsonResult = WxAppletSubscribeMessage.SendGoodNotice(userOpenIds.OpenId, template.WxAppletTemplateId, user.NickName, date, page);
                            result.ErrCode = wxJsonResult.errcode.ToString();
                            result.ErrMsg  = wxJsonResult.errmsg;
                        }
                    }
                }
                else
                {
                    result.Success = true;
                    result.ErrCode = "用户拒绝或未订阅";
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        private async Task <WxJsonResult> UpdateFileToWx(MpMediaArticleDto article, int mpid, string mediaID)
        {
            if (article == null)
            {
                return new WxJsonResult {
                           errcode = Senparc.Weixin.ReturnCode.POST的数据包为空, errmsg = "实体对象不存在", P2PData = null
                }
            }
            ;
            var account = _accountRepository.FirstOrDefault(m => m.Id == mpid);
            //var access_token = Senparc.Weixin.MP.Containers.AccessTokenContainer.TryGetAccessToken(account.AppId, account.AppSecret);
            var access_token = _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret).Result;
            var news         = new NewsModel()
            {
                title                 = article.Title,
                author                = article.Author,
                digest                = article.Description,
                content               = article.WxContent,
                content_source_url    = article.AUrl,
                show_cover_pic        = article.ShowPic,
                thumb_media_id        = article.PicMediaID,
                need_open_comment     = article.EnableComment,
                only_fans_can_comment = article.OnlyFansComment
            };
            WxJsonResult result = null;

            return(result = await MediaApi.UpdateForeverNewsAsync(access_token, mediaID, 0, news, Senparc.Weixin.Config.TIME_OUT));
        }
Exemplo n.º 4
0
        public override JsonResult Delete(string sIds)
        {
            if (!string.IsNullOrEmpty(sIds))
            {
                try
                {
                    string[] arrID = sIds.Split(',');
                    foreach (string strID in arrID)
                    {
                        if (string.IsNullOrEmpty(strID))
                        {
                            continue;
                        }
                        MailListApi.DeleteDepartment(GetToken(), strID);
                    }
                }
                catch (ErrorJsonResultException ex)
                {
                    WxJsonResult jsResult = ex.JsonResult;
                    string       errorMsg = ((ReturnCode_QY)jsResult.errcode).ToString();
                    return(ErrorNotification(errorMsg));
                }
            }
            else
            {
                //_BaseService.Delete(objModal);
            }

            _cacheManager.Remove("DepartmentList");
            return(Json(doJson(null), JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        /// 异步GetJsonA
        /// </summary>
        /// <param name="url"></param>
        /// <param name="encoding"></param>
        /// <param name="maxJsonLength">允许最大JSON长度</param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="ErrorJsonResultException"></exception>
        public static async Task <T> GetJsonAsync <T>(string url, Encoding encoding = null, int?maxJsonLength = null)
        {
            string returnText = await GetAsync(url, encoding);

            JavaScriptSerializer js = new JavaScriptSerializer();

            if (maxJsonLength.HasValue)
            {
                js.MaxJsonLength = maxJsonLength.Value;
            }

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new Exception(string.Format("微信请求发生错误!错误代码:{0},说明:{1}",
                                                      (int)errorResult.errcode, errorResult.errmsg));
                }
            }

            T result = js.Deserialize <T>(returnText);

            return(result);
        }
Exemplo n.º 6
0
        public IActionResult ImgSecCheck(string filePath)
        {
            CommonResult result = new CommonResult();

            try
            {
                var          fileDic = new Dictionary <string, string>();
                WxJsonResult res     = WxAppApi.ImgSecCheck(WxOpenAppId, filePath);
                if (res.errcode == ReturnCode.请求成功)
                {
                    result.ErrCode = ErrCode.successCode;
                    result.Success = true;
                    result.ResData = res;
                }
                else
                {
                    result.ErrCode = ErrCode.failCode;
                    result.ErrMsg  = "图片含有违法违规内容,请更换图片";
                    result.ResData = res;
                }
            }
            catch (Exception ex)
            {
                Log4NetHelper.Error("代码生成异常", ex);
                result.ErrMsg  = "代码生成异常:" + ex.Message;
                result.ErrCode = ErrCode.failCode;
            }
            return(ToJsonContent(result));
        }
Exemplo n.º 7
0
        public JsonResult PostDept(DepartmentList objModal, int?Id)
        {
            //验证错误
            if (!BeforeAddOrUpdate(objModal, Id))
            {
                return(Json(GetErrorJson(), JsonRequestBehavior.AllowGet));
            }

            //objModal.id = int.Parse(Request["deptid"]);
            try
            {
                if (Id.HasValue && Id.Value > 0)
                {
                    MailListApi.UpdateDepartment(GetToken(), objModal);
                }
                else
                {
                    MailListApi.CreateDepartment(GetToken(), objModal);
                }
            }
            catch (ErrorJsonResultException ex)
            {
                WxJsonResult jsResult = ex.JsonResult;
                string       errorMsg = ((ReturnCode_QY)jsResult.errcode).ToString();
                return(ErrorNotification(errorMsg));
            }

            _cacheManager.Remove("DepartmentList");

            return(Json(doJson(null), JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 8
0
        /// <summary>
        /// GET方式请求URL,并返回T类型
        /// </summary>
        /// <typeparam name="T">接收JSON的数据类型</typeparam>
        /// <param name="url"></param>
        /// <param name="encoding"></param>
        /// <returns></returns>
        public static T GetJson <T>(string url, Encoding encoding = null)
        {
            //  Log4NetLog.Logger.DebugFormat("GetJson:{0}", url);

            string returnText = RequestUtility.HttpGet(url, encoding);

            Log4NetLog.Logger.DebugFormat("GetJson url:{0} Result:{1}", url, returnText);

            // WeixinTrace.SendLog(url, returnText);

            JavaScriptSerializer js = new JavaScriptSerializer();

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    Log4NetLog.Logger.ErrorFormat("{2}\r\n微信请求发生错误!错误代码:{0},说明:{1}",
                                                  (int)errorResult.errcode,
                                                  errorResult.errmsg, url);

                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode, errorResult.errmsg), null, errorResult, url);
                }
            }

            T result = js.Deserialize <T>(returnText);

            return(result);
        }
Exemplo n.º 9
0
        /// <summary>
        /// 异步GetJsonA
        /// </summary>
        /// <param name="url"></param>
        /// <param name="encoding"></param>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        /// <exception cref="ErrorJsonResultException"></exception>
        public static async Task <T> GetJsonAsync <T>(string url, Encoding encoding = null)
        {
            string returnText = await RequestUtility.HttpGetAsync(url, encoding);

            Log4NetLog.Logger.DebugFormat("GetJson url:{0} Result:{1}", url, returnText);

            JavaScriptSerializer js = new JavaScriptSerializer();

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode, errorResult.errmsg), null, errorResult, url);
                }
            }

            T result = js.Deserialize <T>(returnText);

            return(result);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 删除素材
        /// </summary>
        /// <param name="mediaid"></param>
        /// <returns></returns>
        public JsonResult DeleteMedia(string mediaid)
        {
            if (string.IsNullOrWhiteSpace(this._iSiteSettingService.GetSiteSettings().WeixinAppId))
            {
                throw new HimallException("未配置微信公众号");
            }
            if (string.IsNullOrEmpty(mediaid))
            {
                throw new HimallException("素材ID不能为空");
            }
            WxJsonResult wxJsonResult = this._iWXMsgTemplateService.DeleteMedia(mediaid, this.CurrentSiteSetting.WeixinAppId, this.CurrentSiteSetting.WeixinAppSecret);

            if (string.IsNullOrEmpty(wxJsonResult.errmsg))
            {
                return(this.Json((object)new
                {
                    success = false,
                    msg = wxJsonResult.errmsg
                }));
            }
            return(this.Json((object)new
            {
                success = true
            }));
        }
Exemplo n.º 11
0
        /// <summary>
        /// 获取API返回结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="returnText"></param>
        /// <returns></returns>
        public static T GetResult <T>(string returnText)
        {
            //JavaScriptSerializer js = new JavaScriptSerializer();

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = JsonConvert.DeserializeObject <WxJsonResult>(returnText);
                //WxJsonResult errorResult = js.Deserialize<WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode,
                                            errorResult.errmsg),
                              null, errorResult);
                    //LogHelper.PayWeiXinLogInfos(string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                    //                  (int)errorResult.errcode,
                    //                  errorResult.errmsg));
                }
            }

            T result = JsonConvert.DeserializeObject <T>(returnText);

            return(result);
        }
Exemplo n.º 12
0
        public void EditStock(int num, string cardid)
        {
            WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.CardId == cardid);

            if (wXCardLogInfo != null)
            {
                string accessToken = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret);
                if (!string.IsNullOrWhiteSpace(accessToken))
                {
                    CardDetailGetResultJson cardDetailGetResultJson = CardApi.CardDetailGet(accessToken, wXCardLogInfo.CardId, 10000);
                    if (cardDetailGetResultJson != null)
                    {
                        int num1 = num - cardDetailGetResultJson.card.general_coupon.base_info.sku.quantity;
                        if (num1 != 0)
                        {
                            WxJsonResult wxJsonResult = CardApi.ModifyStock(accessToken, wXCardLogInfo.CardId, (num1 > 0 ? num1 : 0), (num1 < 0 ? Math.Abs(num1) : 0), 10000);
                            if (wxJsonResult.errcode != ReturnCode.请求成功)
                            {
                                int num2 = (int)wxJsonResult.errcode;
                                Log.Error("微信同步修改卡券库存失败", new Exception(num2.ToString()));
                            }
                        }
                    }
                }
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// 向需要AccessToken的API发送消息的公共方法
        /// </summary>
        /// <param name="accessToken">这里的AccessToken是通用接口的AccessToken,非OAuth的。如果不需要,可以为null,此时urlFormat不要提供{0}参数</param>
        /// <param name="urlFormat"></param>
        /// <param name="data">如果是Get方式,可以为null</param>
        /// <param name="sendType"></param>
        /// <param name="timeOut">代理请求超时时间(毫秒)</param>
        /// <param name="checkValidationResult"></param>
        /// <param name="jsonSetting"></param>
        /// <returns></returns>
        //[Obsolete("此方法已过期,请使用Senparc.Weixin.CommonAPIs.CommonJsonSend.Send()方法")]
        public static WxJsonResult Send(string accessToken, string urlFormat, object data, CommonJsonSendType sendType = CommonJsonSendType.POST, int timeOut = Config.TIME_OUT, bool checkValidationResult = false, JsonSetting jsonSetting = null/*, int retry40001ErrorTimes = 0*/)
        {
            WxJsonResult result = null;
            try
            {
                result = Senparc.Weixin.CommonAPIs.CommonJsonSend.Send(accessToken, urlFormat, data, sendType, timeOut,
                    checkValidationResult, jsonSetting);
            }
            //catch (ErrorJsonResultException ex)
            //{
            //    if (ex.JsonResult.errcode == ReturnCode.获取access_token时AppSecret错误或者access_token无效 /*40001*/)
            //    {
            //        if (retry40001ErrorTimes == 0)
            //        {
            //            result = Send(accessToken, urlFormat, data, sendType, timeOut, checkValidationResult,
            //                jsonSetting, retry40001ErrorTimes + 1);
            //        }
            //        else if (retry40001ErrorTimes == 1)
            //        {
                        
            //        }

            //    }
            //}
            catch
            {
                throw;
            }
            return result;
        }
Exemplo n.º 14
0
        /// <summary>
        /// GET方式请求URL,并返回T类型
        /// </summary>
        /// <typeparam name="T">接收JSON的数据类型</typeparam>
        /// <param name="url"></param>
        /// <param name="encoding"></param>
        /// <param name="maxJsonLength">允许最大JSON长度</param>
        /// <returns></returns>
        public static T GetJson <T>(string url, Encoding encoding = null, int?maxJsonLength = null)
        {
            string returnText = RequestUtility.HttpGet(url, encoding);

            WeixinTrace.SendLog(url, returnText);

            JavaScriptSerializer js = new JavaScriptSerializer();

            if (maxJsonLength.HasValue)
            {
                js.MaxJsonLength = maxJsonLength.Value;
            }

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode, errorResult.errmsg), null, errorResult, url);
                }
            }

            T result = js.Deserialize <T>(returnText);

            return(result);
        }
Exemplo n.º 15
0
        public static T GetJson <T>(string url, Encoding encoding = null)
        {
            string returnText = HttpUtility.RequestUtility.HttpGet(url, encoding);

            JavaScriptSerializer js = new JavaScriptSerializer();

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode,
                                            errorResult.errmsg),
                              null, errorResult);
                }
            }

            T result = js.Deserialize <T>(returnText);

            return(result);
        }
Exemplo n.º 16
0
        public ActionResult CreateMenuFromJson(string token, string fullJson)
        {
            //TODO:根据"conditionalmenu"判断自定义菜单

            var apiName = "使用JSON更新";

            try
            {
                GetMenuResultFull resultFull = Newtonsoft.Json.JsonConvert.DeserializeObject <GetMenuResultFull>(fullJson);

                //重新整理按钮信息
                WxJsonResult     result      = null;
                IButtonGroupBase buttonGroup = null;

                buttonGroup = CommonAPIs.CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu;
                result      = CommonAPIs.CommonApi.CreateMenu(token, buttonGroup);

                var json = new
                {
                    Success = result.errmsg == "ok",
                    Message = "菜单更新成功。" + apiName
                };
                return(Json(json));
            }
            catch (Exception ex)
            {
                var json = new { Success = false, Message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) };
                return(Json(json));
            }
        }
Exemplo n.º 17
0
        public async Task <APIResultDto> CreateMenu(GetMenuResultFull fullJson)
        {
            try
            {
                //GetMenuResultFull resultFull = Newtonsoft.Json.JsonConvert.DeserializeObject<GetMenuResultFull>(fullJson);
                //重新整理按钮信息
                WxJsonResult     result      = null;
                IButtonGroupBase buttonGroup = null;

                buttonGroup = CommonApi.GetMenuFromJsonResult(fullJson, new ButtonGroup()).menu;
                var accessToken = await AccessTokenContainer.TryGetAccessTokenAsync(AppId, AppSecret);

                result = CommonApi.CreateMenu(accessToken, buttonGroup);

                return(new APIResultDto()
                {
                    Code = 0, Msg = "上传菜单成功", Data = result
                });
            }
            catch (Exception ex)
            {
                return(new APIResultDto()
                {
                    Code = 901, Msg = "更新菜单失败", Data = ex.Message
                });
            }
        }
Exemplo n.º 18
0
        public void AsyncSendTemplateMessageTestForBookOptmize()
        {
            WxJsonResult finalResult = null;

            Task.Factory.StartNew(async() =>
            {
                var openId = "olPjZjsXuQPJoV0HlruZkNzKc91E";//消息目标用户的OpenId

                //实际生产环境中,用户信息应该从数据库或缓存中读取
                var userInfo = await UserApi.InfoAsync(_appId, openId);

                var data = new TemplateMessage_PaySuccessNotice(
                    "您的订单已经支付", userInfo.nickname,
                    "1234567890", 88.ToString("c"),
                    "模板消息测试商品",
                    "更详细信息,请到Senparc.Weixin SDK官方网站(http://zs.sasu.edu.cn)查看!\r\n这条消息使用的是优化过的方法,且不带Url参数。使用异步方法。");

                var result = await TemplateApi.SendTemplateMessageAsync(_appId, openId, data);

                //调用客服接口显示msgId
                finalResult = await CustomApi.SendTextAsync(_appId, openId, "上一条模板消息的MsgID:" + result.msgid);

                Assert.AreEqual(ReturnCode.请求成功, result.errcode);
            });
            while (finalResult == null)
            {
            }
        }
Exemplo n.º 19
0
        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="OpenId">OpenId</param>
        /// <param name="content">发送的内容</param>
        /// <param name="token">不填则自动获取</param>
        /// <returns></returns>
        public bool SendMessage(string OpenId, string content, string token = "")
        {
            if (string.IsNullOrEmpty(token))
            {
                token = GetAccessToken();
            }
            if (!string.IsNullOrEmpty(token))
            {
                try
                {
                    WxJsonResult errorResult = Custom.SendText(token, OpenId, content);
                    if (errorResult.errcode != ReturnCode.请求成功)
                    {
                        return(false);
                    }
                }
                catch (Exception e)
                {
                    Log4NetImpl.Write("SendMessage:失败" + e.Message);
                    return(false);
                }

                return(true);
            }
            return(false);
        }
Exemplo n.º 20
0
        /// <summary>
        /// 获取Post结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="returnText"></param>
        /// <returns></returns>
        public static T GetResult <T>(string returnText)
        {
#if NET35 || NET40 || NET45
            JavaScriptSerializer js = new JavaScriptSerializer();
#endif

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
#if NET35 || NET40 || NET45
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
#else
                WxJsonResult errorResult = Newtonsoft.Json.JsonConvert.DeserializeObject <WxJsonResult>(returnText);
#endif
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode,
                                            errorResult.errmsg),
                              null, errorResult);
                }
            }

#if NET35 || NET40 || NET45
            T result = js.Deserialize <T>(returnText);
#else
            T result = Newtonsoft.Json.JsonConvert.DeserializeObject <T>(returnText);
#endif

            //TODO:加入特殊情况下的回调处理

            return(result);
        }
Exemplo n.º 21
0
        public void GetJsonTest()
        {
            return; //已经通过,但需要连接远程测试,太耗时,常规测试时暂时忽略。 TODO:迁移到 CO2NET

            {
                var url    = "http://apistore.baidu.com/microservice/cityinfo?cityname=苏州";
                var result = Senparc.CO2NET.HttpUtility.Get.GetJson <dynamic>(url);
                Assert.IsNotNull(result);
                Assert.AreEqual(0, result["errNum"]);
                Assert.AreEqual("苏州", result["retData"]["cityName"]);

                Console.WriteLine(result.GetType());
            }

            {
                var url =
                    Config.ApiMpHost + "/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
                try
                {
                    //这里因为参数错误,系统会返回错误信息
                    WxJsonResult resultFail = Senparc.CO2NET.HttpUtility.Get.GetJson <WxJsonResult>(url);
                    Assert.Fail(); //上一步就应该已经抛出异常
                }
                catch (ErrorJsonResultException ex)
                {
                    //实际返回的信息(错误信息)
                    Assert.AreEqual(ex.JsonResult.errcode, ReturnCode.合法的APPID);
                }
            }
        }
Exemplo n.º 22
0
        /// <summary>
        /// 获取Post结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="returnText"></param>
        /// <returns></returns>
        public static T GetResult <T>(string returnText)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();

            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = js.Deserialize <WxJsonResult>(returnText);
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误
                    throw new ErrorJsonResultException(
                              string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                                            (int)errorResult.errcode,
                                            errorResult.errmsg),
                              null, errorResult);
                }
            }

            T result = js.Deserialize <T>(returnText);

            //TODO:加入特殊情况下的回调处理


            return(result);
        }
Exemplo n.º 23
0
        private bool DoEdit( )
        {
            bool   result = false;
            int    id     = MyCommFun.Str2Int(hidId.Value);
            string name   = txtTitle.Text.Trim();

            Model.wx_userweixin weixin = GetWeiXinCode();
            WeiXinCRMComm       wcr    = new WeiXinCRMComm();
            string err         = "";
            string accessToken = wcr.getAccessToken(weixin.id, out err);

            if (err.Trim() != "")
            {
                JscriptMsg(err, "", "Error");
                return(false);
            }
            WxJsonResult wjr = Groups.Update(accessToken, id, name);

            if (wjr.errmsg == "ok")
            {
                result = true;
            }
            if (result)
            {
                BLL.wx_crm_group   gBll  = new BLL.wx_crm_group();
                Model.wx_crm_group group = gBll.GetModel(id);
                group.name = name;
                gBll.Update(group);
            }

            return(result);
        }
Exemplo n.º 24
0
        public virtual async Task UploadKfHeading(int mpid, string fileUrl, string kfAccount)
        {
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpid
            });

            var access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret);

            WxJsonResult responseModel = null;
            var          fileName      = fileUrl.Substring(fileUrl.LastIndexOf("/") + 1);

            try
            {
                Logger.Info($"客服头像文件名称{fileName}");
                responseModel = JsonConvert.DeserializeObject <WxJsonResult>(await HttpHelper.HttpPost($"https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token={access_token}&kf_account={kfAccount}", fileUrl, fileName));
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    responseModel = JsonConvert.DeserializeObject <WxJsonResult>(await HttpHelper.HttpPost($"https://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token={access_token}&kf_account={kfAccount}", fileUrl, fileName));
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }
        }
Exemplo n.º 25
0
        private bool DoAdd()
        {
            bool   result = false;
            string name   = txtTitle.Text.Trim();

            Model.wx_userweixin weixin = GetWeiXinCode();
            WeiXinCRMComm       wcr    = new WeiXinCRMComm();
            string err         = "";
            string accessToken = wcr.getAccessToken(weixin.id, out err);

            if (err.Trim() != "")
            {
                JscriptMsg(err, "", "Error");
                return(false);
            }
            WxJsonResult wjr = Groups.Create(accessToken, name);

            if (wjr.errcode.ToString() == "请求成功")
            {
                result = true;
            }
            if (result)
            {
                BLL.wx_crm_group   gBll  = new BLL.wx_crm_group();
                Model.wx_crm_group group = new Model.wx_crm_group();
                group.wid   = weixin.id;
                group.id    = ((Senparc.Weixin.MP.AdvancedAPIs.CreateGroupResult)(wjr)).group.id;
                group.name  = name;
                group.count = 0;
                gBll.Add(group);
            }
            return(result);
        }
Exemplo n.º 26
0
        public void Unavailable(string cardid, string code)
        {
            WXCardCodeLogInfo nullable = context.WXCardCodeLogInfo.FirstOrDefault((WXCardCodeLogInfo d) => (d.CardId == cardid) && (d.Code == code));

            if (nullable != null)
            {
                WXCardLogInfo wXCardLogInfo = context.WXCardLogInfo.FirstOrDefault((WXCardLogInfo d) => d.Id == nullable.CardLogId.Value);
                if (wXCardLogInfo != null)
                {
                    string accessToken = GetAccessToken(wXCardLogInfo.AppId, wXCardLogInfo.AppSecret);
                    if (!string.IsNullOrWhiteSpace(accessToken))
                    {
                        WxJsonResult wxJsonResult = CardApi.CardUnavailable(accessToken, nullable.Code, nullable.CardId, 10000);
                        if (wxJsonResult.errcode != ReturnCode.请求成功)
                        {
                            int num = (int)wxJsonResult.errcode;
                            Log.Error("微信同步修改卡券库存失败", new Exception(string.Concat(num.ToString(), ":", wxJsonResult.errmsg)));
                        }
                    }
                }
                nullable.CodeStatus = -1;
                nullable.UsedTime   = new DateTime?(DateTime.Now);
                context.SaveChanges();
            }
        }
Exemplo n.º 27
0
        /// <summary>
        /// send image to openid
        /// </summary>
        /// <param name="openid"></param>
        /// <param name="fileByte"></param>
        /// <returns></returns>
        public static async Task <bool> SendMessageAsync(string openid, string message, int maxAttamptTime = 3)
        {
            try
            {
                WxJsonResult sendRst = null;
                for (int i = 0; i < maxAttamptTime; i++)
                {
                    sendRst = await CustomApi.SendTextAsync(_appId, openid, message);

                    if (sendRst != null && sendRst.errcode == 0)
                    {
                        break;
                    }
                }

                if (sendRst == null || sendRst.errcode != 0)
                {
                    StallApplication.SysError($"[MSG]failed sending to wechat {openid}:{sendRst.errcode},{sendRst.errmsg}");
                    return(false);
                }
                return(true);
            }
            catch (Exception ex)
            {
                StallApplication.SysError($"[MSG]failed sending to wechat {openid}:", ex);
                return(false);
            }
        }
Exemplo n.º 28
0
        /// <summary>
        /// 获取Post结果
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="returnText"></param>
        /// <returns></returns>
        public static T GetResult <T>(string returnText)
        {
            if (returnText.Contains("errcode"))
            {
                //可能发生错误
                WxJsonResult errorResult = SerializerHelper.GetObject <WxJsonResult>(returnText);

                ErrorJsonResultException ex = null;
                if (errorResult.errcode != ReturnCode.请求成功)
                {
                    //发生错误,记录异常
                    ex = new ErrorJsonResultException(
                        string.Format("微信Post请求发生错误!错误代码:{0},说明:{1}",
                                      (int)errorResult.errcode,
                                      errorResult.errmsg),
                        null, errorResult);
                }

                if (Config.ThrownWhenJsonResultFaild && ex != null)
                {
                    throw ex;//抛出异常
                }
            }

            T result = SerializerHelper.GetObject <T>(returnText);

            //TODO:加入特殊情况下的回调处理

            return(result);
        }
Exemplo n.º 29
0
        public void SubmitForm(string menuData)
        {
            string appId         = WxOperatorProvider.Provider.GetCurrent().AppId;
            var    specification = new Specification <WxMenu>(obj => obj.AppId == appId);
            WxMenu wxMenu        = wxMenuRepository.Find(specification);

            if (wxMenu == null)
            {
                wxMenu              = new WxMenu();
                wxMenu.Id           = IdWorkerHelper.GenId64();
                wxMenu.AppId        = appId;
                wxMenu.MenuData     = menuData;
                wxMenu.CreationTime = System.DateTime.Now;
                wxMenu.DeletedMark  = false;
                wxMenuRepository.Add(wxMenu);
            }
            else
            {
                wxMenu.MenuData             = menuData;
                wxMenu.LastModificationTime = System.DateTime.Now;
                wxMenuRepository.Update(wxMenu);
            }
            JObject jo     = (JObject)JsonConvert.DeserializeObject(menuData);
            JObject menu   = (JObject)jo["menu"];
            JArray  button = (JArray)menu["button"];

            Debug.WriteLine(menu.ToString());
            AccessTokenResult accessTokenResult = AccessTokenContainer.GetAccessTokenResult(appId);

            WxJsonResult wxJsonResult = CommonApi.CreateMenu(accessTokenResult.access_token, menu);
        }
Exemplo n.º 30
0
        public async Task <WxJsonResult> DeleteCustom(int mpId, string kfAccount)
        {
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpId
            });

            var access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret);

            WxJsonResult result = null;

            try
            {
                result = await CustomServiceApi.DeleteCustomAsync(access_token, kfAccount);
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    result = await CustomServiceApi.DeleteCustomAsync(access_token, kfAccount);
                }
                catch (Exception e)
                {
                    throw new UserFriendlyException(e.Message);
                }
            }
            return(result);
        }
 public ErrorJsonResultException(string message, Exception inner, WxJsonResult jsonResult)
     : base(message, inner)
 {
     JsonResult = jsonResult;
 }