예제 #1
0
        public void Register()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var testData    = new RegisterData()
            {
                name         = "苏震巍",
                phone_number = "13913718816",
                email        = "*****@*****.**",
                //industry_id = RegisterData.ConvertIndustryId(IndustryId.其它_其它),
                qualification_cert_urls =
                    new List <string>()
                {
                    "http://shp.qpic.cn/wx_shake_bus/0/1428565236d03d864b7f43db9ce34df5f720509d0e/0",
                    "http://shp.qpic.cn/wx_shake_bus/0/1428565236d03d864b7f43db9ce34df5f720509d0e/0"
                },
                apply_reason = "test"
            };
            var result = ShakeAroundApi.Register(accessToken, testData, IndustryId.代运营商_代运营商);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
        public static string GetWeChatAccessToken()
        {
            string access_token      = "";
            var    wechatAccessToken = CacheHelper.GetCache("WeChatAccessToken");

            if (wechatAccessToken != null && !string.IsNullOrEmpty(wechatAccessToken.ToString()))
            {
                access_token = wechatAccessToken.ToString();
                return(access_token);
            }
            else
            {
                access_token = AccessTokenContainer.TryGetAccessToken(ApiConfigConst.WeChatAppID, ApiConfigConst.WeChatAppSecret);
                if (!string.IsNullOrEmpty(access_token))
                {
                    //设置30天过期
                    CacheHelper.SetCache("WeChatAccessToken", access_token, 30 * 24 * 60);
                }
            }
            return(access_token);
        }
예제 #3
0
 /// <summary>
 /// 修改自定义菜单
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public ActionResult UpdateMenu(string id)
 {
     try
     {
         var model = id.JsonToObj <MenuModel>();
         if (model != null)
         {
             var bg     = GetSendMenuJson(model.list);
             var result = CommonApi.CreateMenu(AccessTokenContainer.TryGetAccessToken("wxd4d7bd7f8fdc8156", "0482ace1cf1b9dcf702ba4366be65db8"), bg);
             if (result != null)
             {
                 return(Content(result.errcode.ToStringEx()));
             }
         }
         return(Content("1"));
     }
     catch (Exception err)
     {
         return(Content(err.Message));
     }
 }
예제 #4
0
 private string CreateMenuWithButtonGroup()
 {
     try
     {
         var         accessToken = AccessTokenContainer.TryGetAccessToken(AppId, AppSecret);
         ButtonGroup bg          = new ButtonGroup();
         // 添加 Order 菜单
         bg.button.Add(new SingleClickButton()
         {
             name = "Order",
             key  = "OrderClick",
             type = MenuButtonType.view.ToString(), //默认已经设为此类型,这里只作为演示
         });
         var result = CommonApi.CreateMenu(accessToken, bg);
         return(result.ToString());
     }
     catch (Exception e)
     {
         return(e.StackTrace.ToString());
     }
 }
예제 #5
0
        //public NotifyWeChatQueueDto Get(int id)
        //{
        //  var entity = _notifyWeChatAppService.QueueGet(id);
        //  return entity.MapTo<NotifyWeChatQueueDto>();
        //}

        public void PostCreateNotifyWeChatQueue(NotifyWeChatQueueDto dto)
        {
            var queue = dto.MapTo <NotifyWeChatQueue>();

            queue.QueueStatus = QueueStatus.Wait;
            _notifyWeChatAppService.QueueSave(queue);
            var config      = _notifyWeChatAppService.ConfigGet(dto.NotifyApplicationId);
            var accessToken = AccessTokenContainer.TryGetAccessToken(config.AppId, config.Appsecret);
            var result      = _notifyWeChatAppService.Send(accessToken, queue.Body);

            if (result.errcode == ReturnCode.请求成功)
            {
                queue.QueueStatus = QueueStatus.Success;
            }
            else
            {
                queue.QueueStatus = QueueStatus.Fail;
            }
            queue.QueueStatusCode = result.errcode.ToString();
            _notifyWeChatAppService.QueueSave(queue);
        }
예제 #6
0
        public IActionResult SendText()
        {
            var          accessToken = AccessTokenContainer.TryGetAccessToken(mWeChatSettings.AppID, mWeChatSettings.AppSecret);
            const string URL_FORMAT  = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}";

            var data = new
            {
                touser  = "******",
                msgtype = "text",
                text    = new
                {
                    content = "welcome to yongkang有人的"
                }
            };
            var rv = CommonJsonSend.Send(accessToken, URL_FORMAT, data);

            return(new ContentResult()
            {
                Content = rv.errmsg
            });
        }
