我有自己的自定义支付网关,可以解决一个问题。当交易成功时,订单会更新并发送电子邮件,但支付的总金额仍为0欧元。
如何更新付费状态?我找不到任何关于此的文章。
Magento 1.7
public function responseAction() {
if($this->getRequest()->isPost()) {
if($payment_validated) {
// Payment was successful, so update the order's state, send order email and move to the success page
$order = Mage::getModel('sales/order');
$order->loadByIncrementId($orderId);
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'AIB has authorized the payment.');
$order->sendNewOrderEmail();
$order->setEmailSent(true);
$order->save();
Mage::getSingleton('checkout/session')->unsQuoteId();
Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
}
答案 0 :(得分:1)
这个答案可能很少过时,但仍有人可能觉得它有用。 我自己发现了这个问题,并希望得到一个答案。
所以我在atwix发现了一篇非常有用的文章,特别是我用过:
$orderId = 200000025; // you'll get your own Order Id
$model = Mage::getModel('sales/order');
$model->loadByIncrementId($orderId);
$invoice = $model->prepareInvoice();
$invoice->register();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())
->save();
$invoice->sendEmail(true, '');
if($model->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true)) {
$model->save();
}
因此,在此之后,我在后端获得了付款状态,并将状态更改为处理状态。
现在下一步是让客户知道他的订单已经付款,我希望通过电子邮件完成。
干杯!!