【问题标题】:PayPal - Payer is not identifiedPayPal - 付款人未识别
【发布时间】:2017-01-23 10:19:40
【问题描述】:
我目前正在从事一个使用 Magento 和 PayPal 的项目。我已经使用我在多个项目中使用的沙箱配置了 PayPal 设置,当我选择在沙箱模式下使用 PayPal 付款时,我可以正确付款,但是当我被重定向到商店时,我收到错误“付款人未识别”并且无法继续执行订单。
该商店也位于 PayPal 中配置的代理之下。要付款的电子邮件也是我在其他项目中使用的电子邮件,我没有问题。
任何提示或想法?代理相关?
【问题讨论】:
标签:
api
magento
paypal
proxy
paypal-sandbox
【解决方案1】:
我发现这是一个 Magentos 补丁程序未正确应用的问题
确保你的系统有这个文件
/lib/Unserialize/Reader/Null.php
它是这个补丁 SUPEE-8788 的一部分
【解决方案2】:
最后发现它是在 API NVP 的调用上,它与代理冲突,有时调用的答案得到一个数组 4(发送)和一个数组 3(获取)。
在app\code\core\Mage\Paypal\Model\Api\Nvp.php 第 973 行
我变了
$response = preg_split('/^\r?$/m', $response, 2);
$response = trim($response[1]);
$response = $this->_deformatNVP($response);
到
$answer = preg_split('/^\r?$/m', $response, 4);
if($answer[3]) {
$response = preg_split('/^\r?$/m', $response, 4);
$response = trim($response[3]);
} else {
$response = preg_split('/^\r?$/m', $response, 3);
$response = trim($response[2]);
}
$response = $this->_deformatNVP($response);
当然,我已经重写了 Class 以保持核心代码干净。
Magento 版本:1.9.2.4
希望它可以帮助某人。