2016-03-06 59 views
1

我試圖建立一個PayPal網關,但我得到了一個錯誤:貝寶貨幣轉換時檢查出

Gateway Disabled: PayPal does not support your store currency

默認情況下,我有一個AED匯率所以我想將其轉換爲美元當檢查paypal但現在它不起作用。 我有這個在我的主題的functons.php文件:

add_filter('woocommerce_currencies', 'add_my_currency'); 

function add_my_currency($currencies) { 
    $currencies['AED'] = __('Emirati Dirham', 'woocommerce'); 
    return $currencies; 
} 

add_filter('woocommerce_currency_symbol', 'add_my_currency_symbol', 10, 2); 

function add_my_currency_symbol($currency_symbol, $currency) { 
    switch($currency) { 
      case 'AED': $currency_symbol = 'AED'; break; 
    } 
    return $currency_symbol; 
} 
add_filter('loop_shop_per_page', create_function('$cols', 'return 12;'), 20); 

add_filter('woocommerce_billing_fields', 'wc_billing_fields_state_filter', 10, 1); 

function wc_billing_fields_state_filter($address_fields) { 
    $address_fields['billing_state']['label'] = 'Emirate'; 
    $address_fields['billing_state']['placeholder'] = 'Emirate'; 
    return $address_fields; 
} 

編輯:我禁用插件「爲WooCommerce所有幣種」和設置菜單現在顯示。但由於AED不是支持的貨幣,PayPal網關仍然不被允許。如何使用PayPal付款將其轉換爲美元?

上面的代碼似乎沒有工作

回答

0

你增加了AED爲「支持」通過貝寶網關貨幣列表中的代碼,但它不執行任何轉換成美元。要執行轉換,您需要幾件事:

  • 貨幣轉換函數。 WooCommerce本身就是「單一貨幣」,它不會執行轉換,也不會提供或處理匯率。爲此,您將需要一個多幣種解決方案。
  • 一旦您擁有多貨幣解決方案,您必須添加代碼以在PayPal網關將數據發送到PayPal服務器之前調用貨幣轉換以將AED轉換爲USD。
  • 最後但並非最不重要的是,您將不得不攔截PayPal發送的付款通知,以便交叉檢查成功。也就是說,您將在數據庫中訂購AED的金額,付款確認將以美元向您發送金額。您需要一種方法來防止這種差異導致付款驗證失敗。如果沒有這一步,訂單將保持等待或暫停狀態,您將不得不手動「解鎖」它們。

根據使用的多幣種解決方案,確切的方法可能會略有不同。作爲WooCommerce的貨幣轉換開發人員,我使用我開發的插件和一些自定義代碼,爲我的客戶解決了上述所有問題。

您可以在我們的知識庫中找到適用於我們插件的自定義代碼:Is it possible to use the Currency Switcher to allow Users to select a currency, but force payment in base currency, or an arbitrary currency?

無論您是否決定使用我們的插件,代碼應該是實施解決方案的好起點。

+0

目前我在結賬時轉換時沒有任何問題,因爲我使用了woocommerce的轉換器插件。問題是實時轉換費率,我仍然試圖找到一種方法。 –

+0

實時轉換很少完成,因爲獲取外匯匯率可能非常耗時。它可能會減慢網站的速度。我們用我們的解決方案做的是允許更新每小時的外匯匯率。幾乎在任何情況下都足夠可靠。 – Diego