我有一个现场Magento 1.5.0.1网店,有以下问题:
我们已收到订单,该订单已通过iDEAL(荷兰在线支付服务)支付,并且已在付款成功时自动生成发票。我们还在银行帐户中收到了这笔款项。
唯一的问题是,我们无法完成订单,因为'总到期'字段的数量高于0(零)。这必须是我们的iDEAL模块中的一个错误(将在另一个时刻处理)。
有没有办法在Total due字段设置为0时'强制'将此特定订单设为'完成'?
显然,这样做的PHP代码示例非常受欢迎(我自己也是程序员)。
答案 0 :(得分:2)
这可能会对你有帮助。
我们的一个模块示例:
$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
if ($order->getTotalPaid() == 0) {
$invoice = $order->prepareInvoice();
$invoice->register()->capture();
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())
->save();
$order->save();
检查付款是否尚未注册(用户可以通过多次点击发送多个成功请求),然后创建发票,注册,捕获并保存发票和订单。
编辑1
private function markOrderPayd($incrementId, $status) {
$order = Mage::getModel('sales/order')->loadByIncrementId($incrementId);
if ($order->getTotalPaid() == 0) {
...
$order->save();
$invoice = $order->prepareInvoice();
$invoice->register()->capture();
...
Mage::getModel('core/resource_transaction')
->addObject($invoice)
->addObject($invoice->getOrder())
->save();
$order->save();
...
} else {
...
$order->save();
}
}
我猜您没有任何支票,因此会生成2张发票。