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;
}
}