Пример #1
0
        public override Task <UploadImageResponse> UploadImage(UploadImageRequest request, ServerCallContext context)
        {
            var resp        = new UploadImageResponse();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var result = WxWebApi.UploadImage(accessToken, request.File.ToByteArray());
                if (result.ErrCode != 0)
                {
                    resp.Error = new Error
                    {
                        ErrCode = result.ErrCode,
                        ErrMsg  = result.ErrMsg
                    };
                }
                else
                {
                    resp.ImageId = result.MediaId;
                    resp.Url     = result.Url;
                }
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = 99999,
                    ErrMsg  = "AccessToken Missing"
                };
            }
            return(Task.FromResult(resp));
        }
Пример #2
0
        public void Run(string appId, PerformContext context = null)
        {
            context.WriteLine("开始刷新JsTicket【{0}】...", appId);
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + appId);

            if (accessToken.HasValue)
            {
                var resp = WxWebApi.GetJsTicket(accessToken);
                if (resp.ErrCode == 0)
                {
                    _redis.StringSet(CacheKey.UserJsTicketPrefix + appId, resp.Ticket, new TimeSpan(0, 0, resp.ExpiresIn));
                    context.WriteLine("刷新JsTicket【{0}】成功...", appId);
                }
                else
                {
                    context.WriteLine("刷新JsTicket【{0}】失败:{1}...", appId, resp.ErrMsg);
                    throw new ServiceException(resp.ErrCode, resp.ErrMsg);
                }
            }
            else
            {
                context.WriteLine("刷新JsTicket失败:无法获取AccessToken...");
                throw new ServiceException(-1, "刷新JsTicket失败:无法获取AccessToken...");
            }
        }
Пример #3
0
        public override Task <GetQrCodeResponse> GetQrCode(GetQrCodeRequest request, ServerCallContext context)
        {
            var resp        = new GetQrCodeResponse();
            var qrCodeUrl   = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=";
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var result = WxWebApi.CreateQrCode(accessToken, request.Data);
                if (result.ErrCode == 0)
                {
                    resp.Expired   = Util.GetTimestamp() + result.ExpireSeconds;
                    resp.ImageUrl  = result.Url;
                    resp.QrcodeUrl = qrCodeUrl + result.Ticket;
                }
                else
                {
                    resp.Error = new Error
                    {
                        ErrCode = result.ErrCode,
                        ErrMsg  = result.ErrMsg
                    };
                }
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = 99999,
                    ErrMsg  = "AccessToken Missing"
                };
            }
            return(Task.FromResult(resp));
        }
Пример #4
0
        public override Task <GetAuthCodeUrlResponse> GetAuthCodeUrl(GetAuthCodeUrlRequest request, ServerCallContext context)
        {
            var resp = new GetAuthCodeUrlResponse
            {
                Url = WxWebApi.GetCodeUrl(_componentAppId, request.AppId, request.RedirectUrl)
            };

            return(Task.FromResult(resp));
        }
Пример #5
0
        public void Template(string messageId, string appId, string openId, string templateId, string url, Dictionary <string, WxWebSendTemplateRequest.DataItem> data, string formId, PerformContext context)
        {
            var messageStatus = new MessageStatus(_redis, messageId);

            messageStatus.Sended(openId);
            context.WriteLine("向用户「{0}」@「{1}」发送模版消息「{2}」...", openId, appId, templateId);
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + appId);

            if (accessToken.HasValue)
            {
                if (string.IsNullOrEmpty(formId))

                {
                    var resp = WxWebApi.SendTemplate(accessToken, openId, templateId, url, data);
                    if (resp.ErrCode == 0)
                    {
                        messageStatus.SetTemplateMap(resp.MsgId.ToString());
                        context.WriteLine("消息发送成功...[MsgId: {0}]", resp.MsgId);
                    }
                    else
                    {
                        messageStatus.SendError(openId);
                        context.WriteLine("消息发送失败:{0}...", resp.ErrMsg);
                        throw new ServiceException(resp.ErrCode, resp.ErrMsg);
                    }
                }
                else
                {
                    var tmpData = new Dictionary <string, WxAppSendTemplateRequest.DataItem>();
                    foreach (var item in data)
                    {
                        tmpData.Add(item.Key, new WxAppSendTemplateRequest.DataItem {
                            Value = item.Value.Value
                        });
                    }
                    var resp = WxAppApi.SendTemplate(accessToken, openId, templateId, url, formId, tmpData);
                    if (resp.ErrCode == 0)
                    {
                        messageStatus.Success(openId);
                        context.WriteLine("消息发送成功...");
                    }
                    else
                    {
                        messageStatus.SendError(openId);
                        context.WriteLine("消息发送失败:{0}...", resp.ErrMsg);
                        throw new ServiceException(resp.ErrCode, resp.ErrMsg);
                    }
                }
            }
            else
            {
                messageStatus.SendError(openId);
                context.WriteLine("消息发送失败:无法获取AccessToken...");
                throw new ServiceException(-1, "消息发送失败:无法获取AccessToken...");
            }
        }
