Paypal货币兑换结账时转换

时间:2016-03-06 08:19:49

标签: php wordpress paypal woocommerce currency

我正在尝试设置一个paypal网关,但我收到了一个错误:

Gateway Disabled: PayPal does not support your store currency

默认情况下,我有一个AED货币,所以我试图在结账时将它转换为美元,但是现在它无效。 我在主题的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 Gateway。如何使用PayPal付款将其转换为美元?

上面的代码似乎不起作用

1 个答案:

答案 0 :(得分:0)

您所使用的代码将AED添加到PayPal网关“支持”的货币列表中,但它不会执行任何转换为​​USD。要执行转换,您需要做一些事情:

  • 货币换算功能。 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?

无论您是否决定使用我们的插件,代码应该是实施解决方案的良好起点。