2013-09-18 3 views
2

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

ответ

7

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

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

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

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

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

извлеченной нашивка объект Customer содержит delinquent поля. Это поле будет установлено в true, если последний счет-фактура не выполнен.

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

+0

Да, это серьезное нарушение полосы. Тот факт, что вы не можете передавать больше параметров в 'curl https://api.stripe.com/v1/customers \ -u *' звонок, является довольно большим надзором IMO. В настоящий момент единственными параметрами, которые они позволяют вам пройти, являются подсчет, смещение и дата создания, поэтому, если вы пытаетесь найти всех клиентов, где X = Y (т.е. 'delinquent = true' и т. Д.), Вам нужно получить каждый клиент (в партиях не более 100) и повторил его ...Что за трата времени! –

7

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

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

Смежные вопросы