stripe.net - 如何处理subscriptionService.Get没有结果

时间:2014-10-23 13:45:10

标签: c# stripe.net

stripe.com API仅返回有效订阅。我想验证何时删除订阅。

所以这会返回一个错误。我不知道如何为它编码。

我更愿意根据subscriptionId进行此调用。这会导致异常还是会返回错误代码?

检索订阅

var subscriptionService = new StripeSubscriptionService();
StripeSubscription stripeSubscription = subscriptionService.Get(*subscriptionId*);

另一个有点像黑客的选择是返回给定客户的所有订阅并测试以查看是否返回了subscriptionId。

列出客户的所有订阅

var subscriptionService = new StripeSubscriptionService();
IEnumerable<StripeSubscription> responses = subscriptionService .List(*customerId*);
foreach( var response in responses )
{
     if (response.subscriptionId == subscriptionId)
     {
         // subscription exists and was not deleted
         exit;
     }
}

2 个答案:

答案 0 :(得分:0)

根据他们的文档,https://stripe.com/docs/api他们有2个不同的API。您正在尝试使用RESTful API,该API用于按需检索信息。

他们还有 WebHooks API ,这要求您在您的网站上监听可以接受事件通知的端点。您可以通过仪表板配置它们。

您具体要查找的事件类型可能是 customer.subscription.deleted 事件,但您可以做的事情还有很多他们和我鼓励你去探索所有这些Webhooks。

我无法提供代码示例,因为我没有使用他们的服务。

答案 1 :(得分:0)

strip.net示例将subscriptionService.Cancel显示为methed:

var subscriptionService = new StripeSubscriptionService();
subscriptionService.Cancel(*customerId*, *subscriptionId*);

但您也可以将其用作函数并返回订阅对象。

var subscriptionService = new StripeSubscriptionService();
StripeSubscription stripeSubscription = subscriptionService.Cancel(*customerId*, *subscriptionId*);

If (stripeSubscription.Status != "canceled")
{
     //subscription not cancelled
     // take action
}

Stripe API docs

返回: 已取消的订阅对象。其订阅状态将设置为&#34;已取消&#34;除非您在取消时将at_period_end设置为true,否则状态将保持为&#34;有效&#34;但是cancel_at_period_end属性将变为true。其中一个fiels是.status,女巫被设置为取消。