Eupago_MB - Version 1.1.7

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
- public function multibancoAction() {
 
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
- $this->multibancoAction();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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.6</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&#xE9;s de refer&#xEA;ncias multibanco</description>
11
- <notes>[EN] - re-orders and trasactions is now avaiable&#xD;
12
- [PT] - novas funcionalidades : re-order e registo de transa&#xE7;&#xF5;es</notes>
13
  <authors><author><name>Eupago</name><user>eupago</user><email>suporte@eupago.pt</email></author></authors>
14
- <date>2016-12-07</date>
15
- <time>17:19:13</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="3fb7fad856b683a4ea0f2b3434edaac9"/></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>
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&#xE9;s de refer&#xEA;ncias multibanco</description>
11
+ <notes>[EN] - callback update&#xD;
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>