支付宝国际版插件汇率转换说明

我们知道 Magento 本身就支持多币种,前台显示的不同展示价格,是根据 Magento 中导入的汇率计算出来的,而在数据库中存储的是本币(base currency)。

而支付宝提供的是结算币和人民币之间的换算。收的是人民币,然后转换成结算币支付给商家。

由于 Magento 中的汇率和支付宝的汇率可能不同,这就会造成客户支付的金额并不是预期的金额。举个栗子,比如商家预期收 27 AUD,客户按照 Magento 的汇率 5.25 付了 141.75 人民币,而支付宝的的汇率则是 5.3179 ,那么商户最终只能收到 26.65 AUD

支付宝接口可以接受结算币金额或者人民币金额。在上个例子中,假设我们的展示币是人民币,客户看到的金额就是 141.75 人民币,那么我们有两种做法。第一种,向支付宝提交 141.75 人民币,那么客户看到的金额等于 Ta 需要支付的金额,但是商家收到的并非预期的金额。第二种,向支付宝提交 27 AUD ,这样商家收到的和预期的一致,但是客户看到的是 141.75 人民币,而实际支付时却是 143.58 人民币。两种做法都各有道理,但是 ThankIT 认为应该使用第一种,即客户看到的金额应该是需要支付的金额,然后通过调整 Magento 中的汇率来使两者一致。或者在价格设置时考虑汇率的差异,抬高一点售价。

ThankIT 的支付宝国际版插件,尽可能地减少汇率转换来最大程度地减少转换误差,下面讲讲实际的处理逻辑。

如果展示币 = CNY 则提交 CNY 金额,保证任何时候客户看到的金额即他实际需要支付的金额。
然后如果本币 = CNY 则提交 CNY 金额,如果我们提交结算币金额,则需要按照 Magento 的汇率转换成结算币,则可能存在误差,所以提交本币 CNY 金额
然后如果本币 = 结算币,则直接提交结算币金额
然后如果本币 ≠ 结算币,则先将本币转换成结算币,再提交转换后的结算币金额到支付宝。举个栗子,本币是美元,结算币是英镑,那么需要按照 Magento 中的汇率由美元转为英镑,然后提交转换后的英镑金额,支付宝按照英镑和人民币的汇率,结算英镑给商家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注