退房时PayPal货币兑换


Paypal currency convert upon checking out

我正在尝试设置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的所有货币",现在显示设置菜单。但是仍然不允许使用PayPal网关,因为AED不是受支持的货币。我如何在使用PayPal付款后将其转换为美元?

上面的代码似乎不起作用

您已将 AED 添加到 PayPal 网关"支持"的货币列表中的代码,但它不会执行任何到美元的转换。要执行转换,您需要做几件事:

  • 货币换算函数。WooCommerce本身是"单一货币",它不执行转换,也不提供或处理汇率。为此,您将需要一个多币种解决方案。
  • 一旦您有了多币种解决方案,您必须添加代码以调用货币转换以将数据发送到PayPal服务器PayPal之前将 AED 转换为美元。
  • 最后但并非最不重要的一点是,您必须拦截PayPal发送的付款通知,以便交叉检查成功。也就是说,您将在数据库中收到一个以AED为单位的订单,付款确认将向您发送美元金额。您将需要一种方法来防止此类差异导致付款验证失败。如果没有此步骤,订单将处于待处理状态或暂停状态,您必须手动"取消阻止"它们。

根据所使用的多币种解决方案,确切的方法可能略有不同。作为WooCommerce货币切换器的开发人员,我使用我开发的插件和一些自定义代码为客户解决了上述所有问题。

您可以在我们的知识库中找到适用于我们插件的自定义代码:是否可以使用货币切换器允许用户选择货币,但强制以基础货币或任意货币付款?

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