/// <summary> /// 按ID查询订阅记录 /// </summary> /// <param name="id"></param> /// <returns></returns> public static BCSubscription querySubscriptionByID(string id) { long timestamp = BCUtil.GetTimeStamp(DateTime.Now); string subscriptionURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcsubscriptionURL + "/" + id; subscriptionURL += "?app_id=" + BCCache.Instance.appId + "&app_sign=" + BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString()) + "×tamp=" + timestamp; try { HttpWebResponse response = BCPrivateUtil.CreateGetHttpResponse(subscriptionURL, BCCache.Instance.networkTimeout); string respString = BCPrivateUtil.GetResponseString(response); JsonData responseData = JsonMapper.ToObject(respString); if (responseData["result_code"].ToString() == "0") { BCSubscription sub = new BCSubscription(); sub.ID = responseData["subscription"]["id"].ToString(); sub.buyerID = responseData["subscription"]["buyer_id"].ToString(); sub.planID = responseData["subscription"]["plan_id"].ToString(); sub.cardID = responseData["subscription"]["card_id"].ToString(); sub.bankName = responseData["subscription"]["bank_name"].ToString(); sub.IDName = responseData["subscription"]["id_name"].ToString(); sub.IDNo = responseData["subscription"]["id_no"].ToString(); sub.mobile = responseData["subscription"]["mobile"].ToString(); sub.amount = (double)responseData["subscription"]["amount"]; sub.couponID = responseData["subscription"]["coupon_id"].ToString(); sub.trialEnd = (long)responseData["subscription"]["trial_end"]; sub.optional = JsonMapper.ToObject<Dictionary<string, string>>(responseData["subscription"]["optional"].ToJson().ToString()); sub.last4 = responseData["subscription"]["last4"].ToString(); sub.status = responseData["subscription"]["status"].ToString(); sub.valid = (bool)responseData["subscription"]["valid"]; sub.cancelAtPeriodEnd = (bool)responseData["subscription"]["cancel_at_period_end"]; return sub; } 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="buyerID">用户ID</param> /// <param name="planID">订阅计划ID</param> /// <param name="cardID">用户卡ID</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<BCSubscription> querySubscriptionsByCondition(string buyerID, string planID, string cardID, long? createdBefore, long? createdAfter, int? skip, int? limit, bool countOnly) { long timestamp = BCUtil.GetTimeStamp(DateTime.Now); string subscriptionURL = BCPrivateUtil.getHost() + BCConstants.version + BCConstants.bcsubscriptionURL; subscriptionURL += "?app_id=" + BCCache.Instance.appId + "&app_sign=" + BCPrivateUtil.getAppSignature(BCCache.Instance.appId, BCCache.Instance.appSecret, timestamp.ToString()) + "×tamp=" + timestamp; if (buyerID != null) { subscriptionURL += "&buyer_id=" + buyerID; } if (planID != null) { subscriptionURL += "&plan_id=" + planID; } if (cardID != null) { subscriptionURL += "&card_id=" + cardID; } if (createdBefore.HasValue) { subscriptionURL += "&created_before=" + createdBefore.Value; } if (createdAfter.HasValue) { subscriptionURL += "&created_after=" + createdAfter.Value; } if (skip.HasValue) { subscriptionURL += "&skip=" + skip.Value; } if (limit.HasValue) { subscriptionURL += "&limit=" + limit.Value; } subscriptionURL += "&count_only=" + countOnly; try { HttpWebResponse response = BCPrivateUtil.CreateGetHttpResponse(subscriptionURL, BCCache.Instance.networkTimeout); string respString = BCPrivateUtil.GetResponseString(response); JsonData responseData = JsonMapper.ToObject(respString); if (responseData["result_code"].ToString() == "0") { List<BCSubscription> subscriptions = new List<BCSubscription>(); if (responseData["subscriptions"].IsArray) { foreach (JsonData subData in responseData["subscriptions"]) { BCSubscription sub = new BCSubscription(); sub.ID = subData["id"].ToString(); sub.buyerID = subData["buyer_id"].ToString(); sub.planID = subData["plan_id"].ToString(); sub.cardID = subData["card_id"].ToString(); sub.bankName = subData["bank_name"].ToString(); sub.IDName = subData["id_name"].ToString(); sub.IDNo = subData["id_no"].ToString(); sub.mobile = subData["mobile"].ToString(); sub.amount = (double)subData["amount"]; sub.couponID = subData["coupon_id"].ToString(); sub.trialEnd = (long)subData["trial_end"]; sub.optional = JsonMapper.ToObject<Dictionary<string, string>>(subData["optional"].ToJson().ToString()); sub.last4 = subData["last4"].ToString(); sub.status = subData["status"].ToString(); sub.valid = (bool)subData["valid"]; sub.cancelAtPeriodEnd = (bool)subData["cancel_at_period_end"]; subscriptions.Add(sub); } } return subscriptions; } 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="smsID">用户短信ID,通过sendSMS方法发送给用户手机时获得</param> /// <param name="smsCode">用户短信验证码</param> /// <param name="subscription">设置订阅参数</param> /// <returns></returns> 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; } }