Я начинаю magento и пытаюсь разработать модуль для отправки сообщения при размещении любого заказа, с этим модулем я могу сгенерировать (отправить/получить) сообщение, но проверить страницу не перенаправлять на страницу успеха, а также использовать следующие события
sales_order_place_before, checkout_type_onepage_save_order & checkout_type_onepage_save_order_after
потому что моя тема использует одностраничную проверку, но результат такой же
etc/config.php
<?xml version="1.0"?>
<config>
<modules>
<Abc_Sms>
<version>0.0.1</version>
</Abc_Sms>
</modules>
<global>
<models>
<abc_sms>
<class>Abc_Sms_Model</class>
</abc_sms>
</models>
<events>
<sales_order_place_after><!-- observe the event -->
<observers>
<abc_sms>
<class>abc_sms/observer</class>
<method>newCheckout</method>
</abc_sms>
</observers>
</sales_order_place_after>
</events>
</global>
</config>
Модель /Oberver.php
<?php
class Abc_Sms_Model_Observer {
public function newCheckout($observer) {
$order_id = $observer->getEvent()->getOrder()->getId() ;
$order_no = $observer->getEvent()->getOrder()->getIncrementId() ;
$order = Mage::getModel("sales/order")->load($order_id);
$billing_address = $order->getBillingAddress();
$billing_telephone = $billing_address->getTelephone();
$msg = "Thank you for your purchase! Your order # is: ".$order_no;
//sms api start
$ch = curl_init();
$user="****@gmail.com:****";
$receipientno = $billing_telephone;
$senderID="TEST SMS";
$msgtxt = $msg;
curl_setopt($ch,CURLOPT_URL, "http://api.mVaayoo.com/mvaayooapi/MessageCompose");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$user&senderID=$senderID&receipientno=$receipientno&msgtxt=$msgtxt");
$buffer = curl_exec($ch);
if(empty ($buffer))
{ echo " buffer is empty "; }
else
{ echo $buffer; }
curl_close($ch);
//sms api end
}
}
?>
Спасибо в Advance за помощь
Попробуй это:
Добавьте это как функцию newCheckout
последнюю строку
return $this;
Вы можете сделать запрос, как показано ниже:
$client = new Varien_Http_Client('http://www.example.com/');
$client->setMethod(Varien_Http_Client::POST);
$client->setParameterPost('param1', $param1);
$client->setParameterPost('param2', $param2);
//more parameters
try{
$response = $client->request();
if ($response->isSuccessful()) {
echo $response->getBody();
return $this; // for redirection after save order event
}
} catch (Exception $e) {
}
NB: Не забудьте реализовать return $this
после успешного ответа.
Ссылка: qaru.site/questions/4260454/...
Попробуй это:
Нажмите F12 и откройте консоль с помощью пожарной ошибки, вы увидите свои результаты.