집합이 실패했을 때 주문을 표시하면 그 failureAction()
이 app/code/core/Mage/Checkout/controller/OnepageController.php
이 호출되는 속성이 무엇인지 알고 싶습니다.프로그래밍 방식으로 실패한 주문을 표시하는 방법 - Magento
Observer.php에서 성공적인 지불을 위해 인보이스를 생성하고 지불 실패로 인해 pending_payment
상태의 주문을 저장하고 맨 위에 오류 메시지가있는 장바구니 페이지로 리디렉션하려고합니다.
모든 문제가 발생합니다. 실패한/실패한 결제에 대해 pending_payment 상태로 주문을 저장하고 오류 메시지가 표시된 장바구니 페이지로 리디렉션하는 것과 함께 장바구니를 비울 필요가 없도록 유지하고 싶습니다.
그러나 행운에
Observer.php는
public function implementOrderStatus($event)
{
$order = $event->getEvent()->getOrder();
if ($this->_getPaymentMethod($order) == 'mypaymentmodule')
{
$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
if($order->getPayment()->getCcTransId() == NULL)
{
$order->cancel();
$order->setStatus('canceled');
$order->save();
$quote->setIsActive(1)->save();
/*$state = 'pending_payment';
$status = 'pending_payment';
$comment = 'Payment transaction failed due to incorrect AVS/CVD details.';
$isNotified = false;
$order->setState($state,$status,$comment,$isNotified)->save();
$order->setCanSendNewEmailFlag(false);*/
Mage::getSingleton('checkout/session')->addError('Sorry, either of your card information (billing address or card validation digits) dint match. Please try again');
Mage::app()->getFrontController()->getResponse()->setRedirect('checkout/cart/')->sendResponse();
}
else
{
if ($order->canInvoice())
$this->_processOrderStatus($order);
}
}
return $this;
}
그러나 $quote->setIsActive(true)->save()
는 트릭을 수행 될 것 같지 않습니다. 주문을 '취소됨'상태로 저장 한 후 장바구니를 비우지 않게하려면 어떻게해야합니까?
답장을 보내 주셔서 감사합니다. 이미 제안한 코드를 시도했지만 실패 페이지로 이동하지는 않습니다. 제가 정말로하고 싶은 것은 장바구니를 저장하는 것입니다. 즉,'$ quote-> setIsActive (true) -> save()'를 사용하면 실패/취소 된 주문에 카트가 비어서 저장되지 않도록 할 수 있습니다. 항목을 다시 추가하는 번거 로움. 그 아이디어는 어떨까요? – ivn
편집 : 자세한 내용은 편집 된 질문을 참조하십시오. – ivn
관찰자는 어떤 이벤트를 듣습니까? 장바구니로 다시 위치를 변경하는 머리글을 보내면 예외가 발생할 수 있습니다. – Florian