C# 保持我的数据库与第三方支付处理器(Bluepay)同步?

C# 保持我的数据库与第三方支付处理器(Bluepay)同步?,c#,sql-server,xamarin.forms,atomicity,C#,Sql Server,Xamarin.forms,Atomicity,我正在使用Bluepay处理Xamarin移动应用程序的付款。在处理付款或退款时,Bluepay会发出一个请求,Bluepay会成功或失败地进行响应。在此之后,应用程序将事务信息发送到我们的数据库进行存储 正如您可能看到的,问题在于,如果应用程序在收到响应之前崩溃,或者在数据库调用之前崩溃,那么第三方支付处理器和我们的数据库很容易变得不同步 如果DB调用因某种原因失败,则可能会检测到这种情况,并重新发送事务信息,但如果从未从Bluepay实际接收到事务数据(我们在响应之前崩溃,或者类似的情况),

我正在使用Bluepay处理Xamarin移动应用程序的付款。在处理付款或退款时,Bluepay会发出一个请求,Bluepay会成功或失败地进行响应。在此之后,应用程序将事务信息发送到我们的数据库进行存储

正如您可能看到的,问题在于,如果应用程序在收到响应之前崩溃,或者在数据库调用之前崩溃,那么第三方支付处理器和我们的数据库很容易变得不同步

如果DB调用因某种原因失败,则可能会检测到这种情况,并重新发送事务信息,但如果从未从Bluepay实际接收到事务数据(我们在响应之前崩溃,或者类似的情况),如何重新发送我们没有的数据


我认为这是一个常见且已解决的问题,但我似乎找不到类似的问题/答案。

您希望在请求发出后立即将其记录下来。
如果在定义的时间跨度内没有收到任何响应,则向Bluepay请求交易。现在,如果Bluepay没有响应或不知道该事务,则记录一个超时,并尝试以超时状态响应应用程序。此外,您的应用程序还应具有超时的内部处理功能,例如,如果连接中断。

您希望在请求发出后立即将其记录下来。 如果在定义的时间跨度内没有收到任何响应,则向Bluepay请求交易。现在,如果Bluepay没有响应或不知道该事务,则记录一个超时,并尝试以超时状态响应应用程序。此外,你的应用程序应该有一个内部超时处理,例如,如果连接中断