2

drupal 7 で ubercart を使用しています。ubercart のバージョンは 3.x です。支払いが成功した後に実行されるフックをたくさん検索しようとしました。その後、DB にさらにいくつかの詳細を挿入したいと思います。完全で成功した支払いのためのフックはありますか。ほとんどのプロジェクトは支払い後に何らかの作業が必要になると思いますので、それを行うためのフックまたは方法が必要です。

すべてのスミスに感謝します

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

これには特定のフックがあるとは思いません。代わりに、ルールとアクションを使用し、以下のコードに従ってアクションを作成し、構成、ワークフロー、ルールに移動して、アクションを既存のルールに追加します。支払い」または別のルールを作成して、値 order:payment-balance が <= 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 に答える