Braintree: поиск транзакций для подписки

#braintree

#braintree

Вопрос:

В настоящее время я внедряю платежи Braintree в свой серверный сервер.

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

В любом случае, в настоящее время я (частично) начинаю все сначала. Я хочу, чтобы мой серверный сервер всегда мог восстанавливаться после пропущенных веб-ссылок. Отказоустойчивый, если хотите, способ, который не срабатывает до тех пор, пока ничего не ломается во время webhooks или мой сервер не работает более 24 часов.

Чтобы это сработало, мне нужно иметь возможность синхронизировать Subscription статус, а также извлекать все Transactions данные. Это необходимо для того, чтобы я мог правильно выставлять счета своим клиентам.

Я планирую задания, которые смотрят на status подписку, и, допустим, это так null и она была создана более 24 часов назад, мой сервер спросит BT, что случилось с этой подпиской, и обновит результат на моей стороне.

Пока все хорошо, но я изо всех сил пытаюсь найти способ надежно синхронизировать прошлые транзакции.

Моя идея состояла в том, чтобы сохранить их last_transaction_date в моей subscription таблице и сравнить с другим (запланированным) заданием paid_throuth_date . Если это last_transaction_date было раньше paid_through_date , я хочу извлечь отсутствующие транзакции для затронутой подписки.

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

 TransactionSearchRequest transactionSearchRequest = new TransactionSearchRequest()
        //.subscriptionId(subscriptionId) <-- Non existent?
        .createdAt()
        .greaterThanOrEqualTo(lastTransactionDate);
  

Итак, каков способ, которым можно воспользоваться здесь?

Я не думаю, что это хорошая идея — просто полагаться на webhooks — пожалуйста, скажите мне, если я слишком беспокоюсь по этому поводу, но имхо, вы никогда не знаете, может ли ваш сервер отключиться более чем на 24 часа.

Информация: 24 часа — это время, в течение которого Braintree будет пытаться связаться с вашим сервером и получить ответ HTTP 200. После этого он перестанет отправлять дополнительные веб-ссылки.

Комментарии:

1. Полное раскрытие: Я работаю в Braintree. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь обращаться по help.braintreepayments.com . Вы можете ссылаться на все прошлые транзакции через массив transactions в объекте подписки: developers.braintreepayments.com/reference/response /… . Я не уверен, что вы имеете в виду в отношении отсутствующих транзакций, но, возможно, об этом лучше поговорить с нашей службой поддержки. Не стесняйтесь обращаться в службу поддержки напрямую к нам, и мы сможем вам помочь.

2. @bbusby Здравствуйте и спасибо за ответ. Проблема с getSubscriptions() заключается в том, что он содержит только самые последние транзакции — вот почему я подумал, что должна быть возможность каким-то образом извлекать всю историю подписки. Я бы не знал, как это сделать на данный момент. Под «отсутствующими транзакциями» я имел в виду, что если мой сервер не работает в течение более длительного периода времени, он будет пропускать веб-ссылки и, следовательно, уведомления о транзакциях. В этом случае я хочу «извлечь недостающие транзакции». 🙂