如何处理subscriptionService.获取但没有结果

本文关键字:获取 结果 subscriptionService 何处理 处理 | 更新日期: 2023-09-27 18:27:30

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

如何处理subscriptionService.获取但没有结果

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

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

您要特别查找的事件类型可能是customer.subscription.deleted事件,但您可以使用它们做更多的事情,我鼓励您探索所有这些Webhook。

我不能提供代码示例,因为我不使用他们的服务。

strip.net示例显示了subscriptionService.Cancel作为一种方法:
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文档:

退货:已取消的订阅对象。它的订阅状态将被设置为"已取消",除非您在取消时将at_period_end设置为true,在这种情况下,状态将保持为"活动",但cancel_at_period_end属性将更改为true。封地之一是。状态,女巫被取消。