2

我在 drupal 7 上使用 ubercart。ubercart 版本是 3.x。我尝试大量搜索支付成功后运行的钩子。之后我想向数据库插入更多细节。是否有任何完整和成功付款的钩子。我相信大多数项目在付款后都会涉及一些工作,因此必须有一个钩子或方法来完成它。

感谢所有史密斯

4

3 回答 3

3

使用hook_uc_order()文档)与$op = 'save'案例。并检查$order->order_status订单状态。

于 2012-06-12T06:01:22.737 回答
1

使用 hook_uc_order 确定订单何时成功完成所需的条件是:

  1. $op == '更新'
  2. $order->order_status == 'payment_received'
  3. $arg2 == '完成'

我不确定#2 是否绝对需要,但它似乎并没有受到伤害。

因此,此代码将让您在订单成功完成时采取行动:

function MODULE_NAME_uc_order($op, $order, $arg2) {
    if($op == 'update' && $order->order_status == 'payment_received' && $arg2 == 'completed'){
        //do something on successful order completion
    }
}
于 2015-01-20T19:14:21.513 回答
0

我认为没有特定的钩子,而是使用规则和操作,只需根据下面的代码创建一个操作,然后转到配置、工作流、规则并将您的操作添加到现有规则“完整更新订单状态”付款”或创建一个单独的规则,确保您添加一个条件来检查价值顺序:付款余额 <= 0。

/**
 * Implements hook_rules_action_info().
 *
 * Add rules action to process order after payment
 */
function my_module_rules_action_info() {
  $order_arg = array(
    'type' => 'uc_order',
    'label' => t('Order'),
  );

  $actions['my_module_action_process_order'] = array(
    'label' => t('My Module Process Ubercart Order'),
    'group' => t('My Module'),
    'base' => 'my_module_action_process_order',
    'parameter' => array(
      'order' => $order_arg,
    ),
  );

  return $actions;
}

function my_module_action_process_order($order) {
   // Do Whatever Here
}
于 2013-04-05T13:24:27.410 回答