public NormalResult Create(DomainContext domainContext, ScenicQRCodeEntity scenicQRCode)
        {
            if (scenicQRCode == null)
            {
                Debug.Assert(false, "scenicQRCode 为空");
                return(new NormalResult("参数错误"));
            }

            //if (domainContext.Domain.Type == EnumDomainType.Free)
            //{
            //    //最大数量不允许超过10个
            //    if (GetTotalCount(domainContext) >= 5)
            //    {
            //        return new NormalResult("免费帐户创建场景二维码数量最多不可超过5个。");
            //    }
            //}

            WeixinCreateQRCodeArgs createArgs = new WeixinCreateQRCodeArgs();

            createArgs.ActionInfo.Scene.SceneId = scenicQRCode.Id.ToString();
            RequestApiResult <WeixinCreateQRCodeResult> createResult = QRCodeApiWrapper.Create(domainContext, createArgs);

            if (createResult.Success == false)
            {
                return(new NormalResult(createResult.Message));
            }

            scenicQRCode.Ticket = createResult.ApiResult.Ticket;
            scenicQRCode.Url    = createResult.ApiResult.Url;

            //下载二维码图片
            FileDownloadAgentArgs downloadAgentArgs = new FileDownloadAgentArgs();

            downloadAgentArgs.Domain = domainContext.Domain.Id;
            downloadAgentArgs.Url    = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" +
                                       System.Web.HttpUtility.UrlEncode(createResult.ApiResult.Ticket);
            FileDownloadAgentResult downloadAgentResult = _fileService.DownloadAgent(downloadAgentArgs);

            if (downloadAgentResult.Success)
            {
                _log.Write("下载二维码返回", JsonConvert.SerializeObject(downloadAgentResult), TraceEventType.Verbose);
                scenicQRCode.QRCodeImageUrl = _fileService.FileServiceUri + downloadAgentResult.OutputFile;
            }
            else
            {
                return(new NormalResult(downloadAgentResult.Message));
            }

            _dataBase.Insert(scenicQRCode);

            return(new NormalResult());
        }
        public static RequestApiResult <WeixinCreateQRCodeResult> Create(DomainContext domainContext, WeixinCreateQRCodeArgs args)
        {
            string accessToken = domainContext.AccessToken;
            RequestApiResult <WeixinCreateQRCodeResult> result = QRCodeApi.Create(accessToken, args);

            if (result.Success == false)
            {
                if (result.Retry)
                {
                    if (result.ApiError.ErrorCode == 40001)
                    {
                        accessToken = AccessTokenGetter.Refresh(domainContext.AppId, accessToken);
                    }

                    result = QRCodeApi.Create(accessToken, args);
                    if (result.Success == false)
                    {
                        _log.Write("QRCodeApi.Create 失败",
                                   result.GetDetail(), TraceEventType.Warning);
                    }
                }
                else
                {
                    _log.Write("QRCodeApi.Create 失败",
                               result.GetDetail(), TraceEventType.Warning);
                }
            }

            return(result);
        }