Compropago_Payment_Extension - Version 1.0.3

Version Notes

Validation Order Id

Download this release

Release Info

Developer Oswaldo Lopez Garcia
Extension Compropago_Payment_Extension
Version 1.0.3
Comparing to
See all releases


Code changes from version 1.0.2 to 1.0.3

app/code/community/Compropago/Block/Form.php CHANGED
@@ -1,3 +1,4 @@
 
1
  <?php
2
  /**
3
  * Description of Form
1
+
2
  <?php
3
  /**
4
  * Description of Form
app/code/community/Compropago/Block/OnepageSuccess.php CHANGED
@@ -1,5 +1,5 @@
1
- <?php
2
 
 
3
  class Compropago_Block_OnepageSuccess extends Mage_Checkout_Block_Onepage_Success
4
  {
5
  // Write your custom methods
@@ -10,4 +10,4 @@
10
  $this->setTemplate('compropago/onepage_success.phtml');
11
  return $outHtml;
12
  }
13
- }
 
1
 
2
+ <?php
3
  class Compropago_Block_OnepageSuccess extends Mage_Checkout_Block_Onepage_Success
4
  {
5
  // Write your custom methods
10
  $this->setTemplate('compropago/onepage_success.phtml');
11
  return $outHtml;
12
  }
13
+ }
app/code/community/Compropago/Model/Api.php CHANGED
@@ -1,3 +1,4 @@
 
1
  <?php
2
  /**
3
  * API para el consumo de los servicios
@@ -12,7 +13,6 @@ class Compropago_Model_Api
12
  * @var string
13
  */
14
  protected $_url = 'https://api.compropago.com/v1/charges';
15
-
16
  /**
17
  * respuesta sin parsear del servicio
18
  * @var string
@@ -43,9 +43,7 @@ class Compropago_Model_Api
43
  {
44
  throw new Exception('parameter is not an array');
45
  }
46
-
47
  $info['url'] = $this->_url;
48
-
49
  // datos para la peticion del servicio
50
  $data = array(
51
  'order_id' => $info['order_id'],
@@ -56,42 +54,34 @@ class Compropago_Model_Api
56
  'customer_email' => $info['customer_email'],
57
  'payment_type' => $info['payment_type']
58
  );
59
-
60
  $username = $info['client_secret'];
61
  $password = $info['client_id'];
62
-
63
  // consumo del servicio
64
  $ch = curl_init();
65
  curl_setopt($ch, CURLOPT_URL, $this->_url);
66
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
67
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
68
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
69
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
70
  curl_setopt($ch, CURLOPT_USERPWD, $username . ":");
71
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
72
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
73
  curl_setopt($ch, CURLOPT_POST, true);
74
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
75
-
76
  // Blindly accept the certificate
77
  $this->_response = curl_exec($ch);
78
  curl_close($ch);
79
-
80
  // tratamiento de la respuesta del servicio
81
  $response = json_decode($this->_response,true);
82
-
83
  // respuesta del servicio
84
- if (empty($response))
85
  {
86
  Mage::throwException("El servicio de Compropago no se encuentra disponible.");
87
  }
88
 
89
- if (isset($response['type']) && $response['type'] == "error")
90
  {
91
  $errorMessage = $response['message'] . "\n";
92
  Mage::throwException($errorMessage);
93
  }
94
-
95
 
96
  return $response;
97
  }
@@ -104,5 +94,4 @@ class Compropago_Model_Api
104
  {
105
  return $this->_response;
106
  }
107
-
108
  }
1
+
2
  <?php
3
  /**
4
  * API para el consumo de los servicios
13
  * @var string
14
  */
15
  protected $_url = 'https://api.compropago.com/v1/charges';
 
