0

对不起,如果标题有点模糊,我保证我会在下面澄清它:

首先,前段时间我问了一个关于销售序列号的问题:

使用 Ubercart for Drupal 购买后如何执行自定义脚本

我在那里发布的信息可能有助于澄清这个问题,但我对此表示怀疑,因为这个问题更笼统。

基本上,我不想执行我的自定义代码,直到我知道付款已被清除并且我的账户中有钱。我有点不确定触发“客户完成结帐”的条件操作是做什么的?当它说他们完成结帐时,这是否一定意味着成功并且钱是否在我的帐户中?

如果没有,我如何让 Ubercart 等到它知道我从任何 PSP(例如 Google Checkout、PayPal 等)获得资金来执行我的自定义代码?我无法解决,甚至可能吗?

4

1 回答 1

0

它没有记录或公开为应该可靠的东西,但我认为使用“客户完成结帐”触发器是要走的路。

请记住,以下内容适用于 Ubercart 6.x-2.4。(截至今天的最新版本)

从我查看的代码来看,触发器似乎只在成功的订单上执行。一个成功的订单是否意味着您已经收到付款,这在很大程度上取决于您当前的配置以及您使用的不同支付网关或方法,但在一般情况和配置。

该触发器仅从一个功能启动:

function uc_cart_complete_sale($order, $login = FALSE);

如果您对该函数的执行时间进行模块范围的搜索,它应该可以让您大致了解不同的情况。基本上我发现它是从几个支付模块(例如 paypal 和 2checkout)以及当您到达cart/checkout/complete通常是成功订单的 drupal 页面时执行的。当收到“已完成”IPN 状态时,您特别询问的贝宝模块似乎正在调用该函数。

尝试一些购买(正确和错误)并查看您的触发器是否仅在正确收取订单时才执行应该不难。

于 2010-12-14T21:22:10.687 回答