В настоящее время я внедряю платежи Braintree в свой бэкэнд.
Прежде всего: я сделал ошибку и начал реализовывать все, начиная с 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 - пожалуйста, скажите мне, если я слишком беспокоюсь об этом, но imho, вы никогда не знаете, может ли ваш сервер не работать более 24 часов.
Информация: 24 часа - это время, в течение которого Braintree будет пытаться связаться с вашим сервером и получить ответ HTTP 200.После этого он перестанет отправлять дальнейшие webhooks.