2012-01-12 5 views
5

Magento 용 지불 모듈을 구현하고 있습니다. Magento 용 지불 모델에서 getCheckoutRedirectUrl() 메소드를 구현했습니다.체크 아웃 중에 magento 지불 모듈에서 현재 주문 가져 오기

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {} 

이 방법은 단지 사용자가 리디렉션되는 지불 게이트웨이의 URL을 반환하도록되어 있지만, 나는이 URL에 현재 주문 ID를 추가해야합니다.

문제는 orderId를 얻을 수 없습니다. 이미 accepted here

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 

으로 솔루션을 시도했지만 나는 빈 $의 OrderID를 얻을. 그래서 이것은 내 방법으로는 효과가없는 것 같습니다. 이 호출은 에러를 발생시키지 않으므로 객체를 얻습니다. 예를 들어, Mage :: getSingleton ('checkout/session') -> getQuote() -> getSubtotal()은 주문 금액을 반환하지만 orderId는 비어 있습니다.

는 또한 시도 : 다시 빈 $의 주문 ID를 반환

$order = Mage::getModel('sales/order'); 
$order->load(Mage::getSingleton('sales/order')->getLastOrderId()); 
$orderId = $order->getIncrementId(); 

합니다.

어떤 아이디어?

답변

15

귀하의 질문은, 서면으로, 비논리적입니다.

결제 중에 주문 번호는 입니다. 체크 아웃하는 동안 Magento는 sales/quote 개체를 만듭니다. 이 객체는 견적 항목을 추적하는 데 사용됩니다. 견적에서 sales/order 개체가 생성 된 것이 완료 될 때까지는 아닙니다.

getLastOrderId이 비어있는 이유는 순서가 지정되지 않았기 때문입니다.

귀하의 질문에 나와있는 결제 절차의 요지를 다시 기재하고 주문 ID를 사용하여 수행하려는 작업이 필요한 정보를 제공하는 데 도움이 될 수 있습니다. .

행운을 빈다.


저자의 솔루션 :

문제는 체크 아웃/세션에서 첫 점점 인용 ID에 의해 해결되었다

: 인용 ID로 다음

Mage::getSingleton('checkout/session')->getQuoteId(); 

및 견적 개체 :

$quote = Mage::getModel("sales/quote")->load($quoteId); 
+0

그것을 내 추측 주문은 아직 존재하지 않습니다, 내게 이것을 명확히 해 주셔서 감사합니다. 주문이 이미 DB에 저장되었다고 생각했습니다. 하지만 지불 게이트웨이가 백그라운드에서 수행하는 별도의 독립적 인 요청 (쿠키 제외)으로 주문 정보 (예 : 금액)를 얻을 수있는 식별자가 필요합니다. 어쩌면 세션 ID를 전달하고 세션을 설정할 수 있으므로 견적 (장바구니 주문)에 액세스 할 수 있습니까? – KoviNET

+3

견적 및 견적 항목은 데이터베이스에도 보관됩니다. 그것이 magento가 버려진 카트를 추적하는 방법입니다. 나는 당신이 원하는 정보를 얻기 위해 그 객체들을 사용하는 것에 집중할 것입니다. –

+3

quoteId를 지불 게이트웨이 (Mage :: getSingleton ('checkout/session') -> getQuoteId();)로 전달하여 문제를 해결 한 다음 별도 요청에서 견적 데이터를 가져올 수있었습니다. $ quote = Mage : : getModel ("sales/quote") ->로드 ($ quoteId); 감사! – KoviNET