Version Notes
Checkout Transparente disponÃvel para: Brasil, Argentina e Mexico.
Checkout Standard disponÃvel para: Brasil, Argentina, Mexico, Venezuela e Colombia.
Download this release
Release Info
Developer | Developers MercadoPago Brasil |
Extension | MercadoPagoTransparent |
Version | 0.0.1 |
Comparing to | |
See all releases |
Version 0.0.1
- app/code/community/MercadoPago/.DS_Store +0 -0
- app/code/community/MercadoPago/Standard/Block/Form.php +34 -0
- app/code/community/MercadoPago/Standard/Block/Info.php +36 -0
- app/code/community/MercadoPago/Standard/Helper/Data.php +22 -0
- app/code/community/MercadoPago/Standard/Model/Checkout.php +250 -0
- app/code/community/MercadoPago/Standard/Model/Observer.php +107 -0
- app/code/community/MercadoPago/Standard/Model/Source/CategoryId.php +44 -0
- app/code/community/MercadoPago/Standard/Model/Source/Country.php +32 -0
- app/code/community/MercadoPago/Standard/Model/Source/Installments.php +37 -0
- app/code/community/MercadoPago/Standard/Model/Source/PaymentMethods.php +41 -0
- app/code/community/MercadoPago/Standard/Model/Source/TypeCheckout.php +31 -0
- app/code/community/MercadoPago/Standard/controllers/NotificationController.php +190 -0
- app/code/community/MercadoPago/Standard/controllers/PayController.php +64 -0
- app/code/community/MercadoPago/Standard/etc/config.xml +120 -0
- app/code/community/MercadoPago/Standard/etc/system.xml +256 -0
- app/code/community/MercadoPago/Transparent/.DS_Store +0 -0
- app/code/community/MercadoPago/Transparent/Block/.DS_Store +0 -0
- app/code/community/MercadoPago/Transparent/Block/Form.php +82 -0
- app/code/community/MercadoPago/Transparent/Block/Info.php +36 -0
- app/code/community/MercadoPago/Transparent/Block/Success.php +36 -0
- app/code/community/MercadoPago/Transparent/Helper/Data.php +22 -0
- app/code/community/MercadoPago/Transparent/Model/.DS_Store +0 -0
- app/code/community/MercadoPago/Transparent/Model/Resource/Setup.php +14 -0
- app/code/community/MercadoPago/Transparent/Model/Source/CategoryId.php +44 -0
- app/code/community/MercadoPago/Transparent/Model/Transparent.php +393 -0
- app/code/community/MercadoPago/Transparent/controllers/NotificacaoController.php +190 -0
- app/code/community/MercadoPago/Transparent/controllers/PayController.php +194 -0
- app/code/community/MercadoPago/Transparent/etc/config.xml +103 -0
- app/code/community/MercadoPago/Transparent/etc/system.xml +81 -0
- app/code/community/MercadoPago/TransparentTicket/Block/Form.php +50 -0
- app/code/community/MercadoPago/TransparentTicket/Block/Info.php +36 -0
- app/code/community/MercadoPago/TransparentTicket/Helper/Data.php +22 -0
- app/code/community/MercadoPago/TransparentTicket/Model/Transparent.php +86 -0
- app/code/community/MercadoPago/TransparentTicket/etc/config.xml +103 -0
- app/code/community/MercadoPago/TransparentTicket/etc/system.xml +74 -0
- app/design/adminhtml/default/default/template/mercadopago/standard/info.phtml +29 -0
- app/design/adminhtml/default/default/template/mercadopago/transparent/info.phtml +33 -0
- app/design/adminhtml/default/default/template/mercadopago/transparent_boleto/info.phtml +13 -0
- app/design/adminhtml/default/default/template/mercadopago/transparent_ticket/info.phtml +15 -0
- app/design/frontend/base/default/layout/mercadopago.xml +9 -0
- app/design/frontend/base/default/template/mercadopago/clean_page.phtml +48 -0
- app/design/frontend/base/default/template/mercadopago/standard/form.phtml +12 -0
- app/design/frontend/base/default/template/mercadopago/standard/info.phtml +36 -0
- app/design/frontend/base/default/template/mercadopago/standard/pay.phtml +51 -0
- app/design/frontend/base/default/template/mercadopago/transparent/form.phtml +175 -0
- app/design/frontend/base/default/template/mercadopago/transparent/info.phtml +33 -0
- app/design/frontend/base/default/template/mercadopago/transparent/success.phtml +229 -0
- app/design/frontend/base/default/template/mercadopago/transparent/sucesso.phtml +103 -0
- app/design/frontend/base/default/template/mercadopago/transparent_boleto/form.phtml +20 -0
- app/design/frontend/base/default/template/mercadopago/transparent_boleto/info.phtml +23 -0
- app/design/frontend/base/default/template/mercadopago/transparent_ticket/form.phtml +31 -0
- app/design/frontend/base/default/template/mercadopago/transparent_ticket/info.phtml +27 -0
- app/etc/modules/MercadoPago_Standard.xml +9 -0
- app/etc/modules/MercadoPago_Transparent.xml +9 -0
- app/etc/modules/MercadoPago_TransparentBoleto.xml +9 -0
- app/etc/modules/MercadoPago_TransparentTicket.xml +9 -0
- app/locale/es_AR/mercadopago.csv +114 -0
- app/locale/es_CO/mercadopago.csv +119 -0
- app/locale/es_ES/mercadopago.csv +41 -0
- app/locale/es_MX/mercadopago.csv +120 -0
- app/locale/pt_BR/mercadopago.csv +120 -0
- js/mercadopago/jquery-1.11.0.min.js +4 -0
- js/mercadopago/mercadopago.js +294 -0
- lib/mercadopago/mercadopago.php +342 -0
- package.xml +26 -0
- skin/frontend/base/default/mercadopago/.DS_Store +0 -0
- skin/frontend/base/default/mercadopago/css/style.css +222 -0
- skin/frontend/base/default/mercadopago/images/loading.gif +0 -0
app/code/community/MercadoPago/.DS_Store
ADDED
Binary file
|
app/code/community/MercadoPago/Standard/Block/Form.php
ADDED
@@ -0,0 +1,34 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_Standard_Block_Form extends Mage_Payment_Block_Form_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
parent::_construct();
|
25 |
+
|
26 |
+
$this->setTemplate('mercadopago/standard/form.phtml');
|
27 |
+
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
|
34 |
+
?>
|
app/code/community/MercadoPago/Standard/Block/Info.php
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_Standard_Block_Info extends Mage_Payment_Block_Info_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
|
25 |
+
parent::_construct();
|
26 |
+
$this->setTemplate('mercadopago/standard/info.phtml');
|
27 |
+
$this->setModuleName('Mage_Payment');
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function getOrder() {
|
32 |
+
|
33 |
+
return $this->getInfo();
|
34 |
+
|
35 |
+
}
|
36 |
+
}
|
app/code/community/MercadoPago/Standard/Helper/Data.php
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
?>
|
17 |
+
<?php
|
18 |
+
|
19 |
+
|
20 |
+
class MercadoPago_Standard_Helper_Data extends Mage_Payment_Helper_Data{
|
21 |
+
|
22 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Checkout.php
ADDED
@@ -0,0 +1,250 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Standard_Model_Checkout extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
//configura o lugar do arquivo para listar meios de pagamento
|
22 |
+
protected $_formBlockType = 'mercadopago_standard/form';
|
23 |
+
protected $_infoBlockType = 'mercadopago_standard/info';
|
24 |
+
|
25 |
+
protected $_code = 'mercadopago_standard';
|
26 |
+
|
27 |
+
protected $_isGateway = true;
|
28 |
+
protected $_canOrder = true;
|
29 |
+
protected $_canAuthorize = true;
|
30 |
+
protected $_canCapture = true;
|
31 |
+
protected $_canCapturePartial = true;
|
32 |
+
protected $_canRefund = true;
|
33 |
+
protected $_canRefundInvoicePartial = true;
|
34 |
+
protected $_canVoid = true;
|
35 |
+
protected $_canUseInternal = true;
|
36 |
+
protected $_canUseCheckout = true;
|
37 |
+
protected $_canUseForMultishipping = true;
|
38 |
+
protected $_canFetchTransactionInfo = true;
|
39 |
+
protected $_canCreateBillingAgreement = true;
|
40 |
+
protected $_canReviewPayment = true;
|
41 |
+
|
42 |
+
protected function _construct(){
|
43 |
+
$this->_init('mercadopago_standard/checkout');
|
44 |
+
}
|
45 |
+
|
46 |
+
public function postPago(){
|
47 |
+
//seta sdk php mercadopago
|
48 |
+
$client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
49 |
+
$client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
50 |
+
$mp = new MP($client_id, $client_secret);
|
51 |
+
|
52 |
+
//monta a prefernecia
|
53 |
+
$pref = $this->makePreference();
|
54 |
+
|
55 |
+
//faz o posto do pagamento
|
56 |
+
return $mp->create_preference($pref);
|
57 |
+
}
|
58 |
+
|
59 |
+
public function getOrderPlaceRedirectUrl() {
|
60 |
+
|
61 |
+
// requisicao vem da pagina de finalizacao de pedido
|
62 |
+
return Mage::getUrl('mercadopago_standard/pay', array('_secure' => true));
|
63 |
+
|
64 |
+
}
|
65 |
+
|
66 |
+
public function getDiscount($order){
|
67 |
+
$discount = 0;
|
68 |
+
|
69 |
+
$order = $order->getData();
|
70 |
+
|
71 |
+
if(isset($order['base_discount_amount']) && $order['base_discount_amount'] < 0) {
|
72 |
+
$discount = $order['base_discount_amount'];
|
73 |
+
}
|
74 |
+
|
75 |
+
return $discount;
|
76 |
+
}
|
77 |
+
|
78 |
+
function makePreference(){
|
79 |
+
|
80 |
+
//pega a order atual
|
81 |
+
$orderIncrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
|
82 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
83 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
84 |
+
$model = Mage::getModel('catalog/product');
|
85 |
+
|
86 |
+
|
87 |
+
|
88 |
+
//pega payment dentro da order para pegar as informacoes adicionadas pela funcao assignData()
|
89 |
+
$payment = $order->getPayment();
|
90 |
+
|
91 |
+
//init array preferneces
|
92 |
+
$arr = array();
|
93 |
+
|
94 |
+
//seta o external_reference para concilia��o futura
|
95 |
+
$arr['external_reference'] = $orderIncrementId;
|
96 |
+
|
97 |
+
//monta array de produtos
|
98 |
+
$arr['items'] = array();
|
99 |
+
foreach ($order->getAllVisibleItems() as $item) {
|
100 |
+
|
101 |
+
$prod = $model->loadByAttribute('sku', $item->getSku());
|
102 |
+
|
103 |
+
//get image
|
104 |
+
try{
|
105 |
+
$imagem = $prod->getImageUrl();
|
106 |
+
}catch(Exception $e){
|
107 |
+
$imagem = "";
|
108 |
+
}
|
109 |
+
|
110 |
+
$arr['items'][] = array(
|
111 |
+
"id" => $item->getSku(),
|
112 |
+
"title" => $item->getName(),
|
113 |
+
"description" => $item->getName(),
|
114 |
+
"picture_url" => $imagem,
|
115 |
+
"category_id" => Mage::getStoreConfig('payment/mercadopago_configuration/category_id'),
|
116 |
+
"quantity" => (int) number_format($item->getQtyOrdered(), 0, '.', ''),
|
117 |
+
"unit_price" => (float) number_format($prod->getPrice(), 2, '.', '')
|
118 |
+
);
|
119 |
+
|
120 |
+
}
|
121 |
+
|
122 |
+
//verifica se existe desconto, caso exista adiciona como um item
|
123 |
+
$discount = $this->getDiscount($order);
|
124 |
+
|
125 |
+
if($discount != 0){
|
126 |
+
$arr['items'][] = array(
|
127 |
+
"title" => "Discount by the Store",
|
128 |
+
"description" => "Discount by the Store",
|
129 |
+
"quantity" => (int) 1,
|
130 |
+
"unit_price" => (float) number_format($discount, 2, '.', '')
|
131 |
+
);
|
132 |
+
}
|
133 |
+
|
134 |
+
|
135 |
+
//pega dados de envio
|
136 |
+
if(method_exists($order->getShippingAddress(), "getData")){
|
137 |
+
$shipping = $order->getShippingAddress()->getData();
|
138 |
+
$arr['shipments']['receiver_address'] = array(
|
139 |
+
"floor" => "-",
|
140 |
+
"zip_code" => $shipping['postcode'],
|
141 |
+
"street_name" => $shipping['street'] . " - " . $shipping['city'] . " - " . $shipping['country_id'],
|
142 |
+
"apartment" => "-",
|
143 |
+
"street_number" => "0"
|
144 |
+
);
|
145 |
+
$arr['payer']['phone'] = array(
|
146 |
+
"area_code" => "-",
|
147 |
+
"number" => $shipping['telephone']
|
148 |
+
);
|
149 |
+
}
|
150 |
+
|
151 |
+
//adiciona o valor do frete nas preferencias
|
152 |
+
if($order->getBaseShippingAmount() != "" && $order->getBaseShippingAmount() > 0){
|
153 |
+
$arr['shipments']['cost'] = (float) $order->getBaseShippingAmount();
|
154 |
+
}
|
155 |
+
|
156 |
+
|
157 |
+
//pega informa�oes de cadastro do usuario
|
158 |
+
$billing_address = $order->getBillingAddress();
|
159 |
+
$billing_address = $billing_address->getData();
|
160 |
+
|
161 |
+
//formata a data do usuario para o padrao do mercado pago YYYY-MM-DDTHH:MM:SS
|
162 |
+
$arr['payer']['date_created'] = date('Y-m-d',$customer->getCreatedAtTimestamp()) . "T" . date('H:i:s',$customer->getCreatedAtTimestamp());
|
163 |
+
|
164 |
+
//set informa�oes do usuario
|
165 |
+
$arr['payer']['email'] = htmlentities($customer->getEmail());
|
166 |
+
$arr['payer']['first_name'] = htmlentities($customer->getFirstname());
|
167 |
+
$arr['payer']['last_name'] = htmlentities($customer->getLastname());
|
168 |
+
|
169 |
+
//set o documento do usuario
|
170 |
+
if(isset($payment['additional_information']['doc_number']) && $payment['additional_information']['doc_number'] != ""){
|
171 |
+
$arr['payer']['identification'] = array(
|
172 |
+
"type" => "CPF",
|
173 |
+
"number" => $payment['additional_information']['doc_number']
|
174 |
+
);
|
175 |
+
}
|
176 |
+
|
177 |
+
//set endereco do usuario
|
178 |
+
$arr['payer']['address'] = array(
|
179 |
+
"zip_code" => $billing_address['postcode'],
|
180 |
+
"street_name" => $billing_address['street'] . " - " . $billing_address['city'] . " - " . $billing_address['country_id'],
|
181 |
+
"street_number" => "0"
|
182 |
+
);
|
183 |
+
|
184 |
+
//setta as urls de retorno
|
185 |
+
$arr['back_urls'] = array(
|
186 |
+
"success" => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "checkout/onepage/success",
|
187 |
+
"pending" => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "checkout/onepage/success",
|
188 |
+
"failure" => Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "checkout/onepage/success"
|
189 |
+
);
|
190 |
+
|
191 |
+
//define a url de notificacao
|
192 |
+
$arr['notification_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "mercadopago_standard/notification";
|
193 |
+
|
194 |
+
//pega o email e o nome do usuario guest
|
195 |
+
if($arr['payer']['email'] == ""){
|
196 |
+
$arr['payer']['email'] = $order['customer_email'];
|
197 |
+
$arr['payer']['first_name'] = $order->getBillingAddress()->getFirstname();
|
198 |
+
$arr['payer']['last_name'] = $order->getBillingAddress()->getLastname();
|
199 |
+
}
|
200 |
+
|
201 |
+
// pega os meios de pagamento que ele dejexa excluir
|
202 |
+
$checkout = Mage::getModel('mercadopago_standard/checkout');
|
203 |
+
$excluded_payment_methods = $checkout->getConfigData('excluded_payment_methods');
|
204 |
+
$arr_epm = explode(",", $excluded_payment_methods);
|
205 |
+
if(count($arr_epm) > 0){
|
206 |
+
$arr['payment_methods']['excluded_payment_methods'] = array();
|
207 |
+
|
208 |
+
foreach($arr_epm as $m):
|
209 |
+
$arr['payment_methods']['excluded_payment_methods'][] = array("id" => $m);
|
210 |
+
endforeach;
|
211 |
+
|
212 |
+
}
|
213 |
+
|
214 |
+
//seta o numero de parcelas maxima aceita pelo lojista
|
215 |
+
$installments = $checkout->getConfigData('installments');
|
216 |
+
$arr['payment_methods']['installments'] = (int) $installments;
|
217 |
+
|
218 |
+
|
219 |
+
//define o retorno automatico ao finalizar o checkout
|
220 |
+
$auto_return = $checkout->getConfigData('auto_return');
|
221 |
+
if($auto_return == 1){
|
222 |
+
$arr['auto_return'] = "approved";
|
223 |
+
}
|
224 |
+
|
225 |
+
//adiciona o sponsor_id para as vendas serem identificadas
|
226 |
+
//$arr['sponsor_id'] = "";
|
227 |
+
|
228 |
+
return $arr;
|
229 |
+
|
230 |
+
}
|
231 |
+
|
232 |
+
|
233 |
+
public function getPayment($payment_id){
|
234 |
+
$model = $this;
|
235 |
+
$this->client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
236 |
+
$this->client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
237 |
+
$mp = new MP($this->client_id, $this->client_secret);
|
238 |
+
return $mp->get_payment($payment_id);
|
239 |
+
}
|
240 |
+
|
241 |
+
public function getMerchantOrder($merchant_order_id){
|
242 |
+
$model = $this;
|
243 |
+
$this->client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
244 |
+
$this->client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
245 |
+
$mp = new MP($this->client_id, $this->client_secret);
|
246 |
+
return $mp->get_merchant_order($merchant_order_id);
|
247 |
+
}
|
248 |
+
}
|
249 |
+
|
250 |
+
?>
|
app/code/community/MercadoPago/Standard/Model/Observer.php
ADDED
@@ -0,0 +1,107 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
ini_set('display_errors',1);
|
3 |
+
ini_set('display_startup_erros',1);
|
4 |
+
error_reporting(E_ALL);
|
5 |
+
|
6 |
+
/**
|
7 |
+
*
|
8 |
+
* NOTICE OF LICENSE
|
9 |
+
*
|
10 |
+
* This source file is subject to the Open Software License (OSL).
|
11 |
+
* It is also available through the world-wide-web at this URL:
|
12 |
+
* http://opensource.org/licenses/osl-3.0.php
|
13 |
+
*
|
14 |
+
* @category Payment Gateway
|
15 |
+
* @package MercadoPago
|
16 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
17 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
18 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
19 |
+
*/
|
20 |
+
|
21 |
+
class MercadoPago_Standard_Model_Observer{
|
22 |
+
|
23 |
+
private $banners_credit_card = array(
|
24 |
+
"mla" => "http://imgmp.mlstatic.com/org-img/banners/ar/medios/online/468X60.jpg",
|
25 |
+
"mlb" => "http://imgmp.mlstatic.com/org-img/MLB/MP/BANNERS/tipo2_468X60.jpg",
|
26 |
+
"mco" => "https://a248.e.akamai.net/secure.mlstatic.com/components/resources/mp/css/assets/desktop-logo-mercadopago.png",
|
27 |
+
"mlm" => "http://imgmp.mlstatic.com/org-img/banners/mx/medios/MLM_468X60.JPG"
|
28 |
+
);
|
29 |
+
|
30 |
+
private $banner_ticket = array(
|
31 |
+
"mla" => "https://a248.e.akamai.net/secure.mlstatic.com/components/resources/mp/css/assets/desktop-logo-mercadopago.png",
|
32 |
+
"mlb" => "http://imgmp.mlstatic.com/org-img/MLB/MP/BANNERS/2014/230x60.png",
|
33 |
+
"mco" => "https://a248.e.akamai.net/secure.mlstatic.com/components/resources/mp/css/assets/desktop-logo-mercadopago.png",
|
34 |
+
"mlm" => "https://a248.e.akamai.net/secure.mlstatic.com/components/resources/mp/css/assets/desktop-logo-mercadopago.png"
|
35 |
+
);
|
36 |
+
|
37 |
+
private $available_transparent_credit_cart = array('mla', 'mlb', 'mlm');
|
38 |
+
private $available_transparent_ticket = array('mla', 'mlb', 'mlm');
|
39 |
+
|
40 |
+
public function checkAndValidData($observer){
|
41 |
+
$this->availableCheckout();
|
42 |
+
|
43 |
+
$this->checkBanner('mercadopago_transparentticket', 'transparent');
|
44 |
+
$this->checkBanner('mercadopago_transparent', 'transparent');
|
45 |
+
$this->checkBanner('mercadopago_standard', 'checkout');
|
46 |
+
}
|
47 |
+
|
48 |
+
|
49 |
+
public function availableCheckout(){
|
50 |
+
//verifica se o pais selecionado possui integra��o para utilizar os checkouts transparents
|
51 |
+
$core = new Mage_Core_Model_Resource_Setup('core_setup');
|
52 |
+
$country = Mage::getStoreConfig('payment/mercadopago_configuration/country');
|
53 |
+
|
54 |
+
if(!in_array($country, $this->available_transparent_credit_cart)){
|
55 |
+
$core->setConfigData('payment/mercadopago_transparent/active', 0);
|
56 |
+
}
|
57 |
+
|
58 |
+
if(!in_array($country, $this->available_transparent_ticket)){
|
59 |
+
$core->setConfigData('payment/mercadopago_transparentticket/active', 0);
|
60 |
+
}
|
61 |
+
|
62 |
+
|
63 |
+
}
|
64 |
+
|
65 |
+
function checkBanner($model_path, $file){
|
66 |
+
//pega o model/file
|
67 |
+
$model = Mage::getModel($model_path . '/' . $file);
|
68 |
+
|
69 |
+
//pega o banner do tipo de checkout
|
70 |
+
$banner = $model->getConfigData('banner_checkout');
|
71 |
+
|
72 |
+
//pega o pais configurado
|
73 |
+
$country = Mage::getStoreConfig('payment/mercadopago_configuration/country');
|
74 |
+
|
75 |
+
if($model_path == "mercadopago_transparentticket"){
|
76 |
+
if($this->banner_ticket[$country] != $banner){
|
77 |
+
$this->setNewBanner($model_path, $country);
|
78 |
+
}
|
79 |
+
}else{
|
80 |
+
if($this->banners_credit_card[$country] != $banner){
|
81 |
+
$this->setNewBanner($model_path, $country);
|
82 |
+
}
|
83 |
+
}
|
84 |
+
|
85 |
+
|
86 |
+
}
|
87 |
+
public function setNewBanner($model, $country){
|
88 |
+
//instacia model do core para atualiza os dados no banco de dados
|
89 |
+
//no model n�o existe fun��o para fazer isso, por esse motivo foi feito assim
|
90 |
+
$core = new Mage_Core_Model_Resource_Setup('core_setup');
|
91 |
+
$core->setConfigData('payment/' . $model . '/banner_checkout', $this->getBannerByCountry($model, $country));
|
92 |
+
}
|
93 |
+
|
94 |
+
public function getBannerByCountry($model, $country){
|
95 |
+
$banner = "";
|
96 |
+
|
97 |
+
//caso seja boleto o banner � diferente
|
98 |
+
if($model == "mercadopago_transparentticket"){
|
99 |
+
$banner = $this->banner_ticket[$country];
|
100 |
+
}else{
|
101 |
+
$banner = $this->banners_credit_card[$country];
|
102 |
+
}
|
103 |
+
|
104 |
+
return $banner;
|
105 |
+
}
|
106 |
+
|
107 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Source/CategoryId.php
ADDED
@@ -0,0 +1,44 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Standard_Model_Source_CategoryId extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
public function toOptionArray (){
|
22 |
+
|
23 |
+
$response = MPRestClient::get("/item_categories");
|
24 |
+
$response = $response['response'];
|
25 |
+
|
26 |
+
$cat = array();
|
27 |
+
$count = 0;
|
28 |
+
foreach($response as $v):
|
29 |
+
//force category others first
|
30 |
+
if($v['id'] == "others"):
|
31 |
+
$cat[0] = array('value' => $v['id'], 'label'=>Mage::helper('adminhtml')->__($v['description']));
|
32 |
+
else:
|
33 |
+
$count++;
|
34 |
+
$cat[$count] = array('value' => $v['id'], 'label'=>Mage::helper('adminhtml')->__($v['description']));
|
35 |
+
endif;
|
36 |
+
|
37 |
+
endforeach;
|
38 |
+
|
39 |
+
//force order by key
|
40 |
+
ksort($cat);
|
41 |
+
return $cat;
|
42 |
+
|
43 |
+
}
|
44 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Source/Country.php
ADDED
@@ -0,0 +1,32 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
class MercadoPago_Standard_Model_Source_Country extends Mage_Payment_Model_Method_Abstract{
|
18 |
+
|
19 |
+
public function toOptionArray (){
|
20 |
+
|
21 |
+
$country = array();
|
22 |
+
$country[] = array('value' => "mla", 'label'=>Mage::helper('adminhtml')->__("Argentina"));
|
23 |
+
$country[] = array('value' => "mlb", 'label'=>Mage::helper('adminhtml')->__("Brasil"));
|
24 |
+
$country[] = array('value' => "mco", 'label'=>Mage::helper('adminhtml')->__("Colombia"));
|
25 |
+
$country[] = array('value' => "mlm", 'label'=>Mage::helper('adminhtml')->__("Mexico"));
|
26 |
+
|
27 |
+
//force order by key
|
28 |
+
ksort($country);
|
29 |
+
return $country;
|
30 |
+
|
31 |
+
}
|
32 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Source/Installments.php
ADDED
@@ -0,0 +1,37 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Standard_Model_Source_Installments extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
public function toOptionArray (){
|
22 |
+
|
23 |
+
$inst = array();
|
24 |
+
$response = MPRestClient::get("/sites/MLB/payment_methods/melicard?marketplace=NONE");
|
25 |
+
$response = $response['response'];
|
26 |
+
|
27 |
+
foreach($response['payer_costs'] as $i){
|
28 |
+
|
29 |
+
$inst[] = array(
|
30 |
+
'value' => $i['installments'],
|
31 |
+
'label'=>Mage::helper('adminhtml')->__($i['installments'] . " Parcela(s)")
|
32 |
+
);
|
33 |
+
}
|
34 |
+
|
35 |
+
return $inst;
|
36 |
+
}
|
37 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Source/PaymentMethods.php
ADDED
@@ -0,0 +1,41 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Standard_Model_Source_PaymentMethods extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
public function toOptionArray (){
|
22 |
+
|
23 |
+
$country = strtoupper(Mage::getStoreConfig('payment/mercadopago_configuration/country'));
|
24 |
+
$methods = array();
|
25 |
+
//adiciona um valor vazio caso n�o queria excluir nada
|
26 |
+
$methods[] = array("value" => "", "label" => "");
|
27 |
+
$response = MPRestClient::get("/sites/" . $country . "/payment_methods");
|
28 |
+
$response = $response['response'];
|
29 |
+
|
30 |
+
foreach($response as $m){
|
31 |
+
if ( $m['id'] != 'account_money' ) {
|
32 |
+
$methods[] = array(
|
33 |
+
'value' => $m['id'],
|
34 |
+
'label'=>Mage::helper('adminhtml')->__($m['name'])
|
35 |
+
);
|
36 |
+
}
|
37 |
+
}
|
38 |
+
|
39 |
+
return $methods;
|
40 |
+
}
|
41 |
+
}
|
app/code/community/MercadoPago/Standard/Model/Source/TypeCheckout.php
ADDED
@@ -0,0 +1,31 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Standard_Model_Source_TypeCheckout extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
public function toOptionArray (){
|
22 |
+
|
23 |
+
$arr = array(
|
24 |
+
array("value"=> "iframe", 'label'=>Mage::helper('adminhtml')->__("Iframe")),
|
25 |
+
array("value"=> "redirect", 'label'=>Mage::helper('adminhtml')->__("Redirect")),
|
26 |
+
array("value"=> "lightbox", 'label'=>Mage::helper('adminhtml')->__("Lightbox"))
|
27 |
+
);
|
28 |
+
|
29 |
+
return $arr;
|
30 |
+
}
|
31 |
+
}
|
app/code/community/MercadoPago/Standard/controllers/NotificationController.php
ADDED
@@ -0,0 +1,190 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
class MercadoPago_Standard_NotificationController extends Mage_Core_Controller_Front_Action{
|
18 |
+
|
19 |
+
protected $_return = null;
|
20 |
+
protected $_order = null;
|
21 |
+
protected $_order_id = null;
|
22 |
+
protected $_mpcartid = null;
|
23 |
+
protected $_sendemail = false;
|
24 |
+
protected $_hash = null;
|
25 |
+
|
26 |
+
public function indexAction(){
|
27 |
+
$params = $this->getRequest()->getParams();
|
28 |
+
if (isset($params['id']) && isset($params['topic']) && $params['topic'] == 'payment'){
|
29 |
+
$model = Mage::getModel('mercadopago_standard/checkout');
|
30 |
+
$response = $model->getPayment($params['id']);
|
31 |
+
|
32 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
33 |
+
$message = "";
|
34 |
+
$status = "";
|
35 |
+
$payment = $response['response']['collection'];
|
36 |
+
|
37 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($payment["external_reference"]);
|
38 |
+
|
39 |
+
//update info de status no pagamento
|
40 |
+
$payment_order = $order->getPayment();
|
41 |
+
$payment_order->setAdditionalInformation('status',$payment['status']);
|
42 |
+
$payment_order->setAdditionalInformation('status_detail',$payment['status_detail']);
|
43 |
+
$payment_order->setAdditionalInformation('payment_id',$payment['id']);
|
44 |
+
|
45 |
+
if($payment_order->getAdditionalInformation('cardholderName') == ""):
|
46 |
+
$payment_order->setAdditionalInformation('cardholderName', $payment['payer']['first_name'] . " " . $payment['payer']['last_name']);
|
47 |
+
endif;
|
48 |
+
|
49 |
+
if($payment_order->getAdditionalInformation('payment_method') == ""):
|
50 |
+
$payment_order->setAdditionalInformation('payment_method', $payment['payment_method_id']);
|
51 |
+
endif;
|
52 |
+
|
53 |
+
if($payment_order->getAdditionalInformation('statement_descriptor') == ""):
|
54 |
+
if(isset($payment['statement_descriptor'])):
|
55 |
+
$payment_order->setAdditionalInformation('statement_descriptor', $payment['statement_descriptor']);
|
56 |
+
endif;
|
57 |
+
endif;
|
58 |
+
|
59 |
+
if($payment_order->getAdditionalInformation('trunc_card') == ""):
|
60 |
+
if(isset($payment['last_four_digits'])):
|
61 |
+
$payment_order->setAdditionalInformation('trunc_card', "XXXXXXXXXXXX" . $payment['last_four_digits']);
|
62 |
+
endif;
|
63 |
+
|
64 |
+
endif;
|
65 |
+
|
66 |
+
$payment_order->save();
|
67 |
+
|
68 |
+
//adiciona informações sobre o comprador na order
|
69 |
+
if ($payment['payer']['first_name'])
|
70 |
+
$order->setCustomerFirstname($payment['payer']['first_name']);
|
71 |
+
if ($payment['payer']['last_name'])
|
72 |
+
$order->setCustomerLastname($payment['payer']['last_name']);
|
73 |
+
if ($payment['payer']['email'])
|
74 |
+
$order->setCustomerEmail($payment['payer']['email']);
|
75 |
+
|
76 |
+
$order->save();
|
77 |
+
|
78 |
+
switch ( $payment['status']) {
|
79 |
+
|
80 |
+
case 'approved':
|
81 |
+
//add status na order
|
82 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment was approved.');
|
83 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_approved');
|
84 |
+
|
85 |
+
//cria a invoice
|
86 |
+
$invoice = $order->prepareInvoice();
|
87 |
+
$invoice->register()->pay();
|
88 |
+
Mage::getModel('core/resource_transaction')
|
89 |
+
->addObject($invoice)
|
90 |
+
->addObject($invoice->getOrder())
|
91 |
+
->save();
|
92 |
+
|
93 |
+
$invoice->sendEmail(true, $message);
|
94 |
+
break;
|
95 |
+
case 'refunded':
|
96 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_refunded');
|
97 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment was refunded.');
|
98 |
+
$order->cancel();
|
99 |
+
break;
|
100 |
+
case 'pending':
|
101 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_process');
|
102 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment is being processed.');
|
103 |
+
break;
|
104 |
+
case 'in_process':
|
105 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_process');
|
106 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment is being processed. Will be approved within 2 business days.');
|
107 |
+
break;
|
108 |
+
case 'in_mediation':
|
109 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_mediation');
|
110 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment is in the process of Dispute, check the graphic account of the MercadoPago for more information.');
|
111 |
+
break;
|
112 |
+
case 'cancelled':
|
113 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_cancelled');
|
114 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment was cancelled.');
|
115 |
+
$order->cancel();
|
116 |
+
break;
|
117 |
+
case 'rejected':
|
118 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_rejected');
|
119 |
+
$message = Mage::helper('mercadopago_transparent')->__('Automatic notification of the MercadoPago: The payment was rejected.');
|
120 |
+
break;
|
121 |
+
default:
|
122 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_process');
|
123 |
+
$message = '';
|
124 |
+
}
|
125 |
+
|
126 |
+
//adiciona informações do pagamento
|
127 |
+
$message .= Mage::helper('mercadopago_transparent')->__('<br/> Payment id: %s', $payment['id']);
|
128 |
+
$message .= Mage::helper('mercadopago_transparent')->__('<br/> Status: %s', $payment['status']);
|
129 |
+
$message .= Mage::helper('mercadopago_transparent')->__('<br/> Status Detail: %s', $payment['status_detail']);
|
130 |
+
|
131 |
+
$order->addStatusToHistory($status,$message, true);
|
132 |
+
$order->sendOrderUpdateEmail(true, $message);
|
133 |
+
|
134 |
+
$order->save();
|
135 |
+
echo $message;
|
136 |
+
else:
|
137 |
+
//caso de algum erro na consulta da ipn
|
138 |
+
header(' ', true, 404);
|
139 |
+
exit;
|
140 |
+
endif;
|
141 |
+
|
142 |
+
}elseif(isset($params['topic']) && $params['topic'] == 'merchant_order'){
|
143 |
+
|
144 |
+
$model = Mage::getModel('mercadopago_transparent/transparent');
|
145 |
+
$response = $model->getMerchantOrder($params['id']);
|
146 |
+
|
147 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
148 |
+
$message = "";
|
149 |
+
$status = "";
|
150 |
+
$merchant_order = $response['response'];
|
151 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($merchant_order["external_reference"]);
|
152 |
+
|
153 |
+
switch ( $merchant_order['status']) {
|
154 |
+
|
155 |
+
case 'opened':
|
156 |
+
$message = 'Payment flow started. The order still dont have payments recorded.';
|
157 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_process');
|
158 |
+
|
159 |
+
$message .= "<br /> Merchant Order: " . $merchant_order['id'];
|
160 |
+
$message .= "<br /> Status: " . $merchant_order['status'];
|
161 |
+
|
162 |
+
$order->addStatusToHistory($status,$message);
|
163 |
+
$order->save();
|
164 |
+
echo $message;
|
165 |
+
break;
|
166 |
+
|
167 |
+
/*
|
168 |
+
case 'closed':
|
169 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_refunded');
|
170 |
+
$message = 'A payment was created and it was associated to the order.';
|
171 |
+
break;
|
172 |
+
case 'expired':
|
173 |
+
$status = Mage::getStoreConfig('payment/mercadopago_configuration/order_status_in_process');
|
174 |
+
$message = 'Order cancelled by the seller.';
|
175 |
+
break;
|
176 |
+
default:
|
177 |
+
|
178 |
+
$message = "";
|
179 |
+
*/
|
180 |
+
}
|
181 |
+
|
182 |
+
else:
|
183 |
+
//caso de algum erro na consulta da ipn
|
184 |
+
header(' ', true, 404);
|
185 |
+
exit;
|
186 |
+
endif;
|
187 |
+
}
|
188 |
+
|
189 |
+
}
|
190 |
+
}
|
app/code/community/MercadoPago/Standard/controllers/PayController.php
ADDED
@@ -0,0 +1,64 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
class MercadoPago_Standard_PayController extends Mage_Core_Controller_Front_Action{
|
18 |
+
|
19 |
+
// /mercadopago_strandard/pay
|
20 |
+
public function indexAction(){
|
21 |
+
$init_point = "";
|
22 |
+
|
23 |
+
|
24 |
+
//chama model para fazer o post do pagamento
|
25 |
+
$response = Mage::getModel('mercadopago_standard/checkout')->postPago();
|
26 |
+
|
27 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
28 |
+
$payment = $response['response'];
|
29 |
+
$init_point = $payment['init_point'];
|
30 |
+
|
31 |
+
endif;
|
32 |
+
|
33 |
+
$this->loadLayout();
|
34 |
+
|
35 |
+
//cria um block e adiciona uma view
|
36 |
+
$block = $this->getLayout()->createBlock(
|
37 |
+
'Mage_Core_Block_Template',
|
38 |
+
'mercadopago_standard/pay',
|
39 |
+
array('template' => 'mercadopago/standard/pay.phtml')
|
40 |
+
);
|
41 |
+
|
42 |
+
//envia as informações para view
|
43 |
+
$block->assign(
|
44 |
+
array(
|
45 |
+
"init_point" => $init_point,
|
46 |
+
"type_checkout" => Mage::getModel('mercadopago_standard/checkout')->getConfigData('type_checkout'),
|
47 |
+
"iframe_width" => Mage::getModel('mercadopago_standard/checkout')->getConfigData('iframe_width'),
|
48 |
+
"iframe_height" => Mage::getModel('mercadopago_standard/checkout')->getConfigData('iframe_height'),
|
49 |
+
"banner_checkout" => Mage::getModel('mercadopago_standard/checkout')->getConfigData('banner_checkout')
|
50 |
+
)
|
51 |
+
);
|
52 |
+
|
53 |
+
//insere o block
|
54 |
+
$this->getLayout()->getBlock('content')->append($block);
|
55 |
+
$this->_initLayoutMessages('core/session');
|
56 |
+
|
57 |
+
//adiciona uma clean page
|
58 |
+
$root = $this->getLayout()->getBlock('root');
|
59 |
+
$root->setTemplate("mercadopago/clean_page.phtml");
|
60 |
+
|
61 |
+
$this->renderLayout();
|
62 |
+
}
|
63 |
+
|
64 |
+
}
|
app/code/community/MercadoPago/Standard/etc/config.xml
ADDED
@@ -0,0 +1,120 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
<config>
|
19 |
+
<modules>
|
20 |
+
<MercadoPago_Standard>
|
21 |
+
<version>2.0.0</version>
|
22 |
+
</MercadoPago_Standard>
|
23 |
+
</modules>
|
24 |
+
|
25 |
+
<global>
|
26 |
+
<models>
|
27 |
+
<mercadopago_standard>
|
28 |
+
<class>MercadoPago_Standard_Model</class>
|
29 |
+
</mercadopago_standard>
|
30 |
+
</models>
|
31 |
+
<blocks>
|
32 |
+
<mercadopago_standard>
|
33 |
+
<class>MercadoPago_Standard_Block</class>
|
34 |
+
</mercadopago_standard>
|
35 |
+
</blocks>
|
36 |
+
<helpers>
|
37 |
+
<mercadopago_standard>
|
38 |
+
<class>MercadoPago_Standard_Helper</class>
|
39 |
+
</mercadopago_standard>
|
40 |
+
</helpers>
|
41 |
+
|
42 |
+
<events>
|
43 |
+
<admin_system_config_changed_section_payment>
|
44 |
+
<observers>
|
45 |
+
<observer>
|
46 |
+
<class>MercadoPago_Standard_Model_Observer</class>
|
47 |
+
<method>checkAndValidData</method>
|
48 |
+
</observer>
|
49 |
+
</observers>
|
50 |
+
</admin_system_config_changed_section_payment>
|
51 |
+
</events>
|
52 |
+
</global>
|
53 |
+
|
54 |
+
|
55 |
+
<frontend>
|
56 |
+
<routers>
|
57 |
+
<mercadopago_standard>
|
58 |
+
<use>standard</use>
|
59 |
+
<args>
|
60 |
+
<module>MercadoPago_Standard</module>
|
61 |
+
<frontName>mercadopago_standard</frontName>
|
62 |
+
</args>
|
63 |
+
</mercadopago_standard>
|
64 |
+
</routers>
|
65 |
+
<translate>
|
66 |
+
<modules>
|
67 |
+
<mercadopago>
|
68 |
+
<files>
|
69 |
+
<default>mercadopago.csv</default>
|
70 |
+
</files>
|
71 |
+
</mercadopago>
|
72 |
+
</modules>
|
73 |
+
</translate>
|
74 |
+
</frontend>
|
75 |
+
|
76 |
+
|
77 |
+
<adminhtml>
|
78 |
+
<translate>
|
79 |
+
<modules>
|
80 |
+
<translations>
|
81 |
+
<files>
|
82 |
+
<default>mercadopago.csv</default>
|
83 |
+
</files>
|
84 |
+
</translations>
|
85 |
+
</modules>
|
86 |
+
</translate>
|
87 |
+
</adminhtml>
|
88 |
+
|
89 |
+
|
90 |
+
<default>
|
91 |
+
<payment>
|
92 |
+
|
93 |
+
<mercadopago_configuration>
|
94 |
+
<country>mlb</country>
|
95 |
+
<order_status_approved>processing</order_status_approved>
|
96 |
+
<order_status_refunded>pending</order_status_refunded>
|
97 |
+
<order_status_in_process>pending</order_status_in_process>
|
98 |
+
<order_status_in_mediation>pending</order_status_in_mediation>
|
99 |
+
<order_status_rejected>pending</order_status_rejected>
|
100 |
+
<order_status_cancelled>pending</order_status_cancelled>
|
101 |
+
</mercadopago_configuration>
|
102 |
+
|
103 |
+
<mercadopago_standard>
|
104 |
+
<active>1</active>
|
105 |
+
<model>MercadoPago_Standard_Model_Checkout</model>
|
106 |
+
<!-- nome do modulo na exibição para o comprador -->
|
107 |
+
<title>MercadoPago</title>
|
108 |
+
<allowspecific>0</allowspecific>
|
109 |
+
<banner_checkout>http://imgmp.mlstatic.com/org-img/MLB/MP/BANNERS/tipo2_468X60.jpg</banner_checkout>
|
110 |
+
<sort_order>-1</sort_order>
|
111 |
+
<installments>24</installments>
|
112 |
+
<type_checkout>iframe</type_checkout>
|
113 |
+
<auto_return>1</auto_return>
|
114 |
+
<iframe_width>900</iframe_width>
|
115 |
+
<iframe_height>600</iframe_height>
|
116 |
+
</mercadopago_standard>
|
117 |
+
</payment>
|
118 |
+
</default>
|
119 |
+
|
120 |
+
</config>
|
app/code/community/MercadoPago/Standard/etc/system.xml
ADDED
@@ -0,0 +1,256 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<sections>
|
21 |
+
<payment translate="label">
|
22 |
+
<groups>
|
23 |
+
|
24 |
+
<mercadopago_configuration>
|
25 |
+
<label>MercadoPago - Configuration</label>
|
26 |
+
<sort_order>99</sort_order>
|
27 |
+
<show_in_default>1</show_in_default>
|
28 |
+
<show_in_website>1</show_in_website>
|
29 |
+
<show_in_store>0</show_in_store>
|
30 |
+
<fields>
|
31 |
+
|
32 |
+
<client_id translate="label">
|
33 |
+
<label>Client Id</label>
|
34 |
+
<frontend_type>text</frontend_type>
|
35 |
+
<sort_order>3</sort_order>
|
36 |
+
<show_in_default>1</show_in_default>
|
37 |
+
<show_in_website>1</show_in_website>
|
38 |
+
<show_in_store>0</show_in_store>
|
39 |
+
</client_id>
|
40 |
+
|
41 |
+
<client_secret translate="label">
|
42 |
+
<label>Client Secret</label>
|
43 |
+
<frontend_type>text</frontend_type>
|
44 |
+
<sort_order>4</sort_order>
|
45 |
+
<show_in_default>1</show_in_default>
|
46 |
+
<show_in_website>1</show_in_website>
|
47 |
+
<show_in_store>0</show_in_store>
|
48 |
+
</client_secret>
|
49 |
+
|
50 |
+
<country translate="label">
|
51 |
+
<label>Country</label>
|
52 |
+
<frontend_type>select</frontend_type>
|
53 |
+
<source_model>MercadoPago_Standard_Model_Source_Country</source_model>
|
54 |
+
<sort_order>6</sort_order>
|
55 |
+
<show_in_default>1</show_in_default>
|
56 |
+
<show_in_website>1</show_in_website>
|
57 |
+
<show_in_store>1</show_in_store>
|
58 |
+
</country>
|
59 |
+
|
60 |
+
<category_id translate="label">
|
61 |
+
<label>Category of your store</label>
|
62 |
+
<frontend_type>select</frontend_type>
|
63 |
+
<source_model>MercadoPago_Standard_Model_Source_CategoryId</source_model>
|
64 |
+
<sort_order>7</sort_order>
|
65 |
+
<show_in_default>1</show_in_default>
|
66 |
+
<show_in_website>1</show_in_website>
|
67 |
+
<show_in_store>0</show_in_store>
|
68 |
+
</category_id>
|
69 |
+
|
70 |
+
<order_status_approved translate="label">
|
71 |
+
<label>Choose the status of approved orders</label>
|
72 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
73 |
+
<frontend_type>select</frontend_type>
|
74 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
75 |
+
<sort_order>8</sort_order>
|
76 |
+
<show_in_default>1</show_in_default>
|
77 |
+
<show_in_website>1</show_in_website>
|
78 |
+
<show_in_store>1</show_in_store>
|
79 |
+
</order_status_approved>
|
80 |
+
|
81 |
+
<order_status_refunded translate="label">
|
82 |
+
<label>Choose the status of refunded orders</label>
|
83 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
84 |
+
<frontend_type>select</frontend_type>
|
85 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
86 |
+
<sort_order>9</sort_order>
|
87 |
+
<show_in_default>1</show_in_default>
|
88 |
+
<show_in_website>1</show_in_website>
|
89 |
+
<show_in_store>1</show_in_store>
|
90 |
+
</order_status_refunded>
|
91 |
+
|
92 |
+
<order_status_in_process translate="label">
|
93 |
+
<label>Choose the status when payment is pending</label>
|
94 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
95 |
+
<frontend_type>select</frontend_type>
|
96 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
97 |
+
<sort_order>9</sort_order>
|
98 |
+
<show_in_default>1</show_in_default>
|
99 |
+
<show_in_website>1</show_in_website>
|
100 |
+
<show_in_store>1</show_in_store>
|
101 |
+
</order_status_in_process>
|
102 |
+
|
103 |
+
<order_status_in_mediation translate="label">
|
104 |
+
<label>Choose the status when client open a mediation</label>
|
105 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
106 |
+
<frontend_type>select</frontend_type>
|
107 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
108 |
+
<sort_order>10</sort_order>
|
109 |
+
<show_in_default>1</show_in_default>
|
110 |
+
<show_in_website>1</show_in_website>
|
111 |
+
<show_in_store>1</show_in_store>
|
112 |
+
</order_status_in_mediation>
|
113 |
+
|
114 |
+
<order_status_rejected translate="label">
|
115 |
+
<label>Choose the status when payment was reject</label>
|
116 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
117 |
+
<frontend_type>select</frontend_type>
|
118 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
119 |
+
<sort_order>11</sort_order>
|
120 |
+
<show_in_default>1</show_in_default>
|
121 |
+
<show_in_website>1</show_in_website>
|
122 |
+
<show_in_store>1</show_in_store>
|
123 |
+
</order_status_rejected>
|
124 |
+
|
125 |
+
<order_status_cancelled translate="label">
|
126 |
+
<label>Choose the status when payment was canceled</label>
|
127 |
+
<comment>To manage the status available go to System > Order Statuses</comment>
|
128 |
+
<frontend_type>select</frontend_type>
|
129 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
130 |
+
<sort_order>12</sort_order>
|
131 |
+
<show_in_default>1</show_in_default>
|
132 |
+
<show_in_website>1</show_in_website>
|
133 |
+
<show_in_store>1</show_in_store>
|
134 |
+
</order_status_cancelled>
|
135 |
+
|
136 |
+
</fields>
|
137 |
+
</mercadopago_configuration>
|
138 |
+
|
139 |
+
|
140 |
+
<mercadopago_standard module="mercadopago_standard">
|
141 |
+
<label>MercadoPago Standard - Credit Card, Ticket and Account Money</label>
|
142 |
+
<sort_order>102</sort_order>
|
143 |
+
<show_in_default>1</show_in_default>
|
144 |
+
<show_in_website>1</show_in_website>
|
145 |
+
<show_in_store>0</show_in_store>
|
146 |
+
<fields>
|
147 |
+
<active translate="label">
|
148 |
+
<label>Enabled</label>
|
149 |
+
<frontend_type>select</frontend_type>
|
150 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
151 |
+
<sort_order>1</sort_order>
|
152 |
+
<show_in_default>1</show_in_default>
|
153 |
+
<show_in_website>1</show_in_website>
|
154 |
+
<show_in_store>0</show_in_store>
|
155 |
+
<comment>For the operation of the Checkout Standard is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'</comment>
|
156 |
+
</active>
|
157 |
+
|
158 |
+
<title translate="label">
|
159 |
+
<label>Payment Title</label>
|
160 |
+
<frontend_type>text</frontend_type>
|
161 |
+
<sort_order>2</sort_order>
|
162 |
+
<show_in_default>1</show_in_default>
|
163 |
+
<show_in_website>1</show_in_website>
|
164 |
+
<show_in_store>0</show_in_store>
|
165 |
+
</title>
|
166 |
+
|
167 |
+
|
168 |
+
<banner_checkout translate="label">
|
169 |
+
<label>Banner Checkout</label>
|
170 |
+
<frontend_type>text</frontend_type>
|
171 |
+
<sort_order>3</sort_order>
|
172 |
+
<show_in_default>1</show_in_default>
|
173 |
+
<show_in_website>1</show_in_website>
|
174 |
+
<show_in_store>0</show_in_store>
|
175 |
+
</banner_checkout>
|
176 |
+
|
177 |
+
<sort_order translate="label">
|
178 |
+
<label>Checkout Position</label>
|
179 |
+
<frontend_type>text</frontend_type>
|
180 |
+
<sort_order>4</sort_order>
|
181 |
+
<show_in_default>1</show_in_default>
|
182 |
+
<show_in_website>1</show_in_website>
|
183 |
+
<show_in_store>0</show_in_store>
|
184 |
+
<frontend_class>validate-number</frontend_class>
|
185 |
+
</sort_order>
|
186 |
+
|
187 |
+
<type_checkout>
|
188 |
+
<label>Type Checkout</label>
|
189 |
+
<frontend_type>select</frontend_type>
|
190 |
+
<source_model>MercadoPago_Standard_Model_Source_TypeCheckout</source_model>
|
191 |
+
<sort_order>5</sort_order>
|
192 |
+
<show_in_default>1</show_in_default>
|
193 |
+
<show_in_website>1</show_in_website>
|
194 |
+
<show_in_store>1</show_in_store>
|
195 |
+
</type_checkout>
|
196 |
+
|
197 |
+
<auto_return translate="label">
|
198 |
+
<label>Auto Redirect</label>
|
199 |
+
<frontend_type>select</frontend_type>
|
200 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
201 |
+
<sort_order>6</sort_order>
|
202 |
+
<show_in_default>1</show_in_default>
|
203 |
+
<show_in_website>1</show_in_website>
|
204 |
+
<show_in_store>0</show_in_store>
|
205 |
+
<comment>Auto-redirect the buyer when finishing the payment.</comment>
|
206 |
+
</auto_return>
|
207 |
+
|
208 |
+
<excluded_payment_methods translate="label">
|
209 |
+
<label>Exclude Payment Methods</label>
|
210 |
+
<comment>Select payment methods not accepted</comment>
|
211 |
+
<frontend_type>multiselect</frontend_type>
|
212 |
+
<source_model>MercadoPago_Standard_Model_Source_PaymentMethods</source_model>
|
213 |
+
<sort_order>8</sort_order>
|
214 |
+
<show_in_default>1</show_in_default>
|
215 |
+
<show_in_website>1</show_in_website>
|
216 |
+
<show_in_store>1</show_in_store>
|
217 |
+
<can_be_empty>1</can_be_empty>
|
218 |
+
</excluded_payment_methods>
|
219 |
+
|
220 |
+
<installments>
|
221 |
+
<label>Maximum number of accepted installments</label>
|
222 |
+
<frontend_type>select</frontend_type>
|
223 |
+
<source_model>MercadoPago_Standard_Model_Source_Installments</source_model>
|
224 |
+
<sort_order>9</sort_order>
|
225 |
+
<show_in_default>1</show_in_default>
|
226 |
+
<show_in_website>1</show_in_website>
|
227 |
+
<show_in_store>1</show_in_store>
|
228 |
+
</installments>
|
229 |
+
|
230 |
+
|
231 |
+
<iframe_width translate="label">
|
232 |
+
<label>Width Checkout Iframe</label>
|
233 |
+
<frontend_type>text</frontend_type>
|
234 |
+
<sort_order>10</sort_order>
|
235 |
+
<show_in_default>1</show_in_default>
|
236 |
+
<show_in_website>1</show_in_website>
|
237 |
+
<show_in_store>0</show_in_store>
|
238 |
+
<frontend_class>validate-number</frontend_class>
|
239 |
+
</iframe_width>
|
240 |
+
|
241 |
+
<iframe_height translate="label">
|
242 |
+
<label>Height Checkout Iframe</label>
|
243 |
+
<frontend_type>text</frontend_type>
|
244 |
+
<sort_order>11</sort_order>
|
245 |
+
<show_in_default>1</show_in_default>
|
246 |
+
<show_in_website>1</show_in_website>
|
247 |
+
<show_in_store>0</show_in_store>
|
248 |
+
<frontend_class>validate-number</frontend_class>
|
249 |
+
</iframe_height>
|
250 |
+
|
251 |
+
</fields>
|
252 |
+
</mercadopago_standard>
|
253 |
+
</groups>
|
254 |
+
</payment>
|
255 |
+
</sections>
|
256 |
+
</config>
|
app/code/community/MercadoPago/Transparent/.DS_Store
ADDED
Binary file
|
app/code/community/MercadoPago/Transparent/Block/.DS_Store
ADDED
Binary file
|
app/code/community/MercadoPago/Transparent/Block/Form.php
ADDED
@@ -0,0 +1,82 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_Transparent_Block_Form extends Mage_Payment_Block_Form_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
parent::_construct();
|
25 |
+
|
26 |
+
$this->setTemplate('mercadopago/transparent/form.phtml');
|
27 |
+
|
28 |
+
}
|
29 |
+
|
30 |
+
protected function _prepareLayout(){
|
31 |
+
|
32 |
+
//pega public key para settar no aquivo mercadopago.js
|
33 |
+
$model = Mage::getModel('mercadopago_transparent/transparent');
|
34 |
+
$public_key = $model->getConfigData('public_key');
|
35 |
+
|
36 |
+
//init js no header
|
37 |
+
$block = Mage::app()->getLayout()->createBlock('core/text', 'js_mercadopago');
|
38 |
+
$block->setText(
|
39 |
+
sprintf(
|
40 |
+
'
|
41 |
+
<script type="text/javascript">var PublicKeyMercadoPagoTransparent = "' . $public_key .'"; </script>
|
42 |
+
<script type="text/javascript" src="%s"></script>',
|
43 |
+
Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_JS, true) . 'mercadopago/mercadopago.js'
|
44 |
+
)
|
45 |
+
);
|
46 |
+
|
47 |
+
$head = Mage::app()->getLayout()->getBlock('after_body_start');
|
48 |
+
|
49 |
+
if($head){
|
50 |
+
$head->append($block);
|
51 |
+
}
|
52 |
+
|
53 |
+
return parent::_prepareLayout();
|
54 |
+
}
|
55 |
+
|
56 |
+
/*
|
57 |
+
*
|
58 |
+
* Fun��o especifica para mexico
|
59 |
+
*
|
60 |
+
*/
|
61 |
+
function getCardsPaymentMethods(){
|
62 |
+
$payment_methods = Mage::getModel('mercadopago_transparent/transparent')->getPaymentMethods();
|
63 |
+
$payment_methods_types = array("credit_card", "debit_card", "prepaid_card");
|
64 |
+
$types = array();
|
65 |
+
|
66 |
+
//percorre todos os payments methods
|
67 |
+
foreach($payment_methods['response'] as $pm){
|
68 |
+
|
69 |
+
//filtra por tickets
|
70 |
+
if(in_array($pm['payment_type_id'], $payment_methods_types)){
|
71 |
+
$types[] = $pm;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
return $types;
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
|
80 |
+
|
81 |
+
|
82 |
+
?>
|
app/code/community/MercadoPago/Transparent/Block/Info.php
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_Transparent_Block_Info extends Mage_Payment_Block_Info_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
|
25 |
+
parent::_construct();
|
26 |
+
$this->setTemplate('mercadopago/transparent/info.phtml');
|
27 |
+
$this->setModuleName('Mage_Payment');
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function getOrder() {
|
32 |
+
|
33 |
+
return $this->getInfo();
|
34 |
+
|
35 |
+
}
|
36 |
+
}
|
app/code/community/MercadoPago/Transparent/Block/Success.php
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_Transparent_Block_Success extends Mage_Core_Block_Template{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
parent::_construct();
|
23 |
+
$this->setTemplate('mercadopago/transparent/success.phtml');
|
24 |
+
|
25 |
+
return $this->toHtml();
|
26 |
+
}
|
27 |
+
|
28 |
+
|
29 |
+
public function getOrder() {
|
30 |
+
|
31 |
+
$orderIncrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
|
32 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderIncrementId);
|
33 |
+
|
34 |
+
return $order;
|
35 |
+
}
|
36 |
+
}
|
app/code/community/MercadoPago/Transparent/Helper/Data.php
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
?>
|
17 |
+
<?php
|
18 |
+
|
19 |
+
|
20 |
+
class MercadoPago_Transparent_Helper_Data extends Mage_Payment_Helper_Data{
|
21 |
+
|
22 |
+
}
|
app/code/community/MercadoPago/Transparent/Model/.DS_Store
ADDED
Binary file
|
app/code/community/MercadoPago/Transparent/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,14 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
* To change this template, choose Tools | Templates
|
5 |
+
* and open the template in the editor.
|
6 |
+
*/
|
7 |
+
|
8 |
+
class MercadoPago_Transparent_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup {
|
9 |
+
|
10 |
+
}
|
11 |
+
|
12 |
+
|
13 |
+
|
14 |
+
?>
|
app/code/community/MercadoPago/Transparent/Model/Source/CategoryId.php
ADDED
@@ -0,0 +1,44 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Transparent_Model_Source_CategoryId extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
public function toOptionArray (){
|
22 |
+
|
23 |
+
$response = MPRestClient::get("/item_categories");
|
24 |
+
$response = $response['response'];
|
25 |
+
|
26 |
+
$cat = array();
|
27 |
+
$count = 0;
|
28 |
+
foreach($response as $v):
|
29 |
+
//force category others first
|
30 |
+
if($v['id'] == "others"):
|
31 |
+
$cat[0] = array('value' => $v['id'], 'label'=>Mage::helper('adminhtml')->__($v['description']));
|
32 |
+
else:
|
33 |
+
$count++;
|
34 |
+
$cat[$count] = array('value' => $v['id'], 'label'=>Mage::helper('adminhtml')->__($v['description']));
|
35 |
+
endif;
|
36 |
+
|
37 |
+
endforeach;
|
38 |
+
|
39 |
+
//force order by key
|
40 |
+
ksort($cat);
|
41 |
+
return $cat;
|
42 |
+
|
43 |
+
}
|
44 |
+
}
|
app/code/community/MercadoPago/Transparent/Model/Transparent.php
ADDED
@@ -0,0 +1,393 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_Transparent_Model_Transparent extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
//configura o block do formulario e de informações sobre o pagamento
|
22 |
+
protected $_formBlockType = 'mercadopago_transparent/form';
|
23 |
+
protected $_infoBlockType = 'mercadopago_transparent/info';
|
24 |
+
|
25 |
+
protected $_code = 'mercadopago_transparent';
|
26 |
+
|
27 |
+
protected $_canSaveCc = false;
|
28 |
+
protected $_isGateway = true;
|
29 |
+
protected $_canAuthorize = true;
|
30 |
+
protected $_canCapture = true;
|
31 |
+
protected $_canVoid = true;
|
32 |
+
protected $_canCancelInvoice = true;
|
33 |
+
protected $_isInitializeNeeded = true;
|
34 |
+
protected $_canFetchTransactionInfo = true;
|
35 |
+
protected $_canCreateBillingAgreement = true;
|
36 |
+
protected $_canReviewPayment = true;
|
37 |
+
|
38 |
+
public function initialize($paymentAction, $stateObject) {
|
39 |
+
|
40 |
+
//verifica se o pagamento não é boleto, caso seja não tem card_token_id
|
41 |
+
if($this->getInfoInstance()->getAdditionalInformation('payment_type_id') != "ticket" && $this->getInfoInstance()->getAdditionalInformation('card_token_id') == ""):
|
42 |
+
Mage::throwException(Mage::helper('mercadopago_transparent')->__('Verify the form data or wait until the validation of the payment data'));
|
43 |
+
return false;
|
44 |
+
endif;
|
45 |
+
|
46 |
+
|
47 |
+
//continua o processo de pagamento
|
48 |
+
$response = $this->postPago();
|
49 |
+
|
50 |
+
if($response !== false):
|
51 |
+
|
52 |
+
$payment = $response['response'];
|
53 |
+
|
54 |
+
//set order_id
|
55 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($payment['external_reference']);
|
56 |
+
|
57 |
+
//set status
|
58 |
+
$this->getInfoInstance()->setAdditionalInformation('status', $payment['status']);
|
59 |
+
$this->getInfoInstance()->setAdditionalInformation('status_detail', $payment['status_detail']);
|
60 |
+
|
61 |
+
return true;
|
62 |
+
endif;
|
63 |
+
|
64 |
+
return false;
|
65 |
+
}
|
66 |
+
|
67 |
+
public function assignData($data){
|
68 |
+
|
69 |
+
// route /checkout/onepage/savePayment
|
70 |
+
if(!($data instanceof Varien_Object)){
|
71 |
+
$data = new Varien_Object($data);
|
72 |
+
}
|
73 |
+
|
74 |
+
//get array info
|
75 |
+
$info_form = $data->getData();
|
76 |
+
|
77 |
+
$info = $this->getInfoInstance();
|
78 |
+
$info->setAdditionalInformation('payment_type_id', "credit_card");
|
79 |
+
$info->setAdditionalInformation('card_token_id', $info_form['card_token_id']);
|
80 |
+
$info->setAdditionalInformation('payment_method', $info_form['payment_method']);
|
81 |
+
$info->setAdditionalInformation('installments', $info_form['installments']);
|
82 |
+
$info->setAdditionalInformation('doc_number', $info_form['doc_number']);
|
83 |
+
|
84 |
+
//caso tenha banco, adiciona nas informações adicionais
|
85 |
+
if(isset($info_form['issuers'])){
|
86 |
+
$info->setAdditionalInformation('issuers', $info_form['issuers']);
|
87 |
+
}
|
88 |
+
|
89 |
+
if($info_form['card_token_id'] != ""):
|
90 |
+
$info->setAdditionalInformation('expiration_date', $info_form['cardExpirationMonth'] . "/" . $info_form['cardExpirationYear']);
|
91 |
+
$info->setAdditionalInformation('cardholderName', $info_form['cardholderName']);
|
92 |
+
$info->setAdditionalInformation('trunc_card', $info_form['trunc_card']);
|
93 |
+
endif;
|
94 |
+
|
95 |
+
|
96 |
+
//caso seja não tenha card_token_id
|
97 |
+
if($info_form['card_token_id'] == ""):
|
98 |
+
Mage::throwException(Mage::helper('mercadopago_transparent')->__('Verify the form data or wait until the validation of the payment data'));
|
99 |
+
return false;
|
100 |
+
endif;
|
101 |
+
|
102 |
+
|
103 |
+
return $this;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* @return Mage_Checkout_Model_Session
|
108 |
+
*/
|
109 |
+
protected function _getCheckout() {
|
110 |
+
return Mage::getSingleton('checkout/session');
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* Get admin checkout session namespace
|
115 |
+
*
|
116 |
+
* @return Mage_Adminhtml_Model_Session_Quote
|
117 |
+
*/
|
118 |
+
protected function _getAdminCheckout() {
|
119 |
+
return Mage::getSingleton('adminhtml/session_quote');
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Retrieves Quote
|
124 |
+
*
|
125 |
+
* @param integer $quoteId
|
126 |
+
* @return Mage_Sales_Model_Quote
|
127 |
+
*/
|
128 |
+
protected function _getQuote($quoteId = null) {
|
129 |
+
if (!empty($quoteId)) {
|
130 |
+
return Mage::getModel('sales/quote')->load($quoteId);
|
131 |
+
}
|
132 |
+
else {
|
133 |
+
if(Mage::app()->getStore()->isAdmin()) {
|
134 |
+
return $this->_getAdminCheckout()->getQuote();
|
135 |
+
} else {
|
136 |
+
return $this->_getCheckout()->getQuote();
|
137 |
+
}
|
138 |
+
}
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* Retrieves Order
|
143 |
+
*
|
144 |
+
* @param integer $incrementId
|
145 |
+
* @return Mage_Sales_Model_Order
|
146 |
+
*/
|
147 |
+
protected function _getOrder($incrementId) {
|
148 |
+
return Mage::getModel('sales/order')->loadByIncrementId($incrementId);
|
149 |
+
}
|
150 |
+
|
151 |
+
|
152 |
+
|
153 |
+
public function getDiscount(){
|
154 |
+
$discount = 0;
|
155 |
+
$totals = Mage::getSingleton('checkout/session')->getQuote()->getTotals();
|
156 |
+
|
157 |
+
if(isset($totals['discount']) && $totals['discount']->getValue()) {
|
158 |
+
$discount = $totals['discount']->getValue();
|
159 |
+
}
|
160 |
+
|
161 |
+
return $discount;
|
162 |
+
}
|
163 |
+
|
164 |
+
public function postPago(){
|
165 |
+
|
166 |
+
//seta sdk php mercadopago
|
167 |
+
$client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
168 |
+
$client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
169 |
+
|
170 |
+
$mp = new MP($client_id, $client_secret);
|
171 |
+
|
172 |
+
//monta a preferencia
|
173 |
+
$pref = $this->makePreference();
|
174 |
+
|
175 |
+
//faz o post do pagamento
|
176 |
+
$response = $mp->create_custon_payment($pref);
|
177 |
+
|
178 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
179 |
+
return $response;
|
180 |
+
else:
|
181 |
+
$e = "";
|
182 |
+
foreach($response['response']['cause'] as $error):
|
183 |
+
switch ($error['code']) {
|
184 |
+
case "106":
|
185 |
+
$e .= Mage::helper('mercadopago_transparent')->__('You can not make payments to users in other countries.');
|
186 |
+
break;
|
187 |
+
|
188 |
+
case "109":
|
189 |
+
$e .= Mage::helper('mercadopago_transparent')->__('Payment Method selected does not process payments in installments selected. Choose another card or another payment method.');
|
190 |
+
break;
|
191 |
+
|
192 |
+
case "126":
|
193 |
+
$e .= Mage::helper('mercadopago_transparent')->__('We could not process your payment. Error code: 126.');
|
194 |
+
break;
|
195 |
+
|
196 |
+
case "129":
|
197 |
+
$e .= Mage::helper('mercadopago_transparent')->__('Payment Method selected does not process payments for the selected amount. Choose another card or another payment method.');
|
198 |
+
break;
|
199 |
+
|
200 |
+
case "145":
|
201 |
+
$e .= Mage::helper('mercadopago_transparent')->__('We could not process your payment. Error code: 145.');
|
202 |
+
break;
|
203 |
+
|
204 |
+
case "150":
|
205 |
+
$e .= Mage::helper('mercadopago_transparent')->__('You can not make payments. Error code: 150.');
|
206 |
+
break;
|
207 |
+
|
208 |
+
case "151":
|
209 |
+
$e .= Mage::helper('mercadopago_transparent')->__('You can not make payments.');
|
210 |
+
break;
|
211 |
+
|
212 |
+
case "160":
|
213 |
+
$e .= Mage::helper('mercadopago_transparent')->__('We could not process your payment. Error code: 160.');
|
214 |
+
break;
|
215 |
+
|
216 |
+
case "204":
|
217 |
+
$e .= Mage::helper('mercadopago_transparent')->__('Payment Method selected is not available at this time. Choose another card or another payment method.');
|
218 |
+
break;
|
219 |
+
|
220 |
+
case "801":
|
221 |
+
$e .= Mage::helper('mercadopago_transparent')->__('You made a similar payment moments ago. Try again in a few minutes.');
|
222 |
+
break;
|
223 |
+
|
224 |
+
default:
|
225 |
+
$e .= Mage::helper('mercadopago_transparent')->__("We could not process your payment. %s", $this->htmlEscape(json_encode($error)));
|
226 |
+
break;
|
227 |
+
}
|
228 |
+
|
229 |
+
endforeach;
|
230 |
+
|
231 |
+
Mage::throwException($e);
|
232 |
+
return false;
|
233 |
+
endif;
|
234 |
+
|
235 |
+
}
|
236 |
+
|
237 |
+
function makePreference(){
|
238 |
+
|
239 |
+
$quote = $this->_getQuote();
|
240 |
+
$orderId = $quote->getReservedOrderId();
|
241 |
+
$order = $this->_getOrder($orderId);
|
242 |
+
|
243 |
+
|
244 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
245 |
+
$model = Mage::getModel('catalog/product');
|
246 |
+
|
247 |
+
|
248 |
+
//pega payment dentro da order para pegar as informacoes adicionadas pela funcao assignData()
|
249 |
+
$payment = $order->getPayment();
|
250 |
+
|
251 |
+
//pega valor total da compra
|
252 |
+
$item_price = $order->getBaseGrandTotal();
|
253 |
+
if (!$item_price) {
|
254 |
+
$item_price = $order->getBasePrice() + $order->getBaseShippingAmount();
|
255 |
+
}
|
256 |
+
|
257 |
+
//pega o valor total da compra somando o frete
|
258 |
+
$item_price = number_format($item_price, 2, '.', '');
|
259 |
+
|
260 |
+
//setta informaçnoes
|
261 |
+
$arr = array();
|
262 |
+
$arr['external_reference'] = $orderId;
|
263 |
+
$arr['amount'] = (float) $item_price;
|
264 |
+
$arr['reason'] = Mage::helper('mercadopago_transparent')->__("Order # %s in store %s", $orderId, Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true));
|
265 |
+
//não é necessario settar currency_id, pois ja identifica no backend
|
266 |
+
//$arr['currency_id'] = "BRL";
|
267 |
+
$arr['installments'] = (int) $payment->getAdditionalInformation("installments");
|
268 |
+
$arr['payment_method_id'] = $payment->getAdditionalInformation("payment_method");
|
269 |
+
$arr['payer_email'] = htmlentities($customer->getEmail());
|
270 |
+
|
271 |
+
if($payment->getAdditionalInformation("card_token_id") != ""){
|
272 |
+
$arr['card_token_id'] = $payment->getAdditionalInformation("card_token_id");
|
273 |
+
}
|
274 |
+
|
275 |
+
if($payment->getAdditionalInformation("issuers") != ""){
|
276 |
+
$arr['card_issuer_id'] = (int) $payment->getAdditionalInformation("issuers");
|
277 |
+
}
|
278 |
+
|
279 |
+
|
280 |
+
//monta array de produtos
|
281 |
+
$arr['items'] = array();
|
282 |
+
foreach ($order->getAllVisibleItems() as $item) {
|
283 |
+
|
284 |
+
$prod = $model->loadByAttribute('sku', $item->getSku());
|
285 |
+
|
286 |
+
//get image
|
287 |
+
try{
|
288 |
+
$imagem = $prod->getImageUrl();
|
289 |
+
}catch(Exception $e){
|
290 |
+
$imagem = "";
|
291 |
+
}
|
292 |
+
|
293 |
+
$arr['items'][] = array(
|
294 |
+
"id" => $item->getSku(),
|
295 |
+
"title" => $item->getName(),
|
296 |
+
"description" => $item->getName(),
|
297 |
+
"picture_url" => $imagem,
|
298 |
+
"category_id" => Mage::getStoreConfig('payment/mercadopago_configuration/category_id'),
|
299 |
+
"quantity" => (int) number_format($item->getQtyOrdered(), 0, '.', ''),
|
300 |
+
"unit_price" => (float) number_format($prod->getPrice(), 2, '.', '')
|
301 |
+
);
|
302 |
+
|
303 |
+
}
|
304 |
+
|
305 |
+
|
306 |
+
//verifica se existe desconto, caso exista adiciona como um item
|
307 |
+
$discount = $this->getDiscount();
|
308 |
+
if($discount != 0){
|
309 |
+
$arr['items'][] = array(
|
310 |
+
"title" => "Discount by the Store",
|
311 |
+
"description" => "Discount by the Store",
|
312 |
+
"quantity" => (int) 1,
|
313 |
+
"unit_price" => (float) number_format($discount, 2, '.', '')
|
314 |
+
);
|
315 |
+
}
|
316 |
+
|
317 |
+
//pega dados de envio
|
318 |
+
if(method_exists($order->getShippingAddress(), "getData")){
|
319 |
+
$shipping = $order->getShippingAddress()->getData();
|
320 |
+
$arr['shipments']['receiver_address'] = array(
|
321 |
+
"floor" => "-",
|
322 |
+
"zip_code" => $shipping['postcode'],
|
323 |
+
"street_name" => $shipping['street'] . " - " . $shipping['city'] . " - " . $shipping['country_id'],
|
324 |
+
"apartment" => "-",
|
325 |
+
"street_number" => "0"
|
326 |
+
);
|
327 |
+
$arr['customer']['phone'] = array(
|
328 |
+
"area_code" => "-",
|
329 |
+
"number" => $shipping['telephone']
|
330 |
+
);
|
331 |
+
}
|
332 |
+
|
333 |
+
//formata a data do usuario para o padrao do mercado pago YYYY-MM-DDTHH:MM:SS
|
334 |
+
$date_creation_user = date('Y-m-d',$customer->getCreatedAtTimestamp()) . "T" . date('H:i:s',$customer->getCreatedAtTimestamp());
|
335 |
+
|
336 |
+
//$quote = Mage::getSingleton('checkout/session')->getQuote();
|
337 |
+
$billing_address = $quote->getBillingAddress();
|
338 |
+
$billing_address = $billing_address->getData();
|
339 |
+
|
340 |
+
//set informaçoes do usuario
|
341 |
+
$arr['customer']['registration_date'] = $date_creation_user;
|
342 |
+
$arr['customer']['email'] = htmlentities($customer->getEmail());
|
343 |
+
$arr['customer']['first_name'] = htmlentities($customer->getFirstname());
|
344 |
+
$arr['customer']['last_name'] = htmlentities($customer->getLastname());
|
345 |
+
|
346 |
+
//set o documento do usuario
|
347 |
+
if($payment['additional_information']['doc_number'] != ""){
|
348 |
+
$arr['customer']['identification'] = array(
|
349 |
+
"type" => "CPF",
|
350 |
+
"number" => $payment->getAdditionalInformation("doc_number")
|
351 |
+
);
|
352 |
+
}
|
353 |
+
|
354 |
+
//set endereco do usuario
|
355 |
+
$arr['customer']['address'] = array(
|
356 |
+
"zip_code" => $billing_address['postcode'],
|
357 |
+
"street_name" => $billing_address['street'] . " - " . $billing_address['city'] . " - " . $billing_address['country_id'],
|
358 |
+
"street_number" => "0"
|
359 |
+
);
|
360 |
+
|
361 |
+
//define a url de notificacao
|
362 |
+
$arr['notification_url'] = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "mercadopago_standard/notification";
|
363 |
+
|
364 |
+
//pega o email e o nome do usuario guest
|
365 |
+
if($arr['payer_email'] == "" && $arr['customer']['email'] == ""){
|
366 |
+
$arr['payer_email'] = $order['customer_email'];
|
367 |
+
$arr['customer']['email'] = $order['customer_email'];
|
368 |
+
$arr['customer']['first_name'] = $order->getBillingAddress()->getFirstname();
|
369 |
+
$arr['customer']['last_name'] = $order->getBillingAddress()->getLastname();
|
370 |
+
}
|
371 |
+
|
372 |
+
//adiciona a sponsor_id para as vendas serem identificadas
|
373 |
+
//$arr['sponsor_id'] = "";
|
374 |
+
|
375 |
+
return $arr;
|
376 |
+
|
377 |
+
}
|
378 |
+
|
379 |
+
public function getPaymentMethods(){
|
380 |
+
|
381 |
+
$this->client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
382 |
+
$this->client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
383 |
+
|
384 |
+
$mp = new MP ($this->client_id, $this->client_secret);
|
385 |
+
$access_token = $mp->get_access_token();
|
386 |
+
|
387 |
+
$payment_methods = MPRestClient::get("/checkout/custom/payment_methods?access_token=" . $access_token);
|
388 |
+
|
389 |
+
return $payment_methods;
|
390 |
+
}
|
391 |
+
}
|
392 |
+
|
393 |
+
?>
|
app/code/community/MercadoPago/Transparent/controllers/NotificacaoController.php
ADDED
@@ -0,0 +1,190 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
class MercadoPago_Transparent_NotificacaoController extends Mage_Core_Controller_Front_Action{
|
18 |
+
|
19 |
+
protected $_return = null;
|
20 |
+
protected $_order = null;
|
21 |
+
protected $_order_id = null;
|
22 |
+
protected $_mpcartid = null;
|
23 |
+
protected $_sendemail = false;
|
24 |
+
protected $_hash = null;
|
25 |
+
|
26 |
+
public function indexAction(){
|
27 |
+
$params = $this->getRequest()->getParams();
|
28 |
+
if (isset($params['id']) && isset($params['topic']) && $params['topic'] == 'payment'){
|
29 |
+
$model = Mage::getModel('mercadopago_transparent/transparent');
|
30 |
+
$response = $model->getPayment($params['id']);
|
31 |
+
|
32 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
33 |
+
$message = "";
|
34 |
+
$status = "";
|
35 |
+
$payment = $response['response']['collection'];
|
36 |
+
|
37 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($payment["external_reference"]);
|
38 |
+
|
39 |
+
//update info de status no pagamento
|
40 |
+
$payment_order = $order->getPayment();
|
41 |
+
$payment_order->setAdditionalInformation('status',$payment['status']);
|
42 |
+
$payment_order->setAdditionalInformation('status_detail',$payment['status_detail']);
|
43 |
+
$payment_order->setAdditionalInformation('payment_id',$payment['id']);
|
44 |
+
|
45 |
+
if($payment_order->getAdditionalInformation('cardholderName') == ""):
|
46 |
+
$payment_order->setAdditionalInformation('cardholderName', $payment['payer']['first_name'] . " " . $payment['payer']['last_name']);
|
47 |
+
endif;
|
48 |
+
|
49 |
+
if($payment_order->getAdditionalInformation('payment_method') == ""):
|
50 |
+
$payment_order->setAdditionalInformation('payment_method', $payment['payment_method_id']);
|
51 |
+
endif;
|
52 |
+
|
53 |
+
if($payment_order->getAdditionalInformation('statement_descriptor') == ""):
|
54 |
+
if(isset($payment['statement_descriptor'])):
|
55 |
+
$payment_order->setAdditionalInformation('statement_descriptor', $payment['statement_descriptor']);
|
56 |
+
endif;
|
57 |
+
endif;
|
58 |
+
|
59 |
+
if($payment_order->getAdditionalInformation('trunc_card') == ""):
|
60 |
+
if(isset($payment['last_four_digits'])):
|
61 |
+
$payment_order->setAdditionalInformation('trunc_card', "XXXXXXXXXXXX" . $payment['last_four_digits']);
|
62 |
+
endif;
|
63 |
+
|
64 |
+
endif;
|
65 |
+
|
66 |
+
$payment_order->save();
|
67 |
+
|
68 |
+
//adiciona informações sobre o comprador na order
|
69 |
+
if ($payment['payer']['first_name'])
|
70 |
+
$order->setCustomerFirstname($payment['payer']['first_name']);
|
71 |
+
if ($payment['payer']['last_name'])
|
72 |
+
$order->setCustomerLastname($payment['payer']['last_name']);
|
73 |
+
if ($payment['payer']['email'])
|
74 |
+
$order->setCustomerEmail($payment['payer']['email']);
|
75 |
+
|
76 |
+
$order->save();
|
77 |
+
|
78 |
+
switch ( $payment['status']) {
|
79 |
+
|
80 |
+
case 'approved':
|
81 |
+
//add status na order
|
82 |
+
$message = 'Notificação automática do MercadoPago: O pagamento foi aprovado.';
|
83 |
+
$status = $model->getConfigData('order_status_approved');
|
84 |
+
|
85 |
+
//cria a invoice
|
86 |
+
$invoice = $order->prepareInvoice();
|
87 |
+
$invoice->register()->pay();
|
88 |
+
Mage::getModel('core/resource_transaction')
|
89 |
+
->addObject($invoice)
|
90 |
+
->addObject($invoice->getOrder())
|
91 |
+
->save();
|
92 |
+
|
93 |
+
$invoice->sendEmail(true, $message);
|
94 |
+
break;
|
95 |
+
case 'refunded':
|
96 |
+
$status = $model->getConfigData('order_status_refunded');
|
97 |
+
$message = 'Notificação automática do MercadoPago: O pagamento foi devolvido.';
|
98 |
+
$order->cancel();
|
99 |
+
break;
|
100 |
+
case 'pending':
|
101 |
+
$status = $model->getConfigData('order_status_in_process');
|
102 |
+
$message = 'Notificação automática do MercadoPago: O pagamento está sendo processado.';
|
103 |
+
break;
|
104 |
+
case 'in_process':
|
105 |
+
$status = $model->getConfigData('order_status_in_process');
|
106 |
+
$message = 'Notificação automática do MercadoPago: O pagamento está sendo processado. Em até 2 dias úteis o pagamento será analisado.';
|
107 |
+
break;
|
108 |
+
case 'in_mediation':
|
109 |
+
$status = $model->getConfigData('order_status_in_mediation');
|
110 |
+
$message = 'Notificação automática do MercadoPago: O pagamento está em processo de Disputa, verifique a conta gráfica do MercadoPago para maiores informações.';
|
111 |
+
break;
|
112 |
+
case 'cancelled':
|
113 |
+
$status = $model->getConfigData('order_status_cancelled');
|
114 |
+
$message = 'Notificação automática do MercadoPago: O pagamento foi cancelado.';
|
115 |
+
$order->cancel();
|
116 |
+
break;
|
117 |
+
case 'rejected':
|
118 |
+
$status = $model->getConfigData('order_status_rejected');
|
119 |
+
$message = 'Notificação automática do MercadoPago: O pagamento foi rejeitado.';
|
120 |
+
break;
|
121 |
+
default:
|
122 |
+
$status = $model->getConfigData('order_status_in_process');
|
123 |
+
$message = "";
|
124 |
+
}
|
125 |
+
|
126 |
+
//adiciona informações do pagamento
|
127 |
+
$message .= "<br /> Operation id: " . $payment['id'];
|
128 |
+
$message .= "<br /> Status: " . $payment['status'];
|
129 |
+
$message .= "<br /> Status Detail: " . $payment['status_detail'];
|
130 |
+
|
131 |
+
$order->addStatusToHistory($status,$message, true);
|
132 |
+
$order->sendOrderUpdateEmail(true, $message);
|
133 |
+
|
134 |
+
$order->save();
|
135 |
+
echo $message;
|
136 |
+
else:
|
137 |
+
//caso de algum erro na consulta da ipn
|
138 |
+
header(' ', true, 404);
|
139 |
+
exit;
|
140 |
+
endif;
|
141 |
+
|
142 |
+
}elseif(isset($params['topic']) && $params['topic'] == 'merchant_order'){
|
143 |
+
|
144 |
+
$model = Mage::getModel('mercadopago_transparent/transparent');
|
145 |
+
$response = $model->getMerchantOrder($params['id']);
|
146 |
+
|
147 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
148 |
+
$message = "";
|
149 |
+
$status = "";
|
150 |
+
$merchant_order = $response['response'];
|
151 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($merchant_order["external_reference"]);
|
152 |
+
|
153 |
+
switch ( $merchant_order['status']) {
|
154 |
+
|
155 |
+
case 'opened':
|
156 |
+
$message = 'Payment flow started. The order still dont have payments recorded.';
|
157 |
+
$status = $model->getConfigData('order_status_in_process');
|
158 |
+
|
159 |
+
$message .= "<br /> Merchant Order: " . $merchant_order['id'];
|
160 |
+
$message .= "<br /> Status: " . $merchant_order['status'];
|
161 |
+
|
162 |
+
$order->addStatusToHistory($status,$message);
|
163 |
+
$order->save();
|
164 |
+
echo $message;
|
165 |
+
break;
|
166 |
+
|
167 |
+
/*
|
168 |
+
case 'closed':
|
169 |
+
$status = $model->getConfigData('order_status_refunded');
|
170 |
+
$message = 'A payment was created and it was associated to the order.';
|
171 |
+
break;
|
172 |
+
case 'expired':
|
173 |
+
$status = $model->getConfigData('order_status_in_process');
|
174 |
+
$message = 'Order cancelled by the seller.';
|
175 |
+
break;
|
176 |
+
default:
|
177 |
+
|
178 |
+
$message = "";
|
179 |
+
*/
|
180 |
+
}
|
181 |
+
|
182 |
+
else:
|
183 |
+
//caso de algum erro na consulta da ipn
|
184 |
+
header(' ', true, 404);
|
185 |
+
exit;
|
186 |
+
endif;
|
187 |
+
}
|
188 |
+
|
189 |
+
}
|
190 |
+
}
|
app/code/community/MercadoPago/Transparent/controllers/PayController.php
ADDED
@@ -0,0 +1,194 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
class MercadoPago_Transparent_PayController extends Mage_Core_Controller_Front_Action{
|
18 |
+
|
19 |
+
// /mercadopago_transparent/pay
|
20 |
+
public function indexAction(){
|
21 |
+
$msg = "";
|
22 |
+
$status = false;
|
23 |
+
$payment = false;
|
24 |
+
$order = false;
|
25 |
+
$payment_method_id = false;
|
26 |
+
|
27 |
+
|
28 |
+
//chama model para fazer o post do pagamento
|
29 |
+
$response = Mage::getModel('mercadopago_transparent/transparent')->postPago();
|
30 |
+
|
31 |
+
if($response['status'] == 200 || $response['status'] == 201):
|
32 |
+
|
33 |
+
$payment = $response['response'];
|
34 |
+
|
35 |
+
//set order_id
|
36 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($payment['external_reference']);
|
37 |
+
|
38 |
+
//set status
|
39 |
+
$status = $payment['status'];
|
40 |
+
$payment_method_id = $payment['payment_method_id'];
|
41 |
+
|
42 |
+
switch ($payment['status']){
|
43 |
+
case "approved":
|
44 |
+
$msg = "";
|
45 |
+
break;
|
46 |
+
case "in_process":
|
47 |
+
$msg = "Em menos de 2 dias úteis você será avisado por e-mail se foi creditado ou se precisarmos de mais informações.";
|
48 |
+
break;
|
49 |
+
case "pending":
|
50 |
+
$msg = "Em menos de 1 hora, nós enviaremos o resultado por e-mail.";
|
51 |
+
break;
|
52 |
+
case "rejected":
|
53 |
+
|
54 |
+
switch ($payment['status_detail']){
|
55 |
+
case "cc_rejected_bad_filled_card_number":
|
56 |
+
$msg = "Verifique o número do cartão.";
|
57 |
+
break;
|
58 |
+
case "cc_rejected_bad_filled_date":
|
59 |
+
$msg = "Verifique a data de validade.";
|
60 |
+
break;
|
61 |
+
case "cc_rejected_bad_filled_other":
|
62 |
+
$msg = "Verifique os dados.";
|
63 |
+
break;
|
64 |
+
case "cc_rejected_bad_filled_security_code":
|
65 |
+
$msg = "Verifique o código de segurança.";
|
66 |
+
break;
|
67 |
+
case "cc_rejected_blacklist":
|
68 |
+
$msg = "Não foi possÃvel processar o pagamento.";
|
69 |
+
break;
|
70 |
+
case "cc_rejected_call_for_authorize":
|
71 |
+
$msg = "Você precisa autorizar com a " . strtoupper($payment['payment_method_id']) . " o pagamento de R$" . strtoupper($payment['amount']) . " ao MercadoPago";
|
72 |
+
break;
|
73 |
+
case "cc_rejected_card_disabled":
|
74 |
+
$msg = "Ligue para " . strtoupper($payment['payment_method_id']) . " e ative o seu cartão. <br/>
|
75 |
+
O telefone está no verso do seu cartão de crédito.";
|
76 |
+
break;
|
77 |
+
case "cc_rejected_card_error":
|
78 |
+
$msg = "Não foi possÃvel processar o pagamento.";
|
79 |
+
break;
|
80 |
+
case "cc_rejected_duplicated_payment":
|
81 |
+
$msg = "Você já fez o pagamento deste valor. <br/>
|
82 |
+
Se você precisa pagar novamente use outro cartão ou outro meio de pagamento.";
|
83 |
+
break;
|
84 |
+
case "cc_rejected_high_risk":
|
85 |
+
$msg = "O seu pagamento foi recusado. <br/>
|
86 |
+
Recomendamos que você pague com outro dos meios de pagamento oferecidos, preferencialmente à vista.";
|
87 |
+
break;
|
88 |
+
case "cc_rejected_insufficient_amount":
|
89 |
+
$msg = "O seu " . strtoupper($payment['payment_method_id']) . " não tem limite suficiente.";
|
90 |
+
break;
|
91 |
+
case "cc_rejected_invalid_installments":
|
92 |
+
echo strtoupper($payment['payment_method_id']) . " não processa pagamentos em " . $payment['installments']. " parcelas.";
|
93 |
+
break;
|
94 |
+
case "cc_rejected_max_attempts":
|
95 |
+
$msg = "Você atingiu o limite de tentativas permitidas. <br/>
|
96 |
+
Use outro cartão ou outro meio de pagamento.";
|
97 |
+
break;
|
98 |
+
case "cc_rejected_other_reason":
|
99 |
+
echo strtoupper($payment['payment_method_id']) . " não processou o pagamento.";
|
100 |
+
break;
|
101 |
+
}
|
102 |
+
|
103 |
+
break;
|
104 |
+
}
|
105 |
+
else:
|
106 |
+
$e = "";
|
107 |
+
foreach($response['response']['cause'] as $error):
|
108 |
+
|
109 |
+
switch ($error) {
|
110 |
+
case "106":
|
111 |
+
$e .= "Você não pode fazer pagamentos para usuários em outros paÃses. <br/>";
|
112 |
+
break;
|
113 |
+
|
114 |
+
case "109":
|
115 |
+
$e .= "O meio de pagamento selecionado não processa pagamentos as parcelas selecionadas.
|
116 |
+
Use outro cartão ou outro meio de pagamento. <br/>";
|
117 |
+
break;
|
118 |
+
|
119 |
+
case "126":
|
120 |
+
$e .= "Não foi possÃvel processar o pagamento. Erro de numero: 126.<br/>";
|
121 |
+
break;
|
122 |
+
|
123 |
+
case "129":
|
124 |
+
$e .= "O meio de pagamento selecionado não processa pagamentos do valor selecionado.
|
125 |
+
Use outro cartão ou outro meio de pagamento.. <br/>";
|
126 |
+
break;
|
127 |
+
|
128 |
+
case "145":
|
129 |
+
$e .= "Não foi possÃvel processar o pagamento. Erro de numero: 145. <br/>";
|
130 |
+
break;
|
131 |
+
|
132 |
+
case "150":
|
133 |
+
$e .= "Você não pode fazer pagamentos. <br/>";
|
134 |
+
break;
|
135 |
+
|
136 |
+
case "151":
|
137 |
+
$e .= "Você não pode fazer pagamentos com esse meio de pagamento. <br/>";
|
138 |
+
break;
|
139 |
+
|
140 |
+
case "160":
|
141 |
+
$e .= "Não foi possÃvel processar o pagamento. Erro de numero: 160. <br/>";
|
142 |
+
break;
|
143 |
+
|
144 |
+
case "204":
|
145 |
+
$e .= "O meio de pagamento selecionado não está disponÃvel neste momento.
|
146 |
+
Use outro cartão ou outro meio de pagamento. <br/>";
|
147 |
+
break;
|
148 |
+
|
149 |
+
case "801":
|
150 |
+
$e .= "Você realizou um pagamento similar há pouco tempo.
|
151 |
+
Tente novamente em alguns minutos. <br/>";
|
152 |
+
break;
|
153 |
+
|
154 |
+
default:
|
155 |
+
$e .= "Não foi possÃvel processar o pagamento. <br/>" . json_encode($response['response']). "<br/>";
|
156 |
+
break;
|
157 |
+
}
|
158 |
+
endforeach;
|
159 |
+
|
160 |
+
Mage::getSingleton('core/session')->addError('Ocorreu um erro: <br/>' . $e);
|
161 |
+
endif;
|
162 |
+
|
163 |
+
$this->loadLayout();
|
164 |
+
|
165 |
+
//cria um block e adiciona uma view
|
166 |
+
$block = $this->getLayout()->createBlock(
|
167 |
+
'Mage_Core_Block_Template',
|
168 |
+
'mercadopago_transparent/sucesso',
|
169 |
+
array('template' => 'mercadopago/transparent/sucesso.phtml')
|
170 |
+
);
|
171 |
+
|
172 |
+
//envia as informações para view
|
173 |
+
$block->assign(
|
174 |
+
array(
|
175 |
+
"mensagem"=> $msg,
|
176 |
+
"status" => $status,
|
177 |
+
"order" => $order,
|
178 |
+
"payment_method_id" => $payment_method_id,
|
179 |
+
"payment" => $payment
|
180 |
+
)
|
181 |
+
);
|
182 |
+
|
183 |
+
//insere o block
|
184 |
+
$this->getLayout()->getBlock('content')->append($block);
|
185 |
+
$this->_initLayoutMessages('core/session');
|
186 |
+
|
187 |
+
//adiciona uma clean page
|
188 |
+
$root = $this->getLayout()->getBlock('root');
|
189 |
+
$root->setTemplate("mercadopago/clean_page.phtml");
|
190 |
+
|
191 |
+
$this->renderLayout();
|
192 |
+
}
|
193 |
+
|
194 |
+
}
|
app/code/community/MercadoPago/Transparent/etc/config.xml
ADDED
@@ -0,0 +1,103 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
<config>
|
19 |
+
<modules>
|
20 |
+
<MercadoPago_Transparent>
|
21 |
+
<version>2.0.0</version>
|
22 |
+
</MercadoPago_Transparent>
|
23 |
+
</modules>
|
24 |
+
|
25 |
+
<global>
|
26 |
+
<models>
|
27 |
+
<mercadopago_transparent>
|
28 |
+
<class>MercadoPago_Transparent_Model</class>
|
29 |
+
</mercadopago_transparent>
|
30 |
+
</models>
|
31 |
+
<blocks>
|
32 |
+
<mercadopago_transparent>
|
33 |
+
<class>MercadoPago_Transparent_Block</class>
|
34 |
+
</mercadopago_transparent>
|
35 |
+
</blocks>
|
36 |
+
<helpers>
|
37 |
+
<mercadopago_transparent>
|
38 |
+
<class>MercadoPago_Transparent_Helper</class>
|
39 |
+
</mercadopago_transparent>
|
40 |
+
</helpers>
|
41 |
+
|
42 |
+
</global>
|
43 |
+
|
44 |
+
|
45 |
+
<frontend>
|
46 |
+
<routers>
|
47 |
+
<mercadopago_transparent>
|
48 |
+
<use>standard</use>
|
49 |
+
<args>
|
50 |
+
<module>MercadoPago_Transparent</module>
|
51 |
+
<frontName>mercadopago_transparent</frontName>
|
52 |
+
</args>
|
53 |
+
</mercadopago_transparent>
|
54 |
+
</routers>
|
55 |
+
|
56 |
+
<layout>
|
57 |
+
<updates>
|
58 |
+
<mpexpress>
|
59 |
+
<file>mercadopago.xml</file>
|
60 |
+
</mpexpress>
|
61 |
+
</updates>
|
62 |
+
</layout>
|
63 |
+
|
64 |
+
<translate>
|
65 |
+
<modules>
|
66 |
+
<mercadopago>
|
67 |
+
<files>
|
68 |
+
<default>mercadopago.csv</default>
|
69 |
+
</files>
|
70 |
+
</mercadopago>
|
71 |
+
</modules>
|
72 |
+
</translate>
|
73 |
+
</frontend>
|
74 |
+
|
75 |
+
|
76 |
+
<adminhtml>
|
77 |
+
<translate>
|
78 |
+
<modules>
|
79 |
+
<translations>
|
80 |
+
<files>
|
81 |
+
<default>mercadopago.csv</default>
|
82 |
+
</files>
|
83 |
+
</translations>
|
84 |
+
</modules>
|
85 |
+
</translate>
|
86 |
+
</adminhtml>
|
87 |
+
|
88 |
+
<default>
|
89 |
+
<payment translate="label">
|
90 |
+
<mercadopago_transparent>
|
91 |
+
<active>1</active>
|
92 |
+
<model>MercadoPago_Transparent_Model_Transparent</model>
|
93 |
+
<!-- nome do modulo na exibição para o comprador -->
|
94 |
+
<title translate="label">Credit Card - MercadoPago</title>
|
95 |
+
<allowspecific>0</allowspecific>
|
96 |
+
<banner_checkout>http://imgmp.mlstatic.com/org-img/MLB/MP/BANNERS/tipo2_468X60.jpg</banner_checkout>
|
97 |
+
<sort_order>-2</sort_order>
|
98 |
+
<payment_action>authorize</payment_action>
|
99 |
+
</mercadopago_transparent>
|
100 |
+
</payment>
|
101 |
+
</default>
|
102 |
+
|
103 |
+
</config>
|
app/code/community/MercadoPago/Transparent/etc/system.xml
ADDED
@@ -0,0 +1,81 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<sections>
|
21 |
+
<payment translate="label">
|
22 |
+
<groups>
|
23 |
+
<mercadopago_transparent translate="label" module="mercadopago_transparent">
|
24 |
+
<label>MercadoPago Transparent - Credit Card</label>
|
25 |
+
<sort_order>100</sort_order>
|
26 |
+
<show_in_default>1</show_in_default>
|
27 |
+
<show_in_website>1</show_in_website>
|
28 |
+
<show_in_store>0</show_in_store>
|
29 |
+
<fields>
|
30 |
+
<active translate="label">
|
31 |
+
<label>Enabled</label>
|
32 |
+
<frontend_type>select</frontend_type>
|
33 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
34 |
+
<sort_order>1</sort_order>
|
35 |
+
<show_in_default>1</show_in_default>
|
36 |
+
<show_in_website>1</show_in_website>
|
37 |
+
<show_in_store>0</show_in_store>
|
38 |
+
</active>
|
39 |
+
<title translate="label">
|
40 |
+
<label>Payment Title</label>
|
41 |
+
<frontend_type>text</frontend_type>
|
42 |
+
<sort_order>2</sort_order>
|
43 |
+
<show_in_default>1</show_in_default>
|
44 |
+
<show_in_website>1</show_in_website>
|
45 |
+
<show_in_store>0</show_in_store>
|
46 |
+
</title>
|
47 |
+
|
48 |
+
<public_key translate="label">
|
49 |
+
<label>Public Key</label>
|
50 |
+
<frontend_type>text</frontend_type>
|
51 |
+
<sort_order>5</sort_order>
|
52 |
+
<show_in_default>1</show_in_default>
|
53 |
+
<show_in_website>1</show_in_website>
|
54 |
+
<show_in_store>0</show_in_store>
|
55 |
+
</public_key>
|
56 |
+
|
57 |
+
|
58 |
+
<banner_checkout translate="label">
|
59 |
+
<label>Banner Checkout</label>
|
60 |
+
<frontend_type>text</frontend_type>
|
61 |
+
<sort_order>13</sort_order>
|
62 |
+
<show_in_default>1</show_in_default>
|
63 |
+
<show_in_website>1</show_in_website>
|
64 |
+
<show_in_store>0</show_in_store>
|
65 |
+
</banner_checkout>
|
66 |
+
|
67 |
+
<sort_order translate="label">
|
68 |
+
<label>Checkout Position</label>
|
69 |
+
<frontend_type>text</frontend_type>
|
70 |
+
<sort_order>14</sort_order>
|
71 |
+
<show_in_default>1</show_in_default>
|
72 |
+
<show_in_website>1</show_in_website>
|
73 |
+
<show_in_store>0</show_in_store>
|
74 |
+
<frontend_class>validate-number</frontend_class>
|
75 |
+
</sort_order>
|
76 |
+
</fields>
|
77 |
+
</mercadopago_transparent>
|
78 |
+
</groups>
|
79 |
+
</payment>
|
80 |
+
</sections>
|
81 |
+
</config>
|
app/code/community/MercadoPago/TransparentTicket/Block/Form.php
ADDED
@@ -0,0 +1,50 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_TransparentTicket_Block_Form extends Mage_Payment_Block_Form_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
parent::_construct();
|
25 |
+
|
26 |
+
$this->setTemplate('mercadopago/transparent_ticket/form.phtml');
|
27 |
+
|
28 |
+
}
|
29 |
+
|
30 |
+
function getTicketsOptions(){
|
31 |
+
$payment_methods = Mage::getModel('mercadopago_transparentticket/transparent')->getPaymentMethods();
|
32 |
+
$tickets = array();
|
33 |
+
|
34 |
+
//percorre todos os payments methods
|
35 |
+
foreach($payment_methods['response'] as $pm){
|
36 |
+
|
37 |
+
//filtra por tickets
|
38 |
+
if($pm['payment_type_id'] == "ticket"){
|
39 |
+
$tickets[] = $pm;
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
return $tickets;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
+
|
49 |
+
|
50 |
+
?>
|
app/code/community/MercadoPago/TransparentTicket/Block/Info.php
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
|
18 |
+
class MercadoPago_TransparentTicket_Block_Info extends Mage_Payment_Block_Info_Cc{
|
19 |
+
|
20 |
+
protected function _construct(){
|
21 |
+
|
22 |
+
// Route: /checkout/onepage
|
23 |
+
// inicia formulario para a escolha de pagamento
|
24 |
+
|
25 |
+
parent::_construct();
|
26 |
+
$this->setTemplate('mercadopago/transparent_ticket/info.phtml');
|
27 |
+
$this->setModuleName('Mage_Payment');
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function getOrder() {
|
32 |
+
|
33 |
+
return $this->getInfo();
|
34 |
+
|
35 |
+
}
|
36 |
+
}
|
app/code/community/MercadoPago/TransparentTicket/Helper/Data.php
ADDED
@@ -0,0 +1,22 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
?>
|
17 |
+
<?php
|
18 |
+
|
19 |
+
|
20 |
+
class MercadoPago_TransparentTicket_Helper_Data extends Mage_Payment_Helper_Data{
|
21 |
+
|
22 |
+
}
|
app/code/community/MercadoPago/TransparentTicket/Model/Transparent.php
ADDED
@@ -0,0 +1,86 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
|
17 |
+
require_once(Mage::getBaseDir('lib') . '/mercadopago/mercadopago.php');
|
18 |
+
|
19 |
+
class MercadoPago_TransparentTicket_Model_Transparent extends Mage_Payment_Model_Method_Abstract{
|
20 |
+
|
21 |
+
//configura o lugar do arquivo para listar meios de pagamento
|
22 |
+
protected $_formBlockType = 'mercadopago_transparentticket/form';
|
23 |
+
protected $_infoBlockType = 'mercadopago_transparentticket/info';
|
24 |
+
|
25 |
+
protected $_code = 'mercadopago_transparentticket';
|
26 |
+
|
27 |
+
protected $_canSaveCc = false;
|
28 |
+
protected $_isGateway = true;
|
29 |
+
protected $_canAuthorize = true;
|
30 |
+
protected $_canCapture = true;
|
31 |
+
protected $_canVoid = true;
|
32 |
+
protected $_canCancelInvoice = true;
|
33 |
+
protected $_isInitializeNeeded = true;
|
34 |
+
protected $_canFetchTransactionInfo = true;
|
35 |
+
protected $_canCreateBillingAgreement = true;
|
36 |
+
protected $_canReviewPayment = true;
|
37 |
+
|
38 |
+
|
39 |
+
public function initialize($paymentAction, $stateObject) {
|
40 |
+
//chama model para fazer o post do pagamento
|
41 |
+
$response = Mage::getModel('mercadopago_transparent/transparent')->postPago();
|
42 |
+
|
43 |
+
if($response !== false):
|
44 |
+
$this->getInfoInstance()->setAdditionalInformation('activation_uri', $response['response']['activation_uri']);
|
45 |
+
return true;
|
46 |
+
endif;
|
47 |
+
|
48 |
+
return false;
|
49 |
+
|
50 |
+
}
|
51 |
+
|
52 |
+
public function assignData($data){
|
53 |
+
|
54 |
+
// route /checkout/onepage/savePayment
|
55 |
+
if(!($data instanceof Varien_Object)){
|
56 |
+
$data = new Varien_Object($data);
|
57 |
+
}
|
58 |
+
|
59 |
+
//get array info
|
60 |
+
$info_form = $data->getData();
|
61 |
+
|
62 |
+
$info = $this->getInfoInstance();
|
63 |
+
$info->setAdditionalInformation('payment_type_id', "ticket");
|
64 |
+
$info->setAdditionalInformation('payment_method', $info_form['payment_method_boleto']);
|
65 |
+
$info->setAdditionalInformation('card_token_id', "");
|
66 |
+
$info->setAdditionalInformation('installments', 1);
|
67 |
+
$info->setAdditionalInformation('doc_number', "");
|
68 |
+
|
69 |
+
return $this;
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getPaymentMethods(){
|
73 |
+
|
74 |
+
$this->client_id = Mage::getStoreConfig('payment/mercadopago_configuration/client_id');
|
75 |
+
$this->client_secret = Mage::getStoreConfig('payment/mercadopago_configuration/client_secret');
|
76 |
+
|
77 |
+
$mp = new MP ($this->client_id, $this->client_secret);
|
78 |
+
$access_token = $mp->get_access_token();
|
79 |
+
|
80 |
+
$payment_methods = MPRestClient::get("/checkout/custom/payment_methods?access_token=" . $access_token);
|
81 |
+
|
82 |
+
return $payment_methods;
|
83 |
+
}
|
84 |
+
}
|
85 |
+
|
86 |
+
?>
|
app/code/community/MercadoPago/TransparentTicket/etc/config.xml
ADDED
@@ -0,0 +1,103 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
<config>
|
19 |
+
<modules>
|
20 |
+
<MercadoPago_TransparentTicket>
|
21 |
+
<version>2.0.0</version>
|
22 |
+
</MercadoPago_TransparentTicket>
|
23 |
+
</modules>
|
24 |
+
|
25 |
+
<global>
|
26 |
+
<models>
|
27 |
+
<mercadopago_transparentticket>
|
28 |
+
<class>MercadoPago_TransparentTicket_Model</class>
|
29 |
+
</mercadopago_transparentticket>
|
30 |
+
</models>
|
31 |
+
<blocks>
|
32 |
+
<mercadopago_transparentticket>
|
33 |
+
<class>MercadoPago_TransparentTicket_Block</class>
|
34 |
+
</mercadopago_transparentticket>
|
35 |
+
</blocks>
|
36 |
+
<helpers>
|
37 |
+
<mercadopago_transparentticket>
|
38 |
+
<class>MercadoPago_TransparentTicket_Helper</class>
|
39 |
+
</mercadopago_transparentticket>
|
40 |
+
</helpers>
|
41 |
+
</global>
|
42 |
+
|
43 |
+
|
44 |
+
<frontend>
|
45 |
+
<routers>
|
46 |
+
<mercadopago_transparentticket>
|
47 |
+
<use>standard</use>
|
48 |
+
<args>
|
49 |
+
<module>MercadoPago_TransparentTicket</module>
|
50 |
+
<frontName>mercadopago_transparentticket</frontName>
|
51 |
+
</args>
|
52 |
+
</mercadopago_transparentticket>
|
53 |
+
</routers>
|
54 |
+
|
55 |
+
<layout>
|
56 |
+
<updates>
|
57 |
+
<mpexpress>
|
58 |
+
<file>mercadopago.xml</file>
|
59 |
+
</mpexpress>
|
60 |
+
</updates>
|
61 |
+
</layout>
|
62 |
+
|
63 |
+
<translate>
|
64 |
+
<modules>
|
65 |
+
<mercadopago>
|
66 |
+
<files>
|
67 |
+
<default>mercadopago.csv</default>
|
68 |
+
</files>
|
69 |
+
</mercadopago>
|
70 |
+
</modules>
|
71 |
+
</translate>
|
72 |
+
</frontend>
|
73 |
+
|
74 |
+
|
75 |
+
<adminhtml>
|
76 |
+
<translate>
|
77 |
+
<modules>
|
78 |
+
<translations>
|
79 |
+
<files>
|
80 |
+
<default>mercadopago.csv</default>
|
81 |
+
</files>
|
82 |
+
</translations>
|
83 |
+
</modules>
|
84 |
+
</translate>
|
85 |
+
</adminhtml>
|
86 |
+
|
87 |
+
|
88 |
+
<default>
|
89 |
+
<payment translate="label">
|
90 |
+
<mercadopago_transparentticket>
|
91 |
+
<active>1</active>
|
92 |
+
<model>MercadoPago_TransparentTicket_Model_Transparent</model>
|
93 |
+
<!-- nome do modulo na exibição para o comprador -->
|
94 |
+
<title translate="label">Ticket - MercadoPago</title>
|
95 |
+
<allowspecific>0</allowspecific>
|
96 |
+
<banner_checkout>http://imgmp.mlstatic.com/org-img/MLB/MP/BANNERS/2014/230x60.png</banner_checkout>
|
97 |
+
<sort_order>-1</sort_order>
|
98 |
+
<payment_action>authorize</payment_action>
|
99 |
+
</mercadopago_transparentticket>
|
100 |
+
</payment>
|
101 |
+
</default>
|
102 |
+
|
103 |
+
</config>
|
app/code/community/MercadoPago/TransparentTicket/etc/system.xml
ADDED
@@ -0,0 +1,74 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" ?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL).
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Payment Gateway
|
12 |
+
* @package MercadoPago
|
13 |
+
* @author Gabriel Matsuoka (gabriel.matsuoka@gmail.com)
|
14 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<sections>
|
21 |
+
<payment translate="label">
|
22 |
+
<groups>
|
23 |
+
<mercadopago_transparentticket translate="label" module="mercadopago_transparentticket">
|
24 |
+
<label>MercadoPago Transparent - Ticket</label>
|
25 |
+
<sort_order>101</sort_order>
|
26 |
+
<show_in_default>1</show_in_default>
|
27 |
+
<show_in_website>1</show_in_website>
|
28 |
+
<show_in_store>0</show_in_store>
|
29 |
+
<fields>
|
30 |
+
<active translate="label">
|
31 |
+
<label>Enabled</label>
|
32 |
+
<frontend_type>select</frontend_type>
|
33 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
34 |
+
<sort_order>1</sort_order>
|
35 |
+
<show_in_default>1</show_in_default>
|
36 |
+
<show_in_website>1</show_in_website>
|
37 |
+
<show_in_store>0</show_in_store>
|
38 |
+
<comment>For the operation of the Checkout Transparent Ticket is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'</comment>
|
39 |
+
</active>
|
40 |
+
<title translate="label">
|
41 |
+
<label>Payment Title</label>
|
42 |
+
<frontend_type>text</frontend_type>
|
43 |
+
<sort_order>2</sort_order>
|
44 |
+
<show_in_default>1</show_in_default>
|
45 |
+
<show_in_website>1</show_in_website>
|
46 |
+
<show_in_store>0</show_in_store>
|
47 |
+
</title>
|
48 |
+
|
49 |
+
|
50 |
+
<banner_checkout translate="label">
|
51 |
+
<label>Banner Checkout</label>
|
52 |
+
<frontend_type>text</frontend_type>
|
53 |
+
<sort_order>3</sort_order>
|
54 |
+
<show_in_default>1</show_in_default>
|
55 |
+
<show_in_website>1</show_in_website>
|
56 |
+
<show_in_store>0</show_in_store>
|
57 |
+
</banner_checkout>
|
58 |
+
|
59 |
+
<sort_order translate="label">
|
60 |
+
<label>Checkout Position</label>
|
61 |
+
<frontend_type>text</frontend_type>
|
62 |
+
<sort_order>4</sort_order>
|
63 |
+
<show_in_default>1</show_in_default>
|
64 |
+
<show_in_website>1</show_in_website>
|
65 |
+
<show_in_store>0</show_in_store>
|
66 |
+
<frontend_class>validate-number</frontend_class>
|
67 |
+
</sort_order>
|
68 |
+
|
69 |
+
</fields>
|
70 |
+
</mercadopago_transparentticket>
|
71 |
+
</groups>
|
72 |
+
</payment>
|
73 |
+
</sections>
|
74 |
+
</config>
|
app/design/adminhtml/default/default/template/mercadopago/standard/info.phtml
ADDED
@@ -0,0 +1,29 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if($this->getOrder()->getAdditionalInformation('cardholderName') != ""): ?>
|
4 |
+
<p><?php echo $this->__('Card Holder Name: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('cardholderName'))); ?></p>
|
5 |
+
<?php endif; ?>
|
6 |
+
|
7 |
+
<?php if($this->getOrder()->getAdditionalInformation('trunc_card') != ""): ?>
|
8 |
+
<p><?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('trunc_card'))); ?></p>
|
9 |
+
<?php endif; ?>
|
10 |
+
|
11 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_method') != ""): ?>
|
12 |
+
<p><?php echo $this->__('Payment Method: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_method'))); ?></p>
|
13 |
+
<?php endif; ?>
|
14 |
+
|
15 |
+
<?php if($this->getOrder()->getAdditionalInformation('installments') != ""): ?>
|
16 |
+
<p><?php echo $this->__('Installments: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('installments'))); ?></p>
|
17 |
+
<?php endif; ?>
|
18 |
+
|
19 |
+
<?php if($this->getOrder()->getAdditionalInformation('statement_descriptor') != ""): ?>
|
20 |
+
<p><?php echo $this->__('Statement Descriptor: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('statement_descriptor'))); ?></p>
|
21 |
+
<?php endif; ?>
|
22 |
+
|
23 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
24 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
25 |
+
<?php endif; ?>
|
26 |
+
|
27 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
28 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
29 |
+
<?php endif; ?>
|
app/design/adminhtml/default/default/template/mercadopago/transparent/info.phtml
ADDED
@@ -0,0 +1,33 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if($this->getOrder()->getAdditionalInformation('cardholderName') != ""): ?>
|
4 |
+
<p><?php echo $this->__('Card Holder Name: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('cardholderName'))); ?></p>
|
5 |
+
<?php endif; ?>
|
6 |
+
|
7 |
+
<?php if($this->getOrder()->getAdditionalInformation('trunc_card') != ""): ?>
|
8 |
+
<p><?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('trunc_card'))); ?></p>
|
9 |
+
<?php endif; ?>
|
10 |
+
|
11 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_method') != ""): ?>
|
12 |
+
<p><?php echo $this->__('Payment Method: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_method'))); ?></p>
|
13 |
+
<?php endif; ?>
|
14 |
+
|
15 |
+
<?php if($this->getOrder()->getAdditionalInformation('expiration_date') != ""): ?>
|
16 |
+
<p><?php echo $this->__('Expiration Date: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('expiration_date'))); ?></p>
|
17 |
+
<?php endif; ?>
|
18 |
+
|
19 |
+
<?php if($this->getOrder()->getAdditionalInformation('installments') != ""): ?>
|
20 |
+
<p><?php echo $this->__('Installments: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('installments'))); ?></p>
|
21 |
+
<?php endif; ?>
|
22 |
+
|
23 |
+
<?php if($this->getOrder()->getAdditionalInformation('statement_descriptor') != ""): ?>
|
24 |
+
<p><?php echo $this->__('Statement Descriptor: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('statement_descriptor'))); ?></p>
|
25 |
+
<?php endif; ?>
|
26 |
+
|
27 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
28 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
29 |
+
<?php endif; ?>
|
30 |
+
|
31 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
32 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
33 |
+
<?php endif; ?>
|
app/design/adminhtml/default/default/template/mercadopago/transparent_boleto/info.phtml
ADDED
@@ -0,0 +1,13 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
4 |
+
<p><?php echo $this->__('Numero de Pagamento (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
5 |
+
<?php endif; ?>
|
6 |
+
|
7 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
8 |
+
<p><?php echo $this->__('Status de Pagamento: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
9 |
+
<?php endif; ?>
|
10 |
+
|
11 |
+
<p>Clique no link para gerar o boleto.</p>
|
12 |
+
<a href="<?php echo urldecode($this->htmlEscape($this->getOrder()->getAdditionalInformation('activation_uri'))); ?>" target="_blank">Gerar Boleto</a>
|
13 |
+
|
app/design/adminhtml/default/default/template/mercadopago/transparent_ticket/info.phtml
ADDED
@@ -0,0 +1,15 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
4 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
5 |
+
<?php endif; ?>
|
6 |
+
|
7 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
8 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
9 |
+
<?php endif; ?>
|
10 |
+
|
11 |
+
<p><?php echo $this->__('Click on the link to generate the ticket'); ?>.</p>
|
12 |
+
<a href="<?php echo urldecode($this->htmlEscape($this->getOrder()->getAdditionalInformation('activation_uri'))); ?>" target="_blank">
|
13 |
+
<?php echo $this->__('Generate Ticket'); ?>
|
14 |
+
</a>
|
15 |
+
|
app/design/frontend/base/default/layout/mercadopago.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<layout version="0.1.0">
|
4 |
+
<checkout_onepage_success translate="label">
|
5 |
+
<reference name="content">
|
6 |
+
<block name="mercadopago.transparent.success" template="mercadopago/transparent/success.phtml" type="mercadopago_transparent/success" />
|
7 |
+
</reference>
|
8 |
+
</checkout_onepage_success>
|
9 |
+
</layout>
|
app/design/frontend/base/default/template/mercadopago/clean_page.phtml
ADDED
@@ -0,0 +1,48 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
*
|
4 |
+
* NOTICE OF LICENSE
|
5 |
+
*
|
6 |
+
* This source file is subject to the Open Software License (OSL).
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Payment Gateway
|
11 |
+
* @package MercadoPago
|
12 |
+
* @author Andr� Fuhrman (andrefuhrman@gmail.com)
|
13 |
+
* @copyright Copyright (c) MercadoPago [http://www.mercadopago.com]
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
?>
|
17 |
+
<?php
|
18 |
+
/**
|
19 |
+
* Template for Mage_Page_Block_Html
|
20 |
+
*/
|
21 |
+
?>
|
22 |
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
23 |
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->getLang() ?>" lang="<?php echo $this->getLang() ?>">
|
24 |
+
<head>
|
25 |
+
<?php echo $this->getChildHtml('head') ?>
|
26 |
+
</head>
|
27 |
+
<body<?php echo $this->getBodyClass()?' class="'.$this->getBodyClass().'"':'' ?>>
|
28 |
+
<?php echo $this->getChildHtml('after_body_start') ?>
|
29 |
+
<div class="wrapper">
|
30 |
+
<?php echo $this->getChildHtml('global_notices') ?>
|
31 |
+
<div class="page">
|
32 |
+
<?php echo $this->getChildHtml('header') ?>
|
33 |
+
<div class="main-container col1-layout">
|
34 |
+
<div class="main">
|
35 |
+
<?php echo $this->getChildHtml('breadcrumbs') ?>
|
36 |
+
<div class="col-main">
|
37 |
+
<?php echo $this->getChildHtml('global_messages') ?>
|
38 |
+
<?php echo $this->getChildHtml('content') ?>
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
<?php echo $this->getChildHtml('footer') ?>
|
43 |
+
<?php echo $this->getChildHtml('before_body_end') ?>
|
44 |
+
</div>
|
45 |
+
</div>
|
46 |
+
<?php echo $this->getAbsoluteFooter() ?>
|
47 |
+
</body>
|
48 |
+
</html>
|
app/design/frontend/base/default/template/mercadopago/standard/form.phtml
ADDED
@@ -0,0 +1,12 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
|
2 |
+
<fieldset class="form-list">
|
3 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
4 |
+
|
5 |
+
<?php $_code = $this->getMethodCode(); ?>
|
6 |
+
<?php $_country = $this->getMethodCountry(); ?>
|
7 |
+
|
8 |
+
<?php if($this->getMethod()->getConfigData('banner_checkout') != ""): ?>
|
9 |
+
<img src="<?php echo $this->getMethod()->getConfigData('banner_checkout'); ?>" class="banner_checkout_mp"/>
|
10 |
+
<?php endif;?>
|
11 |
+
|
12 |
+
</fieldset>
|
app/design/frontend/base/default/template/mercadopago/standard/info.phtml
ADDED
@@ -0,0 +1,36 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if(Mage::app()->getRequest()->getRouteName()=="sales"): ?>
|
4 |
+
|
5 |
+
|
6 |
+
<?php if($this->getOrder()->getAdditionalInformation('cardholderName') != ""): ?>
|
7 |
+
<p><?php echo $this->__('Card Holder Name: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('cardholderName'))); ?></p>
|
8 |
+
<?php endif; ?>
|
9 |
+
|
10 |
+
<?php if($this->getOrder()->getAdditionalInformation('trunc_card') != ""): ?>
|
11 |
+
<p><?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('trunc_card'))); ?></p>
|
12 |
+
<?php endif; ?>
|
13 |
+
|
14 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_method') != ""): ?>
|
15 |
+
<p><?php echo $this->__('Payment Method: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_method'))); ?></p>
|
16 |
+
<?php endif; ?>
|
17 |
+
|
18 |
+
<?php if($this->getOrder()->getAdditionalInformation('installments') != ""): ?>
|
19 |
+
<p><?php echo $this->__('Installments: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('installments'))); ?></p>
|
20 |
+
<?php endif; ?>
|
21 |
+
|
22 |
+
<?php if($this->getOrder()->getAdditionalInformation('statement_descriptor') != ""): ?>
|
23 |
+
<p><?php echo $this->__('Statement Descriptor: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('statement_descriptor'))); ?></p>
|
24 |
+
<?php endif; ?>
|
25 |
+
|
26 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
27 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
28 |
+
<?php endif; ?>
|
29 |
+
|
30 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
31 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
32 |
+
<?php endif; ?>
|
33 |
+
|
34 |
+
|
35 |
+
|
36 |
+
<?php endif;?>
|
app/design/frontend/base/default/template/mercadopago/standard/pay.phtml
ADDED
@@ -0,0 +1,51 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
2 |
+
|
3 |
+
<div id="standard_banner_checkout">
|
4 |
+
<img src="<?php echo $banner_checkout; ?>" class="banner_checkout_mp"/>
|
5 |
+
</div>
|
6 |
+
|
7 |
+
<?php if($type_checkout == "lightbox"):?>
|
8 |
+
|
9 |
+
<script type="text/javascript" src="https://www.mercadopago.com/org-img/jsapi/mptools/buttons/render.js"></script>
|
10 |
+
|
11 |
+
<!-- Abra o Checkout -->
|
12 |
+
<script type="text/javascript">
|
13 |
+
$MPC.openCheckout ({
|
14 |
+
url: "<?php echo $init_point; ?>",
|
15 |
+
mode: "modal",
|
16 |
+
onreturn: function(data) {
|
17 |
+
// execute_my_onreturn (Apenas modelo)
|
18 |
+
}
|
19 |
+
});
|
20 |
+
</script>
|
21 |
+
|
22 |
+
<a href="<?php echo $init_point; ?>" name="MP-Checkout" class="blue-M-Rn" mp-mode="modal">Pagar</a>
|
23 |
+
<!-- Cole esse código antes de fechar a etiqueta </body> -->
|
24 |
+
|
25 |
+
<?php elseif($type_checkout == "redirect"):?>
|
26 |
+
<script type="text/javascript" src="https://www.mercadopago.com/org-img/jsapi/mptools/buttons/render.js"></script>
|
27 |
+
|
28 |
+
<!-- Abra o Checkout -->
|
29 |
+
<script type="text/javascript">
|
30 |
+
$MPC.openCheckout ({
|
31 |
+
url: "<?php echo $init_point; ?>",
|
32 |
+
mode: "redirect",
|
33 |
+
onreturn: function(data) {
|
34 |
+
// execute_my_onreturn (Apenas modelo)
|
35 |
+
}
|
36 |
+
});
|
37 |
+
</script>
|
38 |
+
<?php else: ?>
|
39 |
+
|
40 |
+
<!-- Aqui você deve inserir a URL que corresponde a "init_point" -->
|
41 |
+
<iframe src="<?php echo $init_point; ?>" name="MP-Checkout" width="<?php echo $iframe_width; ?>" height="<?php echo $iframe_height; ?>" frameborder="0" scrolling="no" id="checkout_mercadopago"></iframe>
|
42 |
+
|
43 |
+
<!-- Cole esse código antes de fechar a etiqueta </body> -->
|
44 |
+
<script type="text/javascript">
|
45 |
+
(function(){function $MPBR_load(){window.$MPBR_loaded !== true && (function(){var s = document.createElement("script");s.type = "text/javascript";s.async = true;
|
46 |
+
s.src = ("https:"==document.location.protocol?"https://www.mercadopago.com/org-img/jsapi/mptools/buttons/":"http://mp-tools.mlstatic.com/buttons/")+"render.js";
|
47 |
+
var x = document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);window.$MPBR_loaded = true;})();}
|
48 |
+
window.$MPBR_loaded !== true ? (window.attachEvent ? window.attachEvent('onload', $MPBR_load) : window.addEventListener('load', $MPBR_load, false)) : null;})();
|
49 |
+
</script>
|
50 |
+
|
51 |
+
<?php endif;?>
|
app/design/frontend/base/default/template/mercadopago/transparent/form.phtml
ADDED
@@ -0,0 +1,175 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$country = Mage::getStoreConfig('payment/mercadopago_configuration/country');
|
4 |
+
|
5 |
+
?>
|
6 |
+
|
7 |
+
|
8 |
+
<fieldset class="form-list mercadopago">
|
9 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
10 |
+
|
11 |
+
<?php $_code = $this->getMethodCode(); ?>
|
12 |
+
<?php $_country = $this->getMethodCountry(); ?>
|
13 |
+
|
14 |
+
<script>
|
15 |
+
//load nas actions para funcionar o js do mercadopago
|
16 |
+
loadFilesMP();
|
17 |
+
</script>
|
18 |
+
|
19 |
+
<div id="mp-form">
|
20 |
+
<ul class="form-list form-mercadopago" id="payment_form_<?php echo $_code ?>" style="display:none;" >
|
21 |
+
|
22 |
+
<?php if( $country == 'mlm'):
|
23 |
+
$payment_methods = $this->getCardsPaymentMethods();
|
24 |
+
?>
|
25 |
+
<li>
|
26 |
+
<div class="box-input">
|
27 |
+
<label for="<?php echo $_code ?>_payment_method" class="required"><em>*</em><?php echo $this->__('Payment Method'); ?></label>
|
28 |
+
<div class="input-box box-payment_method">
|
29 |
+
<select name="payment[payment_method]" id="payment_method" data-checkout="payment_method" id="<?php echo $_code ?>_payment_method" class="input-text required-entry">
|
30 |
+
<option value="-1"><?php echo $this->__('Choice'); ?>...</option>
|
31 |
+
<?php foreach($payment_methods as $pm): ?>
|
32 |
+
<option value="<?php echo $pm['id']; ?>"><?php echo $pm['name']; ?></option>
|
33 |
+
<?php endforeach; ?>
|
34 |
+
</select>
|
35 |
+
</div>
|
36 |
+
</div>
|
37 |
+
</li>
|
38 |
+
<?php else: ?>
|
39 |
+
<input type="hidden" name="payment[payment_method]" type="text" value="" id="payment_method" />
|
40 |
+
<?php endif; ?>
|
41 |
+
|
42 |
+
<li>
|
43 |
+
<label for="<?php echo $_code ?>_cn" class="required"><em>*</em><?php echo $this->__('Card Number'); ?></label>
|
44 |
+
<div class="input-box">
|
45 |
+
<input data-checkout="cardNumber" id="<?php echo $_code ?>_cn" type="text" class="input-text required-entry"/>
|
46 |
+
<div id="img_payment_method"></div>
|
47 |
+
</div>
|
48 |
+
</li>
|
49 |
+
|
50 |
+
<li id="issuersOptions" style="display: none;">
|
51 |
+
<label for="<?php echo $_code ?>_issuers" class="required"><em>*</em><?php echo $this->__('Banks'); ?></label>
|
52 |
+
<div class="input-box">
|
53 |
+
<div id="issuers">
|
54 |
+
</div>
|
55 |
+
</div>
|
56 |
+
</li>
|
57 |
+
|
58 |
+
<li>
|
59 |
+
<div class="box-mes">
|
60 |
+
<label for="<?php echo $_code ?>_month" class="required"><em>*</em><?php echo $this->__('Month'); ?></label>
|
61 |
+
<div class="input-box mes">
|
62 |
+
<select data-checkout="cardExpirationMonth" name="payment[cardExpirationMonth]" id="<?php echo $_code ?>_month" class="input-text required-entry validate-digits">
|
63 |
+
<?php foreach ($this->getCcMonths() as $m=>$v): ?>
|
64 |
+
<option value="<?php echo $m?$m:'' ?>"><?php echo $v ?></option>
|
65 |
+
<?php endforeach ?>
|
66 |
+
</select>
|
67 |
+
</div>
|
68 |
+
</div>
|
69 |
+
|
70 |
+
<div class="box-ano">
|
71 |
+
<label for="<?php echo $_code ?>_year" class="required"><em>*</em><?php echo $this->__('Year'); ?></label>
|
72 |
+
<div class="input-box">
|
73 |
+
<select data-checkout="cardExpirationYear" name="payment[cardExpirationYear]" id="<?php echo $_code ?>_year" class="input-text required-entry validate-digits">
|
74 |
+
<?php foreach ($this->getCcYears() as $y=>$v): ?>
|
75 |
+
<option value="<?php echo $y?$y:'' ?>"><?php echo $v ?></option>
|
76 |
+
<?php endforeach ?>
|
77 |
+
</select>
|
78 |
+
</div>
|
79 |
+
</div>
|
80 |
+
</li>
|
81 |
+
|
82 |
+
|
83 |
+
<li>
|
84 |
+
<div class="box-input">
|
85 |
+
<label for="<?php echo $_code ?>_name" class="required"><em>*</em><?php echo $this->__('Card Holder Name'); ?></label>
|
86 |
+
<div class="input-box">
|
87 |
+
<input data-checkout="cardholderName" name="payment[cardholderName]" id="<?php echo $_code ?>_name" type="text" class="input-text required-entry" type="text"/>
|
88 |
+
</div>
|
89 |
+
</div>
|
90 |
+
</li>
|
91 |
+
|
92 |
+
<?php
|
93 |
+
//mexico não possui documento no checkout
|
94 |
+
if( $country != 'mlm'): ?>
|
95 |
+
|
96 |
+
<li>
|
97 |
+
<div class="box-input">
|
98 |
+
<label for="<?php echo $_code ?>_doc" class="required"><em>*</em><?php echo $this->__('Document Number'); ?></label>
|
99 |
+
<div class="input-box">
|
100 |
+
<?php if( $country == 'mlb'): ?>
|
101 |
+
<input type="hidden" data-checkout="docType" id="docType" type="text" value="CPF"/>
|
102 |
+
<?php elseif($country == 'mla'): ?>
|
103 |
+
<select optionkey="id" name="payment[docType]" id="docType" data-checkout="docType">
|
104 |
+
<option value="DNI">DNI</option>
|
105 |
+
<option value="CI">Cédula</option>
|
106 |
+
<option value="LC">L.C.</option>
|
107 |
+
<option value="LE">L.E.</option>
|
108 |
+
<option value="Otro">Otro</option>
|
109 |
+
</select>
|
110 |
+
<?php endif; ?>
|
111 |
+
|
112 |
+
<input name="payment[doc_number]" data-checkout="docNumber" id="<?php echo $_code ?>_doc" type="text" class="input-text required-entry validate-digits" type="text" maxlength="11" />
|
113 |
+
</div>
|
114 |
+
</div>
|
115 |
+
</li>
|
116 |
+
<?php endif; ?>
|
117 |
+
|
118 |
+
<li>
|
119 |
+
<div class="box-input">
|
120 |
+
<label for="<?php echo $_code ?>_code" class="required"><em>*</em><?php echo $this->__('CVV'); ?></label>
|
121 |
+
<div class="input-box">
|
122 |
+
<input data-checkout="securityCode" id="<?php echo $_code ?>_code" type="text" class="input-text required-entry validate-digits" type="text"/>
|
123 |
+
</div>
|
124 |
+
</div>
|
125 |
+
</li>
|
126 |
+
|
127 |
+
<li>
|
128 |
+
<div class="box-input">
|
129 |
+
<label for="<?php echo $_code ?>_installments" class="required"><em>*</em><?php echo $this->__('Installments'); ?></label>
|
130 |
+
<div class="input-box box-installments">
|
131 |
+
<select name="payment[installments]" id="installments" data-checkout="installments" id="<?php echo $_code ?>_installments" class="input-text required-entry validate-digits">
|
132 |
+
<option><?php echo $this->__('Enter the card number'); ?></option>
|
133 |
+
</select>
|
134 |
+
</div>
|
135 |
+
</div>
|
136 |
+
|
137 |
+
<div id="status">
|
138 |
+
<div class="box">
|
139 |
+
<div class="loading-mp">
|
140 |
+
<img src="<?php echo $this->getSkinUrl('mercadopago/images/loading.gif') ;?>" alt="loading" />
|
141 |
+
</div>
|
142 |
+
|
143 |
+
<div class="text-mp">
|
144 |
+
<p class="msg-status msg-loading"><?php echo $this->__('Validating Data'); ?>...</p>
|
145 |
+
<p class="msg-status error-011"><?php echo $this->__('An error has occurred. Please refresh the page.'); ?></p>
|
146 |
+
<p class="msg-status error-E301"><?php echo $this->__('Card Number is invalid.'); ?></p>
|
147 |
+
<p class="msg-status error-E302"><?php echo $this->__('CVV is invalid.'); ?></p>
|
148 |
+
<p class="msg-status error-316"><?php echo $this->__('Card Holder Name is invalid.'); ?></p>
|
149 |
+
<p class="msg-status error-324"><?php echo $this->__('Document Number is invalid.'); ?></p>
|
150 |
+
<p class="msg-status error-325"><?php echo $this->__('Month is invalid.'); ?></p>
|
151 |
+
<p class="msg-status error-326"><?php echo $this->__('Year is invalid.'); ?></p>
|
152 |
+
<p class="msg-status error-other"><?php echo $this->__('Please validate your data.'); ?></p>
|
153 |
+
</div>
|
154 |
+
</div>
|
155 |
+
</div>
|
156 |
+
<input type="hidden" id="amount" value="<?php echo $this->helper('checkout/cart')->getQuote()->getGrandTotal(); ?>">
|
157 |
+
<input type="hidden" name="payment[card_token_id]" type="text" value="" id="card_token_id" />
|
158 |
+
<input type="hidden" name="payment[trunc_card]" type="text" value="" id="trunc_card" />
|
159 |
+
|
160 |
+
<?php if($this->getMethod()->getConfigData('banner_checkout') != ""): ?>
|
161 |
+
<img src="<?php echo $this->getMethod()->getConfigData('banner_checkout'); ?>" class="banner_checkout_mp"/>
|
162 |
+
<?php endif;?>
|
163 |
+
|
164 |
+
<div style="display: none;">
|
165 |
+
<span id="mercadopago-text-currency"><?php echo $this->__('$'); ?></span>
|
166 |
+
<span id="mercadopago-text-choice"><?php echo $this->__('Choice'); ?></span>
|
167 |
+
<span id="mercadopago-text-default-issuer"><?php echo $this->__('Default issuer'); ?></span>
|
168 |
+
<span id="mercadopago-country"><?php echo $country; ?></span>
|
169 |
+
</div>
|
170 |
+
</li>
|
171 |
+
</ul>
|
172 |
+
|
173 |
+
|
174 |
+
</div>
|
175 |
+
</fieldset>
|
app/design/frontend/base/default/template/mercadopago/transparent/info.phtml
ADDED
@@ -0,0 +1,33 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if($this->getOrder()->getAdditionalInformation('cardholderName') != ""): ?>
|
4 |
+
<p><?php echo $this->__('Card Holder Name: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('cardholderName'))); ?></p>
|
5 |
+
<?php endif; ?>
|
6 |
+
|
7 |
+
<?php if($this->getOrder()->getAdditionalInformation('trunc_card') != ""): ?>
|
8 |
+
<p><?php echo $this->__('Card Number: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('trunc_card'))); ?></p>
|
9 |
+
<?php endif; ?>
|
10 |
+
|
11 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_method') != ""): ?>
|
12 |
+
<p><?php echo $this->__('Payment Method: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_method'))); ?></p>
|
13 |
+
<?php endif; ?>
|
14 |
+
|
15 |
+
<?php if($this->getOrder()->getAdditionalInformation('expiration_date') != ""): ?>
|
16 |
+
<p><?php echo $this->__('Expiration Date: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('expiration_date'))); ?></p>
|
17 |
+
<?php endif; ?>
|
18 |
+
|
19 |
+
<?php if($this->getOrder()->getAdditionalInformation('installments') != ""): ?>
|
20 |
+
<p><?php echo $this->__('Installments: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('installments'))); ?></p>
|
21 |
+
<?php endif; ?>
|
22 |
+
|
23 |
+
<?php if($this->getOrder()->getAdditionalInformation('statement_descriptor') != ""): ?>
|
24 |
+
<p><?php echo $this->__('Statement Descriptor: %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('statement_descriptor'))); ?></p>
|
25 |
+
<?php endif; ?>
|
26 |
+
|
27 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
28 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
29 |
+
<?php endif; ?>
|
30 |
+
|
31 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
32 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?></p>
|
33 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/mercadopago/transparent/success.phtml
ADDED
@@ -0,0 +1,229 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<style>
|
2 |
+
#btn-boleto-mercadopago{
|
3 |
+
font-size: 1.25em;
|
4 |
+
text-align: center;
|
5 |
+
line-height: 1.25em;
|
6 |
+
padding: 6px 12px;
|
7 |
+
font-family: 'Lato',sans-serif;
|
8 |
+
font-weight: 400;
|
9 |
+
background-color: #36A1F1;
|
10 |
+
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#36A1F1),color-stop(100%,#0F79C9));
|
11 |
+
background-image: -webkit-linear-gradient(#36A1F1,#0F79C9);
|
12 |
+
background-image: -moz-linear-gradient(#36A1F1,#0F79C9);
|
13 |
+
background-image: -o-linear-gradient(#36A1F1,#0F79C9);
|
14 |
+
background-image: linear-gradient(#36A1F1,#0F79C9);
|
15 |
+
-webkit-box-shadow: inset 0 1px #97DCFF;
|
16 |
+
box-shadow: 0 1px #97DCFF inset;
|
17 |
+
color: #FFF!important;
|
18 |
+
border: 1px solid #0D6FB9;
|
19 |
+
border-radius: 4px 4px 4px 4px;
|
20 |
+
cursor: pointer;
|
21 |
+
display: inline-block;
|
22 |
+
text-decoration:none;
|
23 |
+
}
|
24 |
+
#btn-boleto-mercadopago:hover{
|
25 |
+
background-color:#4CBFF8;
|
26 |
+
background-image:linear-gradient(#4CBFF8,#1699DF);
|
27 |
+
box-shadow:0 1px #B6EBFF inset;
|
28 |
+
background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#4CBFF8),color-stop(100%,#1699DF));
|
29 |
+
background-image:-webkit-linear-gradient(#4CBFF8,#1699DF);
|
30 |
+
background-image:-moz-linear-gradient(#4CBFF8,#1699DF);
|
31 |
+
background-image:-o-linear-gradient(#4CBFF8,#1699DF);
|
32 |
+
background-image:linear-gradient(#4CBFF8,#1699DF);-webkit-box-shadow:inset 0 1px #B6EBFF;
|
33 |
+
border:1px solid #1890D3;
|
34 |
+
color:#FFF;
|
35 |
+
text-decoration:none;
|
36 |
+
}
|
37 |
+
#box-mercadopago{
|
38 |
+
float:left;
|
39 |
+
text-align: left;
|
40 |
+
margin: 10px 0;
|
41 |
+
}
|
42 |
+
|
43 |
+
#title-mercadopago{
|
44 |
+
text-transform:uppercase;
|
45 |
+
}
|
46 |
+
|
47 |
+
#logo-mercadopago{
|
48 |
+
margin: 10px 0;
|
49 |
+
}
|
50 |
+
</style>
|
51 |
+
|
52 |
+
<div id="box-mercadopago">
|
53 |
+
|
54 |
+
<?php
|
55 |
+
//mensagem apenas para checkout transparent
|
56 |
+
if(!isset($_REQUEST['preference_id'])):
|
57 |
+
?>
|
58 |
+
<h5>
|
59 |
+
<b>
|
60 |
+
<?php echo $this->__('Payment Method'); ?>
|
61 |
+
</b>
|
62 |
+
</h5>
|
63 |
+
|
64 |
+
<?php
|
65 |
+
$order = $this->getOrder();
|
66 |
+
|
67 |
+
$total = $order->getBaseGrandTotal();
|
68 |
+
|
69 |
+
if (!$total) {
|
70 |
+
$total = $order->getBasePrice() + $order->getBaseShippingAmount();
|
71 |
+
}
|
72 |
+
|
73 |
+
$total = number_format($total, 2, '.', '');
|
74 |
+
|
75 |
+
$payment = $order->getPayment();
|
76 |
+
|
77 |
+
if($payment->getAdditionalInformation('payment_type_id') == 'ticket'):
|
78 |
+
?>
|
79 |
+
|
80 |
+
<p>
|
81 |
+
<?php echo $this->__('Generate the ticket and pay it wherever you want.'); ?>
|
82 |
+
</p>
|
83 |
+
<p>
|
84 |
+
<?php echo $this->__('Will be approved within 2 business days.'); ?>
|
85 |
+
</p>
|
86 |
+
<a href="<?php echo urldecode($this->htmlEscape($payment->getAdditionalInformation('activation_uri'))); ?>" target="_blank" id="btn-boleto-mercadopago">
|
87 |
+
<?php echo $this->__('Generate Ticket'); ?>
|
88 |
+
</a>
|
89 |
+
|
90 |
+
<?php else: ?>
|
91 |
+
|
92 |
+
<?php
|
93 |
+
$title = "";
|
94 |
+
$msg = "";
|
95 |
+
|
96 |
+
switch ($payment->getAdditionalInformation('status')){
|
97 |
+
case "approved":
|
98 |
+
$title = $this->__('Done, your payment was accredited!');
|
99 |
+
$msg = "";
|
100 |
+
break;
|
101 |
+
|
102 |
+
case "in_process":
|
103 |
+
$title = $this->__('We are processing the payment.');
|
104 |
+
$msg = $this->__('In less than 2 business days we will tell you by e-mail if it is accredited or if we need more information.');
|
105 |
+
break;
|
106 |
+
|
107 |
+
case "pending":
|
108 |
+
$title = $this->__('We are processing the payment.');
|
109 |
+
$msg = $this->__('In less than an hour we will send you by e-mail the result.');
|
110 |
+
break;
|
111 |
+
|
112 |
+
case "rejected":
|
113 |
+
$title = $this->__('We could not process your payment.');
|
114 |
+
|
115 |
+
switch ($payment->getAdditionalInformation('status_detail')){
|
116 |
+
case "cc_rejected_bad_filled_card_number":
|
117 |
+
$msg = $this->__('Check the card number.');
|
118 |
+
break;
|
119 |
+
|
120 |
+
case "cc_rejected_bad_filled_date":
|
121 |
+
$msg = $this->__('Check the expiration date.');
|
122 |
+
break;
|
123 |
+
|
124 |
+
case "cc_rejected_bad_filled_other":
|
125 |
+
$msg = $this->__('Check the data.');
|
126 |
+
break;
|
127 |
+
|
128 |
+
case "cc_rejected_bad_filled_security_code":
|
129 |
+
$msg = $this->__('Check the security code.');
|
130 |
+
break;
|
131 |
+
|
132 |
+
case "cc_rejected_blacklist":
|
133 |
+
$msg = $this->__('We could not process your payment.');
|
134 |
+
break;
|
135 |
+
|
136 |
+
case "cc_rejected_call_for_authorize":
|
137 |
+
$msg = $this->__('You must authorize to %s the payment of $ %s to MercadoPago.', strtoupper($payment->getAdditionalInformation('payment_method')), strtoupper($total));
|
138 |
+
break;
|
139 |
+
|
140 |
+
case "cc_rejected_card_disabled":
|
141 |
+
$msg = $this->__('Call %s to activate your card.<br/>The phone is on the back of your card.', strtoupper($payment->getAdditionalInformation('payment_method')));
|
142 |
+
break;
|
143 |
+
|
144 |
+
case "cc_rejected_card_error":
|
145 |
+
$msg = $this->__('We could not process your payment.');
|
146 |
+
break;
|
147 |
+
|
148 |
+
case "cc_rejected_duplicated_payment":
|
149 |
+
$msg = $this->__('You already made a payment by that value.<br/>If you need to repay, use another card or other payment method.');
|
150 |
+
break;
|
151 |
+
|
152 |
+
case "cc_rejected_high_risk":
|
153 |
+
$msg = $this->__('Your payment was rejected.<br/>Choose another payment method, we recommend cash methods.');
|
154 |
+
break;
|
155 |
+
|
156 |
+
case "cc_rejected_insufficient_amount":
|
157 |
+
$msg = $this->__('Your %s do not have sufficient funds.', strtoupper($payment->getAdditionalInformation('payment_method')));
|
158 |
+
break;
|
159 |
+
|
160 |
+
case "cc_rejected_invalid_installments":
|
161 |
+
$msg = $this->__('%s does not process payments in %s installments.', strtoupper($payment->getAdditionalInformation('payment_method')), $payment->getAdditionalInformation('installments'));
|
162 |
+
break;
|
163 |
+
|
164 |
+
case "cc_rejected_max_attempts":
|
165 |
+
$msg = $this->__('You have got to the limit of allowed attempts.<br/>Choose another card or another payment method.');
|
166 |
+
break;
|
167 |
+
|
168 |
+
case "cc_rejected_other_reason":
|
169 |
+
$msg = $this->__('%s did not process the payment.', strtoupper($payment->getAdditionalInformation('payment_method')));
|
170 |
+
break;
|
171 |
+
}
|
172 |
+
break;
|
173 |
+
}
|
174 |
+
?>
|
175 |
+
|
176 |
+
<p>
|
177 |
+
<b id="title-mercadopago">
|
178 |
+
<?php echo $title; ?>
|
179 |
+
</b>
|
180 |
+
</p>
|
181 |
+
<p>
|
182 |
+
<i>
|
183 |
+
<?php echo $msg; ?>
|
184 |
+
</i>
|
185 |
+
</p>
|
186 |
+
|
187 |
+
<br />
|
188 |
+
|
189 |
+
<?php if($payment->getAdditionalInformation('cardholderName') != ""): ?>
|
190 |
+
<p><?php echo $this->__('Card Holder Name: %s', $this->htmlEscape($payment->getAdditionalInformation('cardholderName'))); ?></p>
|
191 |
+
<?php endif; ?>
|
192 |
+
|
193 |
+
<?php if($payment->getAdditionalInformation('trunc_card') != ""): ?>
|
194 |
+
<p><?php echo $this->__('Card Number: %s', $this->htmlEscape($payment->getAdditionalInformation('trunc_card'))); ?></p>
|
195 |
+
<?php endif; ?>
|
196 |
+
|
197 |
+
<?php if($payment->getAdditionalInformation('payment_method') != ""): ?>
|
198 |
+
<p><?php echo $this->__('Payment Method: %s', $this->htmlEscape($payment->getAdditionalInformation('payment_method'))); ?></p>
|
199 |
+
<?php endif; ?>
|
200 |
+
|
201 |
+
<?php if($payment->getAdditionalInformation('expiration_date') != ""): ?>
|
202 |
+
<p><?php echo $this->__('Expiration Date: %s', $this->htmlEscape($payment->getAdditionalInformation('expiration_date'))); ?></p>
|
203 |
+
<?php endif; ?>
|
204 |
+
|
205 |
+
<?php if($payment->getAdditionalInformation('installments') != ""): ?>
|
206 |
+
<p><?php echo $this->__('Installments: %s', $this->htmlEscape($payment->getAdditionalInformation('installments'))); ?></p>
|
207 |
+
<?php endif; ?>
|
208 |
+
|
209 |
+
<?php if($payment->getAdditionalInformation('statement_descriptor') != ""): ?>
|
210 |
+
<p><?php echo $this->__('Statement Descriptor: %s', $this->htmlEscape($payment->getAdditionalInformation('statement_descriptor'))); ?></p>
|
211 |
+
<?php endif; ?>
|
212 |
+
|
213 |
+
<?php if($payment->getAdditionalInformation('payment_id') != ""): ?>
|
214 |
+
<p><?php echo $this->__('Payment id (MercadoPago): %s', $this->htmlEscape($payment->getAdditionalInformation('payment_id'))); ?></p>
|
215 |
+
<?php endif; ?>
|
216 |
+
|
217 |
+
<?php if($payment->getAdditionalInformation('status') != ""): ?>
|
218 |
+
<p><?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($payment->getAdditionalInformation('status')), $this->htmlEscape($payment->getAdditionalInformation('status_detail'))); ?></p>
|
219 |
+
<?php endif; ?>
|
220 |
+
|
221 |
+
|
222 |
+
<?php endif; ?>
|
223 |
+
|
224 |
+
<div id="logo-mercadopago">
|
225 |
+
<img src="https://secure.mlstatic.com/components/resources/mp/desktop/css/assets/desktop-logo-mercadopago.png" />
|
226 |
+
</div>
|
227 |
+
<?php endif; ?>
|
228 |
+
</div>
|
229 |
+
|
app/design/frontend/base/default/template/mercadopago/transparent/sucesso.phtml
ADDED
@@ -0,0 +1,103 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
$page_redirec = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true) . "checkout/onepage/success";
|
3 |
+
?>
|
4 |
+
|
5 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
window.onload = function() {
|
9 |
+
contagem_tempo();
|
10 |
+
};
|
11 |
+
|
12 |
+
function contagem_tempo(){
|
13 |
+
if(document.getElementById("segundos_redirect") != null){
|
14 |
+
var segundos = document.getElementById("segundos_redirect").innerHTML;
|
15 |
+
|
16 |
+
segundos = segundos - 1;
|
17 |
+
|
18 |
+
if (segundos == -1) {
|
19 |
+
segundos = 0;
|
20 |
+
location.href = "<?php echo $page_redirec; ?>";
|
21 |
+
return;
|
22 |
+
}
|
23 |
+
document.getElementById("segundos_redirect").innerHTML = segundos ;
|
24 |
+
timerID = setTimeout("contagem_tempo()", 1000);
|
25 |
+
}
|
26 |
+
}
|
27 |
+
|
28 |
+
</script>
|
29 |
+
|
30 |
+
<div id="mensagem_mp">
|
31 |
+
|
32 |
+
<?php if($payment_method_id == "bolbradesco"): ?>
|
33 |
+
|
34 |
+
<?php
|
35 |
+
/*
|
36 |
+
*
|
37 |
+
* Processo para boleto
|
38 |
+
*
|
39 |
+
*/
|
40 |
+
?>
|
41 |
+
|
42 |
+
<h4>Pronto, seu pedido foi gerado com sucesso!</h4>
|
43 |
+
|
44 |
+
<p>
|
45 |
+
Gere o boleto e pague-o onde quiser.
|
46 |
+
</p>
|
47 |
+
<p>
|
48 |
+
<a href="<?php echo $payment['activation_uri']; ?>" target="_blank" class="btn-boleto"> Gerar boleto </a>
|
49 |
+
</p>
|
50 |
+
|
51 |
+
<p>Será aprovado até 2 dias úteis.</p>
|
52 |
+
|
53 |
+
<?php else: ?>
|
54 |
+
|
55 |
+
<?php
|
56 |
+
/*
|
57 |
+
*
|
58 |
+
* Processo para cartão
|
59 |
+
*
|
60 |
+
*/
|
61 |
+
?>
|
62 |
+
|
63 |
+
<?php if($status == "approved"): ?>
|
64 |
+
|
65 |
+
<h4>Pronto, seu pagamento foi aprovado!</h4>
|
66 |
+
|
67 |
+
<p>
|
68 |
+
<img src="<?php echo $this->getSkinUrl('mercadopago/images/loading.gif') ;?>" alt="loading" />
|
69 |
+
Em <span id="segundos_redirect">6</span> segundos <a href="<?php echo $page_redirec; ?>">você será redirecionado para tela de finalização.</a>
|
70 |
+
</p>
|
71 |
+
|
72 |
+
<?php elseif($status == "pending" || $status == "in_process"): ?>
|
73 |
+
|
74 |
+
<h4>Estamos processando o pagamento</h4>
|
75 |
+
<p class="status"><?php echo $mensagem; ?></p>
|
76 |
+
|
77 |
+
<p>
|
78 |
+
<img src="<?php echo $this->getSkinUrl('mercadopago/images/loading.gif') ;?>" alt="loading" />
|
79 |
+
Em <span id="segundos_redirect">10</span> segundos <a href="<?php echo $page_redirec; ?>">você será redirecionado para tela de finalização.</a>
|
80 |
+
</p>
|
81 |
+
|
82 |
+
<?php elseif($status == "rejected"): ?>
|
83 |
+
|
84 |
+
<h4>O seu pagamento não foi processado.</h4>
|
85 |
+
<p class="status"><?php echo $mensagem; ?></p>
|
86 |
+
<p><a class="voltar" href="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true); ?>sales/order/reorder/order_id/<?php echo $order->getId(); ?> ">Voltar para o carrinho</a></p>
|
87 |
+
|
88 |
+
<?php elseif(!$status): ?>
|
89 |
+
|
90 |
+
<h4>O seu pagamento não foi processado.</h4>
|
91 |
+
<p><a class="voltar" href="<?php echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK,true); ?>">Voltar</a></p>
|
92 |
+
|
93 |
+
<?php endif; ?>
|
94 |
+
|
95 |
+
<?php endif; ?>
|
96 |
+
|
97 |
+
</div>
|
98 |
+
|
99 |
+
|
100 |
+
|
101 |
+
<div id="logo_mp">
|
102 |
+
<img src="https://secure.mlstatic.com/components/resources/mp/desktop/css/assets/desktop-logo-mercadopago.png" />
|
103 |
+
</div>
|
app/design/frontend/base/default/template/mercadopago/transparent_boleto/form.phtml
ADDED
@@ -0,0 +1,20 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
|
2 |
+
<fieldset class="form-list">
|
3 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
4 |
+
|
5 |
+
<?php $_code = $this->getMethodCode(); ?>
|
6 |
+
<?php $_country = $this->getMethodCountry(); ?>
|
7 |
+
|
8 |
+
<?php if($this->getMethod()->getConfigData('banner_checkout') != ""): ?>
|
9 |
+
<img src="<?php echo $this->getMethod()->getConfigData('banner_checkout'); ?>" class="banner_checkout_mp"/>
|
10 |
+
<?php endif;?>
|
11 |
+
|
12 |
+
<div id="mp-form-boleto">
|
13 |
+
<ul class="form-list form-mercadopago" id="payment_form_<?php echo $_code ?>" style="display:none;" >
|
14 |
+
<li style="display:none;">
|
15 |
+
<input type="hidden" name="payment[payment_method_boleto]" type="text" value="bolbradesco"/>
|
16 |
+
</li>
|
17 |
+
</ul>
|
18 |
+
</div>
|
19 |
+
|
20 |
+
</fieldset>
|
app/design/frontend/base/default/template/mercadopago/transparent_boleto/info.phtml
ADDED
@@ -0,0 +1,23 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if(Mage::app()->getRequest()->getRouteName()=="sales"): ?>
|
4 |
+
|
5 |
+
|
6 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
7 |
+
<p><?php echo $this->__('Numero de Pagamento (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
8 |
+
<?php endif; ?>
|
9 |
+
|
10 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
11 |
+
<p>
|
12 |
+
<?php echo $this->__('Status de Pagamento: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?>
|
13 |
+
</p>
|
14 |
+
<?php endif; ?>
|
15 |
+
|
16 |
+
<p>Gere o boleto e pague-o onde quiser.</p>
|
17 |
+
<p>Será aprovado até 2 dias úteis.</p>
|
18 |
+
<a href="<?php echo urldecode($this->htmlEscape($this->getOrder()->getAdditionalInformation('activation_uri'))); ?>" target="_blank">Gerar Boleto</a>
|
19 |
+
|
20 |
+
<?php endif;?>
|
21 |
+
|
22 |
+
|
23 |
+
|
app/design/frontend/base/default/template/mercadopago/transparent_ticket/form.phtml
ADDED
@@ -0,0 +1,31 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
|
2 |
+
<fieldset class="form-list">
|
3 |
+
<link rel="stylesheet" href="<?php echo $this->getSkinUrl('mercadopago/css/style.css'); ?>" />
|
4 |
+
<?php $_code = $this->getMethodCode(); ?>
|
5 |
+
<?php $_country = $this->getMethodCountry(); ?>
|
6 |
+
|
7 |
+
<?php if($this->getMethod()->getConfigData('banner_checkout') != ""): ?>
|
8 |
+
<img src="<?php echo $this->getMethod()->getConfigData('banner_checkout'); ?>" class="banner_checkout_mp"/>
|
9 |
+
<?php endif;?>
|
10 |
+
|
11 |
+
<div id="mp-form-boleto">
|
12 |
+
<ul class="form-list form-mercadopago" id="payment_form_<?php echo $_code ?>" style="display:none;" >
|
13 |
+
<li>
|
14 |
+
|
15 |
+
<?php
|
16 |
+
$optionsTicket = $this->getTicketsOptions();
|
17 |
+
if(count($optionsTicket) == 1){ ?>
|
18 |
+
<input type="hidden" name="payment[payment_method_boleto]" type="text" value="<?php echo $optionsTicket[0]['id']; ?>" id="payment_method_boleto" />
|
19 |
+
<?php } else { ?>
|
20 |
+
|
21 |
+
<?php
|
22 |
+
foreach($optionsTicket as $ticket){ ?>
|
23 |
+
<input type="radio" name="payment[payment_method_boleto]" class="optionsTicketMp" value="<?php echo $ticket['id']; ?>"> <img src="<?php echo $ticket['secure_thumbnail']; ?>"> (<?php echo $ticket['name']; ?>) <br/>
|
24 |
+
<?php } ?>
|
25 |
+
<?php } ?>
|
26 |
+
</li>
|
27 |
+
|
28 |
+
</ul>
|
29 |
+
</div>
|
30 |
+
|
31 |
+
</fieldset>
|
app/design/frontend/base/default/template/mercadopago/transparent_ticket/info.phtml
ADDED
@@ -0,0 +1,27 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<p><strong><?php echo $this->getMethod()->getTitle() ?></strong></p>
|
2 |
+
|
3 |
+
<?php if(Mage::app()->getRequest()->getRouteName()=="sales"): ?>
|
4 |
+
|
5 |
+
|
6 |
+
<?php if($this->getOrder()->getAdditionalInformation('payment_id') != ""): ?>
|
7 |
+
<p><?php echo $this->__('Payment Id (MercadoPago): %s', $this->htmlEscape($this->getOrder()->getAdditionalInformation('payment_id'))); ?></p>
|
8 |
+
<?php endif; ?>
|
9 |
+
|
10 |
+
<?php if($this->getOrder()->getAdditionalInformation('status') != ""): ?>
|
11 |
+
<p>
|
12 |
+
<?php echo $this->__('Payment Status: %s (%s)', $this->htmlEscape($this->getOrder()->getAdditionalInformation('status')), $this->htmlEscape($this->getOrder()->getAdditionalInformation('status_detail'))); ?>
|
13 |
+
</p>
|
14 |
+
<?php endif; ?>
|
15 |
+
|
16 |
+
<p>
|
17 |
+
<?php echo $this->__('Generate the ticket and pay it wherever you want.'); ?>
|
18 |
+
</p>
|
19 |
+
<p>
|
20 |
+
<?php echo $this->__('Will be approved within 2 business days.'); ?>
|
21 |
+
</p>
|
22 |
+
<a href="<?php echo urldecode($this->htmlEscape($this->getOrder()->getAdditionalInformation('activation_uri'))); ?>" target="_blank">
|
23 |
+
<?php echo $this->__('Generate Ticket'); ?>
|
24 |
+
</a>
|
25 |
+
|
26 |
+
<?php endif;?>
|
27 |
+
|
app/etc/modules/MercadoPago_Standard.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<MercadoPago_Standard>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</MercadoPago_Standard>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/etc/modules/MercadoPago_Transparent.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<MercadoPago_Transparent>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</MercadoPago_Transparent>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/etc/modules/MercadoPago_TransparentBoleto.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<MercadoPago_TransparentBoleto>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</MercadoPago_TransparentBoleto>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/etc/modules/MercadoPago_TransparentTicket.xml
ADDED
@@ -0,0 +1,9 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<MercadoPago_TransparentTicket>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</MercadoPago_TransparentTicket>
|
8 |
+
</modules>
|
9 |
+
</config>
|
app/locale/es_AR/mercadopago.csv
ADDED
@@ -0,0 +1,114 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
"Enabled","Activo"
|
2 |
+
|
3 |
+
"MercadoPago - Configuration", "MercadoPago - Configuración"
|
4 |
+
"Credit Card - MercadoPago","Tarjetas de crédito - MercadoPago"
|
5 |
+
|
6 |
+
"MercadoPago Transparent - Credit Card","MercadoPago Transparente - Tarjeta de Crédito"
|
7 |
+
"Payment Title","TÃtulo"
|
8 |
+
"Category of your store","Categoria de la tienda"
|
9 |
+
"Choose the status of approved orders","Elija el estado de los pedidos para pagos Aprobados"
|
10 |
+
"Choose the status of refunded orders","Elija el estado de los pedidos para pagos Devueltos"
|
11 |
+
"Choose the status when payment is pending","Elija el estado de los pedidos para pagos Pendientes"
|
12 |
+
"Choose the status when client open a mediation","Elija el estado de los pedidos para pagos en Disputa"
|
13 |
+
"Choose the status when payment was reject","Elija el estado de los pedidos para pagos Rechazados"
|
14 |
+
"Choose the status when payment was canceled","Elija el estado de los pedidos para pagos Cancelados"
|
15 |
+
"Checkout Position","Posición en el Checkout"
|
16 |
+
"To manage the status available go to System > Order Statuses","Para gerenciar los estados disponibles vaya a 'System > Order Statuses'"
|
17 |
+
|
18 |
+
"MercadoPago Transparent - Ticket","MercadoPago Transparente - Tickets de pago"
|
19 |
+
|
20 |
+
"MercadoPago Standard - Credit Card, Ticket and Account Money","MercadoPago Standard - Tarjetas, Tickets y Dinero en Cuenta"
|
21 |
+
"Country","PaÃs"
|
22 |
+
"Type Checkout","Tipo de Checkout"
|
23 |
+
"Auto Redirect","Auto-Redireccionar"
|
24 |
+
"Exclude Payment Methods","Excluir Medios de Pago"
|
25 |
+
"Maximum number of accepted installments","Numero maximo de cuotas"
|
26 |
+
"Width Checkout Iframe","Ancho de la zona del Checkout (Iframe)"
|
27 |
+
"Height Checkout Iframe","Alto de la zona del Checkout (Iframe)"
|
28 |
+
"Auto-redirect the buyer when finishing the payment.","Auto-Redireccionar al comprador al finalizar el pago."
|
29 |
+
"Select payment methods not accepted","Seleccione los medios de pago no aceptados"
|
30 |
+
"For the operation of the Checkout Transparent Ticket is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'",""Para el funcionamento del Checkout Transparente - Tickets de pago, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'""
|
31 |
+
"For the operation of the Checkout Standard is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'","Para el funcionamento del Checkout Standard, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'"
|
32 |
+
|
33 |
+
"Card Number","Número de Tarjeta"
|
34 |
+
"Month","Mes"
|
35 |
+
"Year","Año"
|
36 |
+
"Card Holder Name","Titular de la Tarjeta"
|
37 |
+
"Document Number","Número de Documento"
|
38 |
+
"CVV","Código de Seguridad"
|
39 |
+
"Installments","Cuotas"
|
40 |
+
"Banks","Bancos"
|
41 |
+
|
42 |
+
"Enter the card number","Digite el número de tarjeta"
|
43 |
+
"Validating Data","Validando datos"
|
44 |
+
"An error has occurred. Please refresh the page.","Ocurrio un error. Por favor, actualice la página."
|
45 |
+
"Card number is invalid.","Número de Tarjeta inválido."
|
46 |
+
"CVV is invalid.","Código de Seguridad inválido."
|
47 |
+
"Card Holder Name is invalid.","Nombre de titular de tarjeta inválido."
|
48 |
+
"Document Number is invalid.","Número de Documento inválido."
|
49 |
+
"Year is invalid.","Año inválido."
|
50 |
+
"Month is invalid.","Mes inválido."
|
51 |
+
"Please validate your data.","Por favor, valide los datos"
|
52 |
+
|
53 |
+
"Card Number: %s","Número de Tarjeta: %s"
|
54 |
+
"Card Holder Name: %s","Titular de la Tarjeta: %s"
|
55 |
+
"Payment Method: %s","Medio de pago: %s"
|
56 |
+
"Expiration Date: %s","Fecha de Expiración: %s"
|
57 |
+
"Installments: %s","Cuotas: %s"
|
58 |
+
"Statement Descriptor: %s","Identificación en la Factura de la Tarjeta de Crédito: %s"
|
59 |
+
"Payment Id (MercadoPago): %s","Número de Pago (MercadoPago): %s"
|
60 |
+
"Payment Status: %s (%s)","Estado del Pago: %s (%s)"
|
61 |
+
|
62 |
+
"Click on the link to generate the ticket","Clique en el link para mostrar el ticket de pago"
|
63 |
+
"Generate Ticket","Generar ticket de pago"
|
64 |
+
|
65 |
+
"Payment Method","Medio de pago"
|
66 |
+
|
67 |
+
"Generate the ticket and pay it wherever you want.","Genere el ticket de pago y pague"
|
68 |
+
"Will be approved within 2 business days.","Será aprobado en hasta 2 dÃas hábiles"
|
69 |
+
|
70 |
+
"Done, your payment was accredited!","¡Listo, se acreditó tu pago!"
|
71 |
+
"We are processing the payment.","Estamos procesando el pago."
|
72 |
+
"In less than 2 business days we will tell you by e-mail if it is accredited or if we need more information.","Estamos procesando el pago. En menos de 2 dÃas hábiles te avisaremos por e-mail si se acreditó o si necesitamos más información."
|
73 |
+
"In less than an hour we will send you by e-mail the result.","Estamos procesando el pago. En menos de una hora te avisaremos por e-mail el resultado."
|
74 |
+
|
75 |
+
"Check the card number.","Revisa el número de la tarjeta."
|
76 |
+
"Check the expiration date.","Revisa la fecha de vencimiento."
|
77 |
+
"Check the data.","Revisa los datos."
|
78 |
+
"Check the security code.","Revisa el código de seguridad."
|
79 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
80 |
+
|
81 |
+
"You must authorize to %s the payment of $ %s to MercadoPago.","Debes llamar y autorizar ante %s el pago de $ %s a MercadoPago"
|
82 |
+
"Call %s to activate your card.<br/>The phone is on the back of your card.","Llama a %s para que active tu tarjeta.<br/>El teléfono está al dorso de tu tarjeta."
|
83 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
84 |
+
"You already made a payment by that value.<br/>If you need to repay, use another card or other payment method.","Ya hiciste un pago por ese valor.<br/>Si necesitas volver a pagar usa otra tarjeta u otro medio de pago."
|
85 |
+
"Your payment was rejected.<br/>Choose another payment method, we recommend cash methods.","Tu pago fue rechazado.<br/>Elige otro de los medios de pago, te recomendamos con medios de pago en efectivo."
|
86 |
+
"Your %s do not have sufficient funds.","Tu %s no tiene fondos suficientes."
|
87 |
+
"%s does not process payments in %s installments.","%s no procesa pagos en %s cuotas."
|
88 |
+
"You have got to the limit of allowed attempts.<br/>Choose another card or another payment method.","Llegaste al lÃmite de intentos permitidos.<br/>Elige otra tarjeta u otro medio de pago."
|
89 |
+
"%s did not process the payment.","%s no procesó el pago."
|
90 |
+
|
91 |
+
"You can not make payments to users in other countries.","No puedes realizar pagos a usuarios de otros paÃses."
|
92 |
+
"Payment Method selected does not process payments in installments selected. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos en la cuota seleccionada. Elige otra tarjeta u otro medio de pago."
|
93 |
+
"We could not process your payment. Error code: 126.","No pudimos procesar tu pago. Código de error: 126."
|
94 |
+
"Payment Method selected does not process payments for the selected amount. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos del monto seleccionado. Elige otro medio de pago."
|
95 |
+
"We could not process your payment. Error code: 145.","No pudimos procesar tu pago. Código de error: 145"
|
96 |
+
"You can not make payments. Error code: 150.","No puedes realizar pagos. Código de error: 150."
|
97 |
+
"You can not make payments.","No puedes realizar pagos."
|
98 |
+
"We could not process your payment. Error code: 160.","No pudimos procesar tu pago. Código de error: 160."
|
99 |
+
"Payment Method selected is not available at this time. Choose another card or another payment method.","El medio de pago seleccionado no está disponible en este momento. Elige otra tarjeta u otro medio de pago."
|
100 |
+
"You made a similar payment moments ago. Try again in a few minutes.","Realizaste un pago similar hace instantes. Intenta nuevamente en unos minutos."
|
101 |
+
"We could not process your payment. %s","No pudimos procesar tu pago. %s"
|
102 |
+
|
103 |
+
"Verify the form data or wait until the validation of the payment data","Verifique los datos del formulario o aguarde la validación de los datos del pago."
|
104 |
+
|
105 |
+
"Automatic notification of the MercadoPago: The payment was approved.","Notificación automática de MercadoPago: El pago fué aprobado."
|
106 |
+
"Automatic notification of the MercadoPago: The payment was refunded.","Notificación automática de MercadoPago: El pago fué devuelto."
|
107 |
+
"Automatic notification of the MercadoPago: The payment is being processed.","Notificación automática de MercadoPago: El pago esta siendo procesado."
|
108 |
+
"Automatic notification of the MercadoPago: The payment is being processed. Will be approved within 2 business days.","Notificación automática de MercadoPago: El pago esta siendo procesado. Será aprobado en hasta 2 dÃas hábiles."
|
109 |
+
"Automatic notification of the MercadoPago: The payment is in the process of Dispute, check the graphic account of the MercadoPago for more information.","Notificación automática de MercadoPago: El pago está en un proceso de disputa, chequea tu cuenta de MercadoPago para mayor información."
|
110 |
+
"Automatic notification of the MercadoPago: The payment was cancelled.","Notificación automática de MercadoPago: El pago fué cancelado."
|
111 |
+
"Automatic notification of the MercadoPago: The payment was rejected.","Notificación automática de MercadoPago: El pago fué rechazado."
|
112 |
+
"<br/> Payment id: %s","<br/> Número de Pago: %s"
|
113 |
+
"<br/> Status: %s","<br/> Estado: %s"
|
114 |
+
"<br/> Status Detail: %s","<br/> Detalle del Estado: %s"
|
app/locale/es_CO/mercadopago.csv
ADDED
@@ -0,0 +1,119 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
"Enabled","Activo"
|
2 |
+
|
3 |
+
"MercadoPago - Configuration", "MercadoPago - Configuración"
|
4 |
+
"Credit Card - MercadoPago","Tarjetas de crédito - MercadoPago"
|
5 |
+
|
6 |
+
"MercadoPago Transparent - Credit Card","MercadoPago Transparente - Tarjeta de Crédito"
|
7 |
+
"Payment Title","TÃtulo"
|
8 |
+
"Category of your store","Categoria de la tienda"
|
9 |
+
"Choose the status of approved orders","Elija el estado de los pedidos para pagos Aprobados"
|
10 |
+
"Choose the status of refunded orders","Elija el estado de los pedidos para pagos Devueltos"
|
11 |
+
"Choose the status when payment is pending","Elija el estado de los pedidos para pagos Pendientes"
|
12 |
+
"Choose the status when client open a mediation","Elija el estado de los pedidos para pagos en Disputa"
|
13 |
+
"Choose the status when payment was reject","Elija el estado de los pedidos para pagos Rechazados"
|
14 |
+
"Choose the status when payment was canceled","Elija el estado de los pedidos para pagos Cancelados"
|
15 |
+
"Checkout Position","Posición en el Checkout"
|
16 |
+
"To manage the status available go to System > Order Statuses","Para gerenciar los estados disponibles vaya a 'System > Order Statuses'"
|
17 |
+
|
18 |
+
"MercadoPago Transparent - Ticket","MercadoPago Transparente - Tickets de pago"
|
19 |
+
|
20 |
+
"MercadoPago Standard - Credit Card, Ticket and Account Money","MercadoPago Standard - Tarjetas, Tickets y Dinero en Cuenta"
|
21 |
+
"Country","PaÃs"
|
22 |
+
"Type Checkout","Tipo de Checkout"
|
23 |
+
"Auto Redirect","Auto-Redireccionar"
|
24 |
+
"Exclude Payment Methods","Excluir Medios de Pago"
|
25 |
+
"Maximum number of accepted installments","Numero maximo de cuotas"
|
26 |
+
"Width Checkout Iframe","Ancho de la zona del Checkout (Iframe)"
|
27 |
+
"Height Checkout Iframe","Alto de la zona del Checkout (Iframe)"
|
28 |
+
"Auto-redirect the buyer when finishing the payment.","Auto-Redireccionar al comprador al finalizar el pago."
|
29 |
+
"Select payment methods not accepted","Seleccione los medios de pago no aceptados"
|
30 |
+
"For the operation of the Checkout Transparent Ticket is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'",""Para el funcionamento del Checkout Transparente - Tickets de pago, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'""
|
31 |
+
"For the operation of the Checkout Standard is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'","Para el funcionamento del Checkout Standard, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'"
|
32 |
+
|
33 |
+
"Card Number","Número de Tarjeta"
|
34 |
+
"Month","Mes"
|
35 |
+
"Year","Año"
|
36 |
+
"Card Holder Name","Titular de la Tarjeta"
|
37 |
+
"Document Number","Número de Documento"
|
38 |
+
"CVV","Código de Seguridad"
|
39 |
+
"Installments","Cuotas"
|
40 |
+
"Banks","Bancos"
|
41 |
+
|
42 |
+
"Enter the card number","Digite el número de tarjeta"
|
43 |
+
"Validating Data","Validando datos"
|
44 |
+
"An error has occurred. Please refresh the page.","Ocurrio un error. Por favor, actualice la página."
|
45 |
+
"Card Number is invalid.","Número de Tarjeta inválido."
|
46 |
+
"CVV is invalid.","Código de Seguridad inválido."
|
47 |
+
"Card Holder Name is invalid.","Nombre de titular de tarjeta inválido."
|
48 |
+
"Document Number is invalid.","Número de Documento inválido."
|
49 |
+
"Year is invalid.","Año inválido."
|
50 |
+
"Month is invalid.","Mes inválido."
|
51 |
+
"Please validate your data.","Por favor, valide los datos"
|
52 |
+
|
53 |
+
"Card Number: %s","Número de Tarjeta: %s"
|
54 |
+
"Card Holder Name: %s","Titular de la Tarjeta: %s"
|
55 |
+
"Payment Method: %s","Medio de pago: %s"
|
56 |
+
"Expiration Date: %s","Fecha de Expiración: %s"
|
57 |
+
"Installments: %s","Cuotas: %s"
|
58 |
+
"Statement Descriptor: %s","Identificación en la Factura de la Tarjeta de Crédito: %s"
|
59 |
+
"Payment Id (MercadoPago): %s","Número de Pago (MercadoPago): %s"
|
60 |
+
"Payment Status: %s (%s)","Estado del Pago: %s (%s)"
|
61 |
+
|
62 |
+
"Click on the link to generate the ticket","Clique en el link para mostrar el ticket de pago"
|
63 |
+
"Generate Ticket","Generar ticket de pago"
|
64 |
+
|
65 |
+
"Payment Method","Medio de pago"
|
66 |
+
|
67 |
+
"Generate the ticket and pay it wherever you want.","Genere el ticket de pago y pague"
|
68 |
+
"Will be approved within 2 business days.","Será aprobado en hasta 2 dÃas hábiles"
|
69 |
+
|
70 |
+
"Done, your payment was accredited!","¡Listo, se acreditó tu pago!"
|
71 |
+
"We are processing the payment.","Estamos procesando el pago."
|
72 |
+
"In less than 2 business days we will tell you by e-mail if it is accredited or if we need more information.","Estamos procesando el pago. En menos de 2 dÃas hábiles te avisaremos por e-mail si se acreditó o si necesitamos más información."
|
73 |
+
"In less than an hour we will send you by e-mail the result.","Estamos procesando el pago. En menos de una hora te avisaremos por e-mail el resultado."
|
74 |
+
|
75 |
+
"Check the card number.","Revisa el número de la tarjeta."
|
76 |
+
"Check the expiration date.","Revisa la fecha de vencimiento."
|
77 |
+
"Check the data.","Revisa los datos."
|
78 |
+
"Check the security code.","Revisa el código de seguridad."
|
79 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
80 |
+
|
81 |
+
"You must authorize to %s the payment of $ %s to MercadoPago.","Debes llamar y autorizar ante %s el pago de $ %s a MercadoPago"
|
82 |
+
"Call %s to activate your card.<br/>The phone is on the back of your card.","Llama a %s para que active tu tarjeta.<br/>El teléfono está al dorso de tu tarjeta."
|
83 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
84 |
+
"You already made a payment by that value.<br/>If you need to repay, use another card or other payment method.","Ya hiciste un pago por ese valor.<br/>Si necesitas volver a pagar usa otra tarjeta u otro medio de pago."
|
85 |
+
"Your payment was rejected.<br/>Choose another payment method, we recommend cash methods.","Tu pago fue rechazado.<br/>Elige otro de los medios de pago, te recomendamos con medios de pago en efectivo."
|
86 |
+
"Your %s do not have sufficient funds.","Tu %s no tiene fondos suficientes."
|
87 |
+
"%s does not process payments in %s installments.","%s no procesa pagos en %s cuotas."
|
88 |
+
"You have got to the limit of allowed attempts.<br/>Choose another card or another payment method.","Llegaste al lÃmite de intentos permitidos.<br/>Elige otra tarjeta u otro medio de pago."
|
89 |
+
"%s did not process the payment.","%s no procesó el pago."
|
90 |
+
|
91 |
+
"You can not make payments to users in other countries.","No puedes realizar pagos a usuarios de otros paÃses."
|
92 |
+
"Payment Method selected does not process payments in installments selected. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos en la cuota seleccionada. Elige otra tarjeta u otro medio de pago."
|
93 |
+
"We could not process your payment. Error code: 126.","No pudimos procesar tu pago. Código de error: 126."
|
94 |
+
"Payment Method selected does not process payments for the selected amount. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos del monto seleccionado. Elige otro medio de pago."
|
95 |
+
"We could not process your payment. Error code: 145.","No pudimos procesar tu pago. Código de error: 145"
|
96 |
+
"You can not make payments. Error code: 150.","No puedes realizar pagos. Código de error: 150."
|
97 |
+
"You can not make payments.","No puedes realizar pagos."
|
98 |
+
"We could not process your payment. Error code: 160.","No pudimos procesar tu pago. Código de error: 160."
|
99 |
+
"Payment Method selected is not available at this time. Choose another card or another payment method.","El medio de pago seleccionado no está disponible en este momento. Elige otra tarjeta u otro medio de pago."
|
100 |
+
"You made a similar payment moments ago. Try again in a few minutes.","Realizaste un pago similar hace instantes. Intenta nuevamente en unos minutos."
|
101 |
+
"We could not process your payment. %s","No pudimos procesar tu pago. %s"
|
102 |
+
|
103 |
+
"Verify the form data or wait until the validation of the payment data","Verifique los datos del formulario o aguarde la validación de los datos del pago."
|
104 |
+
|
105 |
+
"Automatic notification of the MercadoPago: The payment was approved.","Notificación automática de MercadoPago: El pago fué aprobado."
|
106 |
+
"Automatic notification of the MercadoPago: The payment was refunded.","Notificación automática de MercadoPago: El pago fué devuelto."
|
107 |
+
"Automatic notification of the MercadoPago: The payment is being processed.","Notificación automática de MercadoPago: El pago esta siendo procesado."
|
108 |
+
"Automatic notification of the MercadoPago: The payment is being processed. Will be approved within 2 business days.","Notificación automática de MercadoPago: El pago esta siendo procesado. Será aprobado en hasta 2 dÃas hábiles."
|
109 |
+
"Automatic notification of the MercadoPago: The payment is in the process of Dispute, check the graphic account of the MercadoPago for more information.","Notificación automática de MercadoPago: El pago está en un proceso de disputa, chequea tu cuenta de MercadoPago para mayor información."
|
110 |
+
"Automatic notification of the MercadoPago: The payment was cancelled.","Notificación automática de MercadoPago: El pago fué cancelado."
|
111 |
+
"Automatic notification of the MercadoPago: The payment was rejected.","Notificación automática de MercadoPago: El pago fué rechazado."
|
112 |
+
"<br/> Payment id: %s","<br/> Número de Pago: %s"
|
113 |
+
"<br/> Status: %s","<br/> Estado: %s"
|
114 |
+
"<br/> Status Detail: %s","<br/> Detalle del Estado: %s"
|
115 |
+
"Order # %s in store %s","Orden # %s realizada en %s"
|
116 |
+
|
117 |
+
"$", "$"
|
118 |
+
"Choice", "Elige"
|
119 |
+
"Default issuer", "Cualquier otro banco"
|
app/locale/es_ES/mercadopago.csv
ADDED
@@ -0,0 +1,41 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
"Escolha a forma de entrega","Elige un método de envÃo"
|
2 |
+
"Desculpe, não há formas de entrega disponÃvel nesse momento","Disculpe, no hay método de envÃo disponible"
|
3 |
+
"É necessário escolher uma opção de envio","Es necesario elegir el método de envÃo"
|
4 |
+
"Insira seu cep","Ingrese su código postal"
|
5 |
+
"Continuar","Continuar"
|
6 |
+
"Seu pedido está sendo gerado. Por favor aguarde","Por favor, espere"
|
7 |
+
"Por favor aguarde","Por favor, espere"
|
8 |
+
"Calculando valor do frete. Por favor aguarde","Por favor, espere"
|
9 |
+
"Fechar","Cerrar"
|
10 |
+
"Não há método de entrega disponÃvel","Disculpe, no hay método de envÃo disponible"
|
11 |
+
"Alterar o Cep","Cambiar código postal"
|
12 |
+
"Iniciando o Checkout Expresso do MercadoPago","Empezando con MercadoPago Express Checkout"
|
13 |
+
"Enter your shipping information for the order #","Ingrese la información del envÃo para el pedido #"
|
14 |
+
"Your order is now been processing","Su pedido está procesando"
|
15 |
+
"Country where your account was created","Pais que su conta no MercadoPago fue creada"
|
16 |
+
"Enabled","Activo"
|
17 |
+
"Title","Nombre"
|
18 |
+
"Chose how the checkout should be displayed","Elije la forma (en el modo convencional) de Checkout"
|
19 |
+
"Show ShopCart Express Checkout button","Mostrar el botón de Express Checkout en la cesta de compra"
|
20 |
+
"Show ShopCart Express Checkout Sidebar button","Mostrar el botón ExpressCheckout em la cesta lateral"
|
21 |
+
"Show Express Checkout Product button","Mostrar el botón ExpressCheckout en cada produto"
|
22 |
+
"Postal Code Request on Express Payment on Express Checkout","Solicite el código postal para calcular de envÃo"
|
23 |
+
"Allow to change postal code after the order is paid on Express Payment on Express Checkout","Permitir al cliente cambiar el código postal después de que el pago ya efectuado por el Checkout Express"
|
24 |
+
"Auto Create Invoice","Generar facturas automáticamente"
|
25 |
+
"Currency to be paid","Elija la moneda"
|
26 |
+
"URL to successful payment","URL de redireccionamiento si el pago ya ha sido aprobado"
|
27 |
+
"URL for pendind payment","URL de redireccionamiento si el pago es pendiente"
|
28 |
+
"Payment Methods what should be excluded","Seleccione los métodos de pago que MercadoPago ofrece que usted NO desea aceptar"
|
29 |
+
"Choose the maximum number of installments accepted","Elija el número máximo de cuatas que deseja parcelar"
|
30 |
+
"Choose the status of new orders","Elija el estado para nuevos pedidos"
|
31 |
+
"Choose the status of approved orders","Elija el estado si el pago es aprobado"
|
32 |
+
"Choose the status of refunded orders","Elija el estado si el pago es regresó"
|
33 |
+
"Choose the status when payment is pending","Elija el estado si el pago es pendiente"
|
34 |
+
"Choose the status when client open a mediation","Elija el estado si el pago es en disputa"
|
35 |
+
"Choose the status when payment was reject","Elija el estado si el pago es rechazado"
|
36 |
+
"Choose the status when payment was canceled","Elija el estado si el pago es cancelado"
|
37 |
+
"Debug Mode","Modo de depuración"
|
38 |
+
"Thank you for your purchase. Fill the address information for your order. ","Gracias por su compra. Ingrese la informacion de direccÃon de su pedido. "
|
39 |
+
"Complete your order shipping information","Necesitamos de mas informaciones del su pedido"
|
40 |
+
"Thank you for your purchase. ","Gracias por su compra"
|
41 |
+
"To complete your order, if is not done yet, fill the address information at the address below.""Para completar su pedido, llenar la información de su dirección en la siguiente dirección."
|
app/locale/es_MX/mercadopago.csv
ADDED
@@ -0,0 +1,120 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
"Enabled","Activo"
|
2 |
+
|
3 |
+
"MercadoPago - Configuration", "MercadoPago - Configuración"
|
4 |
+
"Credit Card - MercadoPago","Tarjetas de crédito - MercadoPago"
|
5 |
+
|
6 |
+
"MercadoPago Transparent - Credit Card","MercadoPago Transparente - Tarjeta de Crédito"
|
7 |
+
"Payment Title","TÃtulo"
|
8 |
+
"Category of your store","Categoria de la tienda"
|
9 |
+
"Choose the status of approved orders","Elija el estado de los pedidos para pagos Aprobados"
|
10 |
+
"Choose the status of refunded orders","Elija el estado de los pedidos para pagos Devueltos"
|
11 |
+
"Choose the status when payment is pending","Elija el estado de los pedidos para pagos Pendientes"
|
12 |
+
"Choose the status when client open a mediation","Elija el estado de los pedidos para pagos en Disputa"
|
13 |
+
"Choose the status when payment was reject","Elija el estado de los pedidos para pagos Rechazados"
|
14 |
+
"Choose the status when payment was canceled","Elija el estado de los pedidos para pagos Cancelados"
|
15 |
+
"Checkout Position","Posición en el Checkout"
|
16 |
+
"To manage the status available go to System > Order Statuses","Para gerenciar los estados disponibles vaya a 'System > Order Statuses'"
|
17 |
+
|
18 |
+
"MercadoPago Transparent - Ticket","MercadoPago Transparente - Tickets de pago"
|
19 |
+
|
20 |
+
"MercadoPago Standard - Credit Card, Ticket and Account Money","MercadoPago Standard - Tarjetas, Tickets y Dinero en Cuenta"
|
21 |
+
"Country","PaÃs"
|
22 |
+
"Type Checkout","Tipo de Checkout"
|
23 |
+
"Auto Redirect","Auto-Redireccionar"
|
24 |
+
"Exclude Payment Methods","Excluir Medios de Pago"
|
25 |
+
"Maximum number of accepted installments","Numero maximo de cuotas"
|
26 |
+
"Width Checkout Iframe","Ancho de la zona del Checkout (Iframe)"
|
27 |
+
"Height Checkout Iframe","Alto de la zona del Checkout (Iframe)"
|
28 |
+
"Auto-redirect the buyer when finishing the payment.","Auto-Redireccionar al comprador al finalizar el pago."
|
29 |
+
"Select payment methods not accepted","Seleccione los medios de pago no aceptados"
|
30 |
+
"For the operation of the Checkout Transparent Ticket is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'",""Para el funcionamento del Checkout Transparente - Tickets de pago, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'""
|
31 |
+
"For the operation of the Checkout Standard is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'","Para el funcionamento del Checkout Standard, es necesario configurar las Credenciales 'CLIENT_ID' y 'CLIENT_SECRET' en 'MercadoPago - Configuración'"
|
32 |
+
|
33 |
+
"Payment Method", "Medio de pago"
|
34 |
+
"Card Number","Número de Tarjeta"
|
35 |
+
"Month","Mes"
|
36 |
+
"Year","Año"
|
37 |
+
"Card Holder Name","Titular de la Tarjeta"
|
38 |
+
"Document Number","Número de Documento"
|
39 |
+
"CVV","Código de Seguridad"
|
40 |
+
"Installments","Cuotas"
|
41 |
+
"Banks","Bancos"
|
42 |
+
|
43 |
+
"Enter the card number","Digite el número de tarjeta"
|
44 |
+
"Validating Data","Validando datos"
|
45 |
+
"An error has occurred. Please refresh the page.","Ocurrio un error. Por favor, actualice la página."
|
46 |
+
"Card Number is invalid.","Número de Tarjeta inválido."
|
47 |
+
"CVV is invalid.","Código de Seguridad inválido."
|
48 |
+
"Card Holder Name is invalid.","Nombre de titular de tarjeta inválido."
|
49 |
+
"Document Number is invalid.","Número de Documento inválido."
|
50 |
+
"Year is invalid.","Año inválido."
|
51 |
+
"Month is invalid.","Mes inválido."
|
52 |
+
"Please validate your data.","Por favor, valide los datos"
|
53 |
+
|
54 |
+
"Card Number: %s","Número de Tarjeta: %s"
|
55 |
+
"Card Holder Name: %s","Titular de la Tarjeta: %s"
|
56 |
+
"Payment Method: %s","Medio de pago: %s"
|
57 |
+
"Expiration Date: %s","Fecha de Expiración: %s"
|
58 |
+
"Installments: %s","Cuotas: %s"
|
59 |
+
"Statement Descriptor: %s","Identificación en la Factura de la Tarjeta de Crédito: %s"
|
60 |
+
"Payment Id (MercadoPago): %s","Número de Pago (MercadoPago): %s"
|
61 |
+
"Payment Status: %s (%s)","Estado del Pago: %s (%s)"
|
62 |
+
|
63 |
+
"Click on the link to generate the ticket","Clique en el link para mostrar el ticket de pago"
|
64 |
+
"Generate Ticket","Generar ticket de pago"
|
65 |
+
|
66 |
+
"Payment Method","Medio de pago"
|
67 |
+
|
68 |
+
"Generate the ticket and pay it wherever you want.","Genere el ticket de pago y pague"
|
69 |
+
"Will be approved within 2 business days.","Será aprobado en hasta 2 dÃas hábiles"
|
70 |
+
|
71 |
+
"Done, your payment was accredited!","¡Listo, se acreditó tu pago!"
|
72 |
+
"We are processing the payment.","Estamos procesando el pago."
|
73 |
+
"In less than 2 business days we will tell you by e-mail if it is accredited or if we need more information.","Estamos procesando el pago. En menos de 2 dÃas hábiles te avisaremos por e-mail si se acreditó o si necesitamos más información."
|
74 |
+
"In less than an hour we will send you by e-mail the result.","Estamos procesando el pago. En menos de una hora te avisaremos por e-mail el resultado."
|
75 |
+
|
76 |
+
"Check the card number.","Revisa el número de la tarjeta."
|
77 |
+
"Check the expiration date.","Revisa la fecha de vencimiento."
|
78 |
+
"Check the data.","Revisa los datos."
|
79 |
+
"Check the security code.","Revisa el código de seguridad."
|
80 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
81 |
+
|
82 |
+
"You must authorize to %s the payment of $ %s to MercadoPago.","Debes llamar y autorizar ante %s el pago de $ %s a MercadoPago"
|
83 |
+
"Call %s to activate your card.<br/>The phone is on the back of your card.","Llama a %s para que active tu tarjeta.<br/>El teléfono está al dorso de tu tarjeta."
|
84 |
+
"We could not process your payment.","No pudimos procesar tu pago."
|
85 |
+
"You already made a payment by that value.<br/>If you need to repay, use another card or other payment method.","Ya hiciste un pago por ese valor.<br/>Si necesitas volver a pagar usa otra tarjeta u otro medio de pago."
|
86 |
+
"Your payment was rejected.<br/>Choose another payment method, we recommend cash methods.","Tu pago fue rechazado.<br/>Elige otro de los medios de pago, te recomendamos con medios de pago en efectivo."
|
87 |
+
"Your %s do not have sufficient funds.","Tu %s no tiene fondos suficientes."
|
88 |
+
"%s does not process payments in %s installments.","%s no procesa pagos en %s cuotas."
|
89 |
+
"You have got to the limit of allowed attempts.<br/>Choose another card or another payment method.","Llegaste al lÃmite de intentos permitidos.<br/>Elige otra tarjeta u otro medio de pago."
|
90 |
+
"%s did not process the payment.","%s no procesó el pago."
|
91 |
+
|
92 |
+
"You can not make payments to users in other countries.","No puedes realizar pagos a usuarios de otros paÃses."
|
93 |
+
"Payment Method selected does not process payments in installments selected. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos en la cuota seleccionada. Elige otra tarjeta u otro medio de pago."
|
94 |
+
"We could not process your payment. Error code: 126.","No pudimos procesar tu pago. Código de error: 126."
|
95 |
+
"Payment Method selected does not process payments for the selected amount. Choose another card or another payment method.","El medio de pago seleccionado no procesa pagos del monto seleccionado. Elige otro medio de pago."
|
96 |
+
"We could not process your payment. Error code: 145.","No pudimos procesar tu pago. Código de error: 145"
|
97 |
+
"You can not make payments. Error code: 150.","No puedes realizar pagos. Código de error: 150."
|
98 |
+
"You can not make payments.","No puedes realizar pagos."
|
99 |
+
"We could not process your payment. Error code: 160.","No pudimos procesar tu pago. Código de error: 160."
|
100 |
+
"Payment Method selected is not available at this time. Choose another card or another payment method.","El medio de pago seleccionado no está disponible en este momento. Elige otra tarjeta u otro medio de pago."
|
101 |
+
"You made a similar payment moments ago. Try again in a few minutes.","Realizaste un pago similar hace instantes. Intenta nuevamente en unos minutos."
|
102 |
+
"We could not process your payment. %s","No pudimos procesar tu pago. %s"
|
103 |
+
|
104 |
+
"Verify the form data or wait until the validation of the payment data","Verifique los datos del formulario o aguarde la validación de los datos del pago."
|
105 |
+
|
106 |
+
"Automatic notification of the MercadoPago: The payment was approved.","Notificación automática de MercadoPago: El pago fué aprobado."
|
107 |
+
"Automatic notification of the MercadoPago: The payment was refunded.","Notificación automática de MercadoPago: El pago fué devuelto."
|
108 |
+
"Automatic notification of the MercadoPago: The payment is being processed.","Notificación automática de MercadoPago: El pago esta siendo procesado."
|
109 |
+
"Automatic notification of the MercadoPago: The payment is being processed. Will be approved within 2 business days.","Notificación automática de MercadoPago: El pago esta siendo procesado. Será aprobado en hasta 2 dÃas hábiles."
|
110 |
+
"Automatic notification of the MercadoPago: The payment is in the process of Dispute, check the graphic account of the MercadoPago for more information.","Notificación automática de MercadoPago: El pago está en un proceso de disputa, chequea tu cuenta de MercadoPago para mayor información."
|
111 |
+
"Automatic notification of the MercadoPago: The payment was cancelled.","Notificación automática de MercadoPago: El pago fué cancelado."
|
112 |
+
"Automatic notification of the MercadoPago: The payment was rejected.","Notificación automática de MercadoPago: El pago fué rechazado."
|
113 |
+
"<br/> Payment id: %s","<br/> Número de Pago: %s"
|
114 |
+
"<br/> Status: %s","<br/> Estado: %s"
|
115 |
+
"<br/> Status Detail: %s","<br/> Detalle del Estado: %s"
|
116 |
+
"Order # %s in store %s","Orden # %s realizada en %s"
|
117 |
+
|
118 |
+
"$", "$"
|
119 |
+
"Choice", "Elige"
|
120 |
+
"Default issuer", "Cualquier otro banco"
|
app/locale/pt_BR/mercadopago.csv
ADDED
@@ -0,0 +1,120 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
"Enabled", "Ativo"
|
2 |
+
|
3 |
+
"MercadoPago - Configuration", "MercadoPago - Configurações"
|
4 |
+
"Credit Card - MercadoPago", "Cartões de Credito - MercadoPago"
|
5 |
+
|
6 |
+
"MercadoPago Transparent - Credit Card", "MercadoPago Transparente - Cartão de Crédito"
|
7 |
+
"Payment Title", "Titulo"
|
8 |
+
"Category of your store", "Categoria da Loja"
|
9 |
+
"Choose the status of approved orders", "Escolha o status dos pedidos para pagamentos Aprovados"
|
10 |
+
"Choose the status of refunded orders", "Escolha o status dos pedidos para pagamentos Devolvidos"
|
11 |
+
"Choose the status when payment is pending", "Escolha o status dos pedidos para pagamentos Pendentes"
|
12 |
+
"Choose the status when client open a mediation", "Escolha o status dos pedidos para pagamentos que estão em Disputa"
|
13 |
+
"Choose the status when payment was reject", "Escolha o status dos pedidos para pagamentos Rejeitados"
|
14 |
+
"Choose the status when payment was canceled", "Escolha o status dos pedidos para pagamentos Cancelados"
|
15 |
+
"Checkout Position", "Posição no Checkout"
|
16 |
+
"To manage the status available go to System > Order Statuses", "Para gerenciar os status disponÃveis vá até System > Order Statuses"
|
17 |
+
|
18 |
+
"MercadoPago Transparent - Ticket", "MercadoPago Transparente - Boleto"
|
19 |
+
|
20 |
+
"MercadoPago Standard - Credit Card, Ticket and Account Money", "MercadoPago Standard - Cartão, Boleto e Dinheiro em Conta"
|
21 |
+
"Country", "PaÃs"
|
22 |
+
"Type Checkout", "Tipo de Checkout"
|
23 |
+
"Auto Redirect","Auto-Redirecionar"
|
24 |
+
"Exclude Payment Methods","Excluir Meios de Pagamento"
|
25 |
+
"Maximum number of accepted installments","Numero maximo de parcelas"
|
26 |
+
"Width Checkout Iframe","Largura do Checkout Iframe (Width)"
|
27 |
+
"Height Checkout Iframe","Altura do Checkout Iframe (Height)"
|
28 |
+
"Auto-redirect the buyer when finishing the payment.","Auto-Redirecionar o comprador ao finalizar o pagamento."
|
29 |
+
"Select payment methods not accepted","Selecione os meios de pagamento não aceitos"
|
30 |
+
"For the operation of the Checkout Transparent Ticket is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'","Para o funcionamento do Checkout Transparente Boleto é necessário configurar as Credenciais 'CLIENT_ID' e 'CLIENT_SECRET' em 'MercadoPago - Configurações'"
|
31 |
+
"For the operation of the Checkout Standard is necessary to configure the Credentials 'CLIENT_ID' and 'CLIENT_SECRET' in 'MercadoPago - Configuration'","Para o funcionamento do Checkout Standard é necessário configurar as Credenciais 'CLIENT_ID' e 'CLIENT_SECRET' em 'MercadoPago - Configurações'"
|
32 |
+
|
33 |
+
"Card Number", "Número do cartão"
|
34 |
+
"Month", "Mês de vencimento"
|
35 |
+
"Year", "Ano de vencimento"
|
36 |
+
"Card Holder Name", "Titular do cartão"
|
37 |
+
"Document Number", "CPF"
|
38 |
+
"CVV", "Código de segurança"
|
39 |
+
"Installments", "Parcelas"
|
40 |
+
"Banks", "Bancos"
|
41 |
+
|
42 |
+
"Enter the card number", "Digite o numero do cartão"
|
43 |
+
"Validating Data", "Validando dados"
|
44 |
+
"An error has occurred. Please refresh the page.", "Ocorreu um erro. Por favor, atualize a pagina."
|
45 |
+
"Card number is invalid.", "Numero do Cartão inválido."
|
46 |
+
"CVV is invalid.", "Código de Segurança inválido."
|
47 |
+
"Card Holder Name is invalid.", "Nome do titular do cartão inválido."
|
48 |
+
"Document Number is invalid.", "CPF inválido."
|
49 |
+
"Year is invalid.", "Ano inválido."
|
50 |
+
"Month is invalid.", "Mês inválido."
|
51 |
+
"Please validate your data.", "Dados incorretos, valide os dados. Por favor."
|
52 |
+
|
53 |
+
"Card Number: %s", "Número do cartão: %s"
|
54 |
+
"Card Holder Name: %s", "Titular do cartão: %s"
|
55 |
+
"Payment Method: %s", "Método de Pagamento: %s"
|
56 |
+
"Expiration Date: %s", "Data de expiração: %s"
|
57 |
+
"Installments: %s", "Parcelas: %s"
|
58 |
+
"Statement Descriptor: %s", "Identificação na Fatura: %s"
|
59 |
+
"Payment Id (MercadoPago): %s", "Numero de Pagamento (MercadoPago): %s"
|
60 |
+
"Payment Status: %s (%s)", "Status de Pagamento: %s (%s)"
|
61 |
+
|
62 |
+
"Click on the link to generate the ticket", "Clique no link para gerar o boleto"
|
63 |
+
"Generate Ticket", "Gerar Boleto"
|
64 |
+
|
65 |
+
"Payment Method", "Método de Pagamento"
|
66 |
+
|
67 |
+
"Generate the ticket and pay it wherever you want.", "Gere o boleto e pague-o onde quiser."
|
68 |
+
"Will be approved within 2 business days.","Será aprovado até 2 dias úteis."
|
69 |
+
|
70 |
+
"Done, your payment was accredited!", "O seu pagamento foi aprovado!"
|
71 |
+
"We are processing the payment.", "Estamos processando o pagamento."
|
72 |
+
"In less than 2 business days we will tell you by e-mail if it is accredited or if we need more information.", "Em menos de 2 dias úteis você será avisado por e-mail se foi creditado ou se precisarmos de mais informações."
|
73 |
+
"In less than an hour we will send you by e-mail the result.", "Em menos de 1 hora, nós enviaremos o resultado por e-mail."
|
74 |
+
|
75 |
+
"Check the card number.", "Verifique o número do cartão."
|
76 |
+
"Check the expiration date.", "Verifique a data de validade."
|
77 |
+
"Check the data.", "Verifique os dados."
|
78 |
+
"Check the security code.", "Verifique o código de segurança."
|
79 |
+
"We could not process your payment.", "Não foi possÃvel processar o pagamento."
|
80 |
+
"You must authorize to %s the payment of $ %s to MercadoPago.", "Você precisa autorizar com a %s o pagamento de R$ %s ao MercadoPago."
|
81 |
+
"Call %s to activate your card.<br/>The phone is on the back of your card.", "Ligue para %s e ative o seu cartão.<br/>O telefone está no verso do seu cartão de crédito."
|
82 |
+
"We could not process your payment.", "Não foi possÃvel processar o pagamento."
|
83 |
+
"You already made a payment by that value.<br/>If you need to repay, use another card or other payment method.", "Você já fez o pagamento deste valor.<br/>Se você precisa pagar novamente use outro cartão ou outro meio de pagamento."
|
84 |
+
"Your payment was rejected.<br/>Choose another payment method, we recommend cash methods.", "O seu pagamento foi recusado.<br/>Recomendamos que você pague com outro dos meios de pagamento oferecidos, preferencialmente à vista."
|
85 |
+
"Your %s do not have sufficient funds.", "O seu %s não tem limite suficiente."
|
86 |
+
"%s does not process payments in %s installments.", "%s não processa pagamentos em %s parcelas."
|
87 |
+
"You have got to the limit of allowed attempts.<br/>Choose another card or another payment method.", "Você atingiu o limite de tentativas permitidas.<br/>Use outro cartão ou outro meio de pagamento."
|
88 |
+
"%s did not process the payment.", "%s não processou o pagamento."
|
89 |
+
|
90 |
+
"You can not make payments to users in other countries.", "Você não pode fazer pagamentos para usuários em outros paÃses."
|
91 |
+
"Payment Method selected does not process payments in installments selected. Choose another card or another payment method.", "O meio de pagamento selecionado não processa pagamentos as parcelas selecionadas. Use outro cartão ou outro meio de pagamento."
|
92 |
+
"We could not process your payment. Error code: 126.", "Não foi possÃvel processar o pagamento. Erro de numero: 126."
|
93 |
+
"Payment Method selected does not process payments for the selected amount. Choose another card or another payment method.", "O meio de pagamento selecionado não processa pagamentos do valor selecionado. Use outro cartão ou outro meio de pagamento."
|
94 |
+
"We could not process your payment. Error code: 145.", "Não foi possÃvel processar o pagamento. Erro de numero: 145."
|
95 |
+
"You can not make payments. Error code: 150.", "Você não pode fazer pagamentos. Erro de numero: 150."
|
96 |
+
"You can not make payments.", "Você não pode fazer pagamentos com esse meio de pagamento."
|
97 |
+
"We could not process your payment. Error code: 160.", "Não foi possÃvel processar o pagamento. Erro de numero: 160."
|
98 |
+
"Payment Method selected is not available at this time. Choose another card or another payment method.", "O meio de pagamento selecionado não está disponÃvel neste momento. Use outro cartão ou outro meio de pagamento."
|
99 |
+
"You made a similar payment moments ago. Try again in a few minutes.", "Você realizou um pagamento similar há pouco tempo. Tente novamente em alguns minutos."
|
100 |
+
"We could not process your payment. %s", "Não foi possÃvel processar o pagamento. %s"
|
101 |
+
|
102 |
+
"Verify the form data or wait until the validation of the payment data", "Verifique os dados do formulario ou aguarde a validação dos dados de pagamento."
|
103 |
+
|
104 |
+
|
105 |
+
"Automatic notification of the MercadoPago: The payment was approved.", "Notificação automática do MercadoPago: O pagamento foi aprovado."
|
106 |
+
"Automatic notification of the MercadoPago: The payment was refunded.", "Notificação automática do MercadoPago: O pagamento foi devolvido."
|
107 |
+
"Automatic notification of the MercadoPago: The payment is being processed.", "Notificação automática do MercadoPago: O pagamento está sendo processado."
|
108 |
+
"Automatic notification of the MercadoPago: The payment is being processed. Will be approved within 2 business days.", "Notificação automática do MercadoPago: O pagamento está sendo processado. Em até 2 dias úteis o pagamento será analisado."
|
109 |
+
"Automatic notification of the MercadoPago: The payment is in the process of Dispute, check the graphic account of the MercadoPago for more information.", "Notificação automática do MercadoPago: O pagamento está em processo de Disputa, verifique a conta gráfica do MercadoPago para maiores informações."
|
110 |
+
"Automatic notification of the MercadoPago: The payment was cancelled.", "Notificação automática do MercadoPago: O pagamento foi cancelado."
|
111 |
+
"Automatic notification of the MercadoPago: The payment was rejected.", "Notificação automática do MercadoPago: O pagamento foi rejeitado."
|
112 |
+
"<br/> Payment id: %s", "<br/> Numero do Pagamento: %s"
|
113 |
+
"<br/> Status: %s", "<br/> Status: %s"
|
114 |
+
"<br/> Status Detail: %s", "<br/> Detalhe do Status: %s"
|
115 |
+
|
116 |
+
"Order # %s in store %s","Pedido # %s realizado na loja %s"
|
117 |
+
|
118 |
+
"$", "R$"
|
119 |
+
"Choice", "Escolha"
|
120 |
+
"Default issuer", "Qualquer Banco"
|
js/mercadopago/jquery-1.11.0.min.js
ADDED
@@ -0,0 +1,4 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
2 |
+
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f
|
3 |
+
}}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)
|
4 |
+
},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n});
|
js/mercadopago/mercadopago.js
ADDED
@@ -0,0 +1,294 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
//load dinamico de js externo
|
2 |
+
function loadJsAsync(url, callback) {
|
3 |
+
var head = document.getElementsByTagName('head')[0];
|
4 |
+
var script = document.createElement('script');
|
5 |
+
script.type = 'text/javascript';
|
6 |
+
script.src = url;
|
7 |
+
script.onreadystatechange = callback;
|
8 |
+
script.onload = callback;
|
9 |
+
head.appendChild(script);
|
10 |
+
}
|
11 |
+
|
12 |
+
loadJsAsync("//code.jquery.com/jquery-1.11.0.min.js", function () {
|
13 |
+
console.log("jQuery Running ...");
|
14 |
+
$.noConflict();
|
15 |
+
loadJsAsync("https://secure.mlstatic.com/org-img/checkout/custom/1.0/checkout.js?nocache=" + Math.random() * 10, function () {
|
16 |
+
console.log("MercadoPago Running ...");
|
17 |
+
Checkout.setPublishableKey(PublicKeyMercadoPagoTransparent);
|
18 |
+
//end load mp
|
19 |
+
});
|
20 |
+
|
21 |
+
//end load js
|
22 |
+
});
|
23 |
+
|
24 |
+
|
25 |
+
function loadFilesMP() {
|
26 |
+
loadJsAsync("//code.jquery.com/jquery-1.11.0.min.js", function () {
|
27 |
+
$.noConflict();
|
28 |
+
jQuery(document).ready(function ($) {
|
29 |
+
|
30 |
+
//variables translates
|
31 |
+
var currency_text_mercadopago = $("#mercadopago-text-currency").html();
|
32 |
+
var choice_text_mercadopago = $("#mercadopago-text-choice").html();
|
33 |
+
var default_issuer_text_mercadopago = $("#mercadopago-text-default-issuer").html();
|
34 |
+
|
35 |
+
|
36 |
+
//hide loading
|
37 |
+
$("#status").hide();
|
38 |
+
|
39 |
+
//caso tenha alteração no campo de banco
|
40 |
+
$("#issuers").change(function(){
|
41 |
+
|
42 |
+
//pega o bin
|
43 |
+
var card = $("input[data-checkout='cardNumber']").val().replace(/ /g, '').replace(/-/g, '').replace(/\./g, '');
|
44 |
+
var bin = card.substr(0,6);
|
45 |
+
|
46 |
+
//verifica installments para o banco, pode ocorrer de ter desconto
|
47 |
+
Checkout.getInstallmentsByIssuerId(
|
48 |
+
bin,
|
49 |
+
this.value,
|
50 |
+
parseFloat($("#amount").val()),
|
51 |
+
setInstallmentInfo
|
52 |
+
);
|
53 |
+
|
54 |
+
});
|
55 |
+
|
56 |
+
//caso o cartão copie e cole
|
57 |
+
$("input[data-checkout='cardNumber']").focusout(function () {
|
58 |
+
var card = $(this).val().replace(/ /g, '').replace(/-/g, '').replace(/\./g, '');
|
59 |
+
var bin = card.substr(0,6);
|
60 |
+
getBin(bin);
|
61 |
+
});
|
62 |
+
|
63 |
+
//pega o bin enquanto digita
|
64 |
+
$("input[data-checkout='cardNumber']").bind("keyup", function () {
|
65 |
+
var bin = $(this).val().replace(/ /g, '').replace(/-/g, '').replace(/\./g, '');
|
66 |
+
getBin(bin);
|
67 |
+
});
|
68 |
+
|
69 |
+
$("#mp-form input").focusout(function () {
|
70 |
+
validCreateToken();
|
71 |
+
});
|
72 |
+
|
73 |
+
$("#mp-form select").change(function () {
|
74 |
+
validCreateToken();
|
75 |
+
});
|
76 |
+
|
77 |
+
|
78 |
+
function getBin(bin){
|
79 |
+
if (bin.length == 6) {
|
80 |
+
if ($("#mercadopago-country").html() == 'mlm') {
|
81 |
+
Checkout.getPaymentMethod(bin, parseFloat($("#amount").val()), setPaymentMethodInfo, $('#payment_method option:checked').val());
|
82 |
+
}else{
|
83 |
+
Checkout.getPaymentMethod(bin, setPaymentMethodInfo);
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
function setPaymentMethodInfo(status, result){
|
89 |
+
var method_payment = result[0];
|
90 |
+
|
91 |
+
//adiciona a imagem do meio de pagamento
|
92 |
+
$("#img_payment_method").html('<img src="' + method_payment.secure_thumbnail + '">')
|
93 |
+
|
94 |
+
//setta o meio de pagamento
|
95 |
+
$("#payment_method").val(method_payment.id);
|
96 |
+
|
97 |
+
//lista parcelas
|
98 |
+
Checkout.getInstallments(method_payment.id, parseFloat($("#amount").val()), setInstallmentInfo);
|
99 |
+
Checkout.getCardIssuers(method_payment.id, showIssuers);
|
100 |
+
}
|
101 |
+
|
102 |
+
function validCreateToken(){
|
103 |
+
|
104 |
+
var valid = true;
|
105 |
+
|
106 |
+
//verifica os elementos "input"
|
107 |
+
$("#mp-form input[data-checkout]").each(function () {
|
108 |
+
|
109 |
+
if ($(this).val() == "") {
|
110 |
+
valid = false
|
111 |
+
}else if($(this).attr('data-checkout') == 'docNumber'){
|
112 |
+
|
113 |
+
//caso o documento seja CPF, faz a validação em um função especifica
|
114 |
+
if($("#docType").val() == "CPF"){
|
115 |
+
if(validCpf($(this).val())){
|
116 |
+
$("#status").hide();
|
117 |
+
}else{
|
118 |
+
valid = false;
|
119 |
+
//hide all msg status
|
120 |
+
$(".msg-status").hide();
|
121 |
+
$(".error-324").show();
|
122 |
+
showError();
|
123 |
+
}
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
});
|
128 |
+
|
129 |
+
//verifica os elementos "select"
|
130 |
+
$("#mp-form select[data-checkout]").each(function () {
|
131 |
+
if ($(this).find("option:selected").val() == "") {
|
132 |
+
valid = false
|
133 |
+
}
|
134 |
+
});
|
135 |
+
|
136 |
+
if (valid) {
|
137 |
+
|
138 |
+
//hide all msg status
|
139 |
+
$(".msg-status").hide();
|
140 |
+
|
141 |
+
//remove erro class
|
142 |
+
$("#status").removeClass("msg-error");
|
143 |
+
|
144 |
+
//add msg e mostra o loading
|
145 |
+
$("#status").show();
|
146 |
+
$("#status .loading-mp").show();
|
147 |
+
|
148 |
+
//show span loading
|
149 |
+
$("#status .text-mp .msg-loading").show();
|
150 |
+
|
151 |
+
|
152 |
+
var $form = $("#mp-form");
|
153 |
+
|
154 |
+
Checkout.createToken($form, function (status, response) {
|
155 |
+
removeClass();
|
156 |
+
var html = ""
|
157 |
+
if (status == 200 || status == 201) {
|
158 |
+
$("#status .status-mp").hide();
|
159 |
+
$("#card_token_id").val(response.id);
|
160 |
+
$("#trunc_card").val(response.trunc_card_number);
|
161 |
+
$("#status").hide();
|
162 |
+
}else{
|
163 |
+
|
164 |
+
$.each(response.cause, function(p, e){
|
165 |
+
|
166 |
+
//mapea os erros
|
167 |
+
switch (e.code) {
|
168 |
+
case "011":
|
169 |
+
case "E301":
|
170 |
+
case "E302":
|
171 |
+
case "316":
|
172 |
+
case "324":
|
173 |
+
case "325":
|
174 |
+
case "326":
|
175 |
+
$(".error-" + e.code).show();
|
176 |
+
break;
|
177 |
+
default:
|
178 |
+
$(".error-other").show();
|
179 |
+
}
|
180 |
+
|
181 |
+
showError();
|
182 |
+
});
|
183 |
+
|
184 |
+
}
|
185 |
+
|
186 |
+
//hide loading
|
187 |
+
$("#status .text-mp .msg-loading").hide();
|
188 |
+
$("#status .loading-mp").hide();
|
189 |
+
|
190 |
+
});
|
191 |
+
|
192 |
+
|
193 |
+
|
194 |
+
}
|
195 |
+
}
|
196 |
+
|
197 |
+
|
198 |
+
function showError() {
|
199 |
+
$("#status .loading-mp").hide();
|
200 |
+
$("#status").show();
|
201 |
+
$("#status").addClass("msg-error");
|
202 |
+
$("#card_token_id").val("");
|
203 |
+
}
|
204 |
+
|
205 |
+
function validCpf(cpf){
|
206 |
+
var soma;
|
207 |
+
var resto;
|
208 |
+
soma = 0;
|
209 |
+
if (cpf == "00000000000")
|
210 |
+
return false;
|
211 |
+
|
212 |
+
for (i=1; i<=9; i++){
|
213 |
+
soma = soma + parseInt(cpf.substring(i-1, i)) * (11 - i);
|
214 |
+
resto = (soma * 10) % 11;
|
215 |
+
}
|
216 |
+
|
217 |
+
if ((resto == 10) || (resto == 11))
|
218 |
+
resto = 0;
|
219 |
+
|
220 |
+
if (resto != parseInt(cpf.substring(9, 10)) )
|
221 |
+
return false;
|
222 |
+
|
223 |
+
soma = 0;
|
224 |
+
|
225 |
+
for (i = 1; i <= 10; i++){
|
226 |
+
soma = soma + parseInt(cpf.substring(i-1, i)) * (12 - i);
|
227 |
+
resto = (soma * 10) % 11;
|
228 |
+
}
|
229 |
+
|
230 |
+
if ((resto == 10) || (resto == 11))
|
231 |
+
resto = 0;
|
232 |
+
|
233 |
+
if (resto != parseInt(cpf.substring(10, 11))){
|
234 |
+
return false;
|
235 |
+
}else{
|
236 |
+
return true;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
//setta parcelas
|
241 |
+
function setInstallmentInfo(status, installments){
|
242 |
+
|
243 |
+
var html_options = '<option value="">' + choice_text_mercadopago + '... </option>';
|
244 |
+
for(i=0; installments && i<installments.length; i++){
|
245 |
+
html_options += "<option value='"+installments[i].installments+"'>"+installments[i].installments +" de " + currency_text_mercadopago + " " + installments[i].share_amount+" ("+ currency_text_mercadopago + " "+ installments[i].total_amount+")</option>";
|
246 |
+
};
|
247 |
+
$("#installments").html(html_options);
|
248 |
+
}
|
249 |
+
|
250 |
+
function showIssuers(status, issuers){
|
251 |
+
|
252 |
+
//caso tenha apenas um registro, pega o valor dele e setta em um input escondido
|
253 |
+
if (issuers.length == 1) {
|
254 |
+
var input_issuers = '<input type="text" name="payment[issuers]" id="issuers" data-checkout="issuers" class="input-text" autocomplete="off" value="' + issuers[0].id + '">';
|
255 |
+
$("#issuers").html(input_issuers);
|
256 |
+
$("#issuersOptions").hide();
|
257 |
+
}else{
|
258 |
+
|
259 |
+
var options = '<select name="payment[issuers]" id="issuers" data-checkout="issuers" class="input-text" autocomplete="off">'
|
260 |
+
options += '<option value="-1">' + choice_text_mercadopago + '...</option>';
|
261 |
+
|
262 |
+
for(i=0; issuers && i<issuers.length;i++){
|
263 |
+
|
264 |
+
if (issuers[i].name == "default") {
|
265 |
+
issuers[i].name = default_issuer_text_mercadopago;
|
266 |
+
}
|
267 |
+
|
268 |
+
options+="<option value='"+issuers[i].id+"'>"+issuers[i].name +" </option>";
|
269 |
+
}
|
270 |
+
|
271 |
+
options += "</select>";
|
272 |
+
|
273 |
+
if(issuers.length > 1){
|
274 |
+
$("#issuers").html(options);
|
275 |
+
$("#issuersOptions").show();
|
276 |
+
}else{
|
277 |
+
$("#issuers").html("");
|
278 |
+
$("#issuersOptions").hide();
|
279 |
+
}
|
280 |
+
}
|
281 |
+
}
|
282 |
+
|
283 |
+
function removeClass(){
|
284 |
+
//remove as class
|
285 |
+
$("#status").removeClass("msg-error");
|
286 |
+
$("#status").removeClass("msg-success");
|
287 |
+
$("#status").removeClass("msg-alert");
|
288 |
+
}
|
289 |
+
//end load ready
|
290 |
+
});
|
291 |
+
//end load js
|
292 |
+
});
|
293 |
+
|
294 |
+
}
|
lib/mercadopago/mercadopago.php
ADDED
@@ -0,0 +1,342 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* MercadoPago Integration Library
|
5 |
+
* Access MercadoPago for payments integration
|
6 |
+
*
|
7 |
+
* @author hcasatti
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
$GLOBALS["LIB_LOCATION"] = dirname(__FILE__);
|
11 |
+
|
12 |
+
class MP {
|
13 |
+
|
14 |
+
const version = "0.2.1";
|
15 |
+
|
16 |
+
private $client_id;
|
17 |
+
private $client_secret;
|
18 |
+
private $access_data;
|
19 |
+
private $sandbox = FALSE;
|
20 |
+
|
21 |
+
function __construct($client_id, $client_secret) {
|
22 |
+
$this->client_id = $client_id;
|
23 |
+
$this->client_secret = $client_secret;
|
24 |
+
}
|
25 |
+
|
26 |
+
public function sandbox_mode($enable = NULL) {
|
27 |
+
if (!is_null($enable)) {
|
28 |
+
$this->sandbox = $enable === TRUE;
|
29 |
+
}
|
30 |
+
|
31 |
+
return $this->sandbox;
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get Access Token for API use
|
36 |
+
*/
|
37 |
+
public function get_access_token() {
|
38 |
+
$app_client_values = $this->build_query(array(
|
39 |
+
'client_id' => $this->client_id,
|
40 |
+
'client_secret' => $this->client_secret,
|
41 |
+
'grant_type' => 'client_credentials'
|
42 |
+
));
|
43 |
+
|
44 |
+
$access_data = MPRestClient::post("/oauth/token", $app_client_values, "application/x-www-form-urlencoded");
|
45 |
+
|
46 |
+
$this->access_data = $access_data['response'];
|
47 |
+
|
48 |
+
return $this->access_data['access_token'];
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get information for specific merchant_order
|
53 |
+
* @param int $id
|
54 |
+
* @return array(json)
|
55 |
+
*/
|
56 |
+
|
57 |
+
public function get_merchant_order($id){
|
58 |
+
|
59 |
+
$access_token = $this->get_access_token();
|
60 |
+
|
61 |
+
$merchant_order = MPRestClient::get("/merchant_orders/" . $id . "?access_token=" . $access_token);
|
62 |
+
|
63 |
+
return $merchant_order;
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Get information for specific payment
|
68 |
+
* @param int $id
|
69 |
+
* @return array(json)
|
70 |
+
*/
|
71 |
+
public function get_payment($id) {
|
72 |
+
$access_token = $this->get_access_token();
|
73 |
+
|
74 |
+
$uri_prefix = $this->sandbox ? "/sandbox" : "";
|
75 |
+
|
76 |
+
$payment_info = MPRestClient::get($uri_prefix."/collections/notifications/" . $id . "?access_token=" . $access_token);
|
77 |
+
return $payment_info;
|
78 |
+
}
|
79 |
+
public function get_payment_info($id) {
|
80 |
+
return $this->get_payment($id);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Get information for specific authorized payment
|
85 |
+
* @param id
|
86 |
+
* @return array(json)
|
87 |
+
*/
|
88 |
+
public function get_authorized_payment($id) {
|
89 |
+
$access_token = $this->get_access_token();
|
90 |
+
|
91 |
+
$authorized_payment_info = MPRestClient::get("/authorized_payments/" . $id . "?access_token=" . $access_token);
|
92 |
+
return $authorized_payment_info;
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Refund accredited payment
|
97 |
+
* @param int $id
|
98 |
+
* @return array(json)
|
99 |
+
*/
|
100 |
+
public function refund_payment($id) {
|
101 |
+
$access_token = $this->get_access_token();
|
102 |
+
|
103 |
+
$refund_status = array(
|
104 |
+
"status" => "refunded"
|
105 |
+
);
|
106 |
+
|
107 |
+
$response = MPRestClient::put("/collections/" . $id . "?access_token=" . $access_token, $refund_status);
|
108 |
+
return $response;
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Cancel pending payment
|
113 |
+
* @param int $id
|
114 |
+
* @return array(json)
|
115 |
+
*/
|
116 |
+
public function cancel_payment($id) {
|
117 |
+
$access_token = $this->get_access_token();
|
118 |
+
|
119 |
+
$cancel_status = array(
|
120 |
+
"status" => "cancelled"
|
121 |
+
);
|
122 |
+
|
123 |
+
$response = MPRestClient::put("/collections/" . $id . "?access_token=" . $access_token, $cancel_status);
|
124 |
+
return $response;
|
125 |
+
}
|
126 |
+
|
127 |
+
/**
|
128 |
+
* Cancel preapproval payment
|
129 |
+
* @param int $id
|
130 |
+
* @return array(json)
|
131 |
+
*/
|
132 |
+
public function cancel_preapproval_payment($id) {
|
133 |
+
$access_token = $this->get_access_token();
|
134 |
+
|
135 |
+
$cancel_status = array(
|
136 |
+
"status" => "cancelled"
|
137 |
+
);
|
138 |
+
|
139 |
+
$response = MPRestClient::put("/preapproval/" . $id . "?access_token=" . $access_token, $cancel_status);
|
140 |
+
return $response;
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* Search payments according to filters, with pagination
|
145 |
+
* @param array $filters
|
146 |
+
* @param int $offset
|
147 |
+
* @param int $limit
|
148 |
+
* @return array(json)
|
149 |
+
*/
|
150 |
+
public function search_payment($filters, $offset = 0, $limit = 0) {
|
151 |
+
$access_token = $this->get_access_token();
|
152 |
+
|
153 |
+
$filters["offset"] = $offset;
|
154 |
+
$filters["limit"] = $limit;
|
155 |
+
|
156 |
+
$filters = $this->build_query($filters);
|
157 |
+
|
158 |
+
$uri_prefix = $this->sandbox ? "/sandbox" : "";
|
159 |
+
|
160 |
+
$collection_result = MPRestClient::get($uri_prefix."/collections/search?" . $filters . "&access_token=" . $access_token);
|
161 |
+
return $collection_result;
|
162 |
+
}
|
163 |
+
|
164 |
+
/**
|
165 |
+
* Create a checkout preference
|
166 |
+
* @param array $preference
|
167 |
+
* @return array(json)
|
168 |
+
*/
|
169 |
+
public function create_preference($preference) {
|
170 |
+
$access_token = $this->get_access_token();
|
171 |
+
|
172 |
+
$preference_result = MPRestClient::post("/checkout/preferences?access_token=" . $access_token, $preference);
|
173 |
+
return $preference_result;
|
174 |
+
}
|
175 |
+
|
176 |
+
/**
|
177 |
+
* Update a checkout preference
|
178 |
+
* @param string $id
|
179 |
+
* @param array $preference
|
180 |
+
* @return array(json)
|
181 |
+
*/
|
182 |
+
public function update_preference($id, $preference) {
|
183 |
+
$access_token = $this->get_access_token();
|
184 |
+
|
185 |
+
$preference_result = MPRestClient::put("/checkout/preferences/{$id}?access_token=" . $access_token, $preference);
|
186 |
+
return $preference_result;
|
187 |
+
}
|
188 |
+
|
189 |
+
/**
|
190 |
+
* Get a checkout preference
|
191 |
+
* @param string $id
|
192 |
+
* @return array(json)
|
193 |
+
*/
|
194 |
+
public function get_preference($id) {
|
195 |
+
$access_token = $this->get_access_token();
|
196 |
+
|
197 |
+
$preference_result = MPRestClient::get("/checkout/preferences/{$id}?access_token=" . $access_token);
|
198 |
+
return $preference_result;
|
199 |
+
}
|
200 |
+
|
201 |
+
/**
|
202 |
+
* Create a preapproval payment
|
203 |
+
* @param array $preapproval_payment
|
204 |
+
* @return array(json)
|
205 |
+
*/
|
206 |
+
public function create_preapproval_payment($preapproval_payment) {
|
207 |
+
$access_token = $this->get_access_token();
|
208 |
+
|
209 |
+
$preapproval_payment_result = MPRestClient::post("/preapproval?access_token=" . $access_token, $preapproval_payment);
|
210 |
+
return $preapproval_payment_result;
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Get a preapproval payment
|
215 |
+
* @param string $id
|
216 |
+
* @return array(json)
|
217 |
+
*/
|
218 |
+
public function get_preapproval_payment($id) {
|
219 |
+
$access_token = $this->get_access_token();
|
220 |
+
|
221 |
+
$preapproval_payment_result = MPRestClient::get("/preapproval/{$id}?access_token=" . $access_token);
|
222 |
+
return $preapproval_payment_result;
|
223 |
+
}
|
224 |
+
|
225 |
+
/**
|
226 |
+
* Update a preapproval payment
|
227 |
+
* @param string $preapproval_payment, $id
|
228 |
+
* @return array(json)
|
229 |
+
*/
|
230 |
+
|
231 |
+
public function update_preapproval_payment($id, $preapproval_payment) {
|
232 |
+
$access_token = $this->get_access_token();
|
233 |
+
|
234 |
+
$preapproval_payment_result = MPRestClient::put("/preapproval/" . $id . "?access_token=" . $access_token, $preapproval_payment);
|
235 |
+
return $preapproval_payment_result;
|
236 |
+
}
|
237 |
+
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Create a custon payment
|
241 |
+
* @param array $preference
|
242 |
+
* @return array(json)
|
243 |
+
*/
|
244 |
+
public function create_custon_payment($info) {
|
245 |
+
$access_token = $this->get_access_token();
|
246 |
+
|
247 |
+
$preference_result = MPRestClient::post("/checkout/custom/create_payment?access_token=" . $access_token, $info);
|
248 |
+
return $preference_result;
|
249 |
+
}
|
250 |
+
|
251 |
+
|
252 |
+
/* **************************************************************************************** */
|
253 |
+
|
254 |
+
private function build_query($params) {
|
255 |
+
if (function_exists("http_build_query")) {
|
256 |
+
return http_build_query($params, "", "&");
|
257 |
+
} else {
|
258 |
+
foreach ($params as $name => $value) {
|
259 |
+
$elements[] = "{$name}=" . urlencode($value);
|
260 |
+
}
|
261 |
+
|
262 |
+
return implode("&", $elements);
|
263 |
+
}
|
264 |
+
}
|
265 |
+
|
266 |
+
}
|
267 |
+
|
268 |
+
/**
|
269 |
+
* MercadoPago cURL RestClient
|
270 |
+
*/
|
271 |
+
class MPRestClient {
|
272 |
+
|
273 |
+
const API_BASE_URL = "https://api.mercadolibre.com";
|
274 |
+
|
275 |
+
private static function get_connect($uri, $method, $content_type) {
|
276 |
+
$connect = curl_init(self::API_BASE_URL . $uri);
|
277 |
+
|
278 |
+
curl_setopt($connect, CURLOPT_USERAGENT, "MercadoPago Magento-1.9.x-transparent Cart v1.0.1");
|
279 |
+
curl_setopt($connect, CURLOPT_RETURNTRANSFER, true);
|
280 |
+
curl_setopt($connect, CURLOPT_CUSTOMREQUEST, $method);
|
281 |
+
curl_setopt($connect, CURLOPT_HTTPHEADER, array("Accept: application/json", "Content-Type: " . $content_type));
|
282 |
+
|
283 |
+
return $connect;
|
284 |
+
}
|
285 |
+
|
286 |
+
private static function set_data(&$connect, $data, $content_type) {
|
287 |
+
if ($content_type == "application/json") {
|
288 |
+
if (gettype($data) == "string") {
|
289 |
+
json_decode($data, true);
|
290 |
+
} else {
|
291 |
+
$data = json_encode($data);
|
292 |
+
}
|
293 |
+
|
294 |
+
if(function_exists('json_last_error')) {
|
295 |
+
$json_error = json_last_error();
|
296 |
+
if ($json_error != JSON_ERROR_NONE) {
|
297 |
+
throw new Exception("JSON Error [{$json_error}] - Data: {$data}");
|
298 |
+
}
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
curl_setopt($connect, CURLOPT_POSTFIELDS, $data);
|
303 |
+
}
|
304 |
+
|
305 |
+
private static function exec($method, $uri, $data, $content_type) {
|
306 |
+
$connect = self::get_connect($uri, $method, $content_type);
|
307 |
+
if ($data) {
|
308 |
+
self::set_data($connect, $data, $content_type);
|
309 |
+
}
|
310 |
+
|
311 |
+
$api_result = curl_exec($connect);
|
312 |
+
$api_http_code = curl_getinfo($connect, CURLINFO_HTTP_CODE);
|
313 |
+
|
314 |
+
$response = array(
|
315 |
+
"status" => $api_http_code,
|
316 |
+
"response" => json_decode($api_result, true)
|
317 |
+
);
|
318 |
+
|
319 |
+
/*if ($response['status'] >= 400) {
|
320 |
+
throw new Exception ($response['response']['message'], $response['status']);
|
321 |
+
}*/
|
322 |
+
|
323 |
+
curl_close($connect);
|
324 |
+
|
325 |
+
return $response;
|
326 |
+
}
|
327 |
+
|
328 |
+
public static function get($uri, $content_type = "application/json") {
|
329 |
+
return self::exec("GET", $uri, null, $content_type);
|
330 |
+
}
|
331 |
+
|
332 |
+
public static function post($uri, $data, $content_type = "application/json") {
|
333 |
+
return self::exec("POST", $uri, $data, $content_type);
|
334 |
+
}
|
335 |
+
|
336 |
+
public static function put($uri, $data, $content_type = "application/json") {
|
337 |
+
return self::exec("PUT", $uri, $data, $content_type);
|
338 |
+
}
|
339 |
+
|
340 |
+
}
|
341 |
+
|
342 |
+
?>
|
package.xml
ADDED
@@ -0,0 +1,26 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>MercadoPagoTransparent</name>
|
4 |
+
<version>0.0.1</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Checkout Transparente e Standard (Cartão de credito, Boleto e dinheiro em conta) usando MercadoPago.</summary>
|
10 |
+
<description>MercadoPago.com é o maior facilitador de pagamentos pela Internet de origem latino-americana com mais de 99,5 milhões de usuários certificados, registrados e ativos em sua plataforma. Com dez anos de trajetória na América Latina, é uma empresa do Grupo MercadoLivre, com ações negociadas na Nasdaq (NASDAQ:MELI).
|
11 |
+

|
12 |
+
A plataforma foi desenvolvida com a tecnologia mais avançada em segurança na Internet por uma equipe de especialistas em finanças, tecnologia e segurança da informação, com ampla experiência no desenvolvimento de serviços financeiros online. MercadoPago.com está presente em seis países: Argentina, Brasil, Chile, Colômbia, México e Venezuela.
|
13 |
+

|
14 |
+
Checkout Transparente disponível para: Brasil, Argentina e Mexico.
|
15 |
+

|
16 |
+
Checkout Standard disponível para: Brasil, Argentina, Mexico, Venezuela e Colombia.</description>
|
17 |
+
<notes>Checkout Transparente disponível para: Brasil, Argentina e Mexico.
|
18 |
+

|
19 |
+
Checkout Standard disponível para: Brasil, Argentina, Mexico, Venezuela e Colombia.</notes>
|
20 |
+
<authors><author><name>Developers MercadoPago Brasil</name><user>developers_mercadopago</user><email>developers@mercadopago.com.br</email></author></authors>
|
21 |
+
<date>2015-03-10</date>
|
22 |
+
<time>17:40:20</time>
|
23 |
+
<contents><target name="magecommunity"><dir name="MercadoPago"><dir name="Standard"><dir name="Block"><file name="Form.php" hash="9bdf1f52cf6a679b44f3722caec66f6a"/><file name="Info.php" hash="21aac16dbe66bc09af3a9de47f76a1b5"/></dir><dir name="Helper"><file name="Data.php" hash="710ec99ea6abea4cf734aa914c85b85b"/></dir><dir name="Model"><file name="Checkout.php" hash="470d89d12e726393078c2eccb9b6d0e9"/><file name="Observer.php" hash="cb21534771553ef3aed3ea3e2de26f27"/><dir name="Source"><file name="CategoryId.php" hash="5f3ff392848a53c2fa6603c963ae82b5"/><file name="Country.php" hash="c16df06c2007393db005ea79213ee05e"/><file name="Installments.php" hash="2fae68dbabad4c1eef8b834c90dd0b96"/><file name="PaymentMethods.php" hash="ab8008e14838f77491db3b8d15f50ef3"/><file name="TypeCheckout.php" hash="d8b1d8eed83a019a6c21a417fb05ce6a"/></dir></dir><dir name="controllers"><file name="NotificationController.php" hash="99de23a5c9aa3badf03c239686696061"/><file name="PayController.php" hash="e8493b2ef86bd99ef86989861e82ba86"/></dir><dir name="etc"><file name="config.xml" hash="44f0473a9ecb35d9ba6e4f7a0232cbc9"/><file name="system.xml" hash="4227fb788f898b1785d0fb15da65b2fe"/></dir></dir><dir name="Transparent"><dir name="Block"><file name="Form.php" hash="2d74865fe22dba4437209181af6858a1"/><file name="Info.php" hash="32adfbd59dc2f7b8a97a5a778e2c66d5"/><file name="Success.php" hash="a85361ea7af2adf623ea967d297d1545"/><file name=".DS_Store" hash="2074c5a443aba7e611980b76135fd198"/></dir><dir name="Helper"><file name="Data.php" hash="93f79cb3b534e05e8d4576916aaba2e0"/></dir><dir name="Model"><dir name="Resource"><file name="Setup.php" hash="0878b25e586a30e84d308b45e3b82af4"/></dir><dir name="Source"><file name="CategoryId.php" hash="d62071499f4815e3e4244c851aad8fbe"/></dir><file name="Transparent.php" hash="52973d870c2c8df0c3206438bedda707"/><file name=".DS_Store" hash="beeba7d5cb9298ed5ca24b7cb3b6f70a"/></dir><dir name="controllers"><file name="NotificacaoController.php" hash="fcc18d169285346a7548e3a79de84ee0"/><file name="PayController.php" hash="a0b0b0b9695581e2011f29b6767b26b3"/></dir><dir name="etc"><file name="config.xml" hash="4dc111452c4403c22e2d5e2be6b276e6"/><file name="system.xml" hash="52b4e773795bc29f7588aaf2b1343155"/></dir><file name=".DS_Store" hash="16eff6348e7c6882d4e9c990c14eb34a"/></dir><dir name="TransparentTicket"><dir name="Block"><file name="Form.php" hash="c7332ee1427371d7ec6495b8e7d2ea55"/><file name="Info.php" hash="3fad7f5cf0e9f3e2c45cb3084e9abf0c"/></dir><dir name="Helper"><file name="Data.php" hash="0cb47ec830a90247ab08a55c2826698d"/></dir><dir name="Model"><file name="Transparent.php" hash="524b905aba91c740b833b4f6055a42b6"/></dir><dir name="etc"><file name="config.xml" hash="ed7b309497f8bd92220776e6c093ae9f"/><file name="system.xml" hash="1829c574575e26926738e7447cef735e"/></dir></dir><file name=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="mercadopago"><dir name="standard"><file name="info.phtml" hash="bbf59a7a5da905777001128af6c62fb5"/></dir><dir name="transparent"><file name="info.phtml" hash="5df93a3c76af32912fd0806035e758f4"/></dir><dir name="transparent_boleto"><file name="info.phtml" hash="e02cd75cf7831044c1ba4f123418d692"/></dir><dir name="transparent_ticket"><file name="info.phtml" hash="42b77943bbc3e159d9208fbdf47e8243"/></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="mercadopago"><file name="clean_page.phtml" hash="1f45b4c91be19a384591cb04b2d11805"/><dir name="standard"><file name="form.phtml" hash="804a6cf27cb502749ba71e2ae48507e6"/><file name="info.phtml" hash="a5d8b4ecf65495c12579027a38148368"/><file name="pay.phtml" hash="13091e8ed10cafa4e9de391e1285a234"/></dir><dir name="transparent"><file name="form.phtml" hash="9f9aad246f1767c024c4bbd6579c35e4"/><file name="info.phtml" hash="5df93a3c76af32912fd0806035e758f4"/><file name="success.phtml" hash="62b670733cfedc11dd280c63be1a7161"/><file name="sucesso.phtml" hash="fbfa9d4f2c32a43d301cac7d1418dd40"/></dir><dir name="transparent_boleto"><file name="form.phtml" hash="4dca920aea45d0b211bbf5ee65d95f4e"/><file name="info.phtml" hash="64a3f25e28237be5eaf77c277547da42"/></dir><dir name="transparent_ticket"><file name="form.phtml" hash="17e3ea654229c5f96940f7e7748ca1a8"/><file name="info.phtml" hash="972315ee71242cd527d468e537c2f3f7"/></dir></dir></dir><dir name="layout"><file name="mercadopago.xml" hash="69e3f318b680d1332ea226887ae3ad40"/></dir></dir></dir></dir></target><target name="magelib"><dir name="mercadopago"><file name="mercadopago.php" hash="7d4620c0f68bda77bde9790a7f566ff4"/></dir></target><target name="magelocale"><dir name="es_AR"><file name="mercadopago.csv" hash="db2db0c4f635fda9efde0eceea20597d"/></dir><dir name="es_CO"><file name="mercadopago.csv" hash="096ca1c8dd9ed626f9b9eb7b9dcbc00c"/></dir><dir name="es_ES"><file name="mercadopago.csv" hash="04187abbece8cea73b6d113e952d5592"/></dir><dir name="es_MX"><file name="mercadopago.csv" hash="838605dee2f14e4a79a0f7ca0f622263"/></dir><dir name="pt_BR"><file name="mercadopago.csv" hash="183d1bc3cd99714f97c8bcddf950a0dc"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="mercadopago"><dir name="css"><file name="style.css" hash="5b44c857924de425d6a5942d98880b89"/></dir><dir name="images"><file name="loading.gif" hash="5c43434f066c2fbc4714c768b8f83853"/></dir><file name=".DS_Store" hash="fc730dea33a1da421ae6af1247e8468d"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="MercadoPago_TransparentTicket.xml" hash="cccc9919309346b38b754582bc1526e7"/><file name="MercadoPago_TransparentBoleto.xml" hash="535bef7519e395c6fd274832e55d0c77"/><file name="MercadoPago_Transparent.xml" hash="fb32c46f0b74fa2b5722b59bd627c621"/><file name="MercadoPago_Standard.xml" hash="4f582192168ac08a0dedf19b049503f9"/></dir></target><target name="mageweb"><dir name="js"><dir name="mercadopago"><file name="jquery-1.11.0.min.js" hash="52d16e147b5346147d0f3269cd4d0f80"/><file name="mercadopago.js" hash="c9fd0b5b94ad9c9234c8fa6827ff223b"/></dir></dir></target></contents>
|
24 |
+
<compatible/>
|
25 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
26 |
+
</package>
|
skin/frontend/base/default/mercadopago/.DS_Store
ADDED
Binary file
|
skin/frontend/base/default/mercadopago/css/style.css
ADDED
@@ -0,0 +1,222 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/*
|
2 |
+
*
|
3 |
+
* Checkout
|
4 |
+
*
|
5 |
+
*/
|
6 |
+
|
7 |
+
.sp-methods .form-list.mercadopago{
|
8 |
+
padding:0 !important;
|
9 |
+
}
|
10 |
+
.sp-methods .form-list.form-mercadopago{
|
11 |
+
padding:0 !important;
|
12 |
+
}
|
13 |
+
|
14 |
+
.banner_checkout_mp{
|
15 |
+
|
16 |
+
}
|
17 |
+
|
18 |
+
#img_payment_method{
|
19 |
+
float: left;
|
20 |
+
width: 100%;
|
21 |
+
margin: 5px 0 0 0;
|
22 |
+
}
|
23 |
+
|
24 |
+
.box-mes{
|
25 |
+
width: 160px;
|
26 |
+
float: left;
|
27 |
+
margin: 0 10px 0 0;
|
28 |
+
}
|
29 |
+
|
30 |
+
.box-mes select{
|
31 |
+
width: 150px;
|
32 |
+
}
|
33 |
+
.box-ano{
|
34 |
+
width: 135px;
|
35 |
+
float: left;
|
36 |
+
}
|
37 |
+
|
38 |
+
.box-ano select{
|
39 |
+
width: 90px;
|
40 |
+
}
|
41 |
+
|
42 |
+
.box-input{
|
43 |
+
float: left;
|
44 |
+
width: 100%;
|
45 |
+
margin: 10px 0 0 0;
|
46 |
+
}
|
47 |
+
|
48 |
+
.input-box.box-installments{
|
49 |
+
margin: 0 0 10px 0;
|
50 |
+
}
|
51 |
+
|
52 |
+
#docType{
|
53 |
+
width: 60px;
|
54 |
+
}
|
55 |
+
|
56 |
+
#installments{
|
57 |
+
margin: 0 0 5px 0;
|
58 |
+
}
|
59 |
+
#status{
|
60 |
+
float: left;
|
61 |
+
margin: 10px 0 10px 0;
|
62 |
+
width: 100%;
|
63 |
+
border: 1px solid transparent;
|
64 |
+
border-radius: 4px;
|
65 |
+
display: none;
|
66 |
+
}
|
67 |
+
|
68 |
+
#status.msg-alert{
|
69 |
+
color: #31708f;
|
70 |
+
background-color: #d9edf7;
|
71 |
+
border-color: #bce8f1;
|
72 |
+
}
|
73 |
+
|
74 |
+
#status.msg-success{
|
75 |
+
color: #3c763d;
|
76 |
+
background-color: #dff0d8;
|
77 |
+
border-color: #d6e9c6;
|
78 |
+
}
|
79 |
+
|
80 |
+
#status.msg-error{
|
81 |
+
color: #a94442;
|
82 |
+
background-color: #f2dede;
|
83 |
+
border-color: #ebccd1;
|
84 |
+
}
|
85 |
+
|
86 |
+
#status .box{
|
87 |
+
float: left;
|
88 |
+
width: 100%;
|
89 |
+
padding: 15px;
|
90 |
+
}
|
91 |
+
|
92 |
+
#status .loading-mp{
|
93 |
+
float: left;
|
94 |
+
margin: 0 10px 0 0;
|
95 |
+
}
|
96 |
+
|
97 |
+
#status .text-mp{
|
98 |
+
float: left;
|
99 |
+
}
|
100 |
+
|
101 |
+
p.msg-status{
|
102 |
+
margin: 0 0 !important;
|
103 |
+
}
|
104 |
+
|
105 |
+
#mercadopago_transparent_doc{
|
106 |
+
width: 120px;
|
107 |
+
}
|
108 |
+
|
109 |
+
#mercadopago_transparent_code{
|
110 |
+
width: 50px;
|
111 |
+
}
|
112 |
+
|
113 |
+
/*
|
114 |
+
*
|
115 |
+
* Pagina de sucesso
|
116 |
+
*
|
117 |
+
*/
|
118 |
+
|
119 |
+
#mensagem_mp{
|
120 |
+
float: left;
|
121 |
+
}
|
122 |
+
#mensagem_mp h4{
|
123 |
+
font-size: 18px;
|
124 |
+
}
|
125 |
+
|
126 |
+
#mensagem_mp .status{
|
127 |
+
font-size: 14px;
|
128 |
+
}
|
129 |
+
|
130 |
+
.voltar{
|
131 |
+
text-transform:uppercase;
|
132 |
+
}
|
133 |
+
|
134 |
+
#logo_mp{
|
135 |
+
float: left;
|
136 |
+
/*text-align: center;*/
|
137 |
+
width: 100%;
|
138 |
+
margin: 40px 0 0 0;
|
139 |
+
}
|
140 |
+
|
141 |
+
|
142 |
+
|
143 |
+
.btn-boleto{
|
144 |
+
font-family: 'Lato',sans-serif;
|
145 |
+
font-weight: 400;
|
146 |
+
background-color: #36A1F1;
|
147 |
+
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#36A1F1),color-stop(100%,#0F79C9));
|
148 |
+
background-image: -webkit-linear-gradient(#36A1F1,#0F79C9);
|
149 |
+
background-image: -moz-linear-gradient(#36A1F1,#0F79C9);
|
150 |
+
background-image: -o-linear-gradient(#36A1F1,#0F79C9);
|
151 |
+
background-image: linear-gradient(#36A1F1,#0F79C9);
|
152 |
+
-webkit-box-shadow: inset 0 1px #97DCFF;
|
153 |
+
box-shadow: 0 1px #97DCFF inset;
|
154 |
+
color: #FFF!important;
|
155 |
+
border: 1px solid #0D6FB9;
|
156 |
+
border-radius: 4px 4px 4px 4px;
|
157 |
+
cursor: pointer;
|
158 |
+
display: inline-block;
|
159 |
+
text-decoration: none;
|
160 |
+
text-align: center;
|
161 |
+
line-height: 1.25em;
|
162 |
+
padding: 6px 12px;
|
163 |
+
font-size: 20px;
|
164 |
+
}
|
165 |
+
|
166 |
+
/*
|
167 |
+
*
|
168 |
+
*
|
169 |
+
*/
|
170 |
+
|
171 |
+
#standard_banner_checkout{
|
172 |
+
width: 100%;
|
173 |
+
float: left;
|
174 |
+
}
|
175 |
+
|
176 |
+
|
177 |
+
@media screen and (max-width: 500px) {
|
178 |
+
.banner_checkout_mp{
|
179 |
+
width: 100%;
|
180 |
+
margin: 0 0 5px 0;
|
181 |
+
}
|
182 |
+
|
183 |
+
.box-mes {
|
184 |
+
width: 100%;
|
185 |
+
}
|
186 |
+
|
187 |
+
.box-ano{
|
188 |
+
width: 100%;
|
189 |
+
margin: 10px 0 0 0;
|
190 |
+
}
|
191 |
+
|
192 |
+
.box-mes select{
|
193 |
+
width: 50%;
|
194 |
+
}
|
195 |
+
.box-ano select{
|
196 |
+
width: 50%;
|
197 |
+
}
|
198 |
+
|
199 |
+
#mercadopago_transparent_doc {
|
200 |
+
width: 50%;
|
201 |
+
}
|
202 |
+
|
203 |
+
#status{
|
204 |
+
margin: 0 0 10px 0;
|
205 |
+
}
|
206 |
+
|
207 |
+
iframe#checkout_mercadopago{
|
208 |
+
float: left;
|
209 |
+
width: 100% !important;
|
210 |
+
}
|
211 |
+
|
212 |
+
.form-list.mercadopago{
|
213 |
+
float: left;
|
214 |
+
min-width: 100%;
|
215 |
+
width: 100%;
|
216 |
+
margin: 0 15px 0 0px;
|
217 |
+
}
|
218 |
+
}
|
219 |
+
|
220 |
+
|
221 |
+
|
222 |
+
|
skin/frontend/base/default/mercadopago/images/loading.gif
ADDED
Binary file
|