Как проверить неудачную повторяющуюся подписку Stripe

Как мне разработать промежуточное ПО при входе в систему, которое проверяет, не завершилась ли повторяющаяся подписка? Я знаю, что Stripe запускает события, когда что-то происходит, и что лучше всего использовать веб-перехватчики. Проблема в том, что я не могу использовать веб-перехватчики в текущей реализации, поэтому мне нужно проверять, когда пользователь входит в систему.


person litenull    schedule 18.09.2013    source источник


Ответы (2)


Правильный ответ:

Как вы уже знаете, webhooks.

Я не уверен, что вы делаете, что веб-перехватчики не являются вариантом в текущей реализации: они просто POST для общедоступного URL-адреса, как и любой запрос конечного пользователя. Если вы можете реализовать что-то еще в Node, вы можете реализовать поддержку веб-перехватчика.

Реализация веб-перехватчиков - это не предложение по принципу «все или ничего»; если вы хотите отслеживать только просроченные платежи, вам нужно реализовать обработку только для одного события веб-перехватчика.

Это должно сработать прямо сейчас, черт возьми ответ:

Полученный объект Stripe Customer содержит поле delinquent. В этом поле будет установлено значение true, если последний платеж по счету не прошел.

N.B. Этот вызов может занять несколько секунд - иногда с двузначным числом - для завершения, в течение которых ваш сайт будет казаться перестал функционировать для ваших пользователей. Если у вас большая база пользователей или короткие сеансы входа в систему, вы также можете превысить лимит скорости Stripe API.

person colinm    schedule 24.09.2013
comment
Да, это серьезный недостаток полосы. Тот факт, что вы не можете передать больше параметров в вызов curl https://api.stripe.com/v1/customers \ -u *, является довольно серьезным упущением IMO. На данный момент единственными параметрами, которые они позволяют вам передавать, являются счетчик, смещение и дата создания, поэтому, если вы пытаетесь найти всех клиентов, у которых X = Y (т.е. delinquent=true и т. Д.), Вам нужно получить каждого отдельного клиента (партиями максимум 100) и повторил его ... какая пустая трата времени! - person Ben D; 11.02.2014
comment
Почему вы говорите, что веб-перехватчики - правильный ответ? Что плохого в том, что какое-то задание cron составляет список правонарушителей и обновляет базу данных? - person Geige V; 28.07.2018

На самом деле я написал в службу поддержки Stripe электронное письмо с жалобами на эту проблему (необходимость перебирать каждый счет или клиента, если вы пытаетесь вывести просроченные записи), и, похоже, вы действительно можете сделать это без веб-перехватчиков или бесполезных циклов. ... просто функция фильтрации недокументирована. Текущая документация показывает, что вы можете изменять запросы customers или invoices только по count, created (дата) и _5 _... но если вы передадите другие параметры, 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
    });

Большое предостережение заключается в том, что, поскольку эта фильтрация недокументирована, ее можно изменить без предварительного уведомления ... но, учитывая очевидность подхода, я полагаю, что это довольно безопасно.

person Ben D    schedule 17.03.2014
comment
Это все еще недокументировано? Я не могу его найти. - person Geige V; 28.07.2018