コード例 #1
0
ファイル: ConfigBLL.cs プロジェクト: tangqun/App_WeChat
        public RESTfulModel GetAPIConfig(string authorizerAppID, string cardID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);

                string apiTicket = authorizationInfoModel.APITicket;
                string timestamp = UtilsHelper.GetTimestamp();
                string nonceStr  = UtilsHelper.GetNonceStr();
                string signature = UtilsHelper.GenarateSignature(apiTicket, timestamp, cardID, nonceStr);

                string cardExt = JsonConvert.SerializeObject(new { signature = signature, timestamp = timestamp, nonce_str = nonceStr });

                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功"), Data = new APIConfigModel()
                    {
                        CardExt = cardExt
                    }
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }
コード例 #2
0
ファイル: ConfigBLL.cs プロジェクト: tangqun/App_WeChat
        public RESTfulModel GetJSAPIConfig(string authorizerAppID, string url)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);

                string jsapiTicket = authorizationInfoModel.JSAPITicket;
                string timestamp   = UtilsHelper.GetTimestamp();
                string nonceStr    = UtilsHelper.GetNonceStr();

                string format = "jsapi_ticket={0}&noncestr={1}&timestamp={2}&url={3}";

                string stringToHash = string.Format(format, jsapiTicket, nonceStr, timestamp, url);

                string signature = UtilsHelper.SHA1(stringToHash);

                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功"), Data = new JSAPIConfigModel()
                    {
                        Timestamp = timestamp, NonceStr = nonceStr, Signature = signature
                    }
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }
コード例 #3
0
        public EntityShopInfoModel GetModel(string authorizerAppID, string poiID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string url = "http://api.weixin.qq.com/cgi-bin/poi/getpoi?access_token=" + authorizationInfoModel.AuthorizerAccessToken;

                LogHelper.Info("3.4查询门店信息 url", url);

                EntityShopGetReq req = new EntityShopGetReq()
                {
                    PoiID = poiID
                };
                string requestBody = JsonConvert.SerializeObject(req);

                LogHelper.Info("3.4查询门店信息 requestBody", requestBody);

                //string responseBody = HttpHelper.Post(url, requestBody);

                //LogHelper.Info("3.4查询门店信息 responseBody", responseBody);

                string responseBody = "{\"errcode\":0,\"errmsg\":\"ok\",\"business\":{\"base_info\":{\"sid\":\"\",\"business_name\":\"朝外MEN写字楼\",\"branch_name\":\"\",\"address\":\"朝外大街26号\",\"telephone\":\"15210470906\",\"categories\":[\"公司企业,企业/工厂\"],\"city\":\"北京市\",\"province\":\"\",\"offset_type\":1,\"longitude\":116.442108154,\"latitude\":39.9230194092,\"photo_list\":[{\"photo_url\":\"http://mmbiz.qpic.cn/mmbiz_png/jTItpJe45JLNBQjKKiapJicznbYVMicDXGzs4EaNVgiao57JSlLgYxrh1OplMF8tr8DJ7RmlAeJmv1h22EePgSl1OQ/0?wx_fmt=png\"}],\"introduction\":\"\",\"recommend\":\"\",\"special\":\"\",\"open_time\":\"10:00-21:00\",\"avg_price\":100,\"poi_id\":\"468757507\",\"available_state\":3,\"district\":\"朝阳区\",\"update_status\":0,\"qualification_list\":[]}}}";

                EntityShopGetResp resp = JsonConvert.DeserializeObject <EntityShopGetResp>(responseBody);

                var entityShopInfo = resp.Business.BaseInfo;

                return(new EntityShopInfoModel()
                {
                    SID = entityShopInfo.SID,
                    BusinessName = entityShopInfo.BusinessName,
                    BranchName = entityShopInfo.BranchName,
                    Address = entityShopInfo.Address,
                    Telephone = entityShopInfo.Telephone,
                    Categories = entityShopInfo.Categories,
                    City = entityShopInfo.City,
                    Province = entityShopInfo.Province,
                    OffsetType = entityShopInfo.OffsetType,
                    Longitude = entityShopInfo.Longitude,
                    Latitude = entityShopInfo.Latitude,
                    PhotoList = entityShopInfo.PhotoList.Select(o => o.PhotoUrl).ToList(),
                    Introduction = entityShopInfo.Introduction,
                    Recomend = entityShopInfo.Recomend,
                    Special = entityShopInfo.Special,
                    OpenTime = entityShopInfo.OpenTime,
                    AvgPrice = entityShopInfo.AvgPrice,
                    PoiID = entityShopInfo.PoiID,
                    AvailableState = entityShopInfo.AvailableState,
                    District = entityShopInfo.District,
                    UpdateStatus = entityShopInfo.UpdateStatus
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(null);
            }
        }
コード例 #4
0
        // 卡面
        public MemberCardModel GetModel(string authorizerAppID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string authorizerAccessToken = authorizationInfoModel.AuthorizerAccessToken;
                LogHelper.Info("8.6.4 查看卡券详情 authorizerAccessToken", authorizerAccessToken);

                // 可以删除
                //string url = "https://api.weixin.qq.com/card/user/getcardlist?access_token=" + authorizerAccessToken;
                //LogHelper.Info("2 获取用户已领取卡券接口 url", url);
                //CardListGetReq req = new CardListGetReq()
                //{
                //    OpenID = openID,
                //    CardID = cardID
                //};
                //string requestBody = JsonConvert.SerializeObject(req);
                //LogHelper.Info("2 获取用户已领取卡券接口 requestBody", requestBody);
                //string responseBody = HttpHelper.Post(url, requestBody);
                //LogHelper.Info("2 获取用户已领取卡券接口 responseBody", responseBody);
                //CardListGetResp resp = JsonConvert.DeserializeObject<CardListGetResp>(responseBody);

                CardInfoModel cardInfoModel = cardInfoDAL.GetModel(authorizerAppID);
                if (cardInfoModel == null)
                {
                    // 未创建会员卡
                }

                // 会员卡信息,建议先保存微信服务器,然后保存本地服务器,修改同理,这里可以从本地服务器查询
                string url = "https://api.weixin.qq.com/card/get?access_token=" + authorizerAccessToken;
                LogHelper.Info("8.6.4 查看卡券详情 url", url);
                CardGetReq req = new CardGetReq()
                {
                    CardID = cardInfoModel.CardID
                };
                string requestBody = JsonConvert.SerializeObject(req);
                LogHelper.Info("8.6.4 查看卡券详情 requestBody", requestBody);
                string responseBody = HttpHelper.Post(url, requestBody);
                LogHelper.Info("8.6.4 查看卡券详情 responseBody", responseBody);
                CardGetResp resp = JsonConvert.DeserializeObject <CardGetResp>(responseBody);

                var memberCard = resp.Card.MemberCard;
                return(new MemberCardModel()
                {
                    CardID = cardInfoModel.CardID,
                    BackgroundPicUrl = memberCard.BackgroundPicUrl,
                    LogoUrl = memberCard.BaseInfo.LogoUrl,
                    BrandName = memberCard.BaseInfo.BrandName,
                    Title = memberCard.BaseInfo.Title
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(null);
            }
        }
コード例 #5
0
        public List <MemberCardModel> GetList(string authorizerAppID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string url = "https://api.weixin.qq.com/card/batchget?access_token=" + authorizationInfoModel.AuthorizerAccessToken;

                LogHelper.Info("批量查询卡券列表 url", url);

                CardListGetReq req = new CardListGetReq()
                {
                    Offset = 0,
                    Count  = 10
                };
                string requestBody = JsonConvert.SerializeObject(req);

                LogHelper.Info("批量查询卡券列表 requestBody", requestBody);

                string responseBody = HttpHelper.Post(url, requestBody);

                LogHelper.Info("批量查询卡券列表 responseBody", responseBody);

                CardListGetResp resp = JsonConvert.DeserializeObject <CardListGetResp>(responseBody);

                List <MemberCardModel> memberCardModelList = new List <MemberCardModel>();

                if (resp.ErrCode == 0)
                {
                    List <string> cardIDList = resp.CardIDList;
                    if (cardIDList.Any())
                    {
                        foreach (var cardID in cardIDList)
                        {
                            MemberCardModel memberCardModel = GetModel(authorizerAppID, cardID);
                            if (memberCardModel != null)
                            {
                                memberCardModelList.Add(memberCardModel);
                            }
                        }
                    }
                }

                return(memberCardModelList);
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(null);
            }
        }
コード例 #6
0
        public Model_9H.RESTfulModel Get(string authorizerAppID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = authorizationInfoDAL.GetModel(authorizerAppID);
                if (authorizationInfoModel != null)
                {
                    int timestamp = (int)((DateTime.Now - authorizationInfoModel.UpdateTime).TotalMinutes);
                    if (timestamp >= 110)
                    {
                        ConfigModel configModel = configDAL.GetModel("component_access_token");
                        string      url_5       = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=" + configModel.Value;

                        LogHelper.Info("5、获取(刷新)授权公众号的接口调用凭据(令牌) url_5", url_5);

                        AuthorizationInfoModel authorizationInfoModel2 = Refresh(authorizationInfoModel.AuthorizerAppID, authorizationInfoModel.AuthorizerAccessToken, authorizationInfoModel.AuthorizerRefreshToken, configModel.Value);
                        authorizationInfoModel2.AuthorizerAccessTokenOld = authorizationInfoModel.AuthorizerAccessToken;

                        return(new RESTfulModel()
                        {
                            Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功"), Data = authorizationInfoModel2
                        });
                    }
                    else
                    {
                        return(new RESTfulModel()
                        {
                            Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功"), Data = authorizationInfoModel
                        });
                    }
                }
                else
                {
                    return(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.用户未授权, Msg = codeMsgDAL.GetByCode((int)CodeEnum.用户未授权)
                    });
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }
コード例 #7
0
        public AuthorizationInfoModel Get(string authorizerAppID)
        {
            string url = ConfigHelper.DomainToken + "api/accesstoken/get?authorizerappid=" + authorizerAppID;

            LogHelper.Info("获取access_token url", url);

            string responseBody = HttpHelper.Get(url);

            LogHelper.Info("获取access_token responseBody", responseBody);

            RESTfulModel resp = JsonConvert.DeserializeObject <RESTfulModel>(responseBody);

            AuthorizationInfoModel authorizationInfoModel = JsonConvert.DeserializeObject <AuthorizationInfoModel>(resp.Data.ToString());

            return(authorizationInfoModel);
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: tangqun/App_WeChat
        static void Main(string[] args)
        {
            //string cardID = "pp8Cv1bypNXD5z-KwoatVEaYJa0w";
            //string apiTicket = "9KwiourQPRN3vx3Nn1c_iXKXdRjqsvnKe_KV_HB6ZofIGZwZJ6XmXxkgI4xvjssApkcK8mxUN8jSd4EMcism-Q";
            //string timestamp = UtilsHelper.GetTimestamp();
            //string nonceStr = UtilsHelper.GetNonceStr();

            //string signature = UtilsHelper.GenarateSignature(apiTicket, timestamp, cardID, nonceStr);

            //Console.WriteLine(signature);

            AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get("wxab6d7123cc1125f5");



            Console.ReadLine();
        }
コード例 #9
0
ファイル: BLLWeixinOpen.cs プロジェクト: uvbs/mmp
        /// <summary>
        /// 使用授权码换取公众号的接口调用凭据和授权信息
        /// </summary>
        /// <returns></returns>
        public AuthorizationInfoModel GetQueryAuth(string authCode)
        {
            var systemSet = GetSysSet();
            var dataObj   = new
            {
                component_appid    = systemSet.ComponentAppId,
                authorization_code = authCode
            };
            string data = ZentCloud.Common.JSONHelper.ObjectToJson(dataObj);

            ZentCloud.Common.HttpInterFace webRequest = new Common.HttpInterFace();
            var result = webRequest.PostWebRequest(data, string.Format("https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token={0}", GetComponentAccessToken()), Encoding.UTF8);

            AuthorizationInfoModel model = ZentCloud.Common.JSONHelper.JsonToModel <AuthorizationInfoModel>(result);

            return(model);
        }
コード例 #10
0
 private AuthorizationInfoModel EntityToModel(DataRow dr)
 {
     if (dr != null)
     {
         AuthorizationInfoModel model = new AuthorizationInfoModel();
         model.ID = dr["id"].ToInt();
         model.AuthorizerAppID          = dr["authorizer_appid"].ToString();
         model.AuthorizerAccessTokenOld = dr["authorizer_access_token_old"].ToString();
         model.AuthorizerAccessToken    = dr["authorizer_access_token"].ToString();
         model.ExpiresIn = dr["expires_in"].ToInt();
         model.AuthorizerRefreshToken = dr["authorizer_refresh_token"].ToString();
         model.JSAPITicket            = dr["jsapi_ticket"].ToString();
         model.APITicket   = dr["api_ticket"].ToString();
         model.AuthTime    = dr["auth_time"].ToDateTime();
         model.RefreshTime = dr["refresh_time"].ToDateTime();
         model.CreateTime  = dr["create_time"].ToDateTime();
         model.UpdateTime  = dr["update_time"].ToDateTime();
         return(model);
     }
     return(null);
 }
コード例 #11
0
        public string UploadIMG(string authorizerAppID, HttpFileCollectionBase files)
        {
            try
            {
                if (files != null)
                {
                    HttpPostedFileBase file = files[0];
                    float mbSize            = (float)file.ContentLength / 1048576;
                    if (mbSize <= 1)
                    {
                        AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                        string url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=" + authorizationInfoModel.AuthorizerAccessToken;

                        LogHelper.Info("上传图片 url", url);

                        //UploadIMGReq req = new UploadIMGReq()
                        //{
                        //    Buffer = file.InputStream
                        //};
                        //string requestBody = JsonConvert.SerializeObject(req);

                        //LogHelper.Info("上传图片 requestBody", requestBody);

                        string responseBody = HttpHelper.Post(url, file.FileName, file.InputStream);

                        LogHelper.Info("上传图片 responseBody", responseBody);

                        UploadIMGResp resp = JsonConvert.DeserializeObject <UploadIMGResp>(responseBody);

                        if (resp.ErrCode == 0)
                        {
                            return(JsonConvert.SerializeObject(new RESTfulModel()
                            {
                                Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "上传成功"), Data = resp.Url
                            }));
                        }
                        else
                        {
                            string msg = "errcode: " + resp.ErrCode + ", errmsg: " + resp.ErrMsg;
                            return(JsonConvert.SerializeObject(new RESTfulModel()
                            {
                                Code = (int)CodeEnum.失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.失败), msg)
                            }));
                        }
                    }
                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.文件大小超限, Msg = codeMsgDAL.GetByCode((int)CodeEnum.文件大小超限)
                    }));
                }
                return(JsonConvert.SerializeObject(new RESTfulModel()
                {
                    Code = (int)CodeEnum.文件集合为空, Msg = codeMsgDAL.GetByCode((int)CodeEnum.文件集合为空)
                }));
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(JsonConvert.SerializeObject(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                }));
            }
        }
