Esempio n. 1
0
        private string UploadForeverMediaTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = @"..\..\AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);
            mediaId = result.media_id;
            return(mediaId);
        }
Esempio n. 2
0
        public void AfterDeleteVideoTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file   = @"E:\Test.mp4";
            var result = MediaApi.UploadForeverVideo(accessToken, file, "测试", "测试", 100000);

            Assert.IsNotNull(result.media_id);

            CustomApi.SendVideo(accessToken, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", result.media_id, "测试", "测试");
            MediaApi.DeleteForeverMedia(accessToken, result.media_id);
        }
Esempio n. 3
0
        public void UploadTemporaryMediaTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var type   = UploadMediaFileType.image;
            var file   = @"E:\1.jpg";
            var result = MediaApi.UploadTemporaryMedia(accessToken, type, file);

            Assert.AreEqual(type, result.type);
            Assert.IsNotNull(result.media_id);
            mediaId = result.media_id;
        }
Esempio n. 4
0
        public void CreateQRTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var cardIdList = CardBatchGetTest();
            var cardId     = cardIdList.FirstOrDefault();

            var result = CardApi.CreateQR(accessToken, cardId);

            Console.Write(result);
            Assert.IsNotNull(result);
        }
        public void GetMenuTest()
        {
            return;//已经通过测试

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var result = CommonApi.GetMenu(accessToken);

            //Assert.IsNull(result);//如果菜单不存在返回Null
            Assert.IsNotNull(result);
            Assert.IsTrue(result.menu.button.Count > 0);
        }
Esempio n. 6
0
        public void SendImageByGroupIdTest()
        {
            string file    = ""; //文件路径,以下以图片为例
            string groupId = ""; //分组Id

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var mediaId     = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id;

            var result = GroupMessageApi.SendGroupMessageByGroupId(accessToken, groupId, mediaId, GroupMessageType.image, false);

            Assert.IsTrue(result.msg_id.Length > 0);
        }
