Magento 1.4 Paypal 错误

标签 magento paypal

我尝试在我的 magento 1.4 中运行 Paypal 付款,但工作流程存在严重问题。在我选择 Paypal 并被路由到 Paypal 账户以汇款后,您通常会自动返回到 magento 商店以完成订单,但在我的情况下,magento 告诉您地址字段存在问题。 Paypal 没有正确地将地址发送回magento:

Error: Please check shipping address information. Please enter last name.

这是一个已知的错误还是有补丁或解决方法?

请帮忙!
谢谢。

最佳答案

错误似乎在 /app/code/core/Mage/Paypal/Model/Api/Nvp.php .看起来变量没有很好地映射。因为我在这个文件中找不到具体的错误,所以我在 中做了一些肮脏的解决方法。/app/code/core/Mage/Paypal/Model/Express/Checkout.php .

1.4.2 只需替换方法 returnFromPaypal() 使用以下代码...

public function returnFromPaypal($token)
{
    $this->_getApi();
    $this->_api->setToken($token)
        ->callGetExpressCheckoutDetails();

    // import billing address
    $billingAddress = $this->_quote->getBillingAddress();
    $exportedBillingAddress = $this->_api->getExportedBillingAddress();

    // import shipping address
    $exportedShippingAddress = $this->_api->getExportedShippingAddress();
    if (!$this->_quote->getIsVirtual()) {
        $shippingAddress = $this->_quote->getShippingAddress();
        if ($shippingAddress) {
            if ($exportedShippingAddress) {
                foreach ($exportedShippingAddress->getExportedKeys() as $key) {
                    if('firstname' == $key || 'lastname' == $key){
                        continue;
                    } // if
                    $shippingAddress->setDataUsingMethod($key, $exportedShippingAddress->getData($key));
                    $billingAddress->setDataUsingMethod($key, $exportedShippingAddress->getData($key));
                }

                // Correct First- and Lastnames
                list($_firstname, $_lastname) = explode(' ', $exportedShippingAddress->getData('firstname'));

                $shippingAddress->setDataUsingMethod('firstname', $_firstname);
                $billingAddress->setDataUsingMethod('firstname', $_firstname);

                $shippingAddress->setDataUsingMethod('lastname', $_lastname);
                $billingAddress->setDataUsingMethod('lastname', $_lastname);

                $shippingAddress->setCollectShippingRates(true);
            }

            // import shipping method
            $code = '';
            if ($this->_api->getShippingRateCode()) {
                if ($code = $this->_matchShippingMethodCode($shippingAddress, $this->_api->getShippingRateCode())) {
                     // possible bug of double collecting rates :-/
                    $shippingAddress->setShippingMethod($code)->setCollectShippingRates(true);
                }
            }
            $this->_quote->getPayment()->setAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_SHIPPING_METHOD, $code);
        }
    }
    $this->_ignoreAddressValidation();

    // import payment info
    $payment = $this->_quote->getPayment();
    $payment->setMethod($this->_methodType);
    Mage::getSingleton('paypal/info')->importToPayment($this->_api, $payment);
    $payment->setAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_PAYER_ID, $this->_api->getPayerId())
        ->setAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_TOKEN, $token)
    ;
    $this->_quote->collectTotals()->save();
}

修改后的代码将整个账单地址替换为送货地址,并将 $firstname 中给出的名称推送到 $firstname 和 $lastname 中。

不干净,但工作。 :-)

关于Magento 1.4 Paypal 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306769/

相关文章:

php - 批量操作不适用于 Magento 后端网格序列化程序

javascript - Magento是否不保存产品编辑并重定向到仪表板?

php - Magento 免费送货和优惠券折扣

javascript - 工作和整合 Paypal 支付专业

paypal - Paypal Payments Pro 是否与 Paypal 的 Adaptive Payments API 兼容?

paypal - 无法生成临时类 (result=1)。错误 CS0030 :

php - 从 Magento 获取属性选项列表

laravel - PayPal 沙盒上的 cURL 56 错误

paypal - 哪种 PayPal 设置最适合市场?

php - 如何使用 Magento API 获取产品评论和评级信息