4

我应该如何设计一个登录中间件来检查定期订阅是否失败?我知道当事情发生时,Stripe 会触发事件,而最佳实践是 webhook。问题是,我不能在当前实现中使用 webhook,所以我必须检查用户何时登录。

4

2 回答 2

8

我实际上给 Stripe 支持团队写了一封电子邮件,抱怨这个问题(如果你试图提取拖欠条目,需要遍历每张发票或客户),看起来你实际上可以在没有 webhook 或浪费循环的情况下做到这一点。 . 只是过滤功能没有记录。当前文档显示您只能修改customersor invoicesby countcreated(date) 和offset...的查询,如果您传入其他参数,Stripe API 实际上会尝试理解查询,因此cURL请求:

https://api.stripe.com/v1/invoices?closed=false&count=100&offset=0

将只查找未结发票....您还可以delinquent=true在查找拖欠客户时传递一个参数。我只在 PHP 中对此进行了测试,因此返回的拖欠客户如下所示:

Stripe_Customer::all(array(
  "delinquent" => true
));

但我相信这应该适用于 Node.js:

 stripe.customers.list(
       {delinquent:true},
      function(err, customers) {
      // asynchronously called
    });

这里最大的警告是,由于此过滤没有记录,因此可能会在没有通知的情况下进行更改……但是鉴于该方法的显而易见性,我猜它非常安全。

于 2014-03-17T23:13:36.787 回答
8

正确答案:

如您所知,webhook。

我不确定你在做什么,webhook 在当前实现中不是一个选项:它们只是一个公开可用 URL 的 POST,与任何最终用户请求相同。如果您可以在 Node 中实现任何其他功能,则可以实现 webhook 支持。

实施 webhook 不是一个全有或全无的命题。如果您只想跟踪拖欠付款,则只需对一个 webhook 事件进行处理。

这必须立即工作,客户体验该死的答案:

检索到的 Stripe Customer 对象包含一个delinquent字段。true如果最新的发票费用失败,则此字段将设置为。

注意此调用可能需要几秒钟(有时会达到两位数)才能完成,在此期间,您的网站对您的用户来说似乎已停止运行。如果您的用户群较大或登录会话较短,您也可能会超出 Stripe API 速率限制。

于 2013-09-24T16:12:29.337 回答