/// <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); }
/// <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)); }
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)); }
/// <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); } } }
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);//必须要加 }); }
/// <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); }
/// <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); }