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