예제 #1
0
        /// <summary>
        /// 加载扫码关注微信账号信息
        /// </summary>
        /// <returns></returns>
        public WeiXinAccount LoadScanWeiXinAccount()
        {
            var account    = LoadAccount();
            var svcContext = new ServiceContexts.ServiceContext();

            this.ScanWeiXinAccount = svcContext.IWeiXinQRCodePromotionActivityAccountService.GetWeiXinAccount(account.WebApplicationId, this.MemberOpenId);
            return(this.ScanWeiXinAccount);
        }
예제 #2
0
        ///// <summary>
        ///// 获取AccessToken对象
        ///// </summary>
        ///// <returns></returns>
        //public static AccessToken GetAccessToken()
        //{
        //    //获取access_token
        //    string url = string.Format("{0}token?grant_type=client_credential&appid={1}&secret={2}", Setting.ApiUrl, Setting.AppID, Setting.AppSecret);

        //    WebClient webclient = new WebClient();
        //    try
        //    {
        //        //byte[] bytes = webclient.DownloadData(url);
        //        //return DeSerialize<AccessToken>(Encoding.GetEncoding("utf-8").GetString(bytes));

        //        return DeSerialize<AccessToken>(DownJsonData(url));
        //    }
        //    catch
        //    {
        //        return null;
        //    }
        //}

        /// <summary>
        /// 获取微信账号的Access_Token数据
        /// </summary>
        /// <param name="account"></param>
        /// <returns></returns>
        public static AccessToken GetAccessToken(WeiXinAccount account)
        {
            if (account == null)
            {
                return(null);
            }

            //获取access_token
            string url = string.Format("{0}cgi-bin/token?grant_type=client_credential&appid={1}&secret={2}", Setting.ApiUrl, account.AppID, account.AppSecret);

            WebClient webclient = new WebClient();

            try
            {
                return(DeSerialize <AccessToken>(DownJsonData(url)));
            }
            catch
            {
                return(null);
            }
        }
예제 #3
0
 /// <summary>
 /// 发送客服消息
 /// </summary>
 /// <param name="account">微信帐号</param>
 /// <param name="account"></param>
 /// <returns></returns>
 public static ResponseState SendMessage(WeiXinAccount account, string openID, CustomMessage message)
 {
     return(SendMessage(GetAccessToken(account).Access_Token, openID, message));
 }
 /// <summary>
 /// 加载微信用户基本信息
 /// </summary>
 /// <returns></returns>
 public WeiXinAccount LoadWeiXinAccount()
 {
     ServiceContexts.ServiceContext svcContext = new ServiceContexts.ServiceContext();
     this.WeiXinAccount = svcContext.IWeiXinQRCodePromotionActivityAccountService.GetWeiXinAccount(this.WebApplicationId, this.OpenId);
     return(this.WeiXinAccount);
 }
        public CreateSendCashRedPackListResult CreateSendCashRedPack(Guid webApplicationId, int usePoints, int exchangeMoney)
        {
            if (webApplicationId == Guid.Empty)
            {
                throw new BaseException("weiXinApplicationId不能为空");
            }
            if (usePoints <= 0)
            {
                throw new BaseException("消费积分不能少于或等于0");
            }
            if (exchangeMoney <= 0)
            {
                throw new BaseException("兑换金额不能少于或等于0");
            }
            CreateSendCashRedPackListResult dataResult = new CreateSendCashRedPackListResult();
            var preSendRedPackAccountList = this.ServiceContext.IWeiXinQRCodePromotionActivityAccountService.FindByProperties(
                Where.Create()
                .Eq("WebApplicationId", webApplicationId)
                .Ge("Points", usePoints)
                );

            dataResult.TotalCount = preSendRedPackAccountList.Count;
            foreach (var account in preSendRedPackAccountList)
            {
                WeiXinAccount weiXinAccount = null;
                try
                {
                    weiXinAccount = account.LoadWeiXinAccount();
                }
                catch { }
                if (weiXinAccount == null)
                {
                    var dataResultItem = new CreateSendCashRedPackListResultItem()
                    {
                        ExchangeMoney = exchangeMoney,
                        Remark        = string.Format("{0}-OpenId失败,加载微信账号信息失败,可能是没有订阅或者网络连接失败导致", account.OpenId),
                        IsSuccess     = true,
                        UsePoints     = usePoints,
                        WeiXinAccount = weiXinAccount,
                        OpenId        = account.OpenId
                    };
                    dataResult.CreateSendCashRedPackListResultItems.Add(dataResultItem);
                    continue;
                }
                try
                {
                    CreateSendCashRedPackListResultItem dataResultItem = new CreateSendCashRedPackListResultItem()
                    {
                        ExchangeMoney = exchangeMoney,
                        Remark        = string.Format("{0}-OpenId,{1},成功", account.OpenId, weiXinAccount.nickname),
                        IsSuccess     = true,
                        UsePoints     = usePoints,
                        WeiXinAccount = weiXinAccount,
                        OpenId        = account.OpenId
                    };
                    this.ServiceContext.IWeiXinQRCodePromotionActivitySendRedPackService.CreateSendCashRedPack(webApplicationId, account.ID, usePoints, exchangeMoney);

                    dataResult.CreateSendCashRedPackListResultItems.Add(dataResultItem);
                    dataResult.SuccessCount++;
                }
                catch (Exception ex)
                {
                    var dataResultItem = new CreateSendCashRedPackListResultItem()
                    {
                        ExchangeMoney = exchangeMoney,
                        Remark        = string.Format("{0}-OpenId,失败,{1}<br />{2}<br />{3}",
                                                      account.OpenId,
                                                      ex.Message + (ex.InnerException != null ? "," + ex.InnerException.Message : ""),
                                                      ex.Source,
                                                      ex.StackTrace
                                                      ),
                        IsSuccess     = true,
                        UsePoints     = usePoints,
                        WeiXinAccount = weiXinAccount,
                        OpenId        = account.OpenId
                    };
                    dataResult.CreateSendCashRedPackListResultItems.Add(dataResultItem);
                }
            }
            return(dataResult);
        }