Выполните следующие шаги для автоматического захвата ваших заказов после авторизации:
Настройте способ оплаты для Авторизации (не прямой продажи)
Создайте наблюдатель, который будет обрабатывать событие с именем sales_order_payment_place_end
с помощью метода с именем automaticalyCaptureOrder
Используйте следующий код метода наблюдателя:
public function automaticalyCaptureOrder(Varien_Event_Observer $observer)
{
$payment = $observer->getEvent()->getPayment();
// Add additional check for payment method instance,
// We need to be sure that only Authorize.Net payment will be captured
if ($payment->getMethodInstance() instanceof Mage_Paygate_Model_Authorizenet) {
$payment->capture(null); // null value tells Magento to create
// an invoice automatically
}
}
Расслабьтесь и отдохните:)
Пожалуйста, дайте мне знать, если у вас возникнут какие-либо трудности с этим решением, и я перезвоню вам.
ОБНОВЛЕНИЕ:
Чтобы получить оплату заказа через некоторое время, вы должны загрузить объект заказа по его уникальному идентификатору и выполнить аналогичные действия, как и раньше, но вам также нужно сохранить объект заказа после вызова метода захвата:
$order->load($orderId); // Or $order->loadByIncrementId($incrementId);
$order->getPayment()->capture(null); // Capturing the payment
$order->save(); // Save updated information (transaction ids, order status)