Braintree: поиск транзакций для подписки - PullRequest
0 голосов
/ 05 апреля 2019

В настоящее время я внедряю платежи 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.

...