Beispiel #1
0
        /// <summary>
        /// 根据ID查询订阅计划
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static BCPlan queryPlanByID(string id)
        {
            long timestamp = BCUtil.GetTimeStamp(DateTime.Now);

            string planURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcplanURL + "/" + id;
            planURL += "?app_id=" + BCCache.Instance.appId + "&app_sign=" + BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString()) + "&timestamp=" + timestamp;

            try
            {
                HttpWebResponse response = BCPrivateUtil.CreateGetHttpResponse(planURL, BCCache.Instance.networkTimeout);

                string respString = BCPrivateUtil.GetResponseString(response);

                JsonData responseData = JsonMapper.ToObject(respString);

                if (responseData["result_code"].ToString() == "0")
                {
                    BCPlan plan = new BCPlan();
                    plan.ID = responseData["plan"]["id"].ToString();
                    plan.fee = (int)responseData["plan"]["fee"];
                    plan.interval = responseData["plan"]["interval"].ToString();
                    plan.name = responseData["plan"]["name"].ToString();
                    plan.currency = responseData["plan"]["currency"].ToString();
                    plan.intervalCount = (int)responseData["plan"]["interval_count"];
                    plan.trialDays = (int)responseData["plan"]["trial_days"];
                    plan.valid = (bool)responseData["plan"]["valid"];
                    plan.optional = JsonMapper.ToObject<Dictionary<string, string>>(responseData["plan"]["optional"].ToJson().ToString());
                    return plan;
                }
                else
                {
                    var ex = new BCException(responseData["err_detail"].ToString());
                    throw ex;
                }
            }
            catch (Exception e)
            {
                var ex = new BCException(e.Message);
                throw ex;
            }
        }
Beispiel #2
0
        /// <summary>
        /// 按条件查询订阅计划
        /// </summary>
        /// <param name="nameWithSubstring">订阅计划名</param>
        /// <param name="interval">订阅周期</param>
        /// <param name="intervalCount">周期长度</param>
        /// <param name="trialDays">订阅发生时间与实际扣款时间之间的时长</param>
        /// <param name="createdBefore">创建时间前</param>
        /// <param name="createdAfter">创建时间后</param>
        /// <param name="skip">跳过数量</param>
        /// <param name="limit">查询限量</param>
        /// <param name="countOnly">设置为true时只返回数量,设置为false时只返回plan记录</param>
        /// <returns></returns>
        /// 
        public static List<BCPlan> queryPlansByCondition(string nameWithSubstring, string interval, int? intervalCount, int? trialDays, long? createdBefore, long? createdAfter, int? skip, int? limit, bool countOnly)
        {
            long timestamp = BCUtil.GetTimeStamp(DateTime.Now);

            string planURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcplanURL;
            planURL += "?app_id=" + BCCache.Instance.appId + "&app_sign=" + BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString()) + "&timestamp=" + timestamp;
            if (nameWithSubstring != null)
            {
                planURL += "&name_with_substring=" + nameWithSubstring;
            }
            if (interval != null)
            {
                planURL += "&interval=" + interval;
            }
            if (intervalCount.HasValue)
            {
                planURL += "&interval_count=" + intervalCount.Value;
            }
            if (trialDays.HasValue)
            {
                planURL += "&trial_days=" + trialDays.Value;
            }
            if (createdBefore.HasValue)
            {
                planURL += "&created_before=" + createdBefore.Value;
            }
            if (createdAfter.HasValue)
            {
                planURL += "&created_after=" + createdAfter.Value;
            }
            if (skip.HasValue)
            {
                planURL += "&skip=" + skip.Value;
            }
            if (limit.HasValue)
            {
                planURL += "&limit=" + limit.Value;
            }
            planURL += "&count_only=" + countOnly;

            try
            {
                HttpWebResponse response = BCPrivateUtil.CreateGetHttpResponse(planURL, BCCache.Instance.networkTimeout);

                string respString = BCPrivateUtil.GetResponseString(response);

                JsonData responseData = JsonMapper.ToObject(respString);

                if (responseData["result_code"].ToString() == "0")
                {
                    List<BCPlan> plans = new List<BCPlan>();
                    if (responseData["plans"].IsArray)
                    {
                        foreach (JsonData planData in responseData["plans"])
                        {
                            BCPlan plan = new BCPlan();
                            plan.ID = planData["id"].ToString();
                            plan.fee = (int)planData["fee"];
                            plan.interval = planData["interval"].ToString();
                            plan.name = planData["name"].ToString();
                            plan.currency = planData["currency"].ToString();
                            plan.intervalCount = (int)planData["interval_count"];
                            plan.trialDays = (int)planData["trial_days"];
                            plan.valid = (bool)planData["valid"];
                            plan.optional = JsonMapper.ToObject<Dictionary<string, string>>(planData["optional"].ToJson().ToString());

                            plans.Add(plan);
                        }
                    }
                    return plans;
                }
                else
                {
                    var ex = new BCException(responseData["err_detail"].ToString());
                    throw ex;
                }
            }
            catch (Exception e)
            {
                var ex = new BCException(e.Message);
                throw ex;
            }
        }
Beispiel #3
0
        /// <summary>
        /// 创建订阅计划
        /// </summary>
        /// <param name="plan">设置计划参数</param>
        /// <returns></returns>
        public static BCPlan createPlan(BCPlan plan)
        {
            long timestamp = BCUtil.GetTimeStamp(DateTime.Now);

            JsonData data = new JsonData();
            data["app_id"] = BCCache.Instance.appId;

            data["app_sign"] = BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString());

            data["timestamp"] = timestamp;
            data["fee"] = plan.fee;
            data["interval"] = plan.interval;
            data["name"] = plan.name;
            data["currency"] = plan.currency;
            if (plan.intervalCount != null)
            {
                data["interval_count"] = plan.intervalCount;
            }
            if (plan.trialDays != null)
            {
                data["trial_days"] = plan.trialDays;
            }
            if (plan.valid != null)
            {
                data["valid"] = plan.valid;
            }
            if (plan.optional != null && plan.optional.Count > 0)
            {
                data["optional"] = new JsonData();
                foreach (string key in plan.optional.Keys)
                {
                    data["optional"][key] = plan.optional[key];
                }
            }

            string paraString = data.ToJson();

            string planURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcplanURL;

            try
            {
                HttpWebResponse response = BCPrivateUtil.CreatePostHttpResponse(planURL, paraString, BCCache.Instance.networkTimeout);

                string respString = BCPrivateUtil.GetResponseString(response);

                JsonData responseData = JsonMapper.ToObject(respString);

                if (responseData["result_code"].ToString() == "0")
                {
                    plan.ID = responseData["plan"]["id"].ToString();
                    plan.currency = responseData["plan"]["currency"].ToString();
                    plan.intervalCount = (int)responseData["plan"]["interval_count"];
                    plan.trialDays = (int)responseData["plan"]["trial_days"];
                    plan.valid = (bool)responseData["plan"]["valid"];
                    return plan;
                }
                else
                {
                    var ex = new BCException(responseData["err_detail"].ToString());
                    throw ex;
                }
            }
            catch (Exception e)
            {
                var ex = new BCException(e.Message);
                throw ex;
            }
        }