예제 #7
0
        public static T Do <T>(Func <string, T> fun, string appId, string appSecret, bool retryIfFaild = true)
            where T : WxJsonResult
        {
            T result = null;

            try
            {
                var accessToken = AccessTokenContainer.GetToken(appId, appSecret, Innocellence.Weixin.MP.CommonAPIs.CommonApi.GetToken, false);
                result = fun(accessToken);
            }
            catch (ErrorJsonResultException ex)
            {
                if (retryIfFaild && ex.JsonResult.errcode == ReturnCode.获取access_token时AppSecret错误或者access_token无效)
                {
                    //尝试重新验证
                    var accessToken = AccessTokenContainer.GetToken(appId, appSecret, Innocellence.Weixin.MP.CommonAPIs.CommonApi.GetToken, true);
                    result = Do(fun, appId, appSecret, false);
                }
            }
            return(result);
        }
예제 #8
0
        public async Task <object> GetMPAccessToken(string appId, string appsecret)
        {
            MPAccessTokenInfo result = new MPAccessTokenInfo();

            try
            {
                DateTime dateTime          = DateTime.Now;
                var      accessTokenResult = await AccessTokenContainer.GetAccessTokenResultAsync(_options.Value.AppId);

                var accessTokenBag = BaseContainer <AccessTokenBag> .TryGetItem(_options.Value.AppId);

                result.access_token = accessTokenResult.access_token;
                DateTime expireTime = accessTokenBag.AccessTokenExpireTime.DateTime;
                result.expires_in = (long)(expireTime - dateTime).TotalSeconds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(result);
        }
예제 #9
0
 public ResultJSON <Store> Post([FromBody] Store model)
 {
     if (r.Has(s => s.Name == model.Name))
     {
         return new ResultJSON <Store> {
                    Code = 0, Msg = "操作失败,已存在" + model.Name
         }
     }
     ;
     r.CurrentUser = UserName;
     //推送到“系统设置”
     this.option.系统设置AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.系统设置Secret);
     MassApi.SendTextCard(option.系统设置AccessToken, option.系统设置AgentId, $"{UserName}新增了{model.Name}"
                          , $"<div class=\"gray\">时间:{DateTime.Now.ToString("yyyy-MM-dd hh:mm")}</div>"
                          , "https://vue.car0774.com/#/oilstore/store", toUser: "******");
     return(new ResultJSON <Store>
     {
         Code = 0,
         Data = r.Insert(model)
     });
 }
        public async Task <ResultJSON <MoveStore> > UpdateInOutFact([FromBody] MoveStore m)
        {
            r.CurrentUser = UserName;

            var result = r.UpdateInOutFact(m);

            //推送到“油仓情况”
            this.option.油仓情况AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.油仓情况Secret);
            await MassApi.SendTextCardAsync(option.油仓情况AccessToken, option.油仓情况AgentId, "转仓生产完工,已更新油仓油量"
                                            , $"<div class=\"gray\">单号:{result.Name}</div>" +
                                            $"<div class=\"normal\">施工人:{result.LastUpdatedBy}</div>" +
                                            $"<div class=\"normal\">转出:{result.OutStoreName} - {result.OutFact}升</div>" +
                                            $"<div class=\"normal\">转入:{result.InStoreName} - {result.InFact}升</div>"
                                            , $"https://vue.car0774.com/#/oilstore/inout", toUser : "******");

            return(new ResultJSON <MoveStore>
            {
                Code = 0,
                Data = result
            });
        }
예제 #11
0
        public static string GetToken()
        {
            SiteSettings masterSettings = SettingsManager.GetMasterSettings();

            if (string.IsNullOrEmpty(masterSettings.WeixinAppId) || string.IsNullOrEmpty(masterSettings.WeixinAppSecret))
            {
                return("");
            }
            try
            {
                return(AccessTokenContainer.TryGetToken(masterSettings.WeixinAppId, masterSettings.WeixinAppSecret, false));
            }
            catch (Exception ex)
            {
                IDictionary <string, string> dictionary = new Dictionary <string, string>();
                dictionary.Add("WeixinAppId", masterSettings.WeixinAppId);
                dictionary.Add("WeixinAppSecret", masterSettings.WeixinAppSecret);
                Globals.WriteExceptionLog(ex, dictionary, "WxFansGetAccessToken");
                return("");
            }
        }
