2012-05-20 19 views
2

我在drupal 7上使用ubercart。ubercart的版本是3.x.我試圖搜索很多支付成功後運行的鉤子。我想在此之後向數據庫插入更多的細節。 是否有任何掛鉤完成和成功的付款。 我相信大部分項目在付款後都會涉及一些工作,所以必須要有一個鉤子或方法來完成。什麼是成功支付在ubercart 3.x爲drupal 7的鉤子

感謝所有 史密斯

回答

3

使用hook_uc_order()documentation)與$op = 'save'情況。並檢查訂單的狀態$order->order_status

+0

這是不正確的,我想這沒有運氣,多少測試後,我能找出什麼值實際上對應於一個成功的訂單完成,看到我的答案。 – DrCord

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 
} 
1

使用hook_uc_order弄清楚當一個訂單所需要的條件已成功完成的有:

  1. $運== '更新'
  2. $命令 - > 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 
    } 
}