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>
|