예제 #12
0
        private string souideaKey = WebConfigurationManager.AppSettings["WeixinAgentWeiweihiKey"]; //SouideaKey专门用于对接www.souidea.com平台,获取方式见:http://www.souidea.com/ApiDocuments/Item/25#51
#endif

        public CustomMessageHandler(Stream inputStream, string token, string appid, string secrect, int maxRecordCount = 0)
            : base(inputStream, maxRecordCount)
        {
            //这里设置仅用于测试,实际开发可以在外部更全局的地方设置,
            //比如MessageHandler<MessageContext>.GlobalWeixinContext.ExpireMinutes = 3。
            WeixinContext.ExpireMinutes = 3;

            try
            {
                if (!AccessTokenContainer.CheckRegistered(appid))
                {
                    AccessTokenContainer.Register(appid, secrect);
                }

                _tokenRes = AccessTokenContainer.GetTokenResult(appid); //CommonAPIs.CommonApi.GetToken(appId, appSecret);
            }
            catch
            {
                FileLogUtility.Inform(string.Format("获取到 token 失败, appid: {0},secret: {1}。", appid, secrect));
            }
        }
예제 #13
0
        public static void DownloadDatafromWX()
        {
            QYConfig.RegistWX();
            var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId);
            var result      = MailListApi.GetDepartmentList(accessToken);

            for (int i = 0; i < result.department.Count; i++)
            {
                DepartmentDA.AddDepartment(result.department[i].id.ToString(), result.department[i].parentid.ToString(), result.department[i].name, "1", "1");
            }
            QYDepartmentBL d = GetAllDepartments();
            var            l = MailListApi.GetDepartmentMemberInfo(accessToken, 1, 1, 0);

            for (int i = 0; i < l.userlist.Count; i++)
            {
                QYMemberDA     mda = new QYMemberDA();
                QYDepartmentBL p   = QYDepartmentBL.GetByWXID(l.userlist[i].department[0].ToString());
                mda.AddMember(l.userlist[i].userid, l.userlist[i].name, l.userlist[i].position, l.userlist[i].mobile, l.userlist[i].email, l.userlist[i].weixinid,
                              l.userlist[i].avatar, l.userlist[i].status.ToString(), "1", p.ID.ToString());
            }
        }
예제 #14
0
        // GET: Admin/Menu
        public ActionResult Index()
        {
            if (Session["CurrentAccountID"] == null)
            {
                return(RedirectToAction("Select", "OfficialAccount", new { Area = "Admin" }));
            }
            Guid accountid = Guid.Parse(Session["CurrentAccountID"].ToString());

            ViewBag.AccountID = accountid;
            OfficialAccount_BLL bll = new OfficialAccount_BLL();
            OfficialAccount     oa  = bll.Get(a => a.AccountID == accountid);

            ViewBag.AppID = oa.AppID;
            string accessToken = AccessTokenContainer.TryGetAccessToken(oa.AppID, oa.AppSecret);

            GetMenuResult result = CommonApi.GetMenu(accessToken);


            return(View(result));
            //return Json(result,JsonRequestBehavior.AllowGet);
        }
예제 #15
0
        public void SetAppTest()
        {
            var accessToken = AccessTokenContainer.GetToken(_corpId, base._corpSecret);

            SetAppPostData date = new SetAppPostData()
            {
                agentid = "2",//"100" + DateTime.Now.ToString("yyMMddHHMM"),
                report_location_flag = "1",
                //logo_mediaid = "1muvdK7W8cjLfNqj0hWP89-CEhZNOVsktCE1JHSTSNpzTf7cGOXyDin_ozluwNZqi",
                name            = "单元测试添加" + DateTime.Now.ToString("yyMMddHHMM"),
                description     = "test",
                redirect_domain = "https://sdk.weixin.senparc.com",
                //isreportenter = 0,
                isreportuser = 1,
                home_url     = "weixin.senparc.com"
            };

            var result = AppApi.SetApp(accessToken, date);

            Assert.AreEqual(result.errcode, ReturnCode_Work.请求成功);
        }