Пример #6
0
        public override Task <GetUserInfoResponse> GetUserInfo(GetUserInfoRequest request, ServerCallContext context)
        {
            var resp        = new GetUserInfoResponse();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var data = WxWebApi.GetUserInfo(accessToken, request.OpenId);
                if (data.ErrCode == 0)
                {
                    resp.SubscribeTime = data.Subscribe == 1 ? data.SubscribeTime : 0;
                    resp.OpenId        = data.OpenId;
                    if (resp.SubscribeTime != 0)
                    {
                        resp.NickName = data.NickName;
                        resp.Sex      = data.Sex;
                        resp.City     = data.City;
                        resp.Province = data.Province;
                        resp.Country  = data.Country;
                        resp.Photo    = data.HeadImgUrl;
                        resp.UnionId  = data.UnionId;
                    }
                }
                else
                {
                    resp.Error = new Error
                    {
                        ErrCode = data.ErrCode,
                        ErrMsg  = data.ErrMsg
                    };
                }
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = 99999,
                    ErrMsg  = "AccessToken Missing"
                };
            }
            return(Task.FromResult(resp));
        }
Пример #7
0
        public override Task <GetOpenIdByCodeResponse> GetOpenId(GetOpenIdByCodeRequest request, ServerCallContext context)
        {
            var resp = new GetOpenIdByCodeResponse();
            var data = WxWebApi.GetAccessToken(_componentAppId, _componentAccessToken, request.AppId, request.Code);

            if (data.ErrCode == 0)
            {
                resp.OpenId    = data.OpenId;
                resp.SecretKey = data.AccessToken;
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = data.ErrCode,
                    ErrMsg  = data.ErrMsg
                };
            }
            return(Task.FromResult(resp));
        }
Пример #8
0
        public override Task <Error> DeleteImage(G.DeleteImageRequest request, ServerCallContext context)
        {
            var resp        = new Error();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var result = WxWebApi.DeleteImage(accessToken, request.ImageId);
                if (result.ErrCode != 0)
                {
                    resp.ErrCode = result.ErrCode;
                    resp.ErrMsg  = result.ErrMsg;
                }
            }
            else
            {
                resp.ErrCode = 99999;
                resp.ErrMsg  = "AccessToken Missing";
            }
            return(Task.FromResult(resp));
        }
Пример #9
0
        public override Task <Error> CreateMenu(CreateMenuRequest request, ServerCallContext context)
        {
            var resp        = new Error();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var data = WxWebApi.SetMenu(accessToken, request.Config);
                if (data.ErrCode != 0)
                {
                    resp.ErrCode = data.ErrCode;
                    resp.ErrMsg  = data.ErrMsg;
                }
            }
            else
            {
                resp.ErrCode = 99999;
                resp.ErrMsg  = "AccessToken Missing";
            }
            return(Task.FromResult(resp));
        }
Пример #10
0
        public override Task <G.GetImageListResponse> GetImageList(G.GetImageListRequest request, ServerCallContext context)
        {
            var resp        = new G.GetImageListResponse();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var result = WxWebApi.GetImageList(accessToken, request.Page);
                if (result.ErrCode == 0)
                {
                    resp.Total = result.TotalCount;
                    foreach (var item in result.List)
                    {
                        resp.List.Add(new ImageItem
                        {
                            ImageId    = item.MediaId,
                            UpdateTime = item.UpdateTime,
                            Url        = item.Url
                        });
                    }
                }
                else
                {
                    resp.Error = new Error
                    {
                        ErrCode = result.ErrCode,
                        ErrMsg  = result.ErrMsg
                    };
                }
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = 99999,
                    ErrMsg  = "AccessToken Missing"
                };
            }
            return(Task.FromResult(resp));
        }
Пример #11
0
        public override Task <GetTemplateResponse> GetTemplate(GetInfoRequest request, ServerCallContext context)
        {
            var resp        = new GetTemplateResponse();
            var accessToken = _redis.StringGet(CacheKey.UserAccessTokenPrefix + request.AppId);

            if (accessToken.HasValue)
            {
                var isWxApp = _redis.KeyExists(CacheKey.UserIsWxAppPrefix + request.AppId);
                if (isWxApp)
                {
                    var data = WxAppApi.GetTemplateList(accessToken);
                    if (data.ErrCode != 0)
                    {
                        resp.Error = new Error
                        {
                            ErrCode = data.ErrCode,
                            ErrMsg  = data.ErrMsg
                        };
                    }
                    else
                    {
                        foreach (var item in data.TemplateList)
                        {
                            resp.TemplateList.Add(new GetTemplateResponse.Types.ListItem
                            {
                                TemplateId = item.TemplateId,
                                Title      = item.Title,
                                Content    = item.Content,
                                Example    = item.Example
                            });
                        }
                    }
                }
                else
                {
                    var data = WxWebApi.GetTemplateList(accessToken);
                    if (data.ErrCode != 0)
                    {
                        resp.Error = new Error
                        {
                            ErrCode = data.ErrCode,
                            ErrMsg  = data.ErrMsg
                        };
                    }
                    else
                    {
                        foreach (var item in data.TemplateList)
                        {
                            resp.TemplateList.Add(new GetTemplateResponse.Types.ListItem
                            {
                                TemplateId      = item.TemplateId,
                                Title           = item.Title,
                                PrimaryIndustry = item.PrimaryIndustry,
                                DeputyIndustry  = item.DeputyIndustry,
                                Content         = item.Content,
                                Example         = item.Example
                            });
                        }
                    }
                }
            }
            else
            {
                resp.Error = new Error
                {
                    ErrCode = 99999,
                    ErrMsg  = "AccessToken Missing"
                };
            }
            return(Task.FromResult(resp));
        }