Version Notes
[EN] - callback update
[PT] - update de callback
Download this release
Release Info
Developer | Eupago |
Extension | Eupago_MB |
Version | 1.1.7 |
Comparing to | |
See all releases |
Code changes from version 1.1.6 to 1.1.7
app/code/community/Eupago/Multibanco/controllers/CallbackController.php
CHANGED
@@ -1,13 +1,9 @@
|
|
1 |
<?php
|
2 |
-
/*
|
3 |
-
Mygateway Payment Controller
|
4 |
-
By: Junaid Bhura
|
5 |
-
www.junaidbhura.com
|
6 |
-
*/
|
7 |
|
8 |
class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Action {
|
9 |
|
10 |
-
|
|
|
11 |
|
12 |
// tirar de comentário se pretender validar apenas pedidos post
|
13 |
// if(!$this->getRequest()->isPost())
|
@@ -16,9 +12,68 @@ class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Ac
|
|
16 |
// carrega dados de callback e encomenda
|
17 |
$callBack_params = (object)$this->getRequest()->getParams();
|
18 |
$order = Mage::getModel('sales/order')->load($callBack_params->identificador, 'increment_id');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
19 |
|
20 |
// valida metodo de pagamento
|
21 |
-
if(!isset($callBack_params->mp) || $callBack_params->mp != 'PC:PT')
|
22 |
exit("método de pagamento inválido");
|
23 |
|
24 |
// valida chave API
|
@@ -54,6 +109,53 @@ class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Ac
|
|
54 |
}
|
55 |
}
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
// CALLBACK ANTIGO FICARÁ DEPRECATED NA PROXIMA VERSÃO
|
58 |
public function autorizeAction(){
|
59 |
|
@@ -65,7 +167,6 @@ class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Ac
|
|
65 |
$CallBack_orderId = $CallBack['identificador'];
|
66 |
$CallBack_autorizacao = $CallBack['autorizacao'];
|
67 |
|
68 |
-
|
69 |
////// dados de encomenda
|
70 |
$OrderNumber = $CallBack_orderId; //$CallBack_orderId vaem da api Eupago[order-id]
|
71 |
$order = Mage::getModel('sales/order')->load($OrderNumber, 'increment_id');
|
@@ -76,7 +177,56 @@ class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Ac
|
|
76 |
|
77 |
// se não existir dados de pagamento antigos chama o novo callback
|
78 |
if($pagamento->eupago_referencia == null || $pagamento->eupago_referencia == "" ){
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
return;
|
81 |
}
|
82 |
|
1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
2 |
|
3 |
class Eupago_Multibanco_CallbackController extends Mage_Core_Controller_Front_Action {
|
4 |
|
5 |
+
// valida todos os metodos de pagamento
|
6 |
+
public function allAction(){
|
7 |
|
8 |
// tirar de comentário se pretender validar apenas pedidos post
|
9 |
// if(!$this->getRequest()->isPost())
|
12 |
// carrega dados de callback e encomenda
|
13 |
$callBack_params = (object)$this->getRequest()->getParams();
|
14 |
$order = Mage::getModel('sales/order')->load($callBack_params->identificador, 'increment_id');
|
15 |
+
$method = $order->getPayment()->getMethod();
|
16 |
+
$metodo_callback = null;
|
17 |
+
switch(urldecode($callBack_params->mp)){
|
18 |
+
case 'PC:PT':
|
19 |
+
$metodo_callback = "multibanco";
|
20 |
+
break;
|
21 |
+
case 'MW:PT':
|
22 |
+
$metodo_callback = "mbway";
|
23 |
+
break;
|
24 |
+
default:
|
25 |
+
exit("método de pagamento inválido");
|
26 |
+
}
|
27 |
+
|
28 |
+
// valida metodo de pagamento
|
29 |
+
if(!isset($callBack_params->mp) || $method != $metodo_callback)
|
30 |
+
exit("método de pagamento não corresponde ao da encomenda");
|
31 |
+
|
32 |
+
// valida chave API
|
33 |
+
if($callBack_params->chave_api != Mage::getStoreConfig('payment/'.$metodo_callback.'/chave'))
|
34 |
+
exit("chave API inválida");
|
35 |
+
|
36 |
+
// valida order_id
|
37 |
+
if($order->getId() == null)
|
38 |
+
exit("a encomenda não existe");
|
39 |
+
|
40 |
+
// valida estado da encomenda
|
41 |
+
if($order->getStatus() == "canceled") // devemos validar se esta completa?
|
42 |
+
exit("não foi possivel concluir o pagamento porque o estado da encomenda é: ".$order_status);
|
43 |
+
|
44 |
+
// valida valor da encomenda -> comentar no caso de premitir pagamento parcial
|
45 |
+
if($order->getGrandTotal() != $callBack_params->valor)
|
46 |
+
exit ("O valor da encomenda e o valor pago não correspondem!");
|
47 |
+
|
48 |
+
// verifica se a encomenda já está paga
|
49 |
+
if($order->getBaseTotalDue() == 0)
|
50 |
+
exit("A encomenda já se encontra paga!");
|
51 |
+
|
52 |
+
// valida valor por pagar
|
53 |
+
if($order->getBaseTotalDue() < $callBack_params->valor)
|
54 |
+
exit("O valor a pagamento é inferior ao valor pago!");
|
55 |
+
|
56 |
+
// marca como paga ou gera fatura
|
57 |
+
if($this->validaTransacao($callBack_params, $order)){
|
58 |
+
if(class_exists('SOAPClient'))
|
59 |
+
$this->capture($order);
|
60 |
+
else
|
61 |
+
$this->marcaComoPaga($order, $callBack_params->valor, true); // -> para usar para marcar como paga sem gerar fatura
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
public function multibancoAction($params = null) {
|
66 |
+
|
67 |
+
// tirar de comentário se pretender validar apenas pedidos post
|
68 |
+
// if(!$this->getRequest()->isPost())
|
69 |
+
// exit("pedido de callback deve ser post");
|
70 |
+
|
71 |
+
// carrega dados de callback e encomenda
|
72 |
+
$callBack_params = ($params == null) ? (object)$this->getRequest()->getParams() : $params;
|
73 |
+
$order = Mage::getModel('sales/order')->load($callBack_params->identificador, 'increment_id');
|
74 |
|
75 |
// valida metodo de pagamento
|
76 |
+
if(!isset($callBack_params->mp) || urldecode($callBack_params->mp) != 'PC:PT')
|
77 |
exit("método de pagamento inválido");
|
78 |
|
79 |
// valida chave API
|
109 |
}
|
110 |
}
|
111 |
|
112 |
+
public function mbwayAction($params = null) {
|
113 |
+
|
114 |
+
// tirar de comentário se pretender validar apenas pedidos post
|
115 |
+
// if(!$this->getRequest()->isPost())
|
116 |
+
// exit("pedido de callback deve ser post");
|
117 |
+
|
118 |
+
// carrega dados de callback e encomenda
|
119 |
+
$callBack_params = ($params == null) ? (object)$this->getRequest()->getParams() : $params;
|
120 |
+
$order = Mage::getModel('sales/order')->load($callBack_params->identificador, 'increment_id');
|
121 |
+
|
122 |
+
// valida metodo de pagamento
|
123 |
+
if(!isset($callBack_params->mp) || urldecode($callBack_params->mp) != 'MW:PT')
|
124 |
+
exit("método de pagamento inválido");
|
125 |
+
|
126 |
+
// valida chave API
|
127 |
+
if($callBack_params->chave_api != Mage::getStoreConfig('payment/mbway/chave'))
|
128 |
+
exit("chave API inválida");
|
129 |
+
|
130 |
+
// valida order_id
|
131 |
+
if($order->getId() == null)
|
132 |
+
exit("a encomenda não existe");
|
133 |
+
|
134 |
+
// valida estado da encomenda
|
135 |
+
if($order->getStatus() == "canceled") // devemos validar se esta completa?
|
136 |
+
exit("não foi possivel concluir o pagamento porque o estado da encomenda é: ".$order_status);
|
137 |
+
|
138 |
+
// valida valor da encomenda -> comentar no caso de premitir pagamento parcial
|
139 |
+
if($order->getGrandTotal() != $callBack_params->valor)
|
140 |
+
exit ("O valor da encomenda e o valor pago não correspondem!");
|
141 |
+
|
142 |
+
// verifica se a encomenda já está paga
|
143 |
+
if($order->getBaseTotalDue() == 0)
|
144 |
+
exit("A encomenda já se encontra paga!");
|
145 |
+
|
146 |
+
// valida valor por pagar
|
147 |
+
if($order->getBaseTotalDue() < $callBack_params->valor)
|
148 |
+
exit("O valor a pagamento é inferior ao valor pago!");
|
149 |
+
|
150 |
+
// marca como paga ou gera fatura
|
151 |
+
if($this->validaTransacao($callBack_params, $order)){
|
152 |
+
if(class_exists('SOAPClient'))
|
153 |
+
$this->capture($order);
|
154 |
+
else
|
155 |
+
$this->marcaComoPaga($order, $callBack_params->valor, true); // -> para usar para marcar como paga sem gerar fatura
|
156 |
+
}
|
157 |
+
}
|
158 |
+
|
159 |
// CALLBACK ANTIGO FICARÁ DEPRECATED NA PROXIMA VERSÃO
|
160 |
public function autorizeAction(){
|
161 |
|
167 |
$CallBack_orderId = $CallBack['identificador'];
|
168 |
$CallBack_autorizacao = $CallBack['autorizacao'];
|
169 |
|
|
|
170 |
////// dados de encomenda
|
171 |
$OrderNumber = $CallBack_orderId; //$CallBack_orderId vaem da api Eupago[order-id]
|
172 |
$order = Mage::getModel('sales/order')->load($OrderNumber, 'increment_id');
|
177 |
|
178 |
// se não existir dados de pagamento antigos chama o novo callback
|
179 |
if($pagamento->eupago_referencia == null || $pagamento->eupago_referencia == "" ){
|
180 |
+
// carrega dados de callback e encomenda
|
181 |
+
$callBack_params = (object)$CallBack;
|
182 |
+
$method = $order->getPayment()->getMethod();
|
183 |
+
$metodo_callback = null;
|
184 |
+
switch(urldecode($callBack_params->mp)){
|
185 |
+
case 'PC:PT':
|
186 |
+
$metodo_callback = "multibanco";
|
187 |
+
break;
|
188 |
+
case 'MW:PT':
|
189 |
+
$metodo_callback = "mbway";
|
190 |
+
break;
|
191 |
+
default:
|
192 |
+
exit("método de pagamento inválido");
|
193 |
+
}
|
194 |
+
|
195 |
+
// valida metodo de pagamento
|
196 |
+
if(!isset($callBack_params->mp) || $method != $metodo_callback)
|
197 |
+
exit("método de pagamento não corresponde ao da encomenda");
|
198 |
+
|
199 |
+
// valida chave API
|
200 |
+
if($callBack_params->chave_api != Mage::getStoreConfig('payment/'.$metodo_callback.'/chave'))
|
201 |
+
exit("chave API inválida");
|
202 |
+
|
203 |
+
// valida order_id
|
204 |
+
if($order->getId() == null)
|
205 |
+
exit("a encomenda não existe");
|
206 |
+
|
207 |
+
// valida estado da encomenda
|
208 |
+
if($order->getStatus() == "canceled") // devemos validar se esta completa?
|
209 |
+
exit("não foi possivel concluir o pagamento porque o estado da encomenda é: ".$order_status);
|
210 |
+
|
211 |
+
// valida valor da encomenda -> comentar no caso de premitir pagamento parcial
|
212 |
+
if($order->getGrandTotal() != $callBack_params->valor)
|
213 |
+
exit ("O valor da encomenda e o valor pago não correspondem!");
|
214 |
+
|
215 |
+
// verifica se a encomenda já está paga
|
216 |
+
if($order->getBaseTotalDue() == 0)
|
217 |
+
exit("A encomenda já se encontra paga!");
|
218 |
+
|
219 |
+
// valida valor por pagar
|
220 |
+
if($order->getBaseTotalDue() < $callBack_params->valor)
|
221 |
+
exit("O valor a pagamento é inferior ao valor pago!");
|
222 |
+
|
223 |
+
// marca como paga ou gera fatura
|
224 |
+
if($this->validaTransacao($callBack_params, $order)){
|
225 |
+
if(class_exists('SOAPClient'))
|
226 |
+
$this->capture($order);
|
227 |
+
else
|
228 |
+
$this->marcaComoPaga($order, $callBack_params->valor, true); // -> para usar para marcar como paga sem gerar fatura
|
229 |
+
}
|
230 |
return;
|
231 |
}
|
232 |
|
package.xml
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Eupago_MB</name>
|
4 |
-
<version>1.1.
|
5 |
<stability>stable</stability>
|
6 |
<license>GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Pagamento por Multibanco</summary>
|
10 |
<description>Permite pagamentos através de referências multibanco</description>
|
11 |
-
<notes>[EN] -
|
12 |
-
[PT] -
|
13 |
<authors><author><name>Eupago</name><user>eupago</user><email>suporte@eupago.pt</email></author></authors>
|
14 |
-
<date>2016-12-
|
15 |
-
<time>
|
16 |
-
<contents><target name="magecommunity"><dir name="Eupago"><dir name="Multibanco"><dir name="Block"><dir name="Form"><file name="Multibanco.php" hash="a526f756cd407a159a5438efefa0d66f"/></dir><dir name="Info"><file name="Multibanco.php" hash="7cec344b458fb7f5b0eb49b488434e7a"/></dir><dir name="Onepage"><file name="Success.php" hash="9da0851f53a89abeb25602d3c94a2612"/></dir></dir><dir name="Model"><file name="Multibanco.php" hash="d9f2858be6fe35eeffd9eaa8f9a884f1"/><dir name="System"><dir name="Config"><file name="Template.php" hash="fd636ddfc0a57d9e904ceb913415398d"/></dir></dir></dir><dir name="controllers"><file name="CallbackController.php" hash="
|
17 |
<compatible/>
|
18 |
<dependencies><required><php><min>5.2.0</min><max>7.0.0</max></php></required></dependencies>
|
19 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Eupago_MB</name>
|
4 |
+
<version>1.1.7</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>GNU General Public License (GPL)</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Pagamento por Multibanco</summary>
|
10 |
<description>Permite pagamentos através de referências multibanco</description>
|
11 |
+
<notes>[EN] - callback update
|
12 |
+
[PT] - update de callback</notes>
|
13 |
<authors><author><name>Eupago</name><user>eupago</user><email>suporte@eupago.pt</email></author></authors>
|
14 |
+
<date>2016-12-19</date>
|
15 |
+
<time>14:55:06</time>
|
16 |
+
<contents><target name="magecommunity"><dir name="Eupago"><dir name="Multibanco"><dir name="Block"><dir name="Form"><file name="Multibanco.php" hash="a526f756cd407a159a5438efefa0d66f"/></dir><dir name="Info"><file name="Multibanco.php" hash="7cec344b458fb7f5b0eb49b488434e7a"/></dir><dir name="Onepage"><file name="Success.php" hash="9da0851f53a89abeb25602d3c94a2612"/></dir></dir><dir name="Model"><file name="Multibanco.php" hash="d9f2858be6fe35eeffd9eaa8f9a884f1"/><dir name="System"><dir name="Config"><file name="Template.php" hash="fd636ddfc0a57d9e904ceb913415398d"/></dir></dir></dir><dir name="controllers"><file name="CallbackController.php" hash="d98230353a1e96c1ddb395fdc6aa63a6"/></dir><dir name="etc"><file name="config.xml" hash="179d01bf0777fd0c2e4e49e86282abce"/><file name="system.xml" hash="f25b77b36ec9b9cddbbd4131b861bcd7"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Eupago_Multibanco.xml" hash="87ee673b7cd7ec1dbc44cf2a0ef0f0c3"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="eupago"><dir name="multibanco"><dir name="checkout"><file name="success.phtml" hash="65c0fbce628ecdb41855475826cbbc2b"/></dir><dir name="info"><file name="default.phtml" hash="587ea28be59d4ac1c18c857e429382da"/><file name="multibanco.phtml" hash="f53da809c80956f983751d67a4a037ba"/></dir></dir></dir></dir><dir name="layout"><file name="eupago_multibanco.xml" hash="e3fbf5f655164991b363b305e09b0953"/></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="eupago"><dir name="multibanco"><dir name="info"><file name="multibanco.phtml" hash="47d133c69fb6121b648037995c868740"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="eupago"><dir name="multibanco"><file name="eupago_mb_p.png" hash="6db08f88f1f4770337db63105a4f0f08"/><file name="multibanco_icon.png" hash="87425d6e05c42ae6780b16ca8379d97a"/></dir></dir></dir></dir></dir></dir></target></contents>
|
17 |
<compatible/>
|
18 |
<dependencies><required><php><min>5.2.0</min><max>7.0.0</max></php></required></dependencies>
|
19 |
</package>
|