如果在客户/付款方发生事故,如何保存在线交易数据?

时间:2014-04-21 13:10:51

标签: php mysql template-engine realex-payments-api

我正在使用PHP模板引擎和Realex Payments,就像任何第三方付款一样。

HPP出现了一种情况:

  • 成功完成交易后,客户端浏览器与网络断开连接
  • 无法保存付款状态信息
  • 因此,状态信息在付款后仍未支付特定订单

有人可以为此提出解决方案吗?

3 个答案:

答案 0 :(得分:2)

Realex Payments HPP旨在防止这种情况发生。

付款成功完成后,Realex服务器会直接向您的网站服务器发送一条消息,其中包含交易结果。不涉及客户的浏览器 - 您将始终知道交易的状态。此邮件会发送到您的Realex Payments响应网址。

如果客户与网络断开连接,则有两种情况。

  1. 网络在付款前已断开连接。在这种情况下,您的购物车中有一个他们尚未付款的商品。客户需要能够返回购物车并尝试再次付款。
  2. 付款后网络已断开连接。在这种情况下,客户不会知道他们是否已成功付款,但您将。他们可能会尝试返回并再次付款,如果订单ID相同则会失败。他们可能会回到您的网站查看他们的购物车。您应该允许他们检查他们的客户帐户以查看已完成的订单。
  3. 在每种情况下,一旦您在交易后收到来自Realex的消息,您应该向客户发送电子邮件。这对客户来说是一种极大的安慰。

    您还应该收集之前将客户重定向到HPP所需的所有信息,因为网络可能会丢失并且您将无法从中获取更多数据(例如他们完成订单所需的地址或其他信息。)

    还有第三种情况,即Realex无法连接到您的网站以发送消息。我们重试了几次,然后提醒我们直接跟进您的操作人员。将向客户显示一条通用消息,要求他们与您联系以获取更多信息。

答案 1 :(得分:-1)

使用事务,提交和回滚。

“START TRANSACTION”跟踪我们输入COMMIT或ROLLBACK之后的所有SQL。

“COMMIT”使我们的代码永久化。

“ROLLBACK”在输入“START TRANSACTION”之前将所有内容都颠倒过来。

e.g。

START TRANSACTION;
SELECT * FROM bank;
UPDATE bank SET amount = '25000' WHERE id ='23';
COMMIT;

但是当你真的需要时使用TRANSACTION,因为TRANSACTION日志会保留所有内容的记录并变得越来越大,这会消耗更多的空间并花费更多的时间。

答案 2 :(得分:-1)

我找到答案所以我想分享一下...... 它们是一个可选参数,名为" notify"如果我们传递参数 当事务发生时,PayPal将rmi服务器抛出到服务器coll而不涉及客户端......

并将响应参数传递给我们已通过的通知网址