[英]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.