예제 #16
0
        public void BatchGetUserInfoTest()
        {
            List <BatchGetUserInfoData> data = new List <BatchGetUserInfoData>();

            //改成自己公众号的OpenId
            var openids = new[] { "oxRg0uLsnpHjb8o93uVnwMK_WAVw", "oxRg0uFnf66iXoS_ScybtgjUgK28", "oxRg0uKDWyD8yxgLEFuJFRsI_LQ0" };

            foreach (var item in openids)
            {
                data.Add(new BatchGetUserInfoData()
                {
                    openid = item,
                    lang   = Language.zh_CN.ToString()
                });
            }

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = UserApi.BatchGetUserInfo(accessToken, data);

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
예제 #17
0
        private void InitAppKey()
        {
            if (new[] { appId, secret }.Any(string.IsNullOrEmpty))
            {
                lock (initLock)
                {
                    if (new[] { appId, secret }.Any(string.IsNullOrEmpty))
                    {
                        var account = YunClient.Instance.Execute(new GetWxAccountsRequest {
                            PageNum = 1, PageSize = 1
                        }).Accounts[0];
                        appId          = account.AppId;
                        secret         = account.Secret;
                        wxtoken        = account.AccessToken;
                        encodingAESKey = account.Encodingaeskey;

                        AccessTokenContainer.Register(appId, secret);
                    }
                }
            }
        }
예제 #18
0
        public string GetAccessToken(bool refresh = false)
        {
            var appId     = WEIXIN_APPID_FIRST;
            var appSecret = WEIXIN_APPSECRET_FIRST;
            var cachekey  = "weixinToken" + appId;
            var cache     = System.Web.HttpRuntime.Cache.Get(cachekey);

            string accessToken = (string)cache;

            if (refresh)
            {
                accessToken = "";
            }
            if (string.IsNullOrEmpty(accessToken))
            {
                //AccessTokenContainer.Register(appId, appSecret);
                accessToken = AccessTokenContainer.TryGetAccessToken(appId, appSecret);
                System.Web.HttpRuntime.Cache.Insert(cachekey, accessToken, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromHours(1));
            }
            return(accessToken);
        }
예제 #19
0
        public IActionResult Auth(string code, string state)
        {
            AccessTokenContainer.RegisterAsync(_wxSetting.WeixinAppId, _wxSetting.WeixinAppSecret, "doctor_platform");
            string state1 = IdHelper.ObjectId();            //随机数,用于识别请求可靠性

            HttpContext.Session.SetString("State", state1); //储存随机数到Session
            string signUrl = Request.AbsoluteUri();

            // LoggerHelper.Info(signUrl);
            // MemoryCacheHelper.Set("test", "nihao", TimeSpan.FromMinutes(1));
            // var keys= MemoryCacheHelper.GetCacheKeys();
            if (!string.IsNullOrEmpty(code))
            {
                var result = OAuthApi.GetAccessToken(_wxSetting.WeixinAppId, _wxSetting.WeixinAppSecret, code);
                if (result.errcode != ReturnCode.请求成功)
                {
                    return(Content("错误:" + result.errmsg));
                }
                //LoggerHelper.Info(result.openid);
                //尝试获取用户信息
                //OAuthUserInfo userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid);
                //string json = userInfo.ToJson();
                //LoggerHelper.Info(json);
                //Task.Factory.StartNew(() => GetUserInfo(result.access_token, result.openid));
                string key         = "{access_token}:wxtoken";
                var    redisClient = RedisFactory.GetRedisClient();
                redisClient.Set(key, result, result.expires_in);

                RequestHelper.SetOpenId(result.openid, result.expires_in);
                string homeUrl = $"/wechat/index.html?openId={result.openid}";
                return(Redirect(homeUrl));
            }
            else
            {
                // signUrl = signUrl + "/WxExpert/Index";snsapi_userinfo snsapi_base
                var url = string.Format("https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope=snsapi_base&state={2}#wechat_redirect",
                                        _wxSetting.WeixinAppId, signUrl.UrlEncode(), state1);
                return(Redirect(url));
            }
        }
예제 #20
0
        /// <summary>
        /// 删除本部门
        /// </summary>
        /// <param name="errMsg">返回錯誤信息</param>
        /// <returns>返回操作結果</returns>
        public bool DeleteDepartment(string UserID, ref string errMsg, List <QYDepartmentBL> list = null)
        {
            try
            {
                QYConfig.RegistWX();
                var accessToken = AccessTokenContainer.GetToken(QYConfig.CorpId);
                var result      = MailListApi.DeleteDepartment(accessToken, DepartmentID);
                if (result.errcode.ToString() == "请求成功")
                {
                    if (DepartmentDA.DeleteDepartmentByPkID(ID.ToString(), UserID))
                    {
                        DeleteBy   = UserID;
                        DeleteDate = DateTime.Now;
                        if (list != null)
                        {
                            list.Remove(this);
                        }

                        return(true);
                    }
                    else
                    {
                        errMsg = "数据库刪除部门失败";
                        return(false);
                    }
                }
                else
                {
                    Logger.Log4Net.Error(result.errcode + ":" + result.errmsg);
                    errMsg = result.errcode + ":" + result.errmsg;
                }
            }
            catch (Exception e)
            {
                Logger.Log4Net.Error("Delete department error:" + e);
                errMsg = "操作失敗:" + e.Message;
                return(false);
            }
            return(false);
        }
예제 #21
0
        /// <summary>
        /// 回复消息
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> ReplayMessage(long messageId, string content)
        {
            var message = await messageManager.GetMessageByIdAsync(messageId);

            //构建发送消息
            MessageParameter sendMessage = new MessageParameter
            {
                ToUserId     = message.FromUserId,
                Type         = EMsgType.Text,
                Content      = content,
                FromUserName = message.ToUserName,
                ToUserName   = message.FromUserName,
                ToUserNick   = message.FromUserNick,
                CreateTime   = DateTime.Now
            };
            //获取accessToken
            var accessToken = AccessTokenContainer.TryGetAccessToken(WeixinConfig.AppId, WeixinConfig.AppSecret);
            //发送消息
            var data = new
            {
                touser  = sendMessage.ToUserName,
                msgtype = "text",
                text    = new
                {
                    content = content
                }
            };
            var result = await CommonJsonSend.SendAsync(accessToken, WeixinConfig.URL_FORMAT, data);

            if (result.errcode != ReturnCode.请求成功)
            {
                return(Json(new ReturnResult {
                    IsSuccess = false, Message = result.errmsg
                }));
            }
            //保存发送消息
            await messageManager.SaveAsync(sendMessage);

            return(Json(new ReturnResult()));
        }
예제 #22
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,
                              IOptions <SenparcWeixinSetting> senparcWeixinSetting)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();

                // Browser Link is not compatible with Kestrel 1.1.0
                // For details on enabling Browser Link, see https://go.microsoft.com/fwlink/?linkid=840936
                // app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();

            app.UseSession();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

            #region 微信相关

            //注册微信
            AccessTokenContainer.Register(senparcWeixinSetting.Value.WeixinAppId, senparcWeixinSetting.Value.WeixinAppSecret);

            //Senparc.Weixin SDK 配置
            Senparc.Weixin.Config.DefaultSenparcWeixinSetting = senparcWeixinSetting.Value;

            #endregion
        }
        public ResultJSON <Product> ModifyProdPrice([FromBody] List <Product> list)
        {
            r.CurrentUser = UserName;
            int count = r.ModifyProdPrice(list);

            if (count == 0)
            {
                return new ResultJSON <Product> {
                           Code = 501, Msg = "提交的单价没有变化"
                }
            }
            ;
            if (count == -1)
            {
                return new ResultJSON <Product> {
                           Code = 501, Msg = "保存出错,请联系开发人员"
                }
            }
            ;
#if DEBUG
            //推送到“水上计划”
            this.option.水上计划AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.水上计划Secret);
            MassApi.SendTextCard(option.水上计划AccessToken, option.水上计划AgentId, $"{UserName}修改了{count}项商品限价"
                                 , $"<div class=\"gray\">时间:{DateTime.Now.ToString("yyyy-MM-dd hh:mm")}</div>"
                                 , "https://", toUser: "******");
            //推送到“陆上计划”
            this.option.陆上计划AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.陆上计划Secret);
            MassApi.SendTextCard(option.陆上计划AccessToken, option.陆上计划AgentId, $"{UserName}修改了{count}项商品限价"
                                 , $"<div class=\"gray\">时间:{DateTime.Now.ToString("yyyy-MM-dd hh:mm")}</div>"
                                 , "https://", toUser: "******");
            //推送到“销售单”
            this.option.销售单AccessToken = AccessTokenContainer.TryGetToken(this.option.CorpId, this.option.销售单Secret);
            MassApi.SendTextCard(option.销售单AccessToken, option.销售单AgentId, $"{UserName}修改了{count}项商品限价"
                                 , $"<div class=\"gray\">时间:{DateTime.Now.ToString("yyyy-MM-dd hh:mm")}</div>"
                                 , "https://", toUser: "******");
