これはあなたを助けるかもしれません。
モジュールの例:
$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 つの請求書が生成されます。