16
  /**
17
  * respuesta sin parsear del servicio
18
  * @var string
43
  {
44
  throw new Exception('parameter is not an array');
45
  }
 
46
  $info['url'] = $this->_url;
 
47
  // datos para la peticion del servicio
48
  $data = array(
49
  'order_id' => $info['order_id'],
54
  'customer_email' => $info['customer_email'],
55
  'payment_type' => $info['payment_type']
56
  );
 
57
  $username = $info['client_secret'];
58
  $password = $info['client_id'];
 
59
  // consumo del servicio
60
  $ch = curl_init();
61
  curl_setopt($ch, CURLOPT_URL, $this->_url);
62
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
63
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
 
 
64
  curl_setopt($ch, CURLOPT_USERPWD, $username . ":");
65
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
66
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
67
  curl_setopt($ch, CURLOPT_POST, true);
68
  curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
 
69
  // Blindly accept the certificate
70
  $this->_response = curl_exec($ch);
71
  curl_close($ch);
 
72
  // tratamiento de la respuesta del servicio
73
  $response = json_decode($this->_response,true);
 
74
  // respuesta del servicio
75
+ if ($response == null)
76
  {
77
  Mage::throwException("El servicio de Compropago no se encuentra disponible.");
78
  }
79
 
80
+ if ($response['type'] == "error")
81
  {
82
  $errorMessage = $response['message'] . "\n";
83
  Mage::throwException($errorMessage);
84
  }
 
85
 
86
  return $response;
87
  }
94
  {
95
  return $this->_response;
96
  }
 
97
  }
app/code/community/Compropago/Model/Providers.php ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author Eduardo Aguilar <eduardo.aguilar@compropago.com>
4
+ */
5
+
6
+ class Compropago_Model_Providers
7
+ {
8
+ public function toOptionArray()
9
+ {
10
+ $options = array();
11
+
12
+ foreach($this->getProviders() as $provider){
13
+ $options[] = array(
14
+ 'value' => $provider['internal_name'],
15
+ 'label' => $provider['name']
16
+ );
17
+ }
18
+
19
+ return $options;
20
+ }
21
+
22
+ private function getProviders()
23
+ {
24
+ $url = 'https://api.compropago.com/v1/providers/';
25
+ $url.= 'true';
26
+
27
+ $ch = curl_init();
28
+ curl_setopt($ch, CURLOPT_URL, $url);
29
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
30
+ curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
31
+ curl_setopt($ch, CURLOPT_USERPWD, "" . ":" . "");
32
+
33
+ // Blindly accept the certificate
34
+ curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
35
+ $response = curl_exec($ch);
36
+ curl_close($ch);
37
+
38
+ // tratamiento de la respuesta del servicio
39
+ $response = json_decode($response,true);
40
+
41
+ // respuesta del servicio
42
+ if ($response['type'] == "error")
43
+ {
44
+ $errorMessage = $response['message'] . "\n";
45
+ Mage::throwException($errorMessage);
46
+ }
47
+
48
+ $hash = array();
49
+
50
+ foreach($response as $record)
51
+ {
52
+ $hash[$record['rank']] = $record;
53
+ }
54
+
55
+ ksort($hash);
56
+
57
+ $records = array();
58
+
59
+ foreach($hash as $record)
60
+ {
61
+ $records []= $record;
62
+ }
63
+
64
+ return $records;
65
+ }
66
+ }
app/code/community/Compropago/Model/Standard.php CHANGED
@@ -8,27 +8,24 @@ class Compropago_Model_Standard extends Mage_Payment_Model_Method_Abstract
8
  {
9
  protected $_code = 'compropago';
10
  protected $_formBlockType = 'compropago/form';
11
-
12
- protected $_canUseForMultiShipping = false;
13
  protected $_canUseInternal = false;
14
  protected $_isInitializeNeeded = true;
15
-
16
-
17
  public function assignData($data)
18
  {
19
  $customer = Mage::getSingleton('customer/session')->getCustomer();
20
 
21
- if (!($data instanceof Varien_Object))
22
- {
23
  $data = new Varien_Object($data);
24
  }
25
- $store_code = $data->getStoreCode();
26
-
27
- //Verificamos si seleccionaron un establecimiento si no les dejamos por default OXXO
28
- if (empty($store_code)){
29
- $store_code = 'OXXO';
30
- }
31
 
 
 
 
 
 
32
  //Verificamos si existe el customer
33
  if($customer->getFirstname()){
34
  $info = array(
@@ -46,137 +43,143 @@ class Compropago_Model_Standard extends Mage_Payment_Model_Method_Abstract
46
  "customer_name" => htmlentities($billing['firstname']),
47
  "customer_email" => htmlentities($billing['email'])
48
  );
49
- }
50
 
51
  $infoInstance = $this->getInfoInstance();
52
- $infoInstance->setAdditionalData(serialize($info));
53
 
54
  return $this;
55
- }
56
-
57
  public function initialize($paymentAction, $stateObject)
58
  {
59
  parent::initialize($paymentAction, $stateObject);
60
-
61
- if($paymentAction != 'sale')
62
- {
63
  return $this;
64
  }
65
-
66
  // Set the default state of the new order.
67
  $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; // state now = 'pending_payment'
 
 
 
68
  $stateObject->setState($state);
69
- $stateObject->setStatus($state);
70
  $stateObject->setIsNotified(false);
71
-
72
- //Retrieve cart/quote information.
73
  $sessionCheckout = Mage::getSingleton('checkout/session');
74
  $quoteId = $sessionCheckout->getQuoteId();
75
-
76
- // obtiene el quote para informacion de la orden
77
  $quote = Mage::getModel("sales/quote")->load($quoteId);
78
  $grandTotal = $quote->getData('grand_total');
79
  $subTotal = $quote->getSubtotal();
80
- $shippingHandling = ($grandTotal-$subTotal);
81
-
82
  $convertQuote = Mage::getSingleton('sales/convert_quote');
83
  $order = $convertQuote->toOrder($quote);
84
- $orderNumber = $order->getIncrementId();
85
- $order1 = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
 
 
 
 
86
 
87
- foreach ($order1->getAllItems() as $item) {
88
- $name += $item->getName();
89
- }
90
-
91
  // obtener datos del pago en info y asignar monto total
92
  $infoIntance = $this->getInfoInstance();
93
  $info = unserialize($infoIntance->getAdditionalData());
94
  $info['order_id'] = $orderNumber;
95
  $info['order_price'] = $grandTotal;
96
- $info['order_name'] = $name;
97
- $info['image_url'] = '';
98
- $info['client_secret'] = trim($this->getConfigData('client_secret'));
99
- $info['client_id'] = trim($this->getConfigData('client_id'));
100
-
101
- $logo = $this->getConfigData('logo_success_src') ? Mage::getDesign()->getSkinUrl('images/compropago/'.$this->getConfigData('logo_success_src')) : Mage::getDesign()->getSkinUrl(Mage::getStoreConfig('design/header/logo_src'));
102
-
103
- // enviar pago
104
  try
105
  {
106
  $Api = new Compropago_Model_Api();
107
- $response = $Api->payment($info);
108
  }
109
  catch (Exception $error)
110
- {
111
  Mage::throwException($error->getMessage());
112
  }
113
 
114
- if(isset($response['api_version']) && $response['api_version'] == '1.0'){
115
- $id = $response['payment_id'];
116
- } elseif (isset($response['api_version']) && $response['api_version'] == '1.1') {
117
- $id = $response['id'];
118
- }
119
-
 
 
 
 
 
 
 
 
 
 
 
 
120
  Mage::getSingleton('core/session')->setCompropagoId($id);
121
-
122
  return $this;
123
  }
124
-
125
  public function getProviders()
126
- {
127
- if (trim($this->getConfigData('client_secret')) == ''
128
- || trim($this->getConfigData('client_id')) == ''
129
  ) {
130
  Mage::throwException("Datos incompletos del servicio, contacte al administrador del sitio");
131
  }
132
-
133
  $url = 'https://api.compropago.com/v1/providers/';
134
  $url.= 'true';
135
- $username = trim($this->getConfigData('client_secret'));
136
- $password = trim($this->getConfigData('client_id'));
137
 
138
  $ch = curl_init();
139
  curl_setopt($ch, CURLOPT_URL, $url);
140
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
141
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
142
  curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
143
-
144
  // Blindly accept the certificate
145
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
146
  $this->_response = curl_exec($ch);
147
  curl_close($ch);
148
-
149
  // tratamiento de la respuesta del servicio
150
  $response = json_decode($this->_response,true);
151
 
152
- // respuesta del servicio
153
- if (isset($response['type']) && $response['type'] == "error")
154
- {
155
- $errorMessage = $response['message'] . "\n";
156
  Mage::throwException($errorMessage);
157
  }
158
 
159
 
 
 
160
  $hash = array();
161
-
162
- foreach($response as $record)
163
- {
164
- $hash[$record['rank']] = $record;
 
 
 
165
  }
166
-
167
  ksort($hash);
168
-
169
- foreach($hash as $record)
170
- {
171
  $records []= $record;
172
- }
173
 
174
  return $records;
175
  }
176
-
177
  public function showLogoProviders()
178
  {
179
  return ( (int)trim($this->getConfigData("provider")) == 1 ? true : false );
180
- }
181
-
182
- }
8
  {
9
  protected $_code = 'compropago';
10
  protected $_formBlockType = 'compropago/form';
11
+
12
+ protected $_canUseForMultiShipping = false;
13
  protected $_canUseInternal = false;
14
  protected $_isInitializeNeeded = true;
15
+
 
16
  public function assignData($data)
17
  {
18
  $customer = Mage::getSingleton('customer/session')->getCustomer();
19
 
20
+ if (!($data instanceof Varien_Object)){
 
21
  $data = new Varien_Object($data);
22
  }
 
 
 
 
 
 
23
 
24
+ if ($data->getStoreCode() != ''){
25
+ $store_code = $data->getStoreCode();
26
+ } else {
27
+ $store_code = 'OXXO';
28
+ }
29
  //Verificamos si existe el customer
30
  if($customer->getFirstname()){
31
  $info = array(
43
  "customer_name" => htmlentities($billing['firstname']),
44
  "customer_email" => htmlentities($billing['email'])
45
  );
46
+ }
47
 
48
  $infoInstance = $this->getInfoInstance();
49
+ $infoInstance->setAdditionalData(serialize($info));
50
 
51
  return $this;
52
+ }
53
+
54
  public function initialize($paymentAction, $stateObject)
55
  {
56
  parent::initialize($paymentAction, $stateObject);
57
+
58
+ if($paymentAction != 'sale'){
 
59
  return $this;
60
  }
61
+
62
  // Set the default state of the new order.
63
  $state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; // state now = 'pending_payment'
64
+ //Mage::log('state->'.$state,null,'compropago.log');
65
+ $default_status = 'pending';
66
+
67
  $stateObject->setState($state);
68
+ $stateObject->setStatus($default_status);
69
  $stateObject->setIsNotified(false);
70
+
71
+ //Retrieve cart/quote information.
72
  $sessionCheckout = Mage::getSingleton('checkout/session');
73
  $quoteId = $sessionCheckout->getQuoteId();
74
+ // obtiene el quote para informacion de la orden
 
75
  $quote = Mage::getModel("sales/quote")->load($quoteId);
76
  $grandTotal = $quote->getData('grand_total');
77
  $subTotal = $quote->getSubtotal();
78
+ $shippingHandling = ($grandTotal-$subTotal);
79
+
80
  $convertQuote = Mage::getSingleton('sales/convert_quote');
81
  $order = $convertQuote->toOrder($quote);
82
+ $orderNumber = $order->getIncrementId();
83
+ $order1 = Mage::getModel('sales/order')->loadByIncrementId($orderNumber);
84
+
85
+ foreach ($order1->getAllItems() as $item) {
86
+ $name .= $item->getName();
87
+ }
88
 
 
 
 
 
89
  // obtener datos del pago en info y asignar monto total
90
  $infoIntance = $this->getInfoInstance();
91
  $info = unserialize($infoIntance->getAdditionalData());
92
  $info['order_id'] = $orderNumber;
93
  $info['order_price'] = $grandTotal;
94
+ $info['order_name'] = $name;
95
+ $info['client_secret'] = trim($this->getConfigData('private_key'));
96
+ $info['client_id'] = trim($this->getConfigData('public_key'));
97
+ // enviar pago
 
 
 
 
98
  try
99
  {
100
  $Api = new Compropago_Model_Api();
101
+ $response = $Api->payment($info);
102
  }
103
  catch (Exception $error)
104
+ {
105
  Mage::throwException($error->getMessage());
106
  }
107
 
108
+ // respuesta del servicio
109
+ if ($response == null)
110
+ {
111
+ Mage::throwException("El servicio de Compropago no se encuentra disponible.");
112
+ }
113
+
114
+ if ($response['type'] == "error")
115
+ {
116
+ $errorMessage = $response['message'] . "\n";
117
+ Mage::throwException($errorMessage);
118
+ }
119
+
120
+ if($response['api_version'] == '1.0'){
121
+ $id = $response['payment_id'];
122
+ } elseif ($response['api_version'] == '1.1' || $response['api_version'] == '1.2') {
123
+ $id = $response['id'];
124
+ }
125
+
126
  Mage::getSingleton('core/session')->setCompropagoId($id);
 
127
  return $this;
128
  }
 
129
  public function getProviders()
130
+ {
131
+ if (trim($this->getConfigData('private_key')) == ''
132
+ || trim($this->getConfigData('public_key')) == ''
133
  ) {
134
  Mage::throwException("Datos incompletos del servicio, contacte al administrador del sitio");
135
  }
 
136
  $url = 'https://api.compropago.com/v1/providers/';
137
  $url.= 'true';
138
+ $username = trim($this->getConfigData('private_key'));
139
+ $password = trim($this->getConfigData('public_key'));
140
 
141
  $ch = curl_init();
142
  curl_setopt($ch, CURLOPT_URL, $url);
143
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
144
  curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
145
  curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);
 
146
  // Blindly accept the certificate
147
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
148
  $this->_response = curl_exec($ch);
149
  curl_close($ch);
 
150
  // tratamiento de la respuesta del servicio
151
  $response = json_decode($this->_response,true);
152
 
153
+ // respuesta del servicio
154
+ if ($response['type'] == "error"){
155
+ $errorMessage = $response['message'] . "\n";
 
156
  Mage::throwException($errorMessage);
157
  }
158
 
159
 
160
+ $filter = explode(",",$this->getConfigData('provider_available'));
161
+
162
  $hash = array();
163
+
164
+ foreach($response as $record){
165
+ foreach($filter as $value){
166
+ if($record['internal_name'] == $value){
167
+ $hash[$record['rank']] = $record;
168
+ }
169
+ }
170
  }
171
+
172
  ksort($hash);
173
+ $records = array();
174
+
175
+ foreach($hash as $record){
176
  $records []= $record;
177
+ }
178
 
179
  return $records;
180
  }
 