#endif
            return(new ResultJSON <Product> {
                Code = 0
            });
        }
예제 #24
0
        public void GetAccessTokenTest()
        {
            ICache cache = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            //ICache cache = new RedisCache(new Microsoft.Extensions.Caching.Redis.RedisCache(new Microsoft.Extensions.Caching.Redis.RedisCacheOptions() { Configuration = "127.0.0.1:6379,password=123456" }));
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(new RestClient(), weixinSetting);
            var           container             = new AccessTokenContainer(cache, oAuthInterface);
            List <string> tokens = new List <string>();

            for (int i = 0; i < 10; i++)
            {
                tokens.Add(container.GetAccessToken());
            }
            foreach (var item in tokens)
            {
                Console.WriteLine(item);
            }
        }
예제 #25
0
        public JsonResult getWinxin(string pluginId, string destination)
        {
            long uid         = ShopApplication.GetShopManagers(CurrentSellerManager.ShopId);
            var  siteSetting = SiteSettingApplication.SiteSettings;

            //微信二维码
            if (string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) || string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret))
            {
                throw new HimallException("未配置公众号参数");
            }
            var token = AccessTokenContainer.TryGetToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret);

            SceneModel scene = new SceneModel(QR_SCENE_Type.Binding)
            {
                Object = uid.ToString()
            };
            SceneHelper helper  = new SceneHelper();
            var         sceneid = helper.SetModel(scene);
            var         ticket  = Senparc.Weixin.MP.AdvancedAPIs.QrCode.QrCodeApi.Create(token, 300, sceneid);

            return(Json(new { success = true, msg = "成功", ticket = ticket.ticket, Sceneid = sceneid }));
        }
