/** * process Initial Fee * * @param Mage_Sales_Model_Recurring_Profile $profile */ public function processInitialFee(Mage_Sales_Model_Recurring_Profile $profile) { // charge Initial Fee /** @var Mage_Sales_Model_Order $order */ $order = Mage::getModel('sales/order'); $amount = $profile->getInitAmount(); $shippingInfo = $profile->getShippingAddressInfo(); $shippingAddress = Mage::getModel('sales/order_address')->setData($shippingInfo)->setId(null); $orderInfo = new Varien_Object($profile->getOrderInfo()); $currencyCode = $orderInfo->getBaseCurrencyCode(); $order->setShippingAddress($shippingAddress); $order->setBaseCurrencyCode($currencyCode); /** @var Mage_Sales_Model_Order_Payment $payment */ $payment = Mage::getModel('sales/order_payment'); $payment->setOrder($order); $payment->setIsRecurring(true); $payment->setIsInitialFee(true); $customerId = $profile->getCustomerId(); $payment->setCustomerId($customerId); $additionalInfo = $profile->getAdditionalInfo(); $tokenId = $additionalInfo['token']['saved_token']; $payment->setTokenId($tokenId); /** @var Eway_Rapid31_Model_Method_Saved $ewaySave */ $ewaySave = Mage::getModel('ewayrapid/method_saved'); $paymentAction = Mage::getStoreConfig('payment/ewayrapid_general/payment_action'); if ($paymentAction == Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE) { $ewaySave->authorize($payment, $amount); } elseif ($paymentAction == Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE) { $ewaySave->capture($payment, $amount); } /** @todo: change status of order = "eWAY Authorised" * now status order = "processing" */ }