Prestashop 1.6.17在用Paypal USA 1.3.9网关进行跳转支付时,有如下提示:
There’s a problem with your shipping address.
Please return to the merchant and update your information, including your city, state, and ZIP code.
大致意思是缺少部分关键地址。这个问题是由于Paypal现在对地址验证更加严格。而prestashop没有传country code这个值。有的国家没有state,也会有这个错误。
如果是address2参数没有传上,会被标记为undefined,同时还需要传country code值。
解决方法:
如果用的Paypal标准支付改这个文件:/modules/paypalusa/views/templates/hooks/standard.tpl
有高级或快捷支付同时需要改这个文件:payment-advanced.tpl 或 express-checkout.tpl
1. 找到28-29行
{if ($paypal_usa_billing_address->address2 != '')}<input type="hidden" name="address2" value="{$paypal_usa_billing_address->address2|escape:'htmlall':'UTF-8'}" />{/if}
改成
{if ($paypal_usa_billing_address->address2 != '')}{/if}<input type="hidden" name="address2" value="{$paypal_usa_billing_address->address2|escape:'htmlall':'UTF-8'}" />
这段代码的作用是即使address2为空,也不会被识别为undefined。
2. 之后紧接着添加下列代码(也可以放在state那段后):
<input type="hidden" name="country" value="{$paypal_usa_billing_address->country->iso_code|escape:'htmlall':'UTF-8'}" />
通常情况下,只需加第二段代码即可解决报错问题。