我目前正在后端执行Braintree付款。
首先,我犯了一个错误,并开始实现从Webhooks到现在的一切。我的意思是,只要不起作用,一切都会起作用。在那种情况下,我的后端将无法从某些情况下恢复。一个简单的例子:缺少一个Webhook来确认付款,这会触发我的计费程序。
无论如何,我目前(部分)从头开始。我希望我的后端始终能够从丢失的Webhook中恢复。只要您愿意,就不会触发故障安全,只要在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);
那么去这里的路是什么?
我认为仅依靠网络钩子不是一个好主意-请告诉我我是否对此太担心,但是恕我直言,您永远都不知道服务器是否会停机24小时以上。
信息:Braintree将尝试在多长时间内到达您的服务器并获得HTTP 200响应。之后,它将停止sendind进一步的webhooks。