在ubercart 3.x中为drupal 7成功付款的钩子是什么?

时间:2012-05-20 17:45:18

标签: drupal-7 hook payment ubercart

我在drupal 7上使用ubercart。优步版是3.x.我试图搜索一个在付款成功后运行的钩子。我想在此之后向DB插入更多细节。 是否有任何钩子可以完成并成功付款。 我相信大多数项目都会在付款后涉及一些工作,因此必须有一个钩子或方法来实现它。

感谢所有人 史密斯

3 个答案:

答案 0 :(得分:3)

hook_uc_order()案例使用$op = 'save'documentation)。并检查$order->order_status以了解订单状态。

答案 1 :(得分:1)

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

  1. $ op ==' update'
  2. $ order-> order_status ==' payment_received'
  3. $ arg2 =='已完成'
  4. 我不确定#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
        }
    }
    

答案 2 :(得分: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
}