예제 #26
0
        public void CreateMenuTest()
        {
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(new RestClient(), weixinSetting);
            ICache cache = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            AccessTokenContainer container = new AccessTokenContainer(cache, oAuthInterface);
            var    accessToken             = container.GetAccessToken();
            string menu = @"
 {
     ""button"":[
     {
                ""type"":""click"",
          ""name"":""今日歌曲"",
          ""key"":""V1001_TODAY_MUSIC""
      },
      {
                ""name"":""菜单"",
           ""sub_button"":[
           {	
               ""type"":""view"",
               ""name"":""搜索"",
               ""url"":""http://www.soso.com/""
            },
            {
               ""type"":""click"",
               ""name"":""赞一下我们"",
               ""key"":""V1001_GOOD""
            }]
       }]
 }
";
            MenuInterfaceCaller menuInterfaceCaller = new MenuInterfaceCaller(new RestClient());

            Console.WriteLine(menuInterfaceCaller.CreateMenu(accessToken, menu));
        }
예제 #27
0
        public ActionResult ApplyWithDraw()
        {
            var siteSetting = _iSiteSettingService.GetSiteSettings();

            if (string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) || string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret))
            {
                throw new HimallException("未配置公众号参数");
            }

            var token = AccessTokenContainer.TryGetToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret);

            SceneModel scene = new SceneModel(QR_SCENE_Type.WithDraw)
            {
                Object = CurrentUser.Id.ToString()
            };
            SceneHelper helper  = new SceneHelper();
            var         sceneid = helper.SetModel(scene);
            var         ticket  = Senparc.Weixin.MP.AdvancedAPIs.QrCode.QrCodeApi.Create(token, 300, sceneid);

            ViewBag.ticket  = ticket.ticket;
            ViewBag.Sceneid = sceneid;
            var capitalService = _iMemberCapitalService;
            var model          = capitalService.GetCapitalInfo(CurrentUser.Id);

            if (model != null)
            {
                ViewBag.ApplyWithMoney = model.Balance.Value;
            }
            else
            {
                ViewBag.ApplyWithMoney = 0;
            }
            var member = _iMemberService.GetMember(CurrentUser.Id);//CurrentUser对象有缓存,取不到最新数据

            ViewBag.IsSetPwd        = string.IsNullOrWhiteSpace(member.PayPwd) ? false : true;
            ViewBag.WithDrawMinimum = siteSetting.WithDrawMinimum;
            ViewBag.WithDrawMaximum = siteSetting.WithDrawMaximum;
            return(View());
        }
