Exemplo n.º 1
0
        /// <summary>
        /// 是否可以同步微信
        /// </summary>
        /// <param name="couponid"></param>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public Entities.WXSyncJSInfoByCard GetSyncWeiXin(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType, string url)
        {
            Entities.WXSyncJSInfoByCard result = null;
            bool isNeedSyncWX = false;

            Entities.WXCardLogInfo     wxcardinfo = null;
            Entities.WXCardCodeLogInfo wxcodeinfo = null;
            wxcardinfo = Get(couponid, couponType);
            if (wxcardinfo != null)
            {
                if (wxcardinfo.AuditStatus == (int)Entities.WXCardLogInfo.AuditStatusEnum.Audited)
                {
                    isNeedSyncWX = true;
                }
            }
            if (isNeedSyncWX)
            {
                wxcodeinfo = GetCodeInfo(couponcodeid, couponType);
                if (wxcodeinfo != null)
                {
                    if (wxcodeinfo.CodeStatus != (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive)
                    {
                        isNeedSyncWX = false;
                    }
                }
            }
            if (isNeedSyncWX)
            {
                result = GetWXSyncJSInfo(wxcardinfo.CardId, url);
            }

            return(result);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 获取同步微信JS
        /// </summary>
        /// <param name="couponcodeid"></param>
        /// <param name="couponType"></param>
        /// <returns></returns>
        public Entities.WXJSCardModel GetJSWeiXinCard(long couponid, long couponcodeid, Entities.WXCardLogInfo.CouponTypeEnum couponType)
        {
            Entities.WXJSCardModel result = new Entities.WXJSCardModel();
            result.cardId = "0"; //默认不可同步
            bool isNeedSyncWX = false;

            Entities.WXCardLogInfo     wxcardinfo = null;
            Entities.WXCardCodeLogInfo wxcodeinfo = null;
            wxcardinfo = Get(couponid, couponType);
            if (wxcardinfo != null)
            {
                if (wxcardinfo.AuditStatus == (int)Entities.WXCardLogInfo.AuditStatusEnum.Audited)
                {
                    isNeedSyncWX = true;
                }
            }
            if (isNeedSyncWX)
            {
                wxcodeinfo = GetCodeInfo(couponcodeid, couponType);
                if (wxcodeinfo != null)
                {
                    if (wxcodeinfo.CodeStatus != (int)Entities.WXCardCodeLogInfo.CodeStatusEnum.WaitReceive)
                    {
                        isNeedSyncWX = false;
                    }
                }
            }
            if (isNeedSyncWX)
            {
                var data = MakeSyncWXJSInfo(wxcardinfo.CardId, couponcodeid, couponType);
                if (data != null)
                {
                    result.cardId            = data.card_id;
                    result.cardExt           = new Entities.WXJSCardExtModel();
                    result.cardExt.signature = data.signature;
                    result.cardExt.timestamp = data.timestamp;
                    result.cardExt.nonce_str = data.nonce_str;
                    result.cardExt.outer_id  = data.outerid;
                }
            }
            return(result);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 添加卡券
        /// </summary>
        /// <param name="info"></param>
        public bool Add(Entities.WXCardLogInfo info)
        {
            bool   issuccess = false;
            string acctoken  = "";
            string curHost   = Core.Helper.WebHelper.GetScheme() + "://" + Core.Helper.WebHelper.GetHost();
            string imagefile = "/images/defaultwxlogo.png";
            string wxlogo    = Core.MallIO.GetImagePath(imagefile);

            if (wxlogo.IndexOf("http") < 0)
            {
                wxlogo = curHost + imagefile;
            }
            var siteSetting = SiteSettingApplication.SiteSettings;
            var shopser     = ServiceProvider.Instance <IShopService> .Create;
            var vshopser    = ServiceProvider.Instance <IVShopService> .Create;
            CardCreateResultJson wxResultJson = new CardCreateResultJson();

            #region 组织数据
            //基础数据
            Card_BaseInfoBase _BaseInfo = new Card_BaseInfoBase()
            {
                logo_url    = wxlogo,
                brand_name  = siteSetting.SiteName,
                code_type   = Card_CodeType.CODE_TYPE_BARCODE,
                title       = info.CardTitle,
                sub_title   = info.CardSubTitle,
                color       = info.CardColor,
                notice      = "专供" + siteSetting.SiteName + "使用",
                description = @"" + (info.LeastCost > 0 ? "满¥" + (info.LeastCost / 100).ToString("F2") + "使用" : "无门槛使用") + ",有效期至" + info.BeginTime.ToString("yyyy年MM月dd日") + "-" + info.EndTime.ToString("yyyy年MM月dd日"),
                date_info   = new Card_BaseInfo_DateInfo()
                {
                    type = Card_DateInfo_Type.DATE_TYPE_FIX_TIME_RANGE.ToString(),
                    // begin_timestamp = DateTimeHelper.GetWeixinDateTime(info.BeginTime),
                    // end_timestamp = DateTimeHelper.GetWeixinDateTime(info.EndTime),
                    begin_timestamp = Senparc.CO2NET.Helpers.DateTimeHelper.GetWeixinDateTime(info.BeginTime),
                    end_timestamp   = Senparc.CO2NET.Helpers.DateTimeHelper.GetWeixinDateTime(info.EndTime),
                },
                sku = new Card_BaseInfo_Sku()
                {
                    quantity = info.Quantity == 0 ? MaxStock : info.Quantity
                },
                get_limit       = info.GetLimit == 0 ? MaxStock : info.GetLimit,
                use_custom_code = false,
                bind_openid     = false,
                can_share       = false,
                can_give_friend = false,
                custom_url_name = "立即使用",
            };
            //代金券数据
            var cardData = new Card_GeneralCouponData()
            {
                base_info      = _BaseInfo,
                default_detail = info.DefaultDetail
            };
            #endregion

            #region 商家发布
            if (info.ShopId > 0)
            {
                _BaseInfo.custom_url = curHost + "/Shop/Home/" + info.ShopId.ToString();
            }
            var vshopSetting = vshopser.GetVShopSetting(info.ShopId);
            var vshopinfo    = vshopser.GetVShopByShopId(info.ShopId);
            var shopinfo     = shopser.GetShop(info.ShopId);

            /*
             * if (vshopSetting != null && shopinfo != null && vshopinfo != null)
             * {
             *  if (!string.IsNullOrWhiteSpace(vshopSetting.AppId) && !string.IsNullOrWhiteSpace(vshopSetting.AppSecret))
             *  {
             *      acctoken = GetAccessToken(vshopSetting.AppId, vshopSetting.AppSecret);
             *      if (!string.IsNullOrWhiteSpace(acctoken))
             *      {
             *          _BaseInfo.brand_name = shopinfo.ShopName;
             *          if (!string.IsNullOrWhiteSpace(vshopinfo.WXLogo))
             *          {
             *              wxlogo = curHost + vshopinfo.WXLogo;
             *              _BaseInfo.logo_url = wxlogo;
             *          }
             *          wxResultJson = CardApi.CreateCard(acctoken, cardData);
             *          if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功)
             *          {
             *              info.AppId = vshopSetting.AppId;
             *              info.AppSecret = vshopSetting.AppSecret;
             *              info.CardId = wxResultJson.card_id;
             *              issuccess = true;
             *          }
             *          else
             *          {
             *              Log.Debug(JsonConvert.SerializeObject(wxResultJson));
             *          }
             *      }
             *      else
             *      {
             *          Log.Debug("[WXC]Token失败");
             *      }
             *  }
             * }
             */
            #endregion

            if (!issuccess)
            {
                #region 平台发布
                if (!string.IsNullOrWhiteSpace(siteSetting.WeixinAppId) && !string.IsNullOrWhiteSpace(siteSetting.WeixinAppSecret))
                {
                    acctoken = GetAccessToken(siteSetting.WeixinAppId, siteSetting.WeixinAppSecret);
                    if (!string.IsNullOrWhiteSpace(acctoken))
                    {
                        _BaseInfo.brand_name = shopinfo.ShopName;
                        if (!string.IsNullOrWhiteSpace(siteSetting.WXLogo))
                        {
                            wxlogo             = curHost + siteSetting.WXLogo;
                            _BaseInfo.logo_url = wxlogo;
                        }
                        wxResultJson = CardApi.CreateCard(acctoken, cardData);
                        if (wxResultJson.errcode == Senparc.Weixin.ReturnCode.请求成功)
                        {
                            info.AppId     = siteSetting.WeixinAppId;
                            info.AppSecret = siteSetting.WeixinAppSecret;
                            info.CardId    = wxResultJson.card_id;
                            issuccess      = true;
                        }
                        else
                        {
                            Log.Debug(JsonConvert.SerializeObject(wxResultJson));
                        }
                    }
                    else
                    {
                        Log.Debug("[WXC]Token失败");
                    }
                }

                if (info.ShopId < 1)
                {
                    _BaseInfo.custom_url = curHost + "/";
                }
                #endregion
            }

            if (issuccess)
            {
                info.AuditStatus = (int)Entities.WXCardLogInfo.AuditStatusEnum.Auditin;    //初始审核状态
                //数据入库
                DbFactory.Default.Add(info);
            }
            return(issuccess);
        }