public static BCSubscription createSubscription(string smsID, string smsCode, BCSubscription subscription)
{
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["sms_id"] = smsID;
data["sms_code"] = smsCode;
data["buyer_id"] = subscription.buyerID;
data["plan_id"] = subscription.planID;
data["card_id"] = subscription.cardID;
data["bank_name"] = subscription.bankName;
data["card_no"] = subscription.cardNo;
data["id_name"] = subscription.IDName;
data["id_no"] = subscription.IDNo;
data["amount"] = subscription.amount;
data["coupon_id"] = subscription.couponID;
data["trial_end"] = subscription.trialEnd;
data["mobile"] = subscription.mobile;
if (subscription.optional != null && subscription.optional.Count > 0)
{
data["optional"] = new JsonData();
foreach (string key in subscription.optional.Keys)
{
data["optional"][key] = subscription.optional[key];
}
}
string paraString = data.ToJson();
string subscriptionURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcsubscriptionURL;
try
{
HttpWebResponse response = BCPrivateUtil.CreatePostHttpResponse(subscriptionURL, paraString, BCCache.Instance.networkTimeout);
string respString = BCPrivateUtil.GetResponseString(response);
JsonData responseData = JsonMapper.ToObject(respString);
if (responseData["result_code"].ToString() == "0")
{
subscription.ID = responseData["subscription"]["id"].ToString();
subscription.buyerID = responseData["subscription"]["buyer_id"].ToString();
subscription.planID = responseData["subscription"]["plan_id"].ToString();
subscription.bankName = responseData["subscription"]["bank_name"].ToString();
subscription.IDName = responseData["subscription"]["id_name"].ToString();
subscription.IDNo = responseData["subscription"]["id_no"].ToString();
subscription.mobile = responseData["subscription"]["mobile"].ToString();
subscription.amount = (double)responseData["subscription"]["amount"];
subscription.couponID = responseData["subscription"]["coupon_id"].ToString();
subscription.trialEnd = (long)responseData["subscription"]["trial_end"];
subscription.optional = JsonMapper.ToObject<Dictionary<string, string>>(responseData["subscription"]["optional"].ToJson().ToString());
subscription.last4 = responseData["subscription"]["last4"].ToString();
subscription.status = responseData["subscription"]["status"].ToString();
subscription.valid = (bool)responseData["subscription"]["valid"];
subscription.cancelAtPeriodEnd = (bool)responseData["subscription"]["cancel_at_period_end"];
return subscription;
}
else
{
var ex = new BCException(responseData["err_detail"].ToString());
throw ex;
}
}
catch (Exception e)
{
var ex = new BCException(e.Message);
throw ex;
}
}