Как мне разработать промежуточное ПО при входе в систему, которое проверяет, не завершилась ли повторяющаяся подписка? Я знаю, что Stripe запускает события, когда что-то происходит, и что лучше всего использовать веб-перехватчики. Проблема в том, что я не могу использовать веб-перехватчики в текущей реализации, поэтому мне нужно проверять, когда пользователь входит в систему.
Как проверить неудачную повторяющуюся подписку Stripe
Ответы (2)
Правильный ответ:
Как вы уже знаете, webhooks.
Я не уверен, что вы делаете, что веб-перехватчики не являются вариантом в текущей реализации: они просто POST для общедоступного URL-адреса, как и любой запрос конечного пользователя. Если вы можете реализовать что-то еще в Node, вы можете реализовать поддержку веб-перехватчика.
Реализация веб-перехватчиков - это не предложение по принципу «все или ничего»; если вы хотите отслеживать только просроченные платежи, вам нужно реализовать обработку только для одного события веб-перехватчика.
Это должно сработать прямо сейчас, черт возьми ответ:
Полученный объект Stripe Customer содержит поле delinquent
. В этом поле будет установлено значение true
, если последний платеж по счету не прошел.
N.B. Этот вызов может занять несколько секунд - иногда с двузначным числом - для завершения, в течение которых ваш сайт будет казаться перестал функционировать для ваших пользователей. Если у вас большая база пользователей или короткие сеансы входа в систему, вы также можете превысить лимит скорости Stripe API.
curl https://api.stripe.com/v1/customers \ -u *
, является довольно серьезным упущением IMO. На данный момент единственными параметрами, которые они позволяют вам передавать, являются счетчик, смещение и дата создания, поэтому, если вы пытаетесь найти всех клиентов, у которых X = Y (т.е. delinquent=true
и т. Д.), Вам нужно получить каждого отдельного клиента (партиями максимум 100) и повторил его ... какая пустая трата времени!
- person Ben D; 11.02.2014
На самом деле я написал в службу поддержки 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
});
Большое предостережение заключается в том, что, поскольку эта фильтрация недокументирована, ее можно изменить без предварительного уведомления ... но, учитывая очевидность подхода, я полагаю, что это довольно безопасно.