如果在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
博主我在最新版本的woocommerce 上用了这段代码却不能实现,我将第三行的改为$currency_array[] = ‘CNY’; 就可以了。
rmb在前几次更新里被改成cny了,所以这里写cny是一定的,但这段代码还能用吗,我记得人民币是主货币时paypal会自动禁用。总之谢谢你提醒,有空我会更新这段代码。
感谢博主回复!关于提示“网关已禁用: 贝宝不支持你的商铺货币。”的问题,我这里有段代码:https://gist.github.com/Jeff2Ma/91f148fc301a8ae0851b 可以让让woocommerce中文网关支持paypal。
写的不错,分享一下
PayPal does not support your store currency.
网关已禁用: 贝宝不支持你的商铺货币。
paypal本来就不支持人民币啊,你主货币得是它支持的货币,比如美元
请问一下RMB为主货币的时候是怎么设置仍可以使用Paypal?
paypal直接在代码里限制了不能用rmb,所以靠后台设置无法实现,如果代码里有filter还可以改改,你可以看看is available方法怎么写的,我忘了
我想付费请您定制这个插件的一些功能,不知可有兴趣?联络我~ 邮箱你知道。
你好博主有个问题想咨询你,我用的是woocommerce 主题,(英文) 当paypal 在sandbox 测试成功后,我如何讲paypal 设为正常可用状态?(能正常收款)
禁用sandbox功能,填上真实的paypal账户就可以了。
你好,打扰了。
在网上搜来搜去,对woocommerce有研究并且写出来只有这里了。我想请教一个不关于该主题的问题。
用wordpress 搭建了个网站卖给老外衣服,用了woocommerce 并且配置了paypal,但是配置后怎么都不行,
checkout后 也输入了paypal的账户 密码,再按一个paynow 就可以支付了,这时候页面自动跳转了,显示
Dispatch Error, please check logfile for more information
发生错误。
返回首页
请问这大概是什么问题,是woocommerce没配置好,还是我paypal 没配置好,
谢谢了。
这个问题比较特殊,我没遇到过。我觉得你应该先用paypal的sandbox模式测试一下,如果没问题说明你的paypal配置正确。如果有问题,最好先看一下woocommerce菜单下的系统信息,如果有红色提示,最好处理下,其中有一项就是类似paypal这种ipn服务所需要的组件,如果没有的话,paypal肯定不能正常工作。要是还解决不了,打电话问paypal客服吧。
谢谢啊 问题解决了。
插件冲突。
对了,你回复我的评论我的邮箱没收到,QQ企业邮箱。
所以过来看了看。
可能进垃圾邮箱了吧,我这个bluehost不让用smtp,而它自己的邮件服务器地址各种被标记为垃圾邮件来源…
代码是加在哪里?
主题的functions.php里
超赞,解决了这个困扰我的问题
这个我测试下来还是有bug,就是多商品的时候,前2个可以正常转换,但是超过2个就不行了。第三个就又变成美金,数值还是人民币的值,amount_1这个参数是不是可以无限添加?我添加了amount_3、amount_4,好像多商品就没有这个问题了,但是不知道又没有其他bug,忘答复,谢谢。
PS,我设置的商品不带邮费,是虚拟物品,不知道又没有关系。
多谢你发现这个问题,确实如你所说,多商品时会出错,而且商品是可以无限增加的,我更新了一下代码,你再试试看,有问题告诉我,谢谢。
可以工作了,多谢~~~
这个我测试下来还是有bug,就是多商品的时候,前2个可以正常转换,但是超过2个就不行了。第三个就又变成美金,数值还是人民币的值,amount_1这个参数是不是可以无限添加?我添加了amount_3、amount_4,好像多商品就没有这个问题了,但是不知道又没有其他bug,忘答复,谢谢。
这是我用woocommerce搭建的网店,面向国内的外国人。我大概是国内用这个软件实现营利的比较早的人了。希望有同好交流一下。
你的网店很漂亮,我喜欢这种简约的风格。我虽然做过woocommerce的东西,都是给别人做,自己还没有。如果你愿意和我交流,我乐意之至!
还是请教一个问题:
因为我要销售的是虚拟商品,不需要提供 billing address 和 shipping address,但是用户在付款前,就是有这个步骤。
这个界面能否在功能上进行调整,只要用户填上 联系方式 (手机、QQ、MSN这些)?
我感觉可以。
1. 参考WooCommerce文档 – Overriding core fields ,将billing相关的字段全部删除。
2. 添加新的自定义字段,比如你说的qq之类的,手机号本来就有,不要删除就是了。代码参考下面的Lesson 2
3. 写处理函数,参考Lesson 3中 Process the checkout那段代码
PS. shipping不用去管,你在产品编辑页面将产品设置为虚拟的以后,所有shipping相关的内容自动就不显示了
如果我手里的毛爷爷能变成本杰明·富兰克林,如果我的银联卡能变成VISA卡,而且数值不变该有多好!
想法很美好o(≧v≦)o