Esempio n. 7
0
        public void ContainerTest()
        {
            //注册
            AccessTokenContainer.Register(base._appId, base._appSecret);

            //获取Token完整结果(包括当前过期秒数)
            DateTime dt1         = DateTime.Now;
            var      tokenResult = AccessTokenContainer.GetAccessTokenResult(base._appId);
            DateTime dt2         = DateTime.Now;

            Assert.IsNotNull(tokenResult);
            Console.WriteLine(tokenResult.access_token);
            Console.WriteLine("耗时:{0}毫秒", (dt2 - dt1).TotalMilliseconds);

            //只获取Token字符串
            dt1 = DateTime.Now;
            var token = AccessTokenContainer.GetAccessToken(base._appId);

            dt2 = DateTime.Now;
            Assert.AreEqual(tokenResult.access_token, token);
            Console.WriteLine(tokenResult.access_token);
            Console.WriteLine("耗时:{0}毫秒", (dt2 - dt1).TotalMilliseconds);

            //getNewToken
            {
                dt1   = DateTime.Now;
                token = AccessTokenContainer.TryGetAccessToken(base._appId, base._appSecret, false);
                dt2   = DateTime.Now;
                Assert.AreEqual(tokenResult.access_token, token);
                Console.WriteLine(tokenResult.access_token);

                Console.WriteLine("强制重新获取AccessToken");
                dt1   = DateTime.Now;
                token = AccessTokenContainer.TryGetAccessToken(base._appId, base._appSecret, true);
                dt2   = DateTime.Now;
                Assert.AreNotEqual(tokenResult.access_token, token);//如果微信服务器缓存,此处会相同
                Console.WriteLine(tokenResult.access_token);
                Console.WriteLine("耗时:{0}毫秒", (dt2 - dt1).TotalMilliseconds);
            }

            {
                tokenResult = AccessTokenContainer.GetAccessTokenResult(base._appId);
                Console.WriteLine("HashCode:{0}", tokenResult.GetHashCode());
                dt1 = DateTime.Now;
                var allItems = AccessTokenContainer.GetAllItems();
                dt2 = DateTime.Now;
                Assert.IsTrue(allItems.Count > 0);
                Assert.AreSame(tokenResult, allItems[0].AccessTokenResult);//证明缓存成功
                Console.WriteLine("All Items:{0}", allItems.Count);
                Console.WriteLine("HashCode:{0}", allItems[0].AccessTokenResult.GetHashCode());
                Console.WriteLine("耗时:{0}毫秒", (dt2 - dt1).TotalMilliseconds);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 自动获取Openid
        /// </summary>
        /// <param name="getNew">是否从服务器上强制获取一个</param>
        /// <returns></returns>
        protected string getTestOpenId(bool getNew, string _appId)
        {
            string _testOpenId = "";

            if (getNew || string.IsNullOrEmpty(_testOpenId))
            {
                var accessToken  = AccessTokenContainer.GetAccessToken(_appId);
                var openIdResult = UserApi.Get(accessToken, null);
                _testOpenId = openIdResult.data.openid.First();
            }
            return(_testOpenId);
        }
Esempio n. 9
0
 public void GetUserInfoTest()
 {
     try
     {
         var accessToken = AccessTokenContainer.GetAccessToken(_appId);
         var result      = UserApi.Info(accessToken, _testOpenId);
         Assert.IsNotNull(result);
     }
     catch (Exception ex)
     {
         //如果不参加内测,只是“服务号”,这类接口仍然不能使用,会抛出异常:错误代码:45009:api freq out of limit
     }
 }
Esempio n. 10
0
        public void GetIndustryTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var result      = TemplateApi.GetIndustry(accessToken);

            Assert.AreEqual("IT科技", result.primary_industry.first_class);
            Assert.AreEqual("互联网|电子商务", result.primary_industry.second_class);
            Assert.AreEqual("IT科技", result.secondary_industry.first_class);
            Assert.AreEqual("IT软件与服务", result.secondary_industry.second_class);

            Assert.AreEqual(IndustryCode.IT科技_互联网_电子商务, result.primary_industry.ConvertToIndustryCode());
            Assert.AreEqual(IndustryCode.IT科技_IT软件与服务, result.secondary_industry.ConvertToIndustryCode());
        }
Esempio n. 11
0
 public ActionResult CustomMessageSync(string openId = "oxRg0uLsnpHjb8o93uVnwMK_WAVw")
 {
     return(Task.Factory.StartNew(() =>
     {
         for (int i = 0; i < 4; i++)
         {
             //var result = await Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendTextAsync(Config.AppId, openId, "从服务器发来的客服消息。时间:{0},编号:{1}".FormatWith(DateTime.Now, i + 1));
             var accessToken = AccessTokenContainer.GetAccessToken(Config.AppId);
             var result = Senparc.Weixin.MP.AdvancedAPIs.CustomApi.SendText(Config.AppId, openId, "【同步方法】从服务器发来的客服消息。时间:{0},编号:{1}新AccessToken:{2}".FormatWith(DateTime.Now.ToString("HH:mm:ss.ffff"), i + 1, accessToken));
         }
         return Content("消息发送完毕!");
     }).Result);
 }
Esempio n. 12
0
        private string UploadForeverMediaTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = GetParentRootRelativePath() + @"AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMediaAsync(accessToken, file, UploadForeverMediaType.image).GetAwaiter().GetResult();

            Assert.IsNotNull(result.media_id);
            Console.WriteLine("上传永久素材成功,mediaId:" + result.media_id);
            mediaId = result.media_id;
            return(mediaId);
        }
