2017-03-21 12 views
0

私はwoocommerceのプラグインとbraintreeの拡張機能を使用して支払いを行っています。私はwoocommerce braintreeのカードとpaypal支払いの両方をチェックアウトすることができました。私は、ユーザーが実際にチェックアウトし支払いを受ける前に、どの支払いゲートウェイを選択するかを知る方法を見つけようとしています。 フックwoocommerceまたはbraintreeクレジットカードラジオボタンまたはpaypal支払いラジオボタンのいずれかを検索すると、支払いが確認されます。チェックアウトでのWoocommerceの支払い方法の検出ページ

しかし、私は支払いが成功した後に特定の注文に使用されたゲートウェイを検出できますが、チェックアウトページ内で支払いが完了する前に選択したゲートウェイ情報が必要です。どんな助け?

答えて

0

あなたがチェックアウトページ上のいくつかの基本的なJavaScriptで選択した支払方法を検出し、woocommerce_checkout_update_order_review行動に引っ掛けることにより、PHPを使用してカスタムコードを実行することができます。

まず、 チェックアウトページ、チェックアウトテンプレート、またはテーマのヘッダー/フッターにJSコードを配置して、ユーザーが支払い方法オプションを変更したときにそれを検出し、その後独自のコードを実行する必要があります。

JSコード:各支払い方法のためにあなたがイベントを「クリック」を追加すべきであるアクティブを持っていることを

jQuery(document).ready(function() { 

    jQuery("#payment_method_bacs").on("click", function() { 
     jQuery('body').trigger('update_checkout'); 
    }); 

    jQuery("#payment_method_paypal").on("click", function() { 
     jQuery(document.body).trigger("update_checkout"); 
    }); 

    jQuery("#payment_method_stripe").on("click", function() { 
     jQuery(document.body).trigger("update_checkout"); 
    }); 

}); 

注意してください。カスタムコードがトリガされたときに微調整するオプションがあります。 クリックイベントがになるのを防ぐには、のみを実行してください。最初のJSコードの次のブロックを追加してください。

これは、ajaxの後にトリガーされるのと同じコードです。 両方のJSブロックのコードでは、のお支払い方法を実際に使用してを追加します。その後

あなたは、このように、チェックアウトにフックカスタムPHPコードを置く:

if (! function_exists('name_of_your_function')) : 
    function name_of_your_function($posted_data) { 

     // Your code goes here 

    } 

endif; 

add_action('woocommerce_checkout_update_order_review', 'name_of_your_function'); 

このコードはのfunctions.phpに配置することができます。ここで

は、特定の支払いオプションがチェックアウトページで選択されたときに検出し、実行し、完全なPHPコードです:

function name_of_your_function($posted_data) { 

    global $woocommerce; 

    // Parsing posted data on checkout 
    $post = array(); 
    $vars = explode('&', $posted_data); 
    foreach ($vars as $k => $value){ 
     $v = explode('=', urldecode($value)); 
     $post[$v[0]] = $v[1]; 
    } 

    // Here we collect payment method 
    $payment_method = $post['payment_method']; 

    // Run code custom code for each specific payment option selected 
    if ($payment_method == "paypal") { 
     // Your code goes here 
    } 

    elseif ($payment_method == "bacs") { 
     // Your code goes here 
    } 

    elseif ($payment_method == "stripe") { 
     // Your code goes here 
    } 
} 

add_action('woocommerce_checkout_update_order_review', 'name_of_your_function'); 

私はこれが役に立てば幸い! これは、チェックアウトページですべてのカスタムロジックを実行するための非常に強力なオプションです!

関連する問題