I'm trying to create an online refund of a certain amount (e.g. 10 EUR = is lower than refundable amount). The refund is independent of order items. I can refund online in admin panel but everytime I do it programmatically it will do an offline refund. Please help! I must have overlooked something.
# $order and $invoice are given here
$service = Mage::getModel('sales/service_order', $order);
$data = array();
$data['shipping_amount'] = 0;
$data['grand_total'] = 0;
$data['base_grand_total'] = 0;
$data['adjustment_positive'] = 10;
$data['qtys'] = array(0 => 0);
$creditmemo = $service->prepareInvoiceCreditmemo($invoice, $data);
$creditmemo->setShippingAmount(0);
$creditmemo->setGrandTotal($data['adjustment_positive']);
$creditmemo->setRefundRequested(true);
$creditmemo->setOfflineRequested(false);
$creditmemo->setPaymentRefundDisallowed(false);
if(Mage::registry('current_creditmemo')) {
Mage::unregister('current_creditmemo');
}
Mage::register('current_creditmemo', $creditmemo);
$creditmemo->refund();
# here follows the transactionSave: $this->_saveCreditmemo($creditmemo);
Best Answer
Check this
1.
@param string $orderIncrementId
2.
3.
@param string|null $comment
4.
@param bool $includeComment
5.
@param string $refundToStoreCreditAmount
6
@return string $creditmemoIncrementId