2017-09-20 14 views
0

私はwebshopにWooCommerceを実装しており、オンライン決済のためにCorvusPayゲートウェイを接続しています。WordpressのためのWoocommerce:注文番号/ IDを変更するには?

ここで問題になっているのは、Corvusは注文番号に数字(大文字と小文字)を含める必要があるということです。

私はWordpress内で注文番号を変更する方法について多くのプラグインとフィルタを見て試しましたが、注文が処理されてCorvusに送信されても​​、番号は同じ古い投稿IDです。

私はWooCommerceがWordPressのポストIDを使用して最初の注文番号を作成することを認識していますが、これをどのように変更できますか?

注文番号生成の具体的な方法を使用するようにWooCommerceを変更するにはどうすればよいですか。 "Kr-12345"およびではなく、 "12345"です。

数字の生成方法を変更し、Wordpressページの数字を変更するだけなので、Sequential Order Numbersのようなプラグインは使用しないでください。

答えて

0

woocommerce_order_numberフックを使用して、必要に応じて値をフィルタリングできます。 This guideは接頭辞と接尾辞を単純に追加するための使い方を説明しています。

add_filter('woocommerce_order_number', 'change_woocommerce_order_number'); 

function change_woocommerce_order_number($order_id) { 
    $prefix = 'VK/'; 
    $suffix = '/TS'; 
    $new_order_id = $prefix . $order_id . $suffix; 
    return $new_order_id; 
} 

だから、これはあなたが望むことをするように見えます。必要ない場合は、接尾辞を削除するか、$ new_order_idの形式を必要に応じて調整してください。

心に留めておくべきもう一つは、あなたがPayPal for WooCommerceのようなプラグインを使用している場合、それは内蔵の請求書の接頭辞を設定するオプションを持っていることである。これは実装していないゲートウェイの開発者の別のケースのように見える

+0

私はその厳密解を試してみたが、問題は、それはまだカラスにその注文番号を送信していなかったということでした。なぜなら、最初のことは投稿idを取得し、それを注文番号として設定し、その番号をcorvusに送信してから、私のwordpressに行き、そこでフィルタによって変更されるからです。 ガイドは次のように終了します。「WooCommerceは、wp_insert_post()を使用してwp_postsテーブルに挿入する直前に注文データを変更できるようにする別のフィルタwoocommerce_new_order_dataを提供します。 しかし、私はこれに関連するものを見つけることができないようです... – Kalipto

0

ゲートウェイは正しく。私の答えは、あなたがCorvusPay WooCommerce Integrationを使用していると仮定しています。あなたはclasses.phpprocess_payment()機能であなたは、プラグインは、常にゲートウェイに注文のたびに、実際にpost_idを送信していることがわかります場合

は:

/** 
* This method accepts payment request initiated by user, and redirects 
* him to CorvusPay IPG. 
* @param int $order_id 
* @return array 
*/ 
public function process_payment($order_id) { 
    // Load options 
    $options = $this->_getOptions(); 
    $checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID]; 

    return array(
     'result' => 'success', 
     'redirect' => add_query_arg('order_id', $order_id, get_permalink($checkout_page_id)) 
    ); 
} 

これは関係なく意味しますどのようなトリックを試しても、プラグインが常に間違った情報を(あるいは間違った形式で)送信するため、この関数を変更しなければ問題を克服することはできません。

は、このための修正がいくつかあります:

  1. 接頭辞オーダーを送信するために、ユーザーに選択肢を与え、チェックアウトの設定ページにフィールドを追加するためのプラグインの開発者を確認する(推奨) id。
  2. (危険)プラグインコードを修正して、今すぐプレフィックスを強制してください。開発者が変更を上書きするプラグインを更新する可能性があるため、プラグインが唯一の解決策である可能性があります。次のようなものにコードを変更してみてください:

からABxがあなたの接頭辞である

/** 
* This method accepts payment request initiated by user, and redirects 
* him to CorvusPay IPG. 
* @param int $order_id 
* @return array 
*/ 
public function process_payment($order_id) { 
    // Load options 
    $options = $this->_getOptions(); 
    $checkout_page_id = $options[CpsiKeys::OPTION_CHECKOUT_PAGE_ID]; 

    return array(
     'result' => 'success', 
     'redirect' => add_query_arg('order_id', 'ABx' . $order_id, get_permalink($checkout_page_id)) 
    ); 
} 

倖田

+0

助けてくれてありがとう!私はコードの修正を試してみましたが、アドレスバーで変更されますが、送信中に何も起こらなかったように私のホームページにリダイレクトされます。私はこれについてCorvusにも連絡しており、うまくいけば彼らは何かを働かせることができるだろう。 – Kalipto

関連する問題