Esempio n. 13
0
        public ActionResult MenuManager()

        {
            AccessTokenContainer.Register("wx4df7108464fb86f1", "46515264f29685ba478ea93d44919ed5");
            var accessToken = AccessTokenContainer.GetAccessToken(AppId);


            var aa = UserTagApi.Get(accessToken);


            ButtonGroup bg = new ButtonGroup();

            //单击
            bg.button.Add(new SingleClickButton()
            {
                name = "单击测试",
                key  = "OneClick",
                type = ButtonType.click.ToString(),//默认已经设为此类型,这里只作为演示
            });

            //二级菜单
            var subButton = new SubButton()
            {
                name = "二级菜单"
            };

            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_Text",
                name = "返回文本"
            });
            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_News",
                name = "返回图文"
            });
            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_Music",
                name = "返回音乐"
            });
            subButton.sub_button.Add(new SingleViewButton()
            {
                url  = "http://weixin.senparc.com",
                name = "Url跳转"
            });
            bg.button.Add(subButton);
            var result = CommonApi.CreateMenu(accessToken, bg);

            return(View());
        }
Esempio n. 14
0
        public void SendVideoTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            try
            {
                var result = CustomApi.SendVideo(accessToken, openId, "1000018", "1000012", "[description]");
                Assert.Fail();//因为这里写测试代码的时候,微信账号还没有权限,所以会抛出异常(故意的),如果是已经开通的应该是“请求成功”
            }
            catch (ErrorJsonResultException ex)
            {
                Assert.AreEqual(ReturnCode.api功能未授权, ex.JsonResult.errcode);
            }
        }
Esempio n. 15
0
        /// <summary>
        /// 获取AccessToken
        /// </summary>
        /// <param name="appId"></param>
        /// <param name="appSecret"></param>
        /// <param name="getNewToken">是否刷新缓存</param>
        /// <returns></returns>
        public string TryGetToken(string appId, string appSecret, bool getNewToken = false)
        {
            //AccessTokenContainer的TryGetToken有问题,所以自己实现一遍
            if (!AccessTokenContainer.CheckRegistered(appId))
            {
                lock (_locker)
                    if (!AccessTokenContainer.CheckRegistered(appId))
                    {
                        AccessTokenContainer.Register(appId, appSecret);
                    }
            }

            return(AccessTokenContainer.GetAccessToken(appId, getNewToken));
        }
Esempio n. 16
0
        public void AfterDeleteImgTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var file = @"..\..\AdvancedAPIs\Media\test.jpg";

            var result = MediaApi.UploadForeverMedia(accessToken, file);

            Assert.IsNotNull(result.media_id);

            CustomApi.SendImage(accessToken, "o3IHxjrPzMVZIJOgYMH1PyoTW_Tg", result.media_id);

            MediaApi.DeleteForeverMedia(accessToken, result.media_id);
        }
Esempio n. 17
0
        //[TestMethod]
        public string SendImageByOpenIdTest()
        {
            string file = "";//文件路径,以下以图片为例

            string[] openIds = new string[] { _testOpenId };

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var mediaId     = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id;
            var result      = GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.image, mediaId, Config.TIME_OUT, openIds);

            Assert.IsTrue(result.msg_id.Length > 0);

            return(result.msg_id);
        }
Esempio n. 18
0
        public void CreateMenuTest()
        {
            return;//已经通过测试

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            ButtonGroup bg = new ButtonGroup();

            //单击
            bg.button.Add(new SingleClickButton()
            {
                name = "单击测试",
                key  = "OneClick",
                type = ButtonType.click.ToString(),                    //默认已经设为此类型,这里只作为演示
            });

            //二级菜单
            var subButton = new SubButton()
            {
                name = "二级菜单"
            };

            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_Text",
                name = "返回文本"
            });
            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_News",
                name = "返回图文"
            });
            subButton.sub_button.Add(new SingleClickButton()
            {
                key  = "SubClickRoot_Music",
                name = "返回音乐"
            });
            subButton.sub_button.Add(new SingleViewButton()
            {
                url  = "http://weixin.senparc.com",
                name = "Url跳转"
            });
            bg.button.Add(subButton);


            var result = CommonApi.CreateMenu(accessToken, bg);

            Assert.IsNotNull(result);
            Assert.AreEqual("ok", result.errmsg);
        }