コード例 #12
0
        public string Activate(string authorizerAppID, MemberCardActivateModel model)
        {
            try
            {
                // 验证参数

                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string authorizerAccessToken = authorizationInfoModel.AuthorizerAccessToken;
                LogHelper.Info("6.1 接口激活 authorizerAccessToken", authorizerAccessToken);

                // Code解码
                string code = string.Empty;
                if (!DecryptCode(authorizerAccessToken, model.EncryptCode, out code))
                {
                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.Code解码失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.Code解码失败), model.EncryptCode)
                    }));
                }
                ;

                string url = "https://api.weixin.qq.com/card/membercard/activate?access_token=" + authorizerAccessToken;
                LogHelper.Info("6.1 接口激活 url", url);
                MemberCardActivateReq req = new MemberCardActivateReq()
                {
                    // 手机号作为会员卡号
                    MembershipNumber = model.Mobile,
                    Code             = code,
                    CardID           = model.CardID,
                    //InitBonus = 0,
                    //InitBonusRecord = "",
                    //InitBalance = 0,
                    //InitCustomFieldValue1 = "0",
                    // 优惠券
                    InitCustomFieldValue2 = "查看",
                    // 初始等级
                    InitCustomFieldValue3 = "查看"
                };
                string requestBody = JsonConvert.SerializeObject(req);
                LogHelper.Info("6.1 接口激活 requestBody", requestBody);
                string responseBody = HttpHelper.Post(url, requestBody);
                LogHelper.Info("6.1 接口激活 responseBody", responseBody);
                MemberCardActivateResp resp = JsonConvert.DeserializeObject <MemberCardActivateResp>(responseBody);
                if (resp.ErrCode == 0)
                {
                    DateTime dt = DateTime.Now;
                    // 保存 AuthorizerAppID、CardID、Code之间的关系
                    memberInfoDAL.Insert(authorizerAppID, model.OpenID, model.CardID, code, model.Mobile, model.Mobile, model.RealName, model.Gender, model.Birthday, dt);

                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "激活成功")
                    }));
                }
                else
                {
                    string msg = "errcode: " + resp.ErrCode + ", errmsg: " + resp.ErrMsg;
                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.失败), msg)
                    }));
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(JsonConvert.SerializeObject(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                }));
            }
        }
