如何安全地处理使用Web Services处理的在线支付?

时间:2011-06-14 11:52:57

标签: web-services java-ee ejb jax-ws

免责声明:我对Web服务的工作方式有一个非常基本的了解,并且不太了解高级WS主题,例如交易等。

让我们假装我正在使用Java EE,JPA等开发一个在线商店。还假设我与在线支付处理提供商签订合同来处理付款,他们为我提供了WS API。

现在让我们假装客户下了订单。在会话bean中(例如在OrderSB.placeOrder内)我打开了一个事务,在DB中保存了一个Order,现在我正在调用支付提供商的WS API。它成功返回(我假设到目前为止我的客户帐户已被扣除)但在我保存订单的相关付款(订单和付款之间存在一对一关系)之前,会发生异常并且我的交易将被回滚。 / p>

如何确保在发生此类异常时,我的客户帐户不会被扣款?或者换句话说,WS调用和OrderSB.placeOrder都应该成功完成并提交,或者两者都应该一起回滚。

如果WS调用失败,很容易回滚placeOrder,但我不知道如何在返回后回滚WS调用。

1 个答案:

答案 0 :(得分:0)

为什么不完成placeOrder流程并在第一次成功完成时进行WS调用?然后就像你说的那样容易回滚placeOrder,如果错误出现在第二个只是回滚第一个。或者我不理解你的问题吗?