drupal 7在ubercart 3.x中成功付款的钩子是啥

Posted

技术标签:

【中文标题】drupal 7在ubercart 3.x中成功付款的钩子是啥【英文标题】:What is the hook for successful payment in ubercart 3.x for drupal 7drupal 7在ubercart 3.x中成功付款的钩子是什么 【发布时间】:2012-05-27 09:22:14 【问题描述】:

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

谢谢大家 史密斯

【问题讨论】:

【参考方案1】:

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

    $op == '更新' $order->order_status == 'payment_received' $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
    

【讨论】:

【参考方案2】:

我认为没有特定的钩子,而是使用规则和操作,只需按照下面的代码创建一个操作,然后转到配置、工作流、规则并将您的操作添加到现有规则“更新订单” status on full payment”或创建一个单独的规则,确保添加一个条件来检查 value order:payment-balance 是否

/**
 * 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

【讨论】:

【参考方案3】:

使用hook_uc_order() (documentation) 和$op = 'save' 大小写。并检查$order->order_status 了解订单状态。

【讨论】:

这是不正确的,我尝试了这个没有运气,经过多次测试,我能够弄清楚哪些值实际上对应于成功的订单完成,请参阅我的答案。

以上是关于drupal 7在ubercart 3.x中成功付款的钩子是啥的主要内容,如果未能解决你的问题,请参考以下文章

Ubercart 3 (Drupal 7) 的多币种

主题为Drupal 7的Ubercart“/ cart”页面

Ubercart 和 Drupal 7 - hook_add_to_cart

Drupal,Ubercart - 将自定义字段添加到结帐表单

Drupal/Ubercart ...节点样式?

Drupal Ubercart:多币种?