如果在 WooCommerce 中設置主貨幣為 RMB,且付款方式支持 paypal,當用户選擇使用 paypal 支付時,就會發生 1 塊錢變成 1 刀的悲劇。還好這個問題並非無藥可解。

解決方法是在系統向 paypal 發送參數前更改參數,WooCommerce 提供的 WooCommerce_paypal_args filter 可以完成這個任務。代碼如下:

add_filter('WooCommerce_paypal_args', 'convert_rmb_to_usd');
function convert_rmb_to_usd($paypal_args){
    if ( $paypal_args['currency_code'] == 'RMB'){
        $convert_rate = 6.2116; //Set converting rate
        $count = 1;
        while( isset($paypal_args['amount_' . $count]) ){
            $paypal_args['amount_' . $count] = round( $paypal_args['amount_' . $count] / $convert_rate, 2);
            $count++;
        }       
    }
    return $paypal_args;
}

如果發現 currency_code 是 RMB,就把 currency_code 轉換成美元 (USD),且按照匯率 ($convert_rate) 把商品的價格 (amount_1) 和運費 (amount_2) 都轉化成美元。

如果你想接收其它 paypal 支持的貨幣 (這貨為啥就不支持 RMB),比如港幣,只需要更改 currency code($paypal_args[『currency_code』]) 和匯率 ($convert_rate) 就可以了。

貨幣符號對照表在此,按自己需要的選擇吧。

AUD: Australian Dollar

BRL: Brazilian Real

CAD: Canadian Dollar

MXN: Mexican Nuevo Peso

NZD: New Zealand Dollar

HKD: Hong Kong Dollar

SGD: Singapore Dollar

USD: US Dollar

EUR: Euro

JPY: Japanese Yen

TRY: Turkish Lira

NOK: Norwegian Krone

CZK: Czech Koruna

DKK: Danish Krone

HUF: Hungarian Forint

ILS: Israeli New Shekel

MYR: Malaysian Ringgit

PHP: Philippine Peso

PLN: Polish Zloty

SEK: Swedish Krona

CHF: Swiss Franc

TWD: Taiwan Dollar

THB: Thai Baht

GBP: Pound Sterling