該錯誤似乎在/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。
不乾淨,但工作。 :-)
這裏有什麼新東西? 嘿,大家,你只是不使用貝寶或我是唯一一個誰下載了越野車版本? 也許我必須將店鋪系統更改爲某個工作系統... – headkit 2010-08-13 08:08:36
您是否嘗試過全新安裝?你的地址有什麼異常?另外,您是否可以使用日誌記錄來查看返回的地址? – 2010-08-13 14:12:37
不幸的是我沒有檢查這些東西的可能性。但是我在這裏發現了一些其他人也有同樣的問題:http://www.magentocommerce.com/boards/viewthread/195086/ – headkit 2010-08-23 13:14:01