181
  public function showLogoProviders()
182
  {
183
  return ( (int)trim($this->getConfigData("provider")) == 1 ? true : false );
184
+ }
185
+ }
 
app/code/community/Compropago/controllers/WebhookController.php CHANGED
@@ -10,7 +10,6 @@ class Compropago_WebhookController extends Mage_Core_Controller_Front_Action{
10
  public function _construct() {
11
  $this->_model = Mage::getModel('compropago/Standard');
12
  }
13
-
14
  public function indexAction(){
15
  $params = $this->getRequest()->getParams();
16
  $body = @file_get_contents('php://input');
@@ -20,10 +19,10 @@ class Compropago_WebhookController extends Mage_Core_Controller_Front_Action{
20
  if ($event_json->{'api_version'} === '1.1') {
21
  if ($event_json->{'id'}){
22
  $order = $this->verifyOrder($event_json->{'id'});
23
- $type = $order['type'];
24
 
25
- if (isset($order['id'])){
26
- if ($order['id'] === $event_json->{'id'}) {
27
  $order_id = $order['order_info']['order_id'];
28
  $this->changeStatus($order_id, $type);
29
  } else {
@@ -37,7 +36,6 @@ class Compropago_WebhookController extends Mage_Core_Controller_Front_Action{
37
  if ($event_json->data->object->{'id'}){
38
  $order = $this->verifyOrder($event_json->data->object->{'id'});
39
  $type = $order['type'];
40
-
41
  if (isset($order['data']['object']['id'])){
42
  if ($order['data']['object']['id'] === $event_json->data->object->{'id'}) {
43
  $order_id = $order['data']['object']['payment_details']['product_id'];
@@ -55,49 +53,65 @@ class Compropago_WebhookController extends Mage_Core_Controller_Front_Action{
55
  echo 'Order not valid';
56
  }
57
  }
58
-
59
  public function changeStatus($order_id, $type){
60
  $_order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
61
-
62
  switch ($type) {
63
  case 'charge.pending':
64
- $status = $this->_model->getConfigData('order_status_in_process');
65
  $message = 'The user has not completed the payment process yet.';
66
- $_order->addStatusToHistory($status, $message);
 
 
 
 
67
  break;
68
  case 'charge.success':
69
- $message = 'ComproPago automatically confirmed payment for this order.';
70
  $status = $this->_model->getConfigData('order_status_approved');
71
- $_order->addStatusToHistory($status,$message,true);
 
 
 
 
 
72
  break;
73
- case 'charge.declined':
74
  $status = $this->_model->getConfigData('order_status_in_process');
75
  $message = 'The user has not completed the payment process yet.';
76
- $_order->addStatusToHistory($status, $message);
 
 
 
 
77
  break;
78
  case 'charge.deleted':
79
  $status = $this->_model->getConfigData('order_status_cancelled');
80
- $message = 'The user has not completed the payment and the order was cancelled.';
81
- $_order->addStatusToHistory($status, $message,true);
 
 
 
 
82
  break;
83
  case 'charge.expired':
84
  $status = $this->_model->getConfigData('order_status_cancelled');
85
- $message = 'The user has not completed the payment and the order was cancelled.';
86
- $_order->addStatusToHistory($status, $message,true);
 
 
 
 
87
  break;
88
  default:
89
  $status = $this->_model->getConfigData('order_status_in_process');
90
  $message = "";
91
  $_order->addStatusToHistory($status, $message,true);
92
  }
93
-
94
  $_order->save();
95
  }
96
-
97
  public function verifyOrder($id){
98
  $url = 'https://api.compropago.com/v1/charges/';
99
  $url .= $id;
100
- $username = trim($this->_model->getConfigData('client_secret'));
101
  $ch = curl_init();
102
  curl_setopt($ch, CURLOPT_URL, $url);
103
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
10
  public function _construct() {
11
  $this->_model = Mage::getModel('compropago/Standard');
12
  }
 
13
  public function indexAction(){
14
  $params = $this->getRequest()->getParams();
15
  $body = @file_get_contents('php://input');
19
  if ($event_json->{'api_version'} === '1.1') {
20
  if ($event_json->{'id'}){
21
  $order = $this->verifyOrder($event_json->{'id'});
22
+ $type = $order['type'];
23
 
24
+ if (isset($order['id'])){
25
+ if ($order['id'] === $event_json->{'id'}) {
26
  $order_id = $order['order_info']['order_id'];
27
  $this->changeStatus($order_id, $type);
28
  } else {
36
  if ($event_json->data->object->{'id'}){
37
  $order = $this->verifyOrder($event_json->data->object->{'id'});
38
  $type = $order['type'];
 
39
  if (isset($order['data']['object']['id'])){
40
  if ($order['data']['object']['id'] === $event_json->data->object->{'id'}) {
41
  $order_id = $order['data']['object']['payment_details']['product_id'];
53
  echo 'Order not valid';
54
  }
55
  }
 
56
  public function changeStatus($order_id, $type){
57
  $_order = Mage::getModel('sales/order')->loadByIncrementId($order_id);
 
58
  switch ($type) {
59
  case 'charge.pending':
60
+ $status = $this->_model->getConfigData('order_status_new');
61
  $message = 'The user has not completed the payment process yet.';
62
+ $_order->setData('state',$status);
63
+ $_order->setStatus($status);
64
+ $history = $_order->addStatusHistoryComment($message);
65
+ $history->setIsCustomerNotified(false);
66
+ $_order->save();
67
  break;
68
  case 'charge.success':
 
69
  $status = $this->_model->getConfigData('order_status_approved');
70
+ $message = 'ComproPago automatically confirmed payment for this order.';
71
+ $_order->setData('state',$status);
72
+ $_order->setStatus($status);
73
+ $history = $_order->addStatusHistoryComment($message);
74
+ $history->setIsCustomerNotified(true);
75
+ $_order->save();
76
  break;
77
+ case 'charge.declined':
78
  $status = $this->_model->getConfigData('order_status_in_process');
79
  $message = 'The user has not completed the payment process yet.';
80
+ $_order->setData('state',$status);
81
+ $_order->setStatus($status);
82
+ $history = $_order->addStatusHistoryComment($message);
83
+ $history->setIsCustomerNotified(false);
84
+ $_order->save();
85
  break;
86
  case 'charge.deleted':
87
  $status = $this->_model->getConfigData('order_status_cancelled');
88
+ $message = 'The user has not completed the payment and the order was cancelled.';
89
+ $_order->setData('state',$status);
90
+ $_order->setStatus($status);
91
+ $history = $_order->addStatusHistoryComment($message);
92
+ $history->setIsCustomerNotified(false);
93
+ $_order->save();
94
  break;
95
  case 'charge.expired':
96
  $status = $this->_model->getConfigData('order_status_cancelled');
97
+ $message = 'The user has not completed the payment and the order was cancelled.';
98
+ $_order->setData('state',$status);
99
+ $_order->setStatus($status);
100
+ $history = $_order->addStatusHistoryComment($message);
101
+ $history->setIsCustomerNotified(false);
102
+ $_order->save();
103
  break;
104
  default:
105
  $status = $this->_model->getConfigData('order_status_in_process');
106
  $message = "";
107
  $_order->addStatusToHistory($status, $message,true);
108
  }
 
109
  $_order->save();
110
  }
 
111
  public function verifyOrder($id){
112
  $url = 'https://api.compropago.com/v1/charges/';
113
  $url .= $id;
114
+ $username = trim($this->_model->getConfigData('private_key'));
115
  $ch = curl_init();
116
  curl_setopt($ch, CURLOPT_URL, $url);
117
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
app/code/community/Compropago/etc/system.xml CHANGED
@@ -10,6 +10,7 @@
10
  <show_in_website>1</show_in_website>
11
  <show_in_store>0</show_in_store>
12
  <fields>
 
13
  <active translate="label">
14
  <label>Habilitar</label>
15
  <frontend_type>select</frontend_type>
@@ -19,6 +20,7 @@
19
  <show_in_website>1</show_in_website>
20
  <show_in_store>0</show_in_store>
21
  </active>
 
22
  <title translate="label,comment">
23
  <label>Título</label>
24
  <comment>
@@ -32,22 +34,24 @@
32
  <show_in_website>1</show_in_website>
33
  <show_in_store>0</show_in_store>
34
  </title>
35
- <client_id translate="label">
36
  <label>Llave Publica</label>
37
  <frontend_type>text</frontend_type>
38
  <sort_order>6</sort_order>
39
  <show_in_default>1</show_in_default>
40
  <show_in_website>1</show_in_website>
41
  <show_in_store>0</show_in_store>
42
- </client_id>
43
- <client_secret translate="label">
 
44
  <label>Llave Privada</label>
45
  <frontend_type>text</frontend_type>
46
  <sort_order>7</sort_order>
47
  <show_in_default>1</show_in_default>
48
  <show_in_website>1</show_in_website>
49
  <show_in_store>0</show_in_store>
50
- </client_secret>
 
51
  <provider translate="label">
52
  <label>Habilitar Logos para Establecimientos</label>
53
  <frontend_type>select</frontend_type>
@@ -57,20 +61,22 @@
57
  <show_in_website>1</show_in_website>
58
  <show_in_store>1</show_in_store>
59
  </provider>
60
- <logo_success_src translate="label">
61
- <label>Logo para recibo de pago</label>
62
- <comment>Solo escribe el nombre de tu imagen "image.png" y sube la imagen a la ruta destino “skin/frontend/base/default/images/compropago/image.png" Permite tipos de archivo: PNG, GIF, JPG, JPEG. </comment>
63
- <frontend_type>text</frontend_type>
 
64
  <sort_order>10</sort_order>
65
  <show_in_default>1</show_in_default>
66
  <show_in_website>1</show_in_website>
67
  <show_in_store>1</show_in_store>
68
- </logo_success_src>
 
69
  <order_status_new translate="label">
70
  <label>Elegir estado de nuevas ordenes</label>
71
  <comment>
72
  <![CDATA[
73
- Ir a "system -> OrderStatuses" y asignar una nueva orden de estado personalizada en la opción de 'new'.
74
  ]]>
75
  </comment>
76
  <frontend_type>select</frontend_type>
@@ -80,6 +86,7 @@
80
  <show_in_website>1</show_in_website>
81
  <show_in_store>1</show_in_store>
82
  </order_status_new>
 
83
  <order_status_approved translate="label">
84
  <label>Elegir estado de ordenes aprobadas</label>
85
  <comment>
@@ -94,6 +101,7 @@
94
  <show_in_website>1</show_in_website>
95
  <show_in_store>1</show_in_store>
96
  </order_status_approved>
 
97
  <order_status_in_process translate="label">
98
  <label>Elegir estado de ordenes pendientes</label>
99
  <comment>
@@ -108,11 +116,12 @@
108
  <show_in_website>1</show_in_website>
109
  <show_in_store>1</show_in_store>
110
  </order_status_in_process>
 
111
  <order_status_cancelled translate="label">
112
  <label>Elegir el estado de las ordenes canceladas</label>
113
  <comment>
114
  <![CDATA[
115
- Ir a "system -> OrderStatuses" y asignar una nueva orden de estado personalizada en la opción de 'new'.
116
  ]]>
117
  </comment>
118
  <frontend_type>select</frontend_type>
@@ -122,6 +131,7 @@
122
  <show_in_website>1</show_in_website>
123
  <show_in_store>1</show_in_store>
124
  </order_status_cancelled>
 
125
  </fields>
126
  </compropago>
127
  </groups>
10
  <show_in_website>1</show_in_website>
11
  <show_in_store>0</show_in_store>
12
  <fields>
13
+
14
  <active translate="label">
15
  <label>Habilitar</label>
16
  <frontend_type>select</frontend_type>
20
  <show_in_website>1</show_in_website>
21
  <show_in_store>0</show_in_store>
22
  </active>
23
+
24
  <title translate="label,comment">
25
  <label>Título</label>
26
  <comment>
34
  <show_in_website>1</show_in_website>
35
  <show_in_store>0</show_in_store>
36
  </title>
37
+ <public_key translate="label">
38
  <label>Llave Publica</label>
39
  <frontend_type>text</frontend_type>
40
  <sort_order>6</sort_order>
41
  <show_in_default>1</show_in_default>
42
  <show_in_website>1</show_in_website>
43
  <show_in_store>0</show_in_store>
44
+ </public_key>
45
+
46
+ <private_key translate="label">
47
  <label>Llave Privada</label>
48
  <frontend_type>text</frontend_type>
49
  <sort_order>7</sort_order>
50
  <show_in_default>1</show_in_default>
51
  <show_in_website>1</show_in_website>
52
  <show_in_store>0</show_in_store>
53
+ </private_key>
54
+
55
  <provider translate="label">
56
  <label>Habilitar Logos para Establecimientos</label>
57
  <frontend_type>select</frontend_type>
61
  <show_in_website>1</show_in_website>
62
  <show_in_store>1</show_in_store>
63
  </provider>
64
+
65
+ <provider_available translate="label">
66
+ <label>Seleccionar Proveedores de pago</label>
67
+ <frontend_type>multiselect</frontend_type>
68
+ <source_model>compropago/providers</source_model>
69
  <sort_order>10</sort_order>
70
  <show_in_default>1</show_in_default>
71
  <show_in_website>1</show_in_website>
72
  <show_in_store>1</show_in_store>
73
+ </provider_available>
74
+
75
  <order_status_new translate="label">
76
  <label>Elegir estado de nuevas ordenes</label>
77
  <comment>
78
  <![CDATA[
79
+ Ir a "system -> OrderStatuses" y asignar una nueva orden de estado personalizada en la opción de 'new'.
80
  ]]>
81
  </comment>
82
  <frontend_type>select</frontend_type>
86
  <show_in_website>1</show_in_website>
87
  <show_in_store>1</show_in_store>
88
  </order_status_new>
89
+
90
  <order_status_approved translate="label">
91
  <label>Elegir estado de ordenes aprobadas</label>
92
  <comment>
101
  <show_in_website>1</show_in_website>
102
  <show_in_store>1</show_in_store>
103
  </order_status_approved>
104
+
105
  <order_status_in_process translate="label">
106
  <label>Elegir estado de ordenes pendientes</label>
107
  <comment>
116
  <show_in_website>1</show_in_website>
117
  <show_in_store>1</show_in_store>
118
  </order_status_in_process>
119
+
120
  <order_status_cancelled translate="label">
121
  <label>Elegir el estado de las ordenes canceladas</label>
122
  <comment>
123
  <![CDATA[
124
+ Ir a "system -> OrderStatuses" y asignar una nueva orden de estado personalizada en la opción de 'new'.
125
  ]]>
126
  </comment>
127
  <frontend_type>select</frontend_type>
131
  <show_in_website>1</show_in_website>
132
  <show_in_store>1</show_in_store>
133
  </order_status_cancelled>
134
+
135
  </fields>
136
  </compropago>
137
  </groups>
app/design/frontend/base/default/layout/compropago.xml CHANGED
@@ -24,16 +24,15 @@
24
  * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
25
  * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
  */
27
-
28
  -->
29
  <layout version="0.1.0">
30
  <checkout_onepage_index>
31
- <reference name="head">
32
  <action method="addCss">
33
  <path>css/compropago/compropago.css</path>
34
  </action>
35
- <action method="addJs">
36
- <script>compropago/compropago.js</script>
37
  </action>
38
  </reference>
39
  </checkout_onepage_index>
24
  * @copyright Copyright (c) 2013 Magento Inc. (http://www.magentocommerce.com)
25
  * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
  */
 
27
  -->
28
  <layout version="0.1.0">
29
  <checkout_onepage_index>
30
+ <reference name="head">
31
  <action method="addCss">
32
  <path>css/compropago/compropago.css</path>
33
  </action>
34
+ <action method="addJs">
35
+ <script>compropago/compropago.js</script>
36
  </action>
37
  </reference>
38
  </checkout_onepage_index>
app/design/frontend/base/default/template/compropago/cash.phtml CHANGED
@@ -1,46 +1,46 @@
1
  <?php
2
  /**
3
  *
4
- * Form payment cash
5
  *
6
  * @author Oswaldo Lopez (waldix86@gmail.com)
7
  */
8
  ?>
9
 
10
  <?php $_code= $this->getMethodCode();
11
- $_model = $this->getMethod();
12
- $_getProviders = $_model->getProviders();
13
  ?>
14
  <img id="image_providers" onload="loadImage(this);" src="<?php echo $this->getSkinUrl('images/compropago/providers.png') ?>" class="image_providers_compropago">
15
- <ul id="payment_form_<?php echo $_code ?>" style="display:none" >
16
- <label class="label-instructions">Selecciona un establecimiento para realizar el pago en efectivo:</label>
17
- <?php if (!$_model->showLogoProviders())
18
- { ?>
19
- <li>
20
- <select id="<?php echo $_code ?>_store"
21
- name="payment[store_code]">
22
- <?php foreach ($_getProviders as $_provider): ?>
23
- <option value="<?php echo $_provider['internal_name'] ?>"><?php echo $_provider['name'] ?></option>
24
- <?php endforeach; ?>
25
- </select>
26
- </li>
27
- <?php } else { ?>
28
- <li>
29
- <div class="row stores-compact" style="padding: 5px 15px; opacity: 1; width:100%;" id="<?php echo $_code ?>_store">
30
- <?php foreach ($_getProviders as $_provider): ?>
31
- <!--<php if($_provider['internal_name'] == 'OXXO' || $_provider['internal_name'] == 'SEVEN_ELEVEN' || $_provider['internal_name'] == 'EXTRA' || $_provider['internal_name'] == 'CHEDRAUI'): ?>-->
32
- <div class="element-box">
33
- <label for="<?php echo $_code ?>_<?php echo $_provider['internal_name'] ?>" class="provider-description <?php echo $_provider['internal_name'] == 'OXXO' ? 'seleccion_store' : '' ?>" onclick="seleccionar(this,'<?php echo $_provider['internal_name'] ?>');">
34
- <img src="<?php echo $_provider['image_medium'] ?>" class="image_provider">
35
- </label>
36
- </div>
37
- <!--<php endif; ?>-->
38
- <?php endforeach; ?>
39
- <input id="store_code_selected" type="hidden" name="payment[store_code]" value="">
40
- </div>
41
- </li>
42
- <?php } ?>
43
  </ul>
44
  <div>
45
  <?php echo $this->getMethod()->getConfigData('message');?>
46
- </div>
1
  <?php
2
  /**
3
  *
4
+ * Form payment cash
5
  *
6
  * @author Oswaldo Lopez (waldix86@gmail.com)
7
  */
8
  ?>
9
 
10
  <?php $_code= $this->getMethodCode();
11
+ $_model = $this->getMethod();
12
+ $_getProviders = $_model->getProviders();
13
  ?>
14
  <img id="image_providers" onload="loadImage(this);" src="<?php echo $this->getSkinUrl('images/compropago/providers.png') ?>" class="image_providers_compropago">
15
+ <ul id="payment_form_<?php echo $_code ?>" style="display:none" >
16
+ <label class="label-instructions">Selecciona un establecimiento para realizar el pago en efectivo:</label>
17
+ <?php if (!$_model->showLogoProviders())
18
+ { ?>
19
+ <li>
20
+ <select id="<?php echo $_code ?>_store"
21
+ name="payment[store_code]">
22
+ <?php foreach ($_getProviders as $_provider): ?>
23
+ <option value="<?php echo $_provider['internal_name'] ?>"><?php echo $_provider['name'] ?></option>
24
+ <?php endforeach; ?>
25
+ </select>
26
+ </li>
27
+ <?php } else { ?>
28
+ <li>
29
+ <div class="row stores-compact" style="padding: 5px 15px; opacity: 1; width:100%; margin-bottom:70px;" id="<?php echo $_code ?>_store">
30
+ <?php foreach ($_getProviders as $_provider): ?>
31
+ <!--<php if($_provider['internal_name'] == 'OXXO' || $_provider['internal_name'] == 'SEVEN_ELEVEN' || $_provider['internal_name'] == 'EXTRA' || $_provider['internal_name'] == 'CHEDRAUI'): ?>-->
32
+ <div class="element-box">
33
+ <label for="<?php echo $_code ?>_<?php echo $_provider['internal_name'] ?>" class="provider-description <?php echo $_provider['internal_name'] == 'OXXO' ? 'seleccion_store' : '' ?>" onclick="seleccionar(this,'<?php echo $_provider['internal_name'] ?>');">
34
+ <img src="<?php echo $_provider['image_medium'] ?>" class="image_provider">
35
+ </label>
36
+ </div>
37
+ <!--<php endif; ?>-->
38
+ <?php endforeach; ?>
39
+ <input id="store_code_selected" type="hidden" name="payment[store_code]" value="">
40
+ </div>
41
+ </li>
42
+ <?php } ?>
43
  </ul>
44
  <div>
45
  <?php echo $this->getMethod()->getConfigData('message');?>
46
+ </div>
app/design/frontend/base/default/template/compropago/onepage_success.phtml CHANGED
@@ -5,19 +5,21 @@
5
  ?>
6
 
7
  <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?>
8
- <?php $compropagoId = Mage::getSingleton('core/session')->getCompropagoId(); ?>
 
9
 
10
  <div id="receipt" class="receipt">
11
  <div class="page-title">
12
- <h3>¡Felicitaciones! Su pedido ha sido generado correctamente.</h3>
13
  </div>
14
  <?php if ($this->getOrderId()):?>
15
- <?php if ($this->getCanViewOrder()) :?>
16
  <p><?php echo $this->__('Your order # is: %s.', sprintf('<a href="%s">%s</a>', $this->escapeHtml($this->getViewOrderUrl()), $this->escapeHtml($this->getOrderId()))) ?></p>
17
  <?php else :?>
18
  <div id="compropagodContainer" style="width: 100%;">
19
  <iframe style="width: 100%; height: 865px;>" id="compropagodFrame" src="https://www.compropago.com/comprobante/?confirmation_id=<?php echo $compropagoId; ?>" frameborder="0" scrolling="yes"> </iframe>
20
  </div>
 
21
  <?php endif;?>
22
  <?php if ($this->getCanViewOrder() && $this->getCanPrintOrder()) :?>
23
  <p>
@@ -64,4 +66,4 @@
64
  window.onresize = function(event) {
65
  resizeIframe();
66
  };
67
- </script>
5
  ?>
6
 
7
  <?php echo $this->getMessagesBlock()->getGroupedHtml(); ?>
8
+ <?php $compropagoId = Mage::getSingleton('core/session')->getCompropagoId() != '';
9
+ ?>
10
 
11
  <div id="receipt" class="receipt">
12
  <div class="page-title">
13
+ <h3 style="font-size: 1.0em;">¡Felicitaciones! Su pedido ha sido generado correctamente.</h3>
14
  </div>
15
  <?php if ($this->getOrderId()):?>
16
+ <?php if ($compropagoId == '') :?>
17
  <p><?php echo $this->__('Your order # is: %s.', sprintf('<a href="%s">%s</a>', $this->escapeHtml($this->getViewOrderUrl()), $this->escapeHtml($this->getOrderId()))) ?></p>
18
  <?php else :?>
19
  <div id="compropagodContainer" style="width: 100%;">
20
  <iframe style="width: 100%; height: 865px;>" id="compropagodFrame" src="https://www.compropago.com/comprobante/?confirmation_id=<?php echo $compropagoId; ?>" frameborder="0" scrolling="yes"> </iframe>
21
  </div>
22
+ <?php Mage::getSingleton('core/session')->setCompropagoId(''); ?>
23
  <?php endif;?>
24
  <?php if ($this->getCanViewOrder() && $this->getCanPrintOrder()) :?>
25
  <p>
66
  window.onresize = function(event) {
67
  resizeIframe();
68
  };
69
+ </script>
package.xml CHANGED
@@ -1,18 +1,18 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ComproPago</name>
4
- <version>1.0.2</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Extension for cash payments in Compropago.</summary>
10
  <description>It is a tool that allows us to process cash payments in shop.</description>
11
- <notes>Fixed minor Bugs</notes>
12
  <authors><author><name>Oswaldo Lopez Garcia</name><user>waldix</user><email>waldix@compropago.com</email></author></authors>
13
- <date>2016-02-19</date>
14
- <time>16:38:45</time>
15
- <contents><target name="mageetc"><dir name="modules"><file name="Compropago.xml" hash="884374bb8a46b5ac9a62cd8b9f351401"/></dir></target><target name="magecommunity"><dir name="Compropago"><dir name="Block"><file name="Form.php" hash="af36f6b19af072a247cceff2b9d1f452"/><file name="OnepageSuccess.php" hash="d575b5abb647c41017b6d40efb3ee8cb"/></dir><dir name="Helper"><file name="Data.php" hash="5d3d5f4f86f2cec56315a1b02cc3d308"/></dir><dir name="Model"><file name="Api.php" hash="4401700124b87ff9e362560ab25289a6"/><file name="Standard.php" hash="deebf731fb81d4dd985e58f02bb5387e"/></dir><dir name="controllers"><file name="WebhookController.php" hash="64c404a7a78bb027a313bb1f9c08460b"/></dir><dir name="etc"><file name="config.xml" hash="26776d50679f9c07924f5ab0a7beeb76"/><file name="system.xml" hash="a3f19cb830d63fed92c03c86799bc0cb"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="compropago"><file name="cash.phtml" hash="074dabc90c83b44b48e10129f0c08484"/><file name="onepage_success.phtml" hash="85e593fd0fba901d82d80b32527f65f0"/></dir></dir><dir name="layout"><file name="compropago.xml" hash="54959ff0a24d2db5de8060613a1b3231"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="compropago"><file name="compropago.css" hash="6f7c0a747f6b1ba2d667fa0c38f3eaf1"/></dir></dir><dir name="images"><dir name="compropago"><file name="providers.png" hash="bd43bc40840ffa45286b48bd97e13ea3"/><file name="providers1.png" hash="44d36ab2a211de651e0ba98dd5961bea"/><file name="warning.png" hash="e30bf5b88671a415ca7771b3e5dd9c19"/></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="compropago"><file name="compropago.js" hash="0eff4d21b97e7878269ef84186e1b299"/></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>ComproPago</name>
4
+ <version>1.0.3</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
  <summary>Extension for cash payments in Compropago.</summary>
10
  <description>It is a tool that allows us to process cash payments in shop.</description>
11
+ <notes>Validation Order Id</notes>
12
  <authors><author><name>Oswaldo Lopez Garcia</name><user>waldix</user><email>waldix@compropago.com</email></author></authors>
13
+ <date>2016-05-02</date>
14
+ <time>18:23:45</time>
15
+ <contents><target name="mageetc"><dir name="modules"><file name="Compropago.xml" hash="884374bb8a46b5ac9a62cd8b9f351401"/></dir></target><target name="magecommunity"><dir name="Compropago"><dir name="Block"><file name="Form.php" hash="102aede546471a086a767c8b62fb83a4"/><file name="OnepageSuccess.php" hash="b941b628c1570af5f37cf0214008b1bd"/></dir><dir name="Helper"><file name="Data.php" hash="5d3d5f4f86f2cec56315a1b02cc3d308"/></dir><dir name="Model"><file name="Api.php" hash="938a6d86c0c5217f3ba06c6459fb3599"/><file name="Providers.php" hash="53c2d805af2a5af102537420b4776b32"/><file name="Standard.php" hash="5a171def8a9ee9d2d52f9dd1784b4f2d"/></dir><dir name="controllers"><file name="WebhookController.php" hash="a76da821b51784ce4b4a01dc1893f414"/></dir><dir name="etc"><file name="config.xml" hash="26776d50679f9c07924f5ab0a7beeb76"/><file name="system.xml" hash="63d480092fa87465736d905668e3110a"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="compropago"><file name="cash.phtml" hash="bf57cd924b25bfaf95d067e5bb0b4909"/><file name="onepage_success.phtml" hash="0c849be1c78ea6254ae4d9647998bb20"/></dir></dir><dir name="layout"><file name="compropago.xml" hash="b4c43eb397d0a9ce59b35377ef70e0ed"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="compropago"><file name="compropago.css" hash="08479b7c091dfc3cbec76ca272d62355"/></dir></dir><dir name="images"><dir name="compropago"><file name="providers.png" hash="44d36ab2a211de651e0ba98dd5961bea"/><file name="warning.png" hash="e30bf5b88671a415ca7771b3e5dd9c19"/></dir></dir></dir></dir></dir></target><target name="mage"><dir><dir name="js"><dir name="compropago"><file name="compropago.js" hash="0eff4d21b97e7878269ef84186e1b299"/></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
skin/frontend/base/default/css/compropago/compropago.css CHANGED
@@ -1,234 +1,3 @@
1
-
2
- .cp-select-form {
3
- margin: 20px 20px 20px 20px !important;
4
- border: 1px solid #dae3e9;
5
- border-radius: 3px;
6
- padding: 10px;
7
- background: #fafbfd;
8
- }
9
-
10
- .cp-instruction-section {
11
- background: #FFF;
12
- width: 100%;
13
- border: 1px solid #DAE2E7;
14
- margin: 0px 0px 15px 0px;
15
- border-radius: 8px;
16
- float: left;
17
- background-position: 0px 40px;
18
- font-size: 11pt;
19
- box-shadow: 0px 1px 4px 1px #E2E2E2;
20
- }
21
- .cp-instruction-section .cp-title {
22
- height: 31px;
23
- border-bottom: 1px solid #dee3ea;
24
- color: #000;
25
- font-size: 11pt;
26
- font-style: italic;
27
- line-height: 34px;
28
- float: left;
29
- width: 68%;
30
- margin: 25px 0px 15px 20px;
31
- }
32
- .cp-step-box {
33
- width: 600px;
34
- color: #000;
35
- clear: none;
36
- float: left;
37
- }
38
- .cp-step {
39
- line-height: 25pt;
40
- margin: 0px 0px 0px 30px;
41
- font-size: 13px;
42
- float: left;
43
- clear: both;
44
- }
45
- .cp-step .cp-num {
46
- float: left;
47
- margin: 0px 8px 0px 0px;
48
- }
49
- hr.cp-grey {
50
- margin: 10px 0;
51
- width: 100%;
52
- border-top: 1px solid #dae3e9 !important;
53
- border-bottom: 1px solid white;
54
- box-sizing: content-box;
55
- height: 0;
56
- text-rendering: optimizelegibility;
57
- font-family: inherit;
58
- border-style: none;
59
- }
60
- .cp-note {
61
- clear: both;
62
- float: left;
63
- margin: 0px 0px 10px 20px;
64
- }
65
-
66
- .cp-warning-box {
67
- float: left;
68
- background: #FFFEEC;
69
- border: 1px solid #DFDB83;
70
- border-radius: 3px;
71
- box-shadow: 0px 1px 3px 1px #E2E2E2;
72
- clear: both;
73
- color: #000;
74
- padding: 10px 10px;
75
- margin: 0px 0px 14px 0px !important;
76
- width: 97%;
77
- }
78
-
79
- ul.cp-warning {
80
- font-size: 12px;
81
- margin-left: 30px;
82
- }
83
- ul.cp-warning li {
84
- line-height: 20px;
85
- list-style-type: disc;
86
- }
87
- .cp-wrap-price{
88
- float:right;
89
- font-size: 12px;
90
-
91
- }
92
- .cp-price{
93
- font-weight: bold;
94
- font-size: 13px;
95
- }
96
-
97
- .cp-warning-box-price {
98
- background: #FFFEEC;
99
- border: 1px solid #DFDB83;
100
- border-radius: 3px;
101
- box-shadow: 0px 1px 3px 1px #E2E2E2;
102
- clear: both;
103
- color: #000;
104
- padding: 10px 10px;
105
- margin: 9px 0px 20px 0px !important;
106
- }
107
- .cp-label-instructions{
108
- line-height: 42px;
109
- font-size: 12px;
110
- }
111
- .cp-select-instructions{
112
- height: 30px;
113
- }
114
- .expiration-date{
115
- float: right;
116
- background: #EFF6FD;
117
- margin: 10px 10px 0 0;
118
- border: 1px solid #dae3e9;
119
- border-radius: 3px;
120
- box-shadow: 0px 1px 4px 1px #f1f1f3 inset;
121
- color: #000;
122
- width: 140px;
123
- font-size: 12px;
124
- text-align: center;
125
- padding: 10px 0px;
126
- }
127
- .expiration-date span {
128
- font-size: 18px;
129
- font-weight: 500;
130
- color: #32a0ee;
131
- margin: 7px 2px 0px;
132
- text-align: center;
133
- width: 100%;
134
- float: left;
135
- }
136
-
137
- .account-number-box{
138
- margin: 4px 90px 6px 140px;
139
-
140
- }
141
-
142
- .account-number {
143
- float: left;
144
- background: #3DE664;
145
- border: 1px solid #11AF17;
146
- border-radius: 3px;
147
- box-shadow: 0px 1px 4px 1px #1ABB2D inset;
148
- clear: both;
149
- color: #000;
150
- font-size: 16px;
151
- padding: 5px 10px;
152
- font-size: 14px;
153
- min-width: 250px;
154
- clear: both;
155
- margin-left: 17px;
156
- }
157
-
158
- .account-number-note{
159
- float: left;
160
- color: #000;
161
- font-size: 12px;
162
- clear: both;
163
- line-height: 26px;
164
- margin-left: 28px;
165
- &.walmart{
166
- margin-left: 31px!important;
167
- }
168
- }
169
-
170
-
171
- .stores-compact{
172
- display: inline-block;
173
- }
174
-
175
- .element-box{
176
- float: left;
177
- position: relative;
178
- min-height: 1px;
179
- padding-left: 1px;
180
- padding-right: 1px;
181
- }
182
-
183
- .row{margin-left:-15px;margin-right:-15px;}
184
- .row:before,.row:after{content:" ";display:table;}
185
- .row:after{clear:both;}
186
- .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{
187
- position:relative;min-height:1px;padding-left:8px;padding-right:8px;
188
- }
189
- .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{
190
- float:left;
191
- }
192
- .col-xs-12{
193
- width:100%;
194
- }
195
- .col-xs-11{width:91.66666666666666%;}
196
- .col-xs-10{width:83.33333333333334%;}
197
- .col-xs-9{width:75%;}
198
- .col-xs-8{width:66.66666666666666%;}
199
- .col-xs-7{width:58.333333333333336%;}
200
- .col-xs-6{width:50%;}
201
- .col-xs-5{width:41.66666666666667%;}
202
- .col-xs-4{width:33.33333333333333%;}
203
- .col-xs-3{width:25%;}
204
- .col-xs-2{width:16.666666666666664%;}
205
- .col-xs-1{width:8.333333333333332%;}
206
- .col-xs-pull-12{right:100%;}
207
- .col-xs-pull-11{right:91.66666666666666%;}
208
- .col-xs-pull-10{right:83.33333333333334%;}
209
- .col-xs-pull-9{right:75%;}
210
- .col-xs-pull-8{right:66.66666666666666%;}
211
- .col-xs-pull-7{right:58.333333333333336%;}
212
- .col-xs-pull-6{right:50%;}.col-xs-pull-5{right:41.66666666666667%;}.col-xs-pull-4{right:33.33333333333333%;}.col-xs-pull-3{right:25%;}.col-xs-pull-2{right:16.666666666666664%;}.col-xs-pull-1{right:8.333333333333332%;}
213
- .col-xs-pull-0{right:0%;}.col-xs-push-12{left:100%;}.col-xs-push-11{left:91.66666666666666%;}.col-xs-push-10{left:83.33333333333334%;}.col-xs-push-9{left:75%;}.col-xs-push-8{left:66.66666666666666%;}
214
- .col-xs-push-7{left:58.333333333333336%;}.col-xs-push-6{left:50%;}.col-xs-push-5{left:41.66666666666667%;}.col-xs-push-4{left:33.33333333333333%;}.col-xs-push-3{left:25%;}.col-xs-push-2{left:16.666666666666664%;}
215
- .col-xs-push-1{left:8.333333333333332%;}.col-xs-push-0{left:0%;}.col-xs-offset-12{margin-left:100%;}.col-xs-offset-11{margin-left:91.66666666666666%;}.col-xs-offset-10{margin-left:83.33333333333334%;}
216
- .col-xs-offset-9{margin-left:75%;}.col-xs-offset-8{margin-left:66.66666666666666%;}.col-xs-offset-7{margin-left:58.333333333333336%;}.col-xs-offset-6{margin-left:50%;}.col-xs-offset-5{margin-left:41.66666666666667%;}
217
- .col-xs-offset-4{margin-left:33.33333333333333%;}.col-xs-offset-3{margin-left:25%;}.col-xs-offset-2{margin-left:16.666666666666664%;}.col-xs-offset-1{margin-left:8.333333333333332%;}.col-xs-offset-0{margin-left:0%;}
218
- @media (min-width:768px){
219
- .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{
220
- float:left;
221
- }
222
- .col-sm-12{width:100%;}
223
- .col-sm-11{width:91.66666666666666%;}
224
- .col-sm-10{width:83.33333333333334%;}
225
- .col-sm-9{width:75%;} .col-sm-8{width:66.66666666666666%;} .col-sm-7{width:58.333333333333336%;} .col-sm-6{width:50%;} .col-sm-5{width:41.66666666666667%;} .col-sm-4{width:33.33333333333333%;} .col-sm-3{width:25%;} .col-sm-2{width:16.666666666666664%;} .col-sm-1{width:8.333333333333332%;} .col-sm-pull-12{right:100%;} .col-sm-pull-11{right:91.66666666666666%;} .col-sm-pull-10{right:83.33333333333334%;} .col-sm-pull-9{right:75%;} .col-sm-pull-8{right:66.66666666666666%;} .col-sm-pull-7{right:58.333333333333336%;} .col-sm-pull-6{right:50%;} .col-sm-pull-5{right:41.66666666666667%;} .col-sm-pull-4{right:33.33333333333333%;} .col-sm-pull-3{right:25%;} .col-sm-pull-2{right:16.666666666666664%;} .col-sm-pull-1{right:8.333333333333332%;} .col-sm-pull-0{right:0%;} .col-sm-push-12{left:100%;} .col-sm-push-11{left:91.66666666666666%;} .col-sm-push-10{left:83.33333333333334%;} .col-sm-push-9{left:75%;} .col-sm-push-8{left:66.66666666666666%;} .col-sm-push-7{left:58.333333333333336%;} .col-sm-push-6{left:50%;} .col-sm-push-5{left:41.66666666666667%;} .col-sm-push-4{left:33.33333333333333%;} .col-sm-push-3{left:25%;} .col-sm-push-2{left:16.666666666666664%;} .col-sm-push-1{left:8.333333333333332%;} .col-sm-push-0{left:0%;} .col-sm-offset-12{margin-left:100%;} .col-sm-offset-11{margin-left:91.66666666666666%;} .col-sm-offset-10{margin-left:83.33333333333334%;} .col-sm-offset-9{margin-left:75%;} .col-sm-offset-8{margin-left:66.66666666666666%;} .col-sm-offset-7{margin-left:58.333333333333336%;} .col-sm-offset-6{margin-left:50%;} .col-sm-offset-5{margin-left:41.66666666666667%;} .col-sm-offset-4{margin-left:33.33333333333333%;} .col-sm-offset-3{margin-left:25%;} .col-sm-offset-2{margin-left:16.666666666666664%;} .col-sm-offset-1{margin-left:8.333333333333332%;} .col-sm-offset-0{margin-left:0%;}}
226
- @media (min-width:992px){
227
- .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{
228
- float:left;
229
- }
230
- .col-md-12{width:100%;} .col-md-11{width:91.66666666666666%;} .col-md-10{width:83.33333333333334%;} .col-md-9{width:75%;} .col-md-8{width:66.66666666666666%;} .col-md-7{width:58.333333333333336%;} .col-md-6{width:50%;} .col-md-5{width:41.66666666666667%;} .col-md-4{width:33.33333333333333%;} .col-md-3{width:25%;} .col-md-2{width:16.666666666666664%;} .col-md-1{width:8.333333333333332%;} .col-md-pull-12{right:100%;} .col-md-pull-11{right:91.66666666666666%;} .col-md-pull-10{right:83.33333333333334%;} .col-md-pull-9{right:75%;} .col-md-pull-8{right:66.66666666666666%;} .col-md-pull-7{right:58.333333333333336%;} .col-md-pull-6{right:50%;} .col-md-pull-5{right:41.66666666666667%;} .col-md-pull-4{right:33.33333333333333%;} .col-md-pull-3{right:25%;} .col-md-pull-2{right:16.666666666666664%;} .col-md-pull-1{right:8.333333333333332%;} .col-md-pull-0{right:0%;} .col-md-push-12{left:100%;} .col-md-push-11{left:91.66666666666666%;} .col-md-push-10{left:83.33333333333334%;} .col-md-push-9{left:75%;} .col-md-push-8{left:66.66666666666666%;} .col-md-push-7{left:58.333333333333336%;} .col-md-push-6{left:50%;} .col-md-push-5{left:41.66666666666667%;} .col-md-push-4{left:33.33333333333333%;} .col-md-push-3{left:25%;} .col-md-push-2{left:16.666666666666664%;} .col-md-push-1{left:8.333333333333332%;} .col-md-push-0{left:0%;} .col-md-offset-12{margin-left:100%;} .col-md-offset-11{margin-left:91.66666666666666%;} .col-md-offset-10{margin-left:83.33333333333334%;} .col-md-offset-9{margin-left:75%;} .col-md-offset-8{margin-left:66.66666666666666%;} .col-md-offset-7{margin-left:58.333333333333336%;} .col-md-offset-6{margin-left:50%;} .col-md-offset-5{margin-left:41.66666666666667%;} .col-md-offset-4{margin-left:33.33333333333333%;} .col-md-offset-3{margin-left:25%;} .col-md-offset-2{margin-left:16.666666666666664%;} .col-md-offset-1{margin-left:8.333333333333332%;} .col-md-offset-0{margin-left:0%;}}
231
-
232
  #p_method_compropago input[type="radio"]:checked img{
233
  display: none;
234
  }
@@ -308,4 +77,4 @@ ul.cp-warning li {
308
  }
309
  .checked_compropago{
310
  display: block !important;
311
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #p_method_compropago input[type="radio"]:checked img{
2
  display: none;
3
  }
77
  }
78
  .checked_compropago{
79
  display: block !important;
80
+ }
skin/frontend/base/default/images/compropago/providers.png CHANGED
Binary file
skin/frontend/base/default/images/compropago/providers1.png DELETED
Binary file