贝宝送货地址错误


12

我正在尝试使用PayPal Sandbox测试我的商店。我在2种不同情况下遇到2种不同的错误。
1.一切正常,直到在PayPal中完成订单为止。然后得到消息:

很抱歉,PayPal不允许美国居民将商品运送到(任何地方)

2.第二种情况是我随后将买方的送货地址更改为美国。我在贝宝的第一页上收到以下错误:

无法处理付款。请与商家联系,因为商家提供的送货地址无效,并且商家已要求您将订单运送到该地址。

我在这里发现表格,这似乎对许多人来说都是问题。从这里我发现有一些做address_override方法和这里建议将其关闭。
有没有办法在Magento中将其关闭?关闭电源安全吗?为什么首先出现在这里?还是还有其他解决方案?:

我在magento中找到了address_override方法

\ app \ code \ core \ Mage \ Paypal \ Model \ Api \ Standard.php行:238 $ request ['address_override'] = 1;

将其更改为“ 0”,现在贝宝沙箱工作了。没有错误了。但是,如何在不更改magento核心文件的情况下执行此操作?而且安全吗?


1
我想向遭受Paypal测试困扰的其他人指出更多。在关闭address_override后,它可以正常工作,但是后来我在Paypal中停留在“付款审查”状态。事实证明,Magento设置中的币种必须与Paypal沙盒帐户中的币种相同。否则,贝宝将永远不会触发IPN来完成订单。
鲁特(Ruuter)2013年

Answers:


7

如果您不想更改核心文件,可以执行以下操作:

  1. Mage/Paypal/Model/Api在下面创建文件夹/app/code/local/
  2. Standard.php从复制文件/app/code/core/Mage/Paypal/Model/Api
  3. 将该文件粘贴Standard.php/app/code/local/Mage/Paypal/Model/Api
  4. 将行238
$ request ['address_override'] = 1;

$ request ['address_override'] = 0;

7

address_override参数用于设置您的Magento商店发送给Paypal的送货地址,而不是保存在Paypal一侧的客户的送货地址。

如果address_override将设置为1,这在Magento中就是这种情况,那么Paypal将验证送货地址。如果参数设置为0,则应该不会。因此,请确保您要向Paypal发送有效且格式正确的地址。

由于缺少“状态”值,我遇到了这个问题。贝宝仅接受“ CA”之类的州缩写,例如“ CA”。对于其他国家/地区,默认情况下,Magento安装中可能不提供州,例如墨西哥。

您是否在结帐中自定义任何送货地址字段?


2

查看以下堆栈溢出答案:
https : //stackoverflow.com/questions/5978153
/programming/11281543

基本上,一种快速而肮脏的方法是将整个文件复制到您的app/code/local/Mage世界中,但是如果您可以仅重载一个单独的函数,则升级会更好。

另外,如果还没有,请使用Github进行版本控制。它为我节省了不止一次!即使状态不佳且正在编辑核心文件,也可以轻松跟踪所有更改。


我很惊讶没有更好的方法可以做到这一点,更不用说首先存在于Magento中的这个问题的怪异了。如果这种错误在一段时间内似乎很常见,则应该在后端中提供选项。我想我会使用肮脏的本地文件方法,因为现在写新模块似乎有点过多:)我将继续深入研究……反正tnx!
ruuter

Magento所做的任何事情我都不再感到惊讶。
克里斯K

1
听起来不太乐观:/
ruuter
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.