コード例 #13
0
        public RESTfulModel Save(SaveAuthModel model)
        {
            // 授权信息存数据库
            try
            {
                // 验证

                // jsapi_ticket
                string url_jsapi = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + model.AuthorizerAccessToken + "&type=jsapi";
                LogHelper.Info("获取(刷新)jsapi_ticket url_jsapi", url_jsapi);
                string responseBody_jsapi = HttpHelper.Get(url_jsapi);
                LogHelper.Info("获取(刷新)jsapi_ticket responseBody_jsapi", responseBody_jsapi);
                TicketGetResp resp_jsapi = JsonConvert.DeserializeObject <TicketGetResp>(responseBody_jsapi);

                // api_ticket
                string url_api = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + model.AuthorizerAccessToken + "&type=wx_card";
                LogHelper.Info("获取(刷新)api_ticket url_api", url_api);
                string responseBody_api = HttpHelper.Get(url_api);
                LogHelper.Info("获取(刷新)api_ticket responseBody_api", responseBody_api);
                TicketGetResp resp_api = JsonConvert.DeserializeObject <TicketGetResp>(responseBody_api);

                AuthorizationInfoModel authorizationInfoModel = authorizationInfoDAL.GetModel(model.AuthorizerAppID);
                if (authorizationInfoModel != null)
                {
                    // 更新
                    authorizationInfoDAL.Update(
                        model.AuthorizerAppID,
                        authorizationInfoModel.AuthorizerAccessToken,// 当前的置为旧的,用于消息延时
                        model.AuthorizerAccessToken,
                        model.ExpiresIn,
                        model.AuthorizerRefreshToken,
                        resp_jsapi.Ticket,
                        resp_api.Ticket,
                        model.AuthTime);
                }
                else
                {
                    // 插入
                    authorizationInfoDAL.Insert(
                        model.AuthorizerAppID,
                        model.AuthorizerAccessToken,
                        model.AuthorizerAccessToken,
                        model.ExpiresIn,
                        model.AuthorizerRefreshToken,
                        resp_jsapi.Ticket,
                        resp_api.Ticket,
                        model.AuthTime);
                }

                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "成功")
                });
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                });
            }
        }
