Не хватило одного шага, позвольте мне снова подвести итог всего процесса.
1. Перейдите в: \ app \ code \ core \ Mage \ Paypal \ Controller \ Express \ Abstract.php
и поиск в returnAction () для:
$this->_redirect('*/*/review');
Там вы должны изменить:
$this->_redirect('*/*/review');
до:
$this->_redirect('*/*/placeOrder');
2. Перейдите в: \ app \ code \ core \ Mage \ Paypal \ Model \ Config.php и измените:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'token' => $token,
));
}
до:
public function getExpressCheckoutStartUrl($token)
{
return $this->getPaypalUrl(array(
'cmd' => '_express-checkout',
'useraction' => 'commit',
'token' => $token,
));
}
3. С двумя вышеуказанными изменениями вы все равно будете перенаправлены на страницу обзора и должны согласиться с условиями, чтобы избежать этого:
/ приложение / код / ядро / Mage / Paypal / контроллер / Экспресс / Abstract.php
Искать:
public function placeOrderAction()
{
try {
$requiredAgreements = Mage::helper(‘checkout’)->getRequiredAgreementIds();
if ($requiredAgreements) {
$postedAgreements = array_keys($this->getRequest()->getPost(‘agreement’, array()));
if (array_diff($requiredAgreements, $postedAgreements)) {
Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’));
}
}
Закомментируйте следующие строки простым // в начале:
//if (array_diff($requiredAgreements, $postedAgreements)) {
// Mage::throwException(Mage::helper(‘paypal’)->__(‘Please agree to all the terms and conditions before placing the order.’));
// }
Единственный раз, когда вы будете перенаправлены на страницу обзора, это когда клиент PayPal возвращает отклоненную ошибку.