2017-06-15 11 views
0

私はサブドメインに複数のスタンドアロンのwpをインストールしたウェブサイトを持っています。マルチサイトインストールではありません。それぞれのwpインストールでは、独自のwoocommerce shopが有効になっています。woocommerce複数のサブドメインに1つのipnを共有します。

例:

example.com // main site 
first.example.com // subdomain 
2nd.example.com //subdomain 

問題、どのように私はすべてのウェブサイトのURL IPN単一のPayPalを使用していますか?

答えて

0

これは私が出てきた解決策です。

ありがとう@ahmed-ginaniは、スクリプトを指摘しました。スクリプトを直接適用することはできないので、まだ他の作業が必要です。

これは基本的には私が行うことで、カスタムPaypal ipnエンドポイントを定義します。このエンドポイントは、サブドメインwoocommerce ipnエンドポイントに適切にリダイレクトされます。ここで

はスクリプトです:あなたが有効になってwoocommerceペイパルゲートウェイを持っているすべてのサブドメインで

メインドメインのサイト(またはエンドポイントIPNカスタムを定義するサイト)で次に
//first addding the woocommerce paypal ipn in the checkout field, this will be used when paypal sending back to the custom ipn endpoint. 

add_filter('woocommerce_paypal_args', 'add_web_paypal_url'); 
function add_web_paypal_url($args){ 

    $url = site_url(); 
    $ipn = add_query_arg('wc-api', 'WC_Gateway_Paypal', $url); 
    /*we need to merge it into custom field*/ 
    $oldcustom = json_decode($args['custom'], true); 
    $newcustom = array_merge($oldcustom , array('ipnurl' => $ipn)); 
    $args['custom'] = json_encode($newcustom); 

    return $args; 
} 

、我々転送ペイパルの戻りデータの適切なIPNエンドポイントへ。

ので、エンドポイントIPNカスタムがそれだhttps://www.example.com?action=ipn_forwarder

add_action('init', 'paypal_ipn_fowarder'); 
function paypal_ipn_fowarder(){ 
    if (isset($_GET['action']) && $_GET['action']=='ipn_forwarder'&& isset($_POST['custom'])) { 
     if (($custom = json_decode($_POST['custom'])) && is_object($custom)) { 

      $ipnurl = $custom->ipnurl; 
      if(isset($ipnurl)){ 
       $data = array(); 
       foreach ($_POST as $key => $value) $data []= urlencode($key).'='.urlencode($value); 
       $data = implode('&', $data); 

       $ch = curl_init(); /* Initialize */ 

       curl_setopt($ch, CURLOPT_URL, $ipnurl); 
       curl_setopt($ch, CURLOPT_POST, count($data)); 
       curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

       curl_exec($ch); /* Execute HTTP request */ 

       curl_close($ch); /* Close */ 

       header('HTTP/1.1 200 OK', true, 200); 
       exit(); 
      }else{ 
        return; 
      } 

     } 
    } 
} 

あるとしましょう。

0

ただし、IPN URLはサイト固有のため、複数のドメインに同じURLを使用することはできません。これは、トランザクション・ステータスのPayPalのPayPalアカウントを一時停止につながる可能性があるPayPalの側に

  • エラーにより通知されていない

    • 会員Proで結果として深刻な問題を作成します。

    しかし、まだあなたがIPでフィルタ要求を経由してPayPalのIPNを使用することができ、そのためにここでスクリプトをチェックアウト:http://codeseekah.com/2012/02/11/how-to-setup-multiple-ipn-receivers-in-paypal/

  • 0

    をあなただけの、しかし、単一のURLにするIPNを送信するためにPayPalアカウントを設定することができます必要に応じてそのデータを追加のURLに転送することができます。

    WordPressを使用しているので、無料でPayPal IPN for WordPressをインストールしてから、IPN Forwarder extensionを購入してください。あなたは、フリープラグインが提供するURLにIPNを送信するようにPayPalを設定します。そして、フォワーダは、IPNデータを転送するために必要な数の追加URLを提供します。

    もちろん、これらのプラグインを使用したくない場合でも、データを転送する独自のIPNスクリプトを作成するだけで済みます。

    関連する問題