Esempio n. 19
0
        public void UpdateTagTest()
        {
            ICache       cache         = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(weixinSetting);
            AccessTokenContainer container      = new AccessTokenContainer(cache, oAuthInterface);
            string accessToken = container.GetAccessToken();
            UserTagManageInterfaceCaller tagManageInterfaceCaller = new UserTagManageInterfaceCaller();

            Console.WriteLine(tagManageInterfaceCaller.UpdateTag(accessToken, 100, "新名字"));
        }
Esempio n. 20
0
        //[TestMethod]
        public string SendImageByOpenIdTest()
        {
            string file = "C:\\Users\\roman\\Pictures\\捕获.PNG";//文件路径,以下以图片为例

            string[] openIds = new string[] { _testOpenId, "oIskUw5ONFqLqb4XUyLHQ7Lu5t64" };

            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            var mediaId     = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, file).media_id;
            var clientMsgId = DateTime.Now.Ticks.ToString();
            var result      = GroupMessageApi.SendGroupMessageByOpenId(accessToken, GroupMessageType.text, "你好lizejia", clientMsgId, Config.TIME_OUT, openIds);

            Assert.IsTrue(result.msg_id.Length > 0);

            return(result.msg_id);
        }
Esempio n. 21
0
        public void TryMatchConditionalMenuTest()
        {
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(weixinSetting);
            ICache cache = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            AccessTokenContainer container = new AccessTokenContainer(cache, oAuthInterface);
            var accessToken = container.GetAccessToken();
            MenuInterfaceCaller menuInterfaceCaller = new MenuInterfaceCaller();

            Console.WriteLine(menuInterfaceCaller.TryMatchConditionalMenu(accessToken, "oGV7Kv0bgXvAUabe8sDopmKlzPNE"));
        }
Esempio n. 22
0
        public void RemarkTest()
        {
            ICache       cache         = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(new RestClient(), weixinSetting);
            AccessTokenContainer container      = new AccessTokenContainer(cache, oAuthInterface);
            string accessToken = container.GetAccessToken();
            UserTagManageInterfaceCaller tagManageInterfaceCaller = new UserTagManageInterfaceCaller(new RestClient());

            Console.WriteLine(tagManageInterfaceCaller.Remark(accessToken, "oGV7Kv0bgXvAUabe8sDopmKlzPNE", "备注"));
        }
Esempio n. 23
0
        //
        // GET: /weixin/Home/

        public ActionResult Index()
        {
            //判断用户是否登陆
            if (!WebCookieHelper.UserCheckLogin())
            {
                //跳转到微信授权登录界面
                Redirect("/weixin/Account");
            }
            AccessTokenContainer.Register(SystemContext.Instance.WeiXinAppInfo.AppID, SystemContext.Instance.WeiXinAppInfo.AppSecret);
            var accessToken = AccessTokenContainer.GetAccessToken(SystemContext.Instance.WeiXinAppInfo.AppID);

            var result = Senparc.Weixin.MP.AdvancedAPIs.UserApi.Info(accessToken, SystemContext.Instance.WeiXinAppInfo.OpenID);

            return(View(result));
        }
Esempio n. 24
0
        public void BatchGetUserInfoTest()
        {
            List <BatchGetUserInfoData> data = new List <BatchGetUserInfoData>();

            data.Add(new BatchGetUserInfoData()
            {
                openid = "",
                lang   = Language.zh_CN.ToString()
            });

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

            Assert.AreEqual(result.errcode, ReturnCode.请求成功);
        }
Esempio n. 25
0
        public void UnTaggingTest()
        {
            ICache       cache         = new InMemoryCache(new MemoryCache(new MemoryCacheOptions()));
            BaseSettings weixinSetting = new BaseSettings()
            {
                AppId     = "wx6eff55d0d76e210f",
                AppSecret = "60ab768429e8fc6b86abaa9cfd1c6565"
            };
            OAuthInterfaceCaller oAuthInterface = new OAuthInterfaceCaller(new RestClient(), weixinSetting);
            AccessTokenContainer container      = new AccessTokenContainer(cache, oAuthInterface);
            string accessToken = container.GetAccessToken();
            UserTagManageInterfaceCaller tagManageInterfaceCaller = new UserTagManageInterfaceCaller(new RestClient());

            Console.WriteLine(tagManageInterfaceCaller.UnTagging(accessToken, 100, "oGV7Kv5pT6m1P5zHDU3sHg4FT1JA"));
        }
