Ejemplo n.º 1
0
        WechatSceneModel GetScene(string eventKey)
        {
            var sceneBiz = new WechatSceneBiz();

            var scene = sceneBiz.GetAsync(eventKey).Result;

            return(scene);
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetUserWeChatQRCodeAsync(string hospiltalGuid)
        {
            if (string.IsNullOrEmpty(hospiltalGuid))
            {
                return(Failed(ErrorCode.Empty, "参数不正确"));
            }

            var hosiptalBiz = new HospitalBiz();
            var hospital    = await hosiptalBiz.GetAsync(hospiltalGuid);

            if (hospital is null)
            {
                return(Failed(ErrorCode.Empty, "对应医院不存在,请检查参数"));
            }

            if (!hospital.Enable)
            {
                return(Failed(ErrorCode.Empty, $"医院“{hospital.HosName}”已被禁用"));
            }

            var tokenResult = await WeChartApi.GetAccessToken(PlatformSettings.CDClientAppId, PlatformSettings.CDClientAppSecret);

            if (tokenResult.Errcode != 0)
            {
                Logger.Error($"GD.API.Controllers.System.{nameof(UserController)}.{nameof(GetUserWeChatQRCodeAsync)}({hospiltalGuid})-- 获取云医用户端token失败  {Environment.NewLine} {tokenResult.Errmsg}");
                return(Failed(ErrorCode.SystemException, "获取云医用户端token失败"));
            }

            var qrcodeResult = (CreateQRCodeResponseDto)null;

            var sceneBiz = new WechatSceneBiz();

            var scene = await sceneBiz.GetAsync(hospiltalGuid);

            if (scene is null)
            {
                var param = new CreateTemporaryQRCodeRequestDto
                {
                    ActionName = ActionNameEnum.QR_LIMIT_STR_SCENE.ToString(),
                    ActionInfo = new QRCodeActionInfo
                    {
                        Scene = new QRCodeActionInfoStringScene
                        {
                            SceneStr = hospiltalGuid
                        }
                    }
                };

                qrcodeResult = await WeChartApi.CreateQRCodeAsync(param, tokenResult.AccessToken);

                scene = new WechatSceneModel()
                {
                    SceneId   = hospiltalGuid,
                    Action    = WeChatSceneActionEnum.pay.ToString(),
                    SceneName = "扫码缴费",
                    Extension = JsonConvert.SerializeObject(new
                    {
                        value = hospiltalGuid,
                        url   = qrcodeResult.Url,
                        name  = HttpUtility.UrlEncode(hospital.HosName)
                    }),
                    CreatedBy     = UserID,
                    LastUpdatedBy = UserID
                };

                var result = await sceneBiz.InsertAsync(scene);

                if (!result)
                {
                    return(Failed(ErrorCode.Empty, "生成二维码场景参数失败,请稍后重试"));
                }
            }
            else
            {
                dynamic extension = JObject.Parse(scene.Extension);
                qrcodeResult = new CreateQRCodeResponseDto()
                {
                    Errcode = 0,
                    Url     = (string)extension.url
                };
            }

            return(Success(qrcodeResult));
        }