Skip to content

Commit 216d503

Browse files
committed
add Magento events in the controllers of the main actions and notifying the client and admin store tpv cancellation in the payment gateway
1 parent 2850bdb commit 216d503

6 files changed

Lines changed: 114 additions & 8 deletions

File tree

app/code/community/Devopensource/Redsys/Helper/Data.php

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,7 @@ public function stateErrorTpv($_order,$errorMessage=null){
190190
$_order->sendOrderUpdateEmail($isCustomerNotified, $comment);
191191
}
192192
}
193-
194-
193+
195194
public function recoveryCart(){
196195
$recoveryCart = Mage::getStoreConfig('payment/redsys/recover_cart', Mage::app()->getStore());
197196

@@ -263,7 +262,6 @@ public function createInvoice($order){
263262
}
264263
}
265264

266-
267265
public function comentarioReponse($Ds_Response, $Ds_pay_method='')
268266
{
269267
switch($Ds_Response)
@@ -447,4 +445,46 @@ public function setCustomState($order ,$state, $status = false, $comment = '', $
447445

448446
return $this;
449447
}
448+
449+
public function notifyEmailCustomer($message, $email){
450+
451+
$data = array('message' => $message);
452+
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('redsys_notify_customer');
453+
$senderName = Mage::getStoreConfig('trans_email/ident_general/name');
454+
$senderEmail = Mage::getStoreConfig('trans_email/ident_general/email');
455+
$processedTemplate = $emailTemplate->getProcessedTemplate($data);
456+
457+
$mail = Mage::getModel('core/email')
458+
->setToName($senderName)
459+
->setReplyTo($senderEmail)
460+
->setToEmail($email)
461+
->setBody($processedTemplate)
462+
->setSubject($this->__('Order canceled from TPV'))
463+
->setFromEmail($senderEmail)
464+
->setFromName($senderName)
465+
->setType('html');
466+
467+
$mail->send();
468+
}
469+
470+
public function notifyEmailAdmin($message, $email){
471+
472+
$data = array('message' => $message, 'email' => $email);
473+
$emailTemplate = Mage::getModel('core/email_template')->loadDefault('redsys_notify_admin');
474+
$senderName = Mage::getStoreConfig('trans_email/ident_general/name');
475+
$senderEmail = Mage::getStoreConfig('trans_email/ident_general/email');
476+
$processedTemplate = $emailTemplate->getProcessedTemplate($data);
477+
478+
$mail = Mage::getModel('core/email')
479+
->setToName($senderName)
480+
->setReplyTo($email)
481+
->setToEmail($senderEmail)
482+
->setBody($processedTemplate)
483+
->setSubject($this->__('Order canceled from TPV'))
484+
->setFromEmail($senderEmail)
485+
->setFromName($senderName)
486+
->setType('html');
487+
488+
$mail->send();
489+
}
450490
}

app/code/community/Devopensource/Redsys/controllers/IndexController.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ class Devopensource_Redsys_IndexController extends Mage_Core_Controller_Front_Ac
88
public function redirectAction()
99
{
1010
$this->helper = Mage::helper('devopensource_redsys');
11-
1211
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
1312
$_order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
1413

@@ -25,6 +24,8 @@ public function redirectAction()
2524

2625
$this->helper->stateInTpv($_order);
2726

27+
Mage::dispatchEvent('redsys_redirect', array('order' => $_order));
28+
2829
$transaction_amount = number_format($_order->getTotalDue(), 2, '', '');
2930
$amount = (float)$transaction_amount;
3031

@@ -120,6 +121,8 @@ public function callbackAction()
120121
$order->sendNewOrderEmail();
121122
$this->helper->createInvoice($order);
122123
$this->helper->createTransaction($order,$decodeData);
124+
125+
Mage::dispatchEvent('redsys_payment_accepted', array('order' => $order));
123126
} catch (Exception $e) {
124127
$order->addStatusHistoryComment($this->__("TPV Error: %s",$e->getMessage()), false);
125128
$order->save();
@@ -147,6 +150,8 @@ public function callbackAction()
147150

148151
public function cancelAction()
149152
{
153+
$this->helper = Mage::helper('devopensource_redsys');
154+
150155
if (!empty($_GET) && Mage::getStoreConfig('payment/redsys/display_error_clients',Mage::app()->getStore()))
151156
{
152157
$this->helper = Mage::helper('devopensource_redsys');
@@ -164,22 +169,35 @@ public function cancelAction()
164169
$responsecode = intval($response);
165170
$error = $this->helper->comentarioReponse($responsecode);
166171
}
172+
167173
}
168174

169175
if(!isset($error)){
170176
$error = $this->__('Denied transaction from Redsys.');
171177
}
172178

173-
$this->helper = Mage::helper('devopensource_redsys');
174179
$session = Mage::getSingleton('checkout/session');
180+
$_orderIncId = $session->getData('last_real_order_id');
181+
$_order = Mage::getModel('sales/order')->loadByIncrementId($_orderIncId);
182+
183+
if(Mage::getStoreConfig('payment/redsys/notify_by_email', Mage::app()->getStore())){
184+
$this->helper->notifyEmailCustomer($this->__('Cancelled payment order %s from the payment gateway TPV.', '#'.$_orderIncId), $_order->getCustomerEmail());
185+
}
186+
187+
$this->helper->notifyEmailAdmin($this->__('Cancelled payment order %s from the payment gateway TPV.', '#'.$_orderIncId), $_order->getCustomerEmail());
188+
189+
Mage::dispatchEvent('redsys_payment_cancel', array('session' => $session));
190+
175191
$this->helper->recoveryCart();
176192
$session->addError($error);
193+
177194
$this->_redirect('checkout/cart');
178195
}
179196

