платеж с помощью magento redirect для стороннего шлюза - PullRequest
4 голосов
/ 20 апреля 2011

Я хотел бы иметь возможность разрешить пользователям выбирать определенную опцию при оформлении заказа, а затем они будут перенаправлены на страницу банка, где они используют свои кредитные данные для оплаты, затем перенаправлены обратно в magento и установят порядок в соответствии с утвержденным науспех или неудача, если нет

Я пару дней возился с кодом magento, я смог взломать одностраничный контроллер, чтобы выполнить перенаправление, а затем вернуться, но я не смогчтобы изменить статус заказа на «одобренный» с этого контроллера

, то, что я в основном сделал в контроллере в «действии saveorder», это: - проверьте выбранный пользователем способ оплаты - если он тотМне нужно, отправить пользователя на страницу банка с суммой, подлежащей выплате, а затем вернуться с этой страницы на страницу php, которая проверяет возвращенный статус, в случае успешного перенаправления на одну страницу / успех /, если нет, на одну страницу / сбой

все это прекрасно работает, НО, как я могу изменить состояние заказа?

Я пробовал, что по этой ссылке, но этоработает только для более старой версии Magento, кажется http://blog.chapagain.com.np/magento-how-to-change-order-status-programmatically/

спасибо

Ответы [ 3 ]

2 голосов
/ 20 апреля 2011

Имейте в виду, что страница успеха не обязательно меняет состояние платежа на одобренное. Это связано с тем, что разные способы оплаты могут утверждать платеж в разное время. Например, Paypal не утвердит платеж, пока у него не будет возможности обработать его.

Предоставляет ли ваша компания CC обратные вызовы, которые вы можете использовать для обновления статуса? Если это так, я предлагаю использовать модуль Paypal в качестве шаблона для того, как справиться с этим (дождитесь обратного вызова, обновите статус заказа). Если нет, возможно, используйте cronjob и их API для проверки статуса платежа.

В целом, не зависит от клиентов, посещающих определенную страницу после оплаты, поскольку существует множество ситуаций, когда это не так.

Надеюсь, это поможет!

Спасибо, Джо

2 голосов
/ 29 июня 2011

Я решил эту проблему после успешной оплаты через PayPal.Вы можете изменить процесс заказа на загружаемый продукт,

Перейдите на app\code\core\Mage\paypal\controllers\StandardController.php и замените код после оплаты отправьте сообщение об успешной отправке почты и статус заказа на мой код.

public function successAction() 
{ 
    $session = Mage::getSingleton('checkout/session'); 
    $session->setQuoteId($session->getPaypalStandardQuoteId(true)); 
    Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save(); 

    $session->setPaypalStandardQuoteId($session->getQuoteId()); 
    $order = Mage::getModel('sales/order'); 
    $order->load(Mage::getSingleton('checkout/session')->getLastOrderId()); 
    $state = Mage_Sales_Model_Order::STATE_PROCESSING; 
    $order->setState($state); 
    $order->setStatus('processing'); 
    $order->sendNewOrderEmail(); 
    $order->save(); 
    $this->_redirect('checkout/onepage/success', array('_secure'=>true)); 
} 
1 голос
/ 20 апреля 2011

Для изменения состояния заказа (magento 1.5)

$order->setStatus(Mage_Sales_Model_Order::STATE_COMPLETE);
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE);
$order->save();
...