簡體   English   中英

magento將結賬付款重定向到第三方網關

[英]magento redirect checkout payment to a 3rd party gateway

我希望能夠允許用戶在結帳時選擇某個選項,然后他們將被重定向到銀行頁面,在那里他們使用他們的信用信息進行支付,然后重定向回magento並將訂單設置為已批准成功或失敗如果不

我已經用magento的代碼搞亂了幾天,我能夠通過單頁控制器“破解”進行重定向然后回來,但是我無法將訂單的狀態更改為“已批准”來自那個控制器

我在“保存訂單操作”中基本上在控制器中做的是: - 檢查用戶選擇的付款方式 - 如果是我需要的付款方式,將用戶發送到銀行頁面並支付金額 - 然后返回頁面到php頁面檢查返回的狀態,如果成功重定向到onepage / success /,如果沒有,重定向到onepage / failure

這一切都很好但但我怎樣才能改變訂單狀態?

我嘗試了這個鏈接中的內容,但這只適用於舊版本的Magento似乎http://blog.chapagain.com.np/magento-how-to-change-order-status-programmatically/

謝謝

請注意,成功頁面不一定會將付款狀態更改為已批准。 這是因為不同的付款方式可能會在不同時間批准付款。 例如,Paypal在有機會處理之前不會批准付款。

您的CC公司是否提供可用於更新狀態的回調? 如果是這樣,我建議使用Paypal模塊作為模板來處理這個問題(等待回調,更新訂單狀態)。 如果沒有,也許使用cronjob及其API來檢查付款狀態。

總的來說,不要依賴客戶在付款后訪問某個頁面,因為在很多情況下情況並非如此。

希望有所幫助!

謝謝,喬

我從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)); 
} 

更改訂單狀態(magento 1.5)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM