免責聲明:我只是有怎樣的Web服務工作的一個非常基本的理解,不知道多少有關高級WS主題,交易等如何安全地處理使用Web服務處理的在線支付?
讓我們假設我正在開發使用Java EE的在線商店, JPA等。另外假設我與在線支付處理提供商簽有合同來處理付款,並且他們爲我提供了一個WS API。
現在讓我們假裝客戶已下了訂單。在會話bean中(例如,在OrderSB.placeOrder
之內),我打開了一個事務,在數據庫中保存了一個訂單,現在我正在調用付款提供商的WS API。它成功返回(我假設現在我的客戶的帳戶已被扣除),但在我可以保存訂單的關聯付款(訂單和付款之間存在一對一關係)之前,發生異常並且我的交易被回滾。
如何確保發生此類異常時,我的客戶賬戶不會被扣除?換句話說,WS調用和OrderSB.placeOrder
都應該成功完成並提交,或者兩者都應該一起回滾。
如果WS調用失敗,很容易回滾placeOrder
,但我不知道如何在返回後回滾WS調用。