Esempio n. 26
0
        public void MemberUpdateTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);

            var idArr = new[] { 0, 1, 2, 100, 0 };

            foreach (var id in idArr)
            {
                var result = GroupsApi.MemberUpdate(accessToken, _testOpenId, id);
                Assert.IsNotNull(result);
                Assert.IsTrue(result.errcode == ReturnCode.请求成功);
                var newGroupIdResult = GroupsApi.GetId(accessToken, _testOpenId);
                Assert.AreEqual(id, newGroupIdResult.groupid);
            }
        }
Esempio n. 27
0
        public void GetMenuTest()
        {
            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();
            MenuInterfaceCaller menuInterfaceCaller = new MenuInterfaceCaller(new RestClient());

            Console.WriteLine(menuInterfaceCaller.GetMenu(accessToken));
        }
Esempio n. 28
0
        public ActionResult SendMsgToWeChatUser(string openId)
        {
            try
            {
                var accessToken = AccessTokenContainer.GetAccessToken(_appId);
                var tpl         = TemplateApi.GetPrivateTemplate(accessToken);
                var result      = TemplateApi.SendTemplateMessage(accessToken, openId, tpl.template_list.FirstOrDefault().template_id, "#173177", "url", new { NO = "你的卡密为58199887" });

                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                _log.Error(ex, "SendMsgToWeChatUser发生错误!");
                return(Json(new { error = ex.Message }, JsonRequestBehavior.AllowGet));
            }
        }
Esempio n. 29
0
        public void ApplyMerchantTest()
        {
            var accessToken = AccessTokenContainer.GetAccessToken(_appId);
            //var fileResult = MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image, "xx.png");
            //fileResult.media_id
            var result = WxaApi.ApplyMerchant(accessToken, new ApplyMerchantData()
            {
                first_catid     = 317,                                                                //教育学校
                second_catid    = 319,                                                                //幼儿园
                headimg_mediaid = "IZpRRVmI2f__n9jMy6RcJnsjuPZeEbKa_WJyMeTTE4tA656NPLwgz84tip8DAGr9", //替换为自己的fileResult.media_id,
                intro           = "红星幼儿园",
                nickname        = "红星幼儿园526422",                                                      //可能会出现名字已占用
            });

            Assert.IsTrue(result.errcode == 0);
        }
Esempio n. 30
0
        /// <summary>
        /// 处理语音请求
        /// </summary>
        /// <param name="requestMessage"></param>
        /// <returns></returns>
        public override IResponseMessageBase OnVoiceRequest(RequestMessageVoice requestMessage)
        {
            var responseMessage = CreateResponseMessage <ResponseMessageMusic>();
            //上传缩略图
            var accessToken  = AccessTokenContainer.GetAccessToken(appId);//.TryGetAccessToken(appId, appSecret);
            var uploadResult = AdvancedAPIs.MediaApi.UploadTemporaryMedia(accessToken, UploadMediaFileType.image,
                                                                          Server.GetMapPath("~/Images/Logo.jpg"));

            //设置音乐信息
            responseMessage.Music.Title        = "天籁之音";
            responseMessage.Music.Description  = "播放您上传的语音";
            responseMessage.Music.MusicUrl     = "http://weixin.senparc.com/Media/GetVoice?mediaId=" + requestMessage.MediaId;
            responseMessage.Music.HQMusicUrl   = "http://weixin.senparc.com/Media/GetVoice?mediaId=" + requestMessage.MediaId;
            responseMessage.Music.ThumbMediaId = uploadResult.media_id;
            return(responseMessage);
        }