Ejemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="codetype">
        /// Code展示类型,
        /// "CODE_TYPE_TEXT",文本;
        /// "CODE_TYPE_BARCODE",一维码 ;
        /// "CODE_TYPE_QRCODE",二维码;
        /// "CODE_TYPE_ONLY_QRCODE",二维码无code显示;
        /// "CODE_TYPE_ONLY_BARCODE",一维码无code显示;
        /// </param>
        /// <param name="logo_url">
        /// 卡券的商户logo,建议像素为300*300
        /// </param>
        /// <param name="brand_name">
        /// 商户名字,字数上限为12个汉字
        /// </param>
        /// <param name="title">
        /// 卡券名,字数上限为9个汉字。(建议涵盖卡券属性、服务及金额)。
        /// </param>
        /// <param name="sub_title">
        /// 券名,字数上限为18个汉字。
        /// </param>
        /// <param name="color">
        /// 券颜色。按色彩规范标注填写Color010-Color100
        /// </param>
        /// <param name="notice">
        /// 卡券使用提醒,字数上限为16个汉字。
        /// </param>
        /// <param name="description">
        /// 卡券使用说明,字数上限为1024个汉字。
        /// </param>
        /// <param name="sku">
        /// 商品信息。
        /// </param>
        /// <param name="quantity">
        /// 卡券库存的数量,不支持填写0,上限为100000000。
        /// </param>
        /// <param name="date_info">
        /// 使用日期,有效期的信息。
        /// </param>
        /// <param name="type">
        /// DATE_TYPE_FIX_TIME_RANGE 表示固定日期区间,
        /// DATE_TYPE_FIX_TERM表示固定时长(自领取后按天算。
        /// </param>
        /// <param name="begin_timestamp">
        /// type为DATE_TYPE_FIX_TIME_RANGE时专用,表示起用时间。
        /// 从1970年1月1日00:00:00至起用时间的秒数,最终需转换为字符串形态传入。
        /// (东八区时间,单位为秒)
        /// </param>
        /// <param name="end_timestamp">
        /// type为DATE_TYPE_FIX_TIME_RANGE时专用,表示结束时间,
        /// 建议设置为截止日期的23:59:59过期。(东八区时间,单位为秒)
        /// </param>
        /// <param name="fixed_term">
        /// type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天内有效,领取后当天有效填写0。(单位为天)
        /// </param>
        /// <param name="fixed_begin_term">
        /// type为DATE_TYPE_FIX_TERM时专用,表示自领取后多少天开始生效。(单位为天)
        /// </param>
        public static WeiXinCard.base_info iniBase_Info(Code_Type codetype, string logo_url, string brand_name, string title, string sub_title,
                                                        string color, string notice, string description, int quantity, string date_info, Type type, uint begin_timestamp, uint end_timestamp,
                                                        int fixed_term, int fixed_begin_term)
        {
            WeiXinCard.base_info info = new base_info();
            info.logo_url    = logo_url;
            info.code_type   = codetype.ToString();
            info.brand_name  = brand_name;
            info.title       = title;
            info.sub_title   = sub_title;
            info.color       = color;
            info.notice      = notice;
            info.description = description;
            sku s = new sku();

            s.quantity = quantity;
            info.sku   = s;

            date_info date = new WeiXinCard.date_info();

            date.type             = type.ToString();
            date.begin_timestamp  = begin_timestamp;
            date.end_timestamp    = end_timestamp;
            date.fixed_term       = fixed_term;
            date.fixed_begin_term = fixed_begin_term;

            info.date_info = date;

            return(info);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 创建微信会员卡卡套
        /// </summary>
        /// <param name="logo_url">会员卡Logo</param>
        /// <param name="brand_name">商户名字,字数上限为12个汉字。 </param>
        /// <param name="title">卡券名,字数上限为9个汉字</param>
        /// <param name="appOriginalId">小程序原始Id</param>
        /// <param name="access_token">小程序access_token</param>
        public static CreateCardResult AddVipWxCard(string logo_url, string brand_name, string title, string appOriginalId, string access_token, int PageType = 22)
        {
            //默认专业版的
            string center_app_brand_pass = "******";   //专业版 个人中心
            string custom_app_brand_pass = "******"; //首页 专业版

            switch (PageType)
            {
            case (int)TmpType.小程序电商模板:
                center_app_brand_pass = "******";    //个人中心页面
                break;

            case (int)TmpType.小程序餐饮模板:
                center_app_brand_pass = "******";     //个人中心页面
                custom_app_brand_pass = "******"; //首页
                break;

            case (int)TmpType.小程序足浴模板:
                center_app_brand_pass = "******";     //个人中心页面
                custom_app_brand_pass = "******"; //首页
                break;

            case (int)TmpType.小程序多门店模板:
                center_app_brand_pass = "******";    //个人中心页面
                break;

            case (int)TmpType.小未平台子模版:
                center_app_brand_pass = "******";      //个人中心页面
                custom_app_brand_pass = "******"; //首页
                break;
            }

            base_info _base_info = new base_info();

            _base_info.logo_url   = logo_url;
            _base_info.code_type  = "CODE_TYPE_TEXT";
            _base_info.brand_name = brand_name;
            _base_info.title      = title;
            _base_info.color      = "Color010";

            _base_info.center_title = "储值余额";
            _base_info.center_app_brand_user_name = $"{appOriginalId}@app";
            _base_info.center_app_brand_pass      = center_app_brand_pass;

            _base_info.custom_url_name            = "小程序";
            _base_info.custom_app_brand_user_name = $"{appOriginalId}@app";
            _base_info.custom_app_brand_pass      = custom_app_brand_pass;
            _base_info.custom_url_sub_title       = "点击进入";

            //_base_info.promotion_url_name = "门店地址";
            //_base_info.promotion_app_brand_user_name = $"{appOriginalId}@app";
            //_base_info.promotion_app_brand_pass = "******";

            _base_info.description = $"{brand_name}会员卡";
            _base_info.notice      = "使用时向服务员出示此券";

            Card        _card        = new Card();
            WxCard      wxCard       = new WxCard();
            member_card _member_Card = new member_card();

            _member_Card.auto_activate = true;
            _member_Card.base_info     = _base_info;
            _member_Card.custom_field1 = new custom_fieldItem
            {
                name = "储值余额",
            };
            _member_Card.custom_field2 = new custom_fieldItem
            {
                name = "累计消费",
            };
            _member_Card.custom_field3 = new custom_fieldItem
            {
                name = "会员权益",
            };
            _member_Card.prerogative = "更快更便捷的了解积分余额等信息";

            _card.member_card = _member_Card;
            wxCard.card       = _card;

            string json = JsonConvert.SerializeObject(wxCard);

            string           result            = Utility.IO.Context.PostData($"https://api.weixin.qq.com/card/create?access_token={access_token}", json);
            CreateCardResult _createCardResult = new CreateCardResult();

            //   _createCardResult.errmsg = json;
            if (string.IsNullOrEmpty(result))
            {
                return(_createCardResult);
            }
            _createCardResult = JsonConvert.DeserializeObject <CreateCardResult>(result);
            return(_createCardResult);
        }
Ejemplo n.º 3
0
        public CreateCardResult AddWxCoupons(Coupons coupons, XcxAppAccountRelation xcx, string accountId)
        {
            //默认专业版的
            string           center_app_brand_pass = "******";   //专业版 个人中心
            string           custom_app_brand_pass = "******"; //首页 专业版
            string           logo_url          = string.Empty;
            string           brand_name        = string.Empty;
            string           appOriginalId     = string.Empty;
            CreateCardResult _createCardResult = new CreateCardResult();
            XcxTemplate      xcxTemplate       = XcxTemplateBLL.SingleModel.GetModel($"id={xcx.TId}");

            if (xcxTemplate == null)
            {
                _createCardResult.errcode = 1;
                _createCardResult.errmsg  = "小程序模板不存在";
                return(_createCardResult);
            }

            List <OpenAuthorizerConfig> listOpenAuthorizerConfig = OpenAuthorizerConfigBLL.SingleModel.GetListByaccoundidAndRid(accountId, xcx.Id, 4);

            if (listOpenAuthorizerConfig == null)
            {
                _createCardResult.errcode = 1;
                _createCardResult.errmsg  = "请先绑定认证服务号才有生成卡券权限";
                return(_createCardResult);
            }
            OpenAuthorizerConfig umodel = listOpenAuthorizerConfig[0];

            switch (xcxTemplate.Type)
            {
            case (int)TmpType.小程序专业模板:
                EntSetting ent = EntSettingBLL.SingleModel.GetModel(coupons.appId);
                if (ent == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "该专业版信息找不到";
                    return(_createCardResult);
                }
                OpenAuthorizerConfig XUserList = OpenAuthorizerConfigBLL.SingleModel.GetModelByAppids(xcx.AppId);
                if (XUserList == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "请先授权给平台";
                    return(_createCardResult);
                }
                ConfParam imginfo = ConfParamBLL.SingleModel.GetModelByParamappid("logoimg", xcx.AppId);
                if (imginfo == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "请先到小程序管理配置底部Logo";
                    return(_createCardResult);
                }
                logo_url   = imginfo.Value;
                brand_name = XUserList.nick_name;

                break;

            case (int)TmpType.小程序电商模板:
                center_app_brand_pass = "******";    //个人中心页面
                Store store = StoreBLL.SingleModel.GetModelByAId(xcx.Id);
                if (store == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "电商版店铺不存在";
                    return(_createCardResult);
                }
                logo_url   = store.logo;
                brand_name = store.name;
                break;

            case (int)TmpType.小程序餐饮模板:
                center_app_brand_pass = "******";     //个人中心页面
                custom_app_brand_pass = "******"; //首页
                Food miAppFood = FoodBLL.SingleModel.GetModel($"appId={xcx.Id}");
                if (miAppFood == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "餐饮版店铺不存在";
                    return(_createCardResult);
                }

                logo_url   = miAppFood.Logo;
                brand_name = miAppFood.FoodsName;
                break;

            case (int)TmpType.小程序足浴模板:
            case (int)TmpType.小程序多门店模板:
                int t = 0;
                if ((int)TmpType.小程序足浴模板 == xcxTemplate.Type)
                {
                    center_app_brand_pass = "******";     //个人中心页面
                    custom_app_brand_pass = "******"; //首页
                }
                else
                {
                    center_app_brand_pass = "******";    //个人中心页面
                    t = 1;
                }
                FootBath storeModel = FootBathBLL.SingleModel.GetModel($"appId={xcx.Id}");
                if (storeModel == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "找不到该足浴版";
                    return(_createCardResult);
                }
                brand_name = storeModel.StoreName;
                List <C_Attachment> LogoList = C_AttachmentBLL.SingleModel.GetListByCache(storeModel.Id, t == 0 ? (int)AttachmentItemType.小程序足浴版店铺logo : (int)AttachmentItemType.小程序多门店版门店logo);
                if (LogoList != null && LogoList.Count > 0)
                {
                    logo_url = LogoList[0].filepath;
                }
                break;

            case (int)TmpType.小未平台子模版:
                center_app_brand_pass = "******";      //个人中心页面
                custom_app_brand_pass = "******"; //首页
                PlatStore platStore = PlatStoreBLL.SingleModel.GetPlatStore(xcx.Id, 2);
                if (platStore == null)
                {
                    _createCardResult.errcode = 1;
                    _createCardResult.errmsg  = "平台版店铺不存在";
                    return(_createCardResult);
                }
                brand_name = platStore.Name;
                logo_url   = platStore.StoreHeaderImg;
                break;
            }

            if (string.IsNullOrEmpty(logo_url) || string.IsNullOrEmpty(brand_name))
            {
                _createCardResult.errcode = 1;
                _createCardResult.errmsg  = "请先配置Logo以及名称";
                return(_createCardResult);
            }

            //这里可能会出现token失效 个人发布的未授权给我们第三方平台的卡券会生成不了
            string xcxapiurl = XcxApiBLL.SingleModel.GetOpenAuthodModel(umodel.user_name);
            string authorizer_access_token = CommondHelper.GetAuthorizer_Access_Token(xcxapiurl);

            string uploadImgResult = CommondHelper.WxUploadImg(authorizer_access_token, logo_url);

            if (!uploadImgResult.Contains("url"))
            {
                _createCardResult.errcode = 1;
                _createCardResult.errmsg  = $"上传Logo到微信失败uploadImgResult={uploadImgResult}";
                return(_createCardResult);
            }
            if (brand_name.Length >= 12)
            {
                brand_name = brand_name.Substring(0, 12);
            }



            WxUploadImgResult wxUploadImgResult = JsonConvert.DeserializeObject <WxUploadImgResult>(uploadImgResult);

            logo_url = wxUploadImgResult.url;

            base_info _base_info = new base_info();

            _base_info.logo_url   = logo_url;
            _base_info.code_type  = "CODE_TYPE_TEXT";
            _base_info.brand_name = brand_name;
            _base_info.title      = coupons.CouponName.Length > 9 ? Utility.StringHelper.strSubstring(coupons.CouponName, 0, 8) : coupons.CouponName;
            _base_info.color      = "Color010";

            _base_info.center_title = "立即使用";
            _base_info.center_app_brand_user_name = $"{appOriginalId}@app";
            _base_info.center_app_brand_pass      = center_app_brand_pass;

            _base_info.custom_url_name            = "小程序";
            _base_info.custom_app_brand_user_name = $"{appOriginalId}@app";
            _base_info.custom_app_brand_pass      = custom_app_brand_pass;
            _base_info.custom_url_sub_title       = "点击进入";


            _base_info.description  = coupons.Desc.Length > 1024 ? Utility.StringHelper.strSubstring(coupons.Desc, 0, 1023) : coupons.Desc;
            _base_info.notice       = "使用时向服务员出示此券";
            _base_info.sku.quantity = coupons.CreateNum;
            if (coupons.LimitReceive > 0)
            {
                //大于0表示限制,0表示无限制
                _base_info.get_limit = coupons.LimitReceive;
            }


            if (coupons.ValType == 0)
            {
                //表示固定日期
                _base_info.date_info = new Firstdate_infoItem()
                {
                    begin_timestamp = WxUtils.GetWeixinDateTime(coupons.StartUseTime),
                    end_timestamp   = WxUtils.GetWeixinDateTime(coupons.EndUseTime)
                };
            }
            if (coupons.ValType == 2 || coupons.ValType == 1)
            {
                //fixed_begin_term=0表示领取后当天开始生效 1表示次日后开始生效 领取当日N天内有效
                _base_info.date_info = new Seconddate_infoItem()
                {
                    fixed_begin_term = coupons.ValType == 2?0:1,
                    fixed_term       = coupons.ValDay
                };
            }


            string json = string.Empty;

            if (coupons.CouponWay == 0)
            {
                //表示是需要生成微信代金券
                WxCashCoupons wxCashCoupons = new WxCashCoupons();
                Cash          cash          = new Cash();
                cash.base_info = _base_info;//基础字段信息

                Use_condition use_condition = new Use_condition();

                use_condition.accept_category = coupons.GoodsType == 0 ? "全部产品" : "部分产品";
                if (coupons.LimitMoney > 0)
                {
                    cash.least_cost = coupons.LimitMoney;
                    //满减门槛
                    use_condition.least_cost = coupons.LimitMoney;
                }
                use_condition.can_use_with_other_discount = coupons.discountType == 0;

                cash.reduce_cost   = coupons.Money;
                cash.advanced_info = new Advanced_info()
                {
                    use_condition = use_condition
                };
                wxCashCoupons.cash = cash;
                json = JsonConvert.SerializeObject(new { card = wxCashCoupons });
            }
            else
            {
                //表示是需要生成微信折扣券
                WxDiscountCoupons wxDiscountCoupons = new WxDiscountCoupons();
                Discount          discount          = new Discount();
                discount.base_info         = _base_info;
                discount.discount          = (int)(100 - coupons.Money * 0.1);
                wxDiscountCoupons.discount = discount;
                json = JsonConvert.SerializeObject(new { card = wxDiscountCoupons });
            }

            string result = Utility.IO.Context.PostData($"https://api.weixin.qq.com/card/create?access_token={authorizer_access_token}", json);

            if (string.IsNullOrEmpty(result))
            {
                return(_createCardResult);
            }
            _createCardResult = JsonConvert.DeserializeObject <CreateCardResult>(result);
            return(_createCardResult);
        }