/// <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()) + "×tamp=" + 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; } }
/// <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()) + "×tamp=" + 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; } }
/// <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; } }