コード例 #14
0
        public string Update(string authorizerAppID, MemberCardModel model)
        {
            try
            {
                Card card = new Card()
                {
                    CardID     = model.CardID,
                    MemberCard = new MemberCard()
                    {
                        BackgroundPicUrl = model.BackgroundPicUrl,
                        BaseInfo         = new MemberCardBaseInfo()
                        {
                            LogoUrl      = model.LogoUrl,
                            BrandName    = model.BrandName,
                            CodeType     = "CODE_TYPE_QRCODE",
                            Title        = model.Title,
                            Color        = "Color010",
                            Notice       = model.Notice,
                            ServicePhone = model.ServicePhone,
                            Description  = model.Description,

                            DateInfo = new DataInfo()
                            {
                                Type = "DATE_TYPE_PERMANENT"
                            },
                            Sku = new Sku()
                            {
                                Quantity = 100000000
                            },

                            GetLimit      = 1,
                            CanGiveFriend = false,
                            CanShare      = false,

                            // 不适用自定义Code
                            UseCustomCode   = false,
                            UseAllLocations = true,

                            CenterTitle = "会员买单",
                            //CenterSubTitle = "买单立享" + model.Discount + "折,更有积分相送",
                            CenterUrl = "http://" + authorizerAppID + "." + ConfigHelper.DomainWeChat + "/membercard/gopay"

                                        // custom_url_name
                                        // custom_url
                                        // custom_url_sub_title
                                        // promotion_url_name
                                        // promotion_url
                                        // promotion_url_sub_title

                                        // need_push_on_view
                        },
                        AdvancedInfo = new MemberCardAdvancedInfo()
                        {
                            BusinessService = new List <string>()
                            {
                                "BIZ_SERVICE_FREE_WIFI",
                                "BIZ_SERVICE_WITH_PET",
                                "BIZ_SERVICE_FREE_PARK",
                                "BIZ_SERVICE_DELIVER"
                            }
                        },
                        // 会员卡特权说明
                        Prerogative = model.Prerogative,

                        // 激活相关
                        AutoActivate = false,
                        WXActivate   = false,
                        // 激活页面
                        ActivateUrl = "http://" + authorizerAppID + "." + ConfigHelper.DomainWeChat + "/membercard/activate",

                        // 是否支持储值
                        SupplyBalance = false,

                        //CustomField1 = new CustomField()
                        //{
                        //    // 不行就用 Name , 积分变动触发 is_notify_bonus
                        //    // 其他两个触发 is_notify_custom_field2 is_notify_custom_field3
                        //    NameType = "FIELD_NAME_TYPE_STAMP",
                        //    Url = string.Format(ConfigHelper.DomainWeChat, authorizerAppID) + "bonus"
                        //},
                        CustomField2 = new CustomField()
                        {
                            // 优惠券
                            NameType = "FIELD_NAME_TYPE_COUPON",
                            Url      = string.Format(ConfigHelper.DomainWeChat, authorizerAppID) + "coupon"
                        },
                        CustomField3 = new CustomField()
                        {
                            // 等级
                            NameType = "FIELD_NAME_TYPE_LEVEL",
                            Url      = string.Format(ConfigHelper.DomainWeChat, authorizerAppID) + "level"
                        },

                        // 积分相关
                        SupplyBonus = true,
                        BonusRule   = new BonusRule()
                        {
                            // 满
                            CostMoneyUnit = model.CostMoneyUnit,
                            // 送
                            IncreaseBonus = model.IncreaseBonus,
                            // 单次获得上限
                            MaxIncreaseBonus = model.MaxIncreaseBonus,
                            // 初始积分
                            InitIncreaseBonus = model.InitIncreaseBonus,
                            // 用积分
                            CostBonusUnit = model.CostBonusUnit,
                            // 抵现金
                            ReduceMoney = model.ReduceMoney,
                            // 抵扣条件,满xx元(这里以分为单位)可用
                            LeastMoneyToUseBonus = model.LeastMoneyToUseBonus,
                            // 抵扣条件,单笔最多使用xx积分。
                            MaxReduceBonus = model.MaxReduceBonus
                        },
                        Discount = model.Discount
                    }
                };

                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string url = "https://api.weixin.qq.com/card/update?access_token=" + authorizationInfoModel.AuthorizerAccessToken;

                LogHelper.Info("更新会员卡 url", url);

                string requestBody = JsonConvert.SerializeObject(card);

                LogHelper.Info("更新会员卡 requestBody", requestBody);

                string responseBody = HttpHelper.Post(url, requestBody);

                LogHelper.Info("更新会员卡 responseBody", responseBody);

                CardCreateResp resp = JsonConvert.DeserializeObject <CardCreateResp>(responseBody);
                if (resp.ErrCode == 0)
                {
                    // 存储 authorizerAppID 和 cardID 之间的对应关系
                    cardInfoDAL.Insert(authorizerAppID, resp.CardID, DateTime.Now);
                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.成功, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.成功), "更新成功")
                    }));
                }
                else
                {
                    string msg = "errcode: " + resp.ErrCode + ", errmsg: " + resp.ErrMsg;
                    return(JsonConvert.SerializeObject(new RESTfulModel()
                    {
                        Code = (int)CodeEnum.失败, Msg = string.Format(codeMsgDAL.GetByCode((int)CodeEnum.失败), msg)
                    }));
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(JsonConvert.SerializeObject(new RESTfulModel()
                {
                    Code = (int)CodeEnum.系统异常, Msg = codeMsgDAL.GetByCode((int)CodeEnum.系统异常)
                }));
            }
        }