180197
public function successAction()
181198
{
182199
$session = Mage::getSingleton('checkout/session');
200+
Mage::dispatchEvent('redsys_payment_success', array('session' => $session));
183201
$session->addsuccess($this->__('Authorized transaction'));
184202
$this->_redirect('checkout/onepage/success');
185203
}

app/code/community/Devopensource/Redsys/etc/config.xml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<config>
33
<modules>
44
<Devopensource_Redsys>
5-
<version>0.2.0</version>
5+
<version>0.2.1</version>
66
</Devopensource_Redsys>
77
</modules>
88
<global>
@@ -25,6 +25,20 @@
2525
<class>Devopensource_Redsys_Helper</class>
2626
</devopensource_redsys>
2727
</helpers>
28+
<template>
29+
<email>
30+
<redsys_notify_customer translate="label" module="devopensource_redsys">
31+
<label>Redsys Notify Customer</label>
32+
<file>redsys_notify_customer.html</file>
33+
<type>html</type>
34+
</redsys_notify_customer>
35+
<redsys_notify_admin translate="label" module="devopensource_redsys">
36+
<label>Redsys Notify Admin</label>
37+
<file>redsys_notify_admin.html</file>
38+
<type>html</type>
39+
</redsys_notify_admin>
40+
</email>
41+
</template>
2842
</global>
2943
<frontend>
3044
<routers>
@@ -78,7 +92,7 @@
7892
<display_error_clients>0</display_error_clients>
7993
<recover_cart>1</recover_cart>
8094
<transaction>0</transaction>
81-
<callback>1</callback>
95+
<callback>0</callback>
8296
</redsys>
8397
</payment>
8498
</default>

app/locale/es_ES/Devopensource_Redsys.csv

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,6 @@
4343
"Latest version stable:","Última versión estable:"
4444
"Notify clients states","Notificar estados de pedido al cliente"
4545
"Notify by email","Notificar por email"
46-
"Notify by frontend","Notificar por frontend"
46+
"Notify by frontend","Notificar por frontend"
47+
"Cancelled payment order %s from the payment gateway TPV.","Cancelado pago del pedido %s desde la pasarela de pago del TPV."
48+
"Order canceled from TPV","Pedido cancelado desde TPV"
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{{template config_path="design/email/header"}}
2+
{{inlinecss file="email-inline.css"}}
3+
4+
<table cellpadding="0" cellspacing="0" border="0">
5+
<tr>
6+
<td class="action-content">
7+
8+
<p>
9+
E-mail Customer: {{var email}}
10+
</p>
11+
<p>
12+
{{var message}}
13+
</p>
14+
</td>
15+
</tr>
16+
</table>
17+
18+
{{template config_path="design/email/footer"}}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{{template config_path="design/email/header"}}
2+
{{inlinecss file="email-inline.css"}}
3+
4+
<table cellpadding="0" cellspacing="0" border="0">
5+
<tr>
6+
<td class="action-content">
7+
<p>
8+
{{var message}}
9+
</p>
10+
</td>
11+
</tr>
12+
</table>
13+
14+
{{template config_path="design/email/footer"}}

0 commit comments

Comments
 (0)