예제 #28
0
        /// <summary>
        /// 发货通知
        /// </summary>
        /// <param name="appId">公众平台账户的AppId</param>
        /// <param name="openId">购买用户的OpenId</param>
        /// <param name="transId">交易单号</param>
        /// <param name="out_Trade_No">第三方订单号</param>
        /// <param name="deliver_TimesTamp">发货时间戳</param>
        /// <param name="deliver_Status">发货状态,1 表明成功,0 表明失败,失败时需要在deliver_msg 填上失败原因</param>
        /// <param name="deliver_Msg">发货状态信息,失败时可以填上UTF8 编码的错误提示信息,比如“该商品已退款</param>
        /// <param name="app_Signature">签名</param>
        /// <param name="sign_Method">签名方法</param>
        public static DelivernotifyResult Delivernotify(string appId, string openId, string transId, string out_Trade_No, string deliver_TimesTamp, string deliver_Status, string deliver_Msg, string app_Signature, string sign_Method = "sha1")
        {
            var accessToken = AccessTokenContainer.GetToken(appId);

            var urlFormat = "https://api.weixin.qq.com/pay/delivernotify?access_token={0}";

            //组装发送消息
            var data = new
            {
                appid             = appId,
                openid            = openId,
                transid           = transId,
                out_trade_no      = out_Trade_No,
                deliver_timestamp = deliver_TimesTamp,
                deliver_status    = deliver_Status,
                deliver_msg       = deliver_Msg,
                app_signature     = app_Signature,
                sign_method       = sign_Method
            };

            return(CommonJsonSend.Send <DelivernotifyResult>(accessToken, urlFormat, data));
        }
예제 #29
0
        /// <summary>
        /// 异步更新AccessToken
        /// </summary>
        /// <param name="getNewToken"></param>
        public static string GetTokenAsync(bool getNewToken = false)
        {
            //AccessTokenResult r = CommonApi.GetToken(Qyinfo.corpId, Qyinfo.corpSecret, "client_credential");
            string strIp     = CommonHelp.getIP(HttpContext.Current);
            string _username = CommonHelp.GetUserNameByszhlcode();
            var    task1     = new Task <string>(() =>
                                                 AccessTokenContainer.TryGetAccessTokenAsync(AppId, AppSecret, getNewToken).Result
                                                 );

            task1.Start();

            string accesstoken = task1.Result;

            if (accesstoken.Trim().Length > 0)
            {
                CommonHelp.UpdateAppConfig("AccessToken", accesstoken);
                new JH_Auth_LogB().InsertLog("WXFWHelper", "更新AccessToken为" + accesstoken, "WXFWHelper", _username, _username, 0, strIp);

                Updatejsapiticket(accesstoken, _username, strIp);
            }
            return(accesstoken);
        }
        public ActionResult Index(long id)
        {
            //TODO:改成统一的方式取 Token
            var token = AccessTokenContainer.TryGetToken(this._siteSetting.WeixinAppId, this._siteSetting.WeixinAppSecret);

            SceneHelper helper   = new SceneHelper();
            var         qrTicket = Senparc.Weixin.MP.AdvancedAPIs.QrCode.QrCodeApi.Create(token, 86400, 7758258).ticket;

            ViewBag.QRTicket = qrTicket;

            WeiActivityModel activityModel = WeiActivityApplication.GetActivityModel(id);

            activityModel.userId   = curUserId;
            activityModel.winModel = AddWinInfo(activityModel);
            var integrals = _iMemberIntegralService.GetMemberIntegral(curUserId);//用户可用积分

            activityModel.winModel.integrals = integrals == null ? 0 : integrals.AvailableIntegrals;
            activityModel.participationCount = GetParticipationCount(activityModel);
            consumePoint = activityModel.consumePoint;

            return(View(activityModel));
        }