コード例 #15
0
        public MemberCardModel GetModel(string authorizerAppID, string cardID)
        {
            try
            {
                AuthorizationInfoModel authorizationInfoModel = accessTokenDAL.Get(authorizerAppID);
                string url = "https://api.weixin.qq.com/card/get?access_token=" + authorizationInfoModel.AuthorizerAccessToken;

                LogHelper.Info("查询卡券详情 url", url);

                CardGetReq req = new CardGetReq()
                {
                    CardID = cardID
                };
                string requestBody = JsonConvert.SerializeObject(req);

                LogHelper.Info("查询卡券详情 requestBody", requestBody);

                string responseBody = HttpHelper.Post(url, requestBody);

                LogHelper.Info("查询卡券详情 responseBody", responseBody);

                CardGetResp resp = JsonConvert.DeserializeObject <CardGetResp>(responseBody);
                if (resp.ErrCode == 0)
                {
                    switch (resp.Card.CardType)
                    {
                    case "MEMBER_CARD":
                        MemberCard card = resp.Card.MemberCard;
                        return(new MemberCardModel()
                        {
                            BackgroundPicUrl = card.BackgroundPicUrl,
                            CardID = card.BaseInfo.ID,
                            LogoUrl = card.BaseInfo.LogoUrl,
                            BrandName = card.BaseInfo.BrandName,

                            Title = card.BaseInfo.Title,

                            Notice = card.BaseInfo.Notice,
                            ServicePhone = card.BaseInfo.ServicePhone,
                            Description = card.BaseInfo.Description,

                            // 会员卡特权说明
                            Prerogative = card.Prerogative,

                            ServiceFreeWIFI = card.AdvancedInfo.BusinessService.Contains("BIZ_SERVICE_FREE_WIFI"),
                            ServiceWithPet = card.AdvancedInfo.BusinessService.Contains("BIZ_SERVICE_WITH_PET"),
                            ServiceFreePark = card.AdvancedInfo.BusinessService.Contains("BIZ_SERVICE_FREE_PARK"),
                            ServiceDeliver = card.AdvancedInfo.BusinessService.Contains("BIZ_SERVICE_DELIVER"),

                            // 满
                            CostMoneyUnit = card.BonusRule.CostMoneyUnit,
                            // 送
                            IncreaseBonus = card.BonusRule.IncreaseBonus,
                            MaxIncreaseBonus = card.BonusRule.MaxIncreaseBonus,
                            InitIncreaseBonus = card.BonusRule.InitIncreaseBonus,
                            // 用
                            CostBonusUnit = card.BonusRule.CostBonusUnit,
                            // 抵
                            ReduceMoney = card.BonusRule.ReduceMoney,
                            // 抵扣条件,满
                            LeastMoneyToUseBonus = card.BonusRule.LeastMoneyToUseBonus,
                            // 抵扣条件,抵
                            MaxReduceBonus = card.BonusRule.MaxReduceBonus,

                            Discount = card.Discount
                        });

                    default:
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error(ex);
                return(null);
            }
        }