Пример #1
0
        /// <summary>
        /// 申请带参二维码(临时)
        /// </summary>
        /// <param name="stationId"></param>
        /// <param name="doctorId"></param>
        /// <param name="rxDoctorId"></param>
        /// <returns></returns>
        public async Task <string> CreateQRCodeUrl(int stationId, int doctorId, int rxDoctorId)
        {
            var ticks   = DateTime.Now.Ticks.ToString();
            var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7));

            var qrResult = await QrCodeApi.CreateAsync(_wxParams.AppId, 60 * 60 * 24, sceneId, QrCode_ActionName.QR_STR_SCENE, $"RX,{stationId},{doctorId},{rxDoctorId}");

            return(qrResult.url);
        }
Пример #2
0
        /// <summary>
        /// 使用异步Action测试异步临时二维码接口
        /// </summary>
        /// <returns></returns>
        public async Task <RedirectResult> QrCodeTest()
        {
            var ticks   = DateTime.Now.Ticks.ToString();
            var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7));

            var qrResult = await QrCodeApi.CreateAsync(appId, 100, sceneId, QrCode_ActionName.QR_SCENE, "QrTest");

            var qrCodeUrl = QrCodeApi.GetShowQrCodeUrl(qrResult.ticket);

            return(Redirect(qrCodeUrl));
        }
Пример #3
0
        public Task <ActionResult> QrCodeTest()
        {
            return(Task.Factory.StartNew <ActionResult>(() =>
            {
                var ticks = DateTime.Now.Ticks.ToString();
                var sceneId = int.Parse(ticks.Substring(ticks.Length - 7, 7));

                var qrResult = QrCodeApi.CreateAsync(appId, 100, sceneId, QrCode_ActionName.QR_SCENE, "QrTest").Result;
                var qrCodeUrl = QrCodeApi.GetShowQrCodeUrl(qrResult.ticket);

                return Redirect(qrCodeUrl);
            }).ContinueWith <ActionResult>(task => task.Result));
        }
Пример #4
0
        /// <summary>
        /// 申请带参二维码
        /// </summary>
        /// <param name="mpid"></param>
        /// <param name="eventKey"></param>
        /// <param name="channelType"></param>
        /// <param name="expireSeconds"></param>
        /// <returns></returns>
        public async Task <CreateQrCodeResult> GetQrCode(int mpid, string eventKey, string channelType, int expireSeconds = 0)
        {
            var account = await _mpAccountAppService.Get(new Abp.Application.Services.Dto.EntityDto <int> {
                Id = mpid
            });

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

            try
            {
                if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE.ToString())
                {
                    return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE, eventKey));
                }
                else if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE.ToString())
                {
                    return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE, eventKey));
                }
                else
                {
                    return(null);
                }
            }
            catch
            {
                access_token = await _accessTokenContainer.TryGetAccessTokenAsync(account.AppId, account.AppSecret, true);

                try
                {
                    if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE.ToString())
                    {
                        return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_STR_SCENE, eventKey));
                    }
                    else if (channelType == Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE.ToString())
                    {
                        return(await QrCodeApi.CreateAsync(access_token, expireSeconds, 0, Senparc.Weixin.MP.QrCode_ActionName.QR_LIMIT_STR_SCENE, eventKey));
                    }
                    else
                    {
                        return(null);
                    }
                }
                catch (Exception ex)
                {
                    throw new UserFriendlyException(ex.Message);
                }
            }
        }
Пример #5
0
        public void CreateAsyncTest()
        {
            var openId = base._testOpenId;

            base.TestAyncMethod(1, openId, () =>
            {
                var result = QrCodeApi.CreateAsync(base._appId, 100, 999999, QrCode_ActionName.QR_SCENE, "QrTest").Result;
                //Assert.AreEqual(ReturnCode.请求成功,result.errcode);

                Console.WriteLine("Result(T-{0}):{1}", Thread.CurrentThread.GetHashCode(), result.ToString());

                //发送消息通知生成状态
                var testData = new //TestTemplateData()
                {
                    first    = new TemplateDataItem(string.Format("【测试-{0}】QrCode单元测试完成一个线程。", SystemTime.Now.ToString("T"))),
                    keyword1 = new TemplateDataItem(openId),
                    keyword2 = new TemplateDataItem("QrCode测试"),
                    keyword3 = new TemplateDataItem(SystemTime.Now.Ticks.ToString("O")),
                    remark   = new TemplateDataItem("结果:" + result.errcode.ToString())
                };

                var tmResult = TemplateApi.SendTemplateMessageAsync(base._appId, openId, "cCh2CTTJIbVZkcycDF08n96FP-oBwyMVrro8C2nfVo4",
                                                                    (result.url)
                                                                    , testData).Result;

                if (result.errcode == ReturnCode.请求成功)
                {
                    //下载并获得二维码
                    try
                    {
                        var fileName = Path.Combine(System.Environment.CurrentDirectory, "..\\", string.Format("qrcode-{0}.jpg", SystemTime.Now.ToString("yyyy-MM-dd HH_mm_ss")));
                        using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate))
                        {
                            QrCodeApi.ShowQrCode(result.ticket, fs);//下载二维码
                        }

                        //下载之后,文件储存在\src\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin目录下,
                        //打开.jpg文件之后,使用微信扫一扫查看效果。
                    }
                    catch
                    {
                    }
                }

                base.AsyncThreadsCollection.Remove(Thread.CurrentThread);//必须要加
            });
        }
Пример #6
0
        /// <summary>
        /// 获取临时二维码地址
        /// </summary>
        /// <param name="token"></param>
        /// <param name="sceneStr">二维码参数,长度限制1到64</param>
        /// <param name="expireSeconds"></param>
        /// <returns></returns>
        public async Task <CreateQrCodeResult> GetTempQRCodeAsync(string appId, string sceneStr, int expireSeconds = 3600)
        {
            var codeResult = await QrCodeApi.CreateAsync(appId, expireSeconds, 0, QrCode_ActionName.QR_STR_SCENE, sceneStr);

            return(codeResult);
        }
Пример #7
0
        /// <summary>
        /// 获取永久二维码地址:永久二维码最多10万个
        /// </summary>
        /// <param name="token"></param>
        /// <param name="sceneStr">二维码参数,长度限制1到64</param>
        /// <returns></returns>
        public async Task <CreateQrCodeResult> GetForeverQrCodeUrlAsync(string token, string sceneStr)
        {
            var codeResult = await QrCodeApi.CreateAsync(token, 0, 0, QrCode_ActionName.QR_LIMIT_STR_SCENE, sceneStr);

            return(codeResult);
        }