I have created observers for dispatch events in Magento, for example customer_save_after
. Are there events to observe similar events handled through the API?
1 Answer
Taking a quick look at the Magento API files; shows that it goes through a different logic code base at some places, but still trigger events like the example below, inside Mage_Checkout_Model_Cart_Api :
public function createOrder($quoteId, $store = null, $agreements = null)
{
$requiredAgreements = Mage::helper('checkout')->getRequiredAgreementIds();
if (!empty($requiredAgreements)) {
$diff = array_diff($agreements, $requiredAgreements);
if (!empty($diff)) {
$this->_fault('required_agreements_are_not_all');
}
}
$quote = $this->_getQuote($quoteId, $store);
if ($quote->getIsMultiShipping()) {
$this->_fault('invalid_checkout_type');
}
if ($quote->getCheckoutMethod() == Mage_Checkout_Model_Api_Resource_Customer::MODE_GUEST
&& !Mage::helper('checkout')->isAllowedGuestCheckout($quote, $quote->getStoreId())) {
$this->_fault('guest_checkout_is_not_enabled');
}
/** @var $customerResource Mage_Checkout_Model_Api_Resource_Customer */
$customerResource = Mage::getModel("checkout/api_resource_customer");
$isNewCustomer = $customerResource->prepareCustomerForQuote($quote);
try {
$quote->collectTotals();
/** @var $service Mage_Sales_Model_Service_Quote */
$service = Mage::getModel('sales/service_quote', $quote);
$service->submitAll();
if ($isNewCustomer) {
try {
$customerResource->involveNewCustomer($quote);
} catch (Exception $e) {
Mage::logException($e);
}
}
$order = $service->getOrder();
if ($order) {
Mage::dispatchEvent( 'checkout_type_onepage_save_order_after', array('order' => $order, 'quote' => $quote));
try {
$order->sendNewOrderEmail();
} catch (Exception $e) {
Mage::logException($e);
}
}
Mage::dispatchEvent( 'checkout_submit_all_after', array('order' => $order, 'quote' => $quote) );
} catch (Mage_Core_Exception $e) {
$this->_fault('create_order_fault', $e->getMessage());
}
return $order->getIncrementId();
}