Eye4Fraud_Connector_integration - Version 1.2.5

Version Notes

- Order grid rewrite removed
- Fraud status added to order and orders grid and can be used by other extensions
- Behavior of "Disable Extension Output" setting improved
- Get IP address from forwarding list

Download this release

Release Info

Developer Shloimy Stauber
Extension Eye4Fraud_Connector_integration
Version 1.2.5
Comparing to
See all releases


Code changes from version 1.2.4 to 1.2.5

app/code/local/Eye4Fraud/Connector/Block/Sales/Order/Grid.php CHANGED
@@ -19,6 +19,9 @@ class Eye4Fraud_Connector_Block_Sales_Order_Grid extends _BaseGridClass
19
  {
20
  protected function _prepareColumns()
21
  {
 
 
 
22
  if(!Mage::helper('eye4fraud_connector')->isEnabled()) return parent::_prepareColumns();
23
 
24
  $this->addColumnAfter('eye4fraud_status', array(
19
  {
20
  protected function _prepareColumns()
21
  {
22
+ /** This file is kept for compatibility with some stores which may used it to resolve the rewrite conflict */
23
+ return parent::_prepareColumns();
24
+
25
  if(!Mage::helper('eye4fraud_connector')->isEnabled()) return parent::_prepareColumns();
26
 
27
  $this->addColumnAfter('eye4fraud_status', array(
app/code/local/Eye4Fraud/Connector/Helper/Data.php CHANGED
@@ -80,12 +80,9 @@ class Eye4Fraud_Connector_Helper_Data
80
  */
81
  public function isEnabled(){
82
  // Check if soap client exists - if not, we cannot enable the module
83
- if (!$this->hasSoapClient()){
84
- return false;
85
- }
86
-
87
- $config = $this->getConfig();
88
- return !isset($config['general']['enabled']) ? false : (bool)$config['general']['enabled'];
89
  }
90
 
91
  /**
80
  */
81
  public function isEnabled(){
82
  // Check if soap client exists - if not, we cannot enable the module
83
+ if (!$this->hasSoapClient()) return false;
84
+ if (!Mage::helper('core/data')->isModuleOutputEnabled('Eye4Fraud_Connector')) return false;
85
+ return (bool)$this->getConfig('general/enabled');
 
 
 
86
  }
87
 
88
  /**
app/code/local/Eye4Fraud/Connector/Helper/Order/Grid.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Insert fraud_status column and render it
5
+ * @author Mikhail Valiushka
6
+ * @since 1.2.5
7
+ */
8
+ class Eye4Fraud_Connector_Helper_Order_Grid {
9
+
10
+ /**
11
+ * @param $renderedValue
12
+ * @param Mage_Sales_Model_Order $order
13
+ * @param $column
14
+ * @return string
15
+ */
16
+ public static function addStatusDescription($renderedValue, $order, $column){
17
+ $status_collection = Mage::getResourceSingleton('eye4fraud_connector/status_collection');
18
+ return $status_collection->addStatusDescription($renderedValue, $order, $column);
19
+ }
20
+
21
+ /**
22
+ * Generate Fraud Statuc column definition for orders grid.
23
+ * @return array
24
+ * @see layout/eye4fraud/salesgrid.xml
25
+ */
26
+ public function generateFraudColumnDefinition(){
27
+ return array(
28
+ 'header' => 'Fraud Status',
29
+ 'width' => '123',
30
+ 'type' => 'text',
31
+ 'index' => 'eye4fraud_status',
32
+ 'frame_callback' => array('Eye4Fraud_Connector_Helper_Order_Grid','addStatusDescription')
33
+ );
34
+ }
35
+ }
app/code/local/Eye4Fraud/Connector/Model/Config/Frontend/Cron.php CHANGED
@@ -41,14 +41,16 @@ class Eye4Fraud_Connector_Model_Config_Frontend_Cron extends Mage_Adminhtml_Bloc
41
  if(!$cron_task_pending->isEmpty()){
42
  $color = 'green';
43
  $tooltip = '';
 
44
  if($cron_task_pending->getData('scheduled_at')){
45
  $pending_interval = strtotime($cron_task_pending->getData('scheduled_at')) - time();
 
46
  if($pending_interval < 0) {
47
  $color = 'red';
48
  $tooltip = 'Task scheduled time is in the past';
49
  }
50
  }
51
- $value .= '<div>Cron task scheduled at <span style="color: '.$color.'" title="'.$tooltip.'">'.$cron_task_pending->getData('scheduled_at').'</span></div>';
52
  }
53
  else{
54
  $value .= '<div>Scheduled cron task <strong>NOT</strong> found</div>';
41
  if(!$cron_task_pending->isEmpty()){
42
  $color = 'green';
43
  $tooltip = '';
44
+ $pending_date_time = 'Not set yet';
45
  if($cron_task_pending->getData('scheduled_at')){
46
  $pending_interval = strtotime($cron_task_pending->getData('scheduled_at')) - time();
47
+ $pending_date_time = Mage::getModel('core/date')->date(null, $cron_task_pending->getData('scheduled_at'));
48
  if($pending_interval < 0) {
49
  $color = 'red';
50
  $tooltip = 'Task scheduled time is in the past';
51
  }
52
  }
53
+ $value .= '<div>Cron task scheduled at <span style="color: '.$color.'" title="'.$tooltip.'">'.$pending_date_time.'</span></div>';
54
  }
55
  else{
56
  $value .= '<div>Scheduled cron task <strong>NOT</strong> found</div>';
app/code/local/Eye4Fraud/Connector/Model/Config/Frontend/Version.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Show extension version
5
+ * @category Eye4fraud
6
+ * @package Eye4fraud_Connector
7
+ */
8
+ class Eye4Fraud_Connector_Model_Config_Frontend_Version extends Mage_Adminhtml_Block_System_Config_Form_Field
9
+ {
10
+
11
+ /**
12
+ * Render config field
13
+ *
14
+ * @param Varien_Data_Form_Element_Abstract $element
15
+ * @return string
16
+ */
17
+ public function render(Varien_Data_Form_Element_Abstract $element){
18
+ $config = Mage::getConfig();
19
+ $module_config = $config->getModuleConfig('Eye4Fraud_Connector');
20
+
21
+ $element->setData('value', "[Dummy]");
22
+
23
+ $html = parent::render($element);
24
+ $html = str_replace("[Dummy]", '<b>'.(string)$module_config->version."</b>", $html);
25
+ return $html;
26
+ }
27
+ }
app/code/local/Eye4Fraud/Connector/Model/Observer.php CHANGED
@@ -49,6 +49,8 @@ class Eye4Fraud_Connector_Model_Observer
49
  */
50
  public function orderPlacedAfter(&$observer)
51
  {
 
 
52
  $order = $observer->getEvent()->getOrder();
53
  $payment = $order->getPayment();
54
  if (empty($payment)) {
@@ -220,6 +222,7 @@ class Eye4Fraud_Connector_Model_Observer
220
  if ($card["cc_type"]) {
221
  $card_type = $card["cc_type"];
222
  }
 
223
  }
224
  }
225
  }
@@ -233,6 +236,7 @@ class Eye4Fraud_Connector_Model_Observer
233
  }
234
  $cc_number = $payment->getData('cc_number');
235
  $card_type = $payment->getData('cc_type');
 
236
  break;
237
  case $helper::PAYMENT_METHOD_USAEPAY:{
238
  $transId = $payment->getData('cc_trans_id');
@@ -277,6 +281,14 @@ class Eye4Fraud_Connector_Model_Observer
277
  break;
278
  }
279
  $remoteIp = $order->getRemoteIp() ? $order->getRemoteIp() : false;
 
 
 
 
 
 
 
 
280
 
281
  //Double check we have CC number
282
  if (empty($cc_number)) {
@@ -397,11 +409,15 @@ class Eye4Fraud_Connector_Model_Observer
397
  break;
398
  }
399
  case Mage_Paypal_Model_Config::METHOD_PAYFLOWPRO:{
 
 
400
  if(method_exists($method_instance,'getResponseData')){
401
  /** @var Eye4Fraud_Connector_Model_Payflowpro $method_instance */
402
  $details = $method_instance->getResponseData();
403
- $post_array["AVSCode"] = $details->getData('procavs');
404
- $post_array["CIDResponse"] = $details->getData('proccvv2');
 
 
405
  }
406
  else{
407
  $helper->log('Payflow class is wrong: '.get_class($payment).'; Required method not exists', true);
@@ -440,7 +456,9 @@ class Eye4Fraud_Connector_Model_Observer
440
  break;
441
  }
442
  case Mage_Paygate_Model_Authorizenet::METHOD_CODE:{
443
- /** @var Eye4Fraud_Connector_Model_Authorizenet $method_instance */
 
 
444
  if(method_exists($method_instance,'getResponseData')){
445
  /** @var Mage_Paygate_Model_Authorizenet_Result|array $details */
446
  $details = $method_instance->getResponseData();
@@ -498,9 +516,14 @@ class Eye4Fraud_Connector_Model_Observer
498
  else{
499
  $helper->log("Prepare and queue request for order #".$post_array['OrderNumber']);
500
  $this->_getHelper()->prepareRequest($post_array, $payment_method);
501
- $status = Mage::getModel('eye4fraud_connector/status');
502
- $status->createQueued($post_array['OrderNumber']);
503
- $status->save();
 
 
 
 
 
504
  }
505
  } catch (Exception $e) {
506
  $this->_getHelper()->log($e->getMessage() . "\n" . $e->getTraceAsString());
@@ -524,25 +547,33 @@ class Eye4Fraud_Connector_Model_Observer
524
  * @param array $event
525
  */
526
  public function prepareFraudStatuses($event){
527
- if (!Mage::helper('core/data')->isModuleOutputEnabled('Eye4Fraud_Connector')) return;
528
  if (!$this->_getHelper()->isEnabled()) return;
529
 
530
- /** @var Mage_Sales_Model_Resource_Order_Grid_Collection $collection */
531
  $ordersCollection = $event['order_grid_collection'];
532
- $statuses = array();
533
- foreach ($ordersCollection as $order) $statuses[$order['increment_id']] = 0;
534
  /** @var Eye4Fraud_Connector_Model_Resource_Status_Collection $statusesCollection */
535
  $statusesCollection = Mage::getResourceSingleton('eye4fraud_connector/status_collection');
536
- $statusesCollection->setStatuses($statuses)->load();
537
- }
 
 
 
 
 
 
 
 
 
 
538
 
539
  /**
540
  * Refresh fraud status in cron job
541
  */
542
  public function cronRefreshStatus(){
543
- if (!Mage::helper('core/data')->isModuleOutputEnabled('Eye4Fraud_Connector')) return;
544
  if (!$this->_getHelper()->isEnabled()) return;
545
 
 
 
546
  $helper = Mage::helper('eye4fraud_connector');
547
  $helper->log("Start cron job ".date("d-m-Y H:i"));
548
 
@@ -554,6 +585,7 @@ class Eye4Fraud_Connector_Model_Observer
554
  $statusesCollection->prepareCronUpdateQuery();
555
  $records_count = $statusesCollection->count();
556
  $helper->log("Processed records: ".json_encode($records_count));
 
557
 
558
  $helper->log("Cron job finished ".date("d-m-Y H:i"));
559
  }
@@ -562,6 +594,8 @@ class Eye4Fraud_Connector_Model_Observer
562
  * Send requests manually from orders page
563
  */
564
  public function sendRequestsManual(){
 
 
565
  $helper = Mage::helper('eye4fraud_connector');
566
  $helper->log("Start from orders grid");
567
  $helper->log("Send request manually");
49
  */
50
  public function orderPlacedAfter(&$observer)
51
  {
52
+ if (!$this->_getHelper()->isEnabled()) return $this;
53
+
54
  $order = $observer->getEvent()->getOrder();
55
  $payment = $order->getPayment();
56
  if (empty($payment)) {
222
  if ($card["cc_type"]) {
223
  $card_type = $card["cc_type"];
224
  }
225
+ if(!$cc_number && $card['cc_last4']) $cc_number = '000000 '.$card['cc_last4'];
226
  }
227
  }
228
  }
236
  }
237
  $cc_number = $payment->getData('cc_number');
238
  $card_type = $payment->getData('cc_type');
239
+ if(!$cc_number && $payment->getData('cc_last4')) $cc_number = '000000 '.$payment->getData('cc_last4');
240
  break;
241
  case $helper::PAYMENT_METHOD_USAEPAY:{
242
  $transId = $payment->getData('cc_trans_id');
281
  break;
282
  }
283
  $remoteIp = $order->getRemoteIp() ? $order->getRemoteIp() : false;
284
+ if($order->getXForwardedFor()) {
285
+ $forwarded_ips = explode(",", $order->getXForwardedFor());
286
+ if(isset($forwarded_ips[0]) and $forwarded_ips[0]) {
287
+ $helper->log('Forwarded address detected: '.$order->getXForwardedFor());
288
+ $remoteIp = $forwarded_ips[0];
289
+ $helper->log('Take first address: '.$remoteIp);
290
+ }
291
+ }
292
 
293
  //Double check we have CC number
294
  if (empty($cc_number)) {
409
  break;
410
  }
411
  case Mage_Paypal_Model_Config::METHOD_PAYFLOWPRO:{
412
+ $post_array["AVSCode"] = 'unknown';
413
+ $post_array["CIDResponse"] = 'unknown';
414
  if(method_exists($method_instance,'getResponseData')){
415
  /** @var Eye4Fraud_Connector_Model_Payflowpro $method_instance */
416
  $details = $method_instance->getResponseData();
417
+ if(is_object($details)){
418
+ $post_array["AVSCode"] = $details->getData('procavs');
419
+ $post_array["CIDResponse"] = $details->getData('proccvv2');
420
+ }
421
  }
422
  else{
423
  $helper->log('Payflow class is wrong: '.get_class($payment).'; Required method not exists', true);
456
  break;
457
  }
458
  case Mage_Paygate_Model_Authorizenet::METHOD_CODE:{
459
+ $post_array["AVSCode"] = 'unknown';
460
+ $post_array["CIDResponse"] = 'unknown';
461
+ /** @var Eye4Fraud_Connector_Model_Authorizenet $method_instance */
462
  if(method_exists($method_instance,'getResponseData')){
463
  /** @var Mage_Paygate_Model_Authorizenet_Result|array $details */
464
  $details = $method_instance->getResponseData();
516
  else{
517
  $helper->log("Prepare and queue request for order #".$post_array['OrderNumber']);
518
  $this->_getHelper()->prepareRequest($post_array, $payment_method);
519
+ try{
520
+ $status = Mage::getModel('eye4fraud_connector/status');
521
+ $status->createQueued($post_array['OrderNumber'])->setOrder($order);
522
+ $status->save();
523
+ }
524
+ catch(Exception $exception){
525
+ $helper->log("Process order exception: ".$exception->getMessage(), true);
526
+ }
527
  }
528
  } catch (Exception $e) {
529
  $this->_getHelper()->log($e->getMessage() . "\n" . $e->getTraceAsString());
547
  * @param array $event
548
  */
549
  public function prepareFraudStatuses($event){
 
550
  if (!$this->_getHelper()->isEnabled()) return;
551
 
552
+ /** @var Mage_Sales_Model_Resource_Order_Grid_Collection $ordersCollection */
553
  $ordersCollection = $event['order_grid_collection'];
 
 
554
  /** @var Eye4Fraud_Connector_Model_Resource_Status_Collection $statusesCollection */
555
  $statusesCollection = Mage::getResourceSingleton('eye4fraud_connector/status_collection');
556
+ $statusesCollection->setOrdersGridCollection($ordersCollection )->load();
557
+
558
+ // Update statuses in the currently loaded orders grid collection
559
+ /** @var Mage_Sales_Model_Order $order */
560
+ if($ordersCollection) foreach($ordersCollection as $order){
561
+ $item = $statusesCollection->getItemById($order->getIncrementId());
562
+ $status_text = $this->_getHelper()->__('status:'.$item->getData('status'));
563
+ if($order->getData('eye4fraud_status') != $status_text) {
564
+ $order->setData('eye4fraud_status', $status_text);
565
+ }
566
+ }
567
+ }
568
 
569
  /**
570
  * Refresh fraud status in cron job
571
  */
572
  public function cronRefreshStatus(){
 
573
  if (!$this->_getHelper()->isEnabled()) return;
574
 
575
+ if(!count(Mage::app()->getTranslator()->getData())) Mage::app()->getTranslator()->init('adminhtml');
576
+
577
  $helper = Mage::helper('eye4fraud_connector');
578
  $helper->log("Start cron job ".date("d-m-Y H:i"));
579
 
585
  $statusesCollection->prepareCronUpdateQuery();
586
  $records_count = $statusesCollection->count();
587
  $helper->log("Processed records: ".json_encode($records_count));
588
+ //$helper->log("Query: ".$statusesCollection->getSelect()->assemble());
589
 
590
  $helper->log("Cron job finished ".date("d-m-Y H:i"));
591
  }
594
  * Send requests manually from orders page
595
  */
596
  public function sendRequestsManual(){
597
+ if (!$this->_getHelper()->isEnabled()) return;
598
+
599
  $helper = Mage::helper('eye4fraud_connector');
600
  $helper->log("Start from orders grid");
601
  $helper->log("Send request manually");
app/code/local/Eye4Fraud/Connector/Model/Observer/Sales/Grid.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Created by PhpStorm.
5
+ * User: Misha
6
+ * Date: 29.01.2017
7
+ * Time: 16:55
8
+ */
9
+ class Eye4Fraud_Connector_Model_Observer_Sales_Grid {
10
+
11
+ public function addColumnToResource(Varien_Event_Observer $observer) {
12
+ // Only needed if you use a table other than sales/order (sales_flat_order)
13
+ /** @var Mage_Sales_Model_Resource_Order $resource */
14
+ /*
15
+ $resource = $observer->getEvent()->getResource();
16
+ $resource->addVirtualGridColumn(
17
+ 'customer_city',
18
+ 'sales/order_address',
19
+ array('billing_address_id' => 'entity_id'),
20
+ 'city'
21
+ );
22
+ **/
23
+ }}
app/code/local/Eye4Fraud/Connector/Model/Resource/Order/Collection.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Collection.php.
5
+ * @author Mikhail Valiushka
6
+ * @since 1.2.5
7
+ */
8
+ class Eye4Fraud_Connector_Model_Resource_Order_Collection extends Mage_Sales_Model_Resource_Order_Collection{
9
+
10
+ /**
11
+ * Event prefix
12
+ * @var string
13
+ */
14
+ protected $_eventPrefix = 'eye4fraud_order_collection';
15
+
16
+ public function addFraudStatusFilter($order_increments){
17
+ $this->addFieldToSelect('entity_id');
18
+ $this->addFieldToSelect('increment_id');
19
+ $this->addFieldToSelect('store_id');
20
+ $this->addFieldToSelect('eye4fraud_status');
21
+ $this->addFieldToFilter('increment_id', array('in' => $order_increments));
22
+ }
23
+
24
+ }
app/code/local/Eye4Fraud/Connector/Model/Resource/Status/Collection.php CHANGED
@@ -20,6 +20,11 @@ class Eye4Fraud_Connector_Model_Resource_Status_Collection extends Mage_Core_Mod
20
  */
21
  protected $_cronFlag = false;
22
 
 
 
 
 
 
23
  /**
24
  * Resource initialization
25
  */
@@ -28,6 +33,18 @@ class Eye4Fraud_Connector_Model_Resource_Status_Collection extends Mage_Core_Mod
28
  $this->_init('eye4fraud_connector/status');
29
  }
30
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  /**
32
  * Add attribute id to collection
33
  *
@@ -89,7 +106,7 @@ class Eye4Fraud_Connector_Model_Resource_Status_Collection extends Mage_Core_Mod
89
  }
90
 
91
  public function notOlderThan($update_limit, $update_limit_no_order){
92
- $this->getSelect()->where('(created_at > "'.$update_limit.'" and status!="N") or (created_at > "'.$update_limit_no_order.'" and status="N")');
93
  return $this;
94
  }
95
 
@@ -156,7 +173,10 @@ class Eye4Fraud_Connector_Model_Resource_Status_Collection extends Mage_Core_Mod
156
  $is_status_final = in_array($item['status'],$final_statuses);
157
 
158
  $update_allowed_by_date = false;
159
- if($item->getData('status')=='N'){
 
 
 
160
  $update_limit_no_order = $helper->getConfig("general/update_limit_no_order");
161
  $update_limit_no_order || $update_limit_no_order = 2;
162
  $minDateNoOrder = time() - $update_limit_no_order*60*60;
@@ -169,7 +189,6 @@ class Eye4Fraud_Connector_Model_Resource_Status_Collection extends Mage_Core_Mod
169
  $minDate = time() - $update_limit*60*60*24;
170
  $created_at = strtotime($item->getData('created_at'));
171
  if($created_at > $minDate) $update_allowed_by_date = true;
172
-
173
  }
174
 
175
  return (!$is_status_final and $update_allowed_by_date);
20
  */
21
  protected $_cronFlag = false;
22
 
23
+ /**
24
+ * @var Mage_Sales_Model_Resource_Order_Grid_Collection
25
+ */
26
+ protected $ordersGridCollection;
27
+
28
  /**
29
  * Resource initialization
30
  */
33
  $this->_init('eye4fraud_connector/status');
34
  }
35
 
36
+ /**
37
+ * Set Orders grid collection
38
+ * @param Mage_Sales_Model_Resource_Order_Grid_Collection $ordersGridCollection
39
+ * @return $this
40
+ */
41
+ public function setOrdersGridCollection($ordersGridCollection){
42
+ $this->ordersGridCollection = $ordersGridCollection;
43
+ $this->statuses = array();
44
+ foreach ($this->ordersGridCollection as $order) $this->statuses[$order['increment_id']] = 0;
45
+ return $this;
46
+ }
47
+
48
  /**
49
  * Add attribute id to collection
50
  *
106
  }
107
 
108
  public function notOlderThan($update_limit, $update_limit_no_order){
109
+ $this->getSelect()->where('(created_at > "'.$update_limit.'" and status!="N") or (created_at > "'.$update_limit_no_order.'" and status="N") or status="W"');
110
  return $this;
111
  }
112
 
173
  $is_status_final = in_array($item['status'],$final_statuses);
174
 
175
  $update_allowed_by_date = false;
176
+ if($item->getData('status')=='W'){
177
+ $update_allowed_by_date = true;
178
+ }
179
+ elseif($item->getData('status')=='N'){
180
  $update_limit_no_order = $helper->getConfig("general/update_limit_no_order");
181
  $update_limit_no_order || $update_limit_no_order = 2;
182
  $minDateNoOrder = time() - $update_limit_no_order*60*60;
189
  $minDate = time() - $update_limit*60*60*24;
190
  $created_at = strtotime($item->getData('created_at'));
191
  if($created_at > $minDate) $update_allowed_by_date = true;
 
192
  }
193
 
194
  return (!$is_status_final and $update_allowed_by_date);
app/code/local/Eye4Fraud/Connector/Model/Sales/Order.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Take order model and change event
5
+ * @author Mikhail Valiushka
6
+ * @since 1.2.5
7
+ */
8
+ class Eye4Fraud_Connector_Model_Sales_Order extends Mage_Sales_Model_Order {
9
+
10
+ /**
11
+ * Skip order events
12
+ *
13
+ * @var string
14
+ */
15
+ protected $_eventPrefix = 'ef_sales_order';
16
+
17
+ }
app/code/local/Eye4Fraud/Connector/Model/Status.php CHANGED
@@ -9,6 +9,18 @@ class Eye4Fraud_Connector_Model_Status extends Mage_Core_Model_Abstract
9
  {
10
  protected $_eventPrefix = 'eye4fraud_connector_status';
11
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  protected function _construct(){
13
  $this->_init('eye4fraud_connector/status');
14
  }
@@ -39,9 +51,9 @@ class Eye4Fraud_Connector_Model_Status extends Mage_Core_Model_Abstract
39
  /**
40
  * A little hack to restore order_id field after model was saved
41
  */
42
- $tmp_order_id = $this->getData('order_id');
43
  $this->save();
44
- $this->setData('order_id',$tmp_order_id);
45
  return $this;
46
  }
47
 
@@ -79,4 +91,34 @@ class Eye4Fraud_Connector_Model_Status extends Mage_Core_Model_Abstract
79
  return parent::isObjectNew($flag);
80
  }
81
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
  }
9
  {
10
  protected $_eventPrefix = 'eye4fraud_connector_status';
11
 
12
+ /**
13
+ * Order ID
14
+ * @var int
15
+ */
16
+ protected $order_id_saved = 0;
17
+
18
+ /**
19
+ * Set order matched to this status
20
+ * @var null
21
+ */
22
+ protected $order = null;
23
+
24
  protected function _construct(){
25
  $this->_init('eye4fraud_connector/status');
26
  }
51
  /**
52
  * A little hack to restore order_id field after model was saved
53
  */
54
+ $this->order_id_saved = $this->getData('order_id');
55
  $this->save();
56
+ $this->setData('order_id',$this->order_id_saved);
57
  return $this;
58
  }
59
 
91
  return parent::isObjectNew($flag);
92
  }
93
 
94
+ /**
95
+ * Update fraud status in order and in grid after fraud status was changed
96
+ * @return Mage_Core_Model_Abstract
97
+ */
98
+ public function _afterSave() {
99
+ $require_save = false;
100
+ if(!$this->order){
101
+ if($this->order_id_saved) $this->order = Mage::getModel('eye4fraud_connector/sales_order')->loadByIncrementId($this->order_id_saved);
102
+ else $this->order = Mage::getModel('eye4fraud_connector/sales_order')->loadByIncrementId($this->getData('order_id'));
103
+ $require_save = true;
104
+ }
105
+ $helper = Mage::helper('eye4fraud_connector');
106
+ $status_text = $helper->__('status:'.$this->getData('status'));
107
+
108
+ if(!$this->order->isEmpty() and $this->order->getData('eye4fraud_status') != $status_text) {
109
+ $this->order->setData('eye4fraud_status', $status_text);
110
+ $helper->log('Save fraud status '.$status_text.' to order #'.$this->order->getIncrementId());
111
+ if($require_save) $this->order->save();
112
+ }
113
+ return parent::_afterSave();
114
+ }
115
+
116
+ /**
117
+ * @param Mage_Sales_Model_Order $order
118
+ * @return $this
119
+ */
120
+ public function setOrder($order){
121
+ $this->order = $order;
122
+ return $this;
123
+ }
124
  }
app/code/local/Eye4Fraud/Connector/changes.txt CHANGED
@@ -2,6 +2,12 @@
2
 
3
  Changes list:
4
 
 
 
 
 
 
 
5
  1.2.3:
6
  - Fraud status created when order request is cached
7
  - Timeout added for non-final statuses and for orders which isn't sent to eye4fraud, this fix overflow issue for unprocessed orders
2
 
3
  Changes list:
4
 
5
+ 1.2.5:
6
+ - Order grid rewrite removed
7
+ - Fraud status added to order and orders grid and can be used by other extensions
8
+ - Behavior of "Disable Extension Output" setting improved
9
+ - Get IP address from forwarding list
10
+
11
  1.2.3:
12
  - Fraud status created when order request is cached
13
  - Timeout added for non-final statuses and for orders which isn't sent to eye4fraud, this fix overflow issue for unprocessed orders
app/code/local/Eye4Fraud/Connector/etc/config.xml CHANGED
@@ -10,7 +10,7 @@
10
  <config>
11
  <modules>
12
  <Eye4Fraud_Connector>
13
- <version>1.2.4</version>
14
  </Eye4Fraud_Connector>
15
  </modules>
16
  <global>
@@ -56,6 +56,14 @@
56
  </connector_observer>
57
  </observers>
58
  </sales_order_grid_collection_load_after>
 
 
 
 
 
 
 
 
59
  </events>
60
  <models>
61
  <eye4fraud_connector>
@@ -94,25 +102,17 @@
94
  <eye4fraud_setup>
95
  <setup>
96
  <module>Eye4Fraud_Connector</module>
 
97
  </setup>
98
  </eye4fraud_setup>
99
  </resources>
100
- <blocks>
101
- <adminhtml>
102
- <rewrite>
103
- <sales_order_grid>Eye4Fraud_Connector_Block_Sales_Order_Grid</sales_order_grid>
104
- </rewrite>
105
- </adminhtml>
106
- </blocks>
107
- <template>
108
- <email>
109
- <authorizepopulation_email_template translate="label">
110
- <label>Credit Card Number</label>
111
- <file>authorizepopulation.html</file>
112
- <type>html</type>
113
- </authorizepopulation_email_template>
114
- </email>
115
- </template>
116
  </global>
117
  <default>
118
  <eye4fraud_connector>
@@ -148,7 +148,26 @@
148
  </eye4fraud_connector>
149
  </modules>
150
  </translate>
 
 
 
 
 
 
 
 
151
  </adminhtml>
 
 
 
 
 
 
 
 
 
 
 
152
  <crontab>
153
  <jobs>
154
  <eye4fraud_refresh>
10
  <config>
11
  <modules>
12
  <Eye4Fraud_Connector>
13
+ <version>1.2.5</version>
14
  </Eye4Fraud_Connector>
15
  </modules>
16
  <global>
56
  </connector_observer>
57
  </observers>
58
  </sales_order_grid_collection_load_after>
59
+ <!--<sales_order_resource_init_virtual_grid_columns>-->
60
+ <!--<observers>-->
61
+ <!--<eye4fraud_salesgrid>-->
62
+ <!--<model>eye4fraud_connector/observer_sales_grid</model>-->
63
+ <!--<method>addColumnToResource</method>-->
64
+ <!--</eye4fraud_salesgrid>-->
65
+ <!--</observers>-->
66
+ <!--</sales_order_resource_init_virtual_grid_columns>-->
67
  </events>
68
  <models>
69
  <eye4fraud_connector>
102
  <eye4fraud_setup>
103
  <setup>
104
  <module>Eye4Fraud_Connector</module>
105
+ <class>Mage_Sales_Model_Resource_Setup</class>
106
  </setup>
107
  </eye4fraud_setup>
108
  </resources>
109
+ <!--<blocks>-->
110
+ <!--<adminhtml>-->
111
+ <!--<rewrite>-->
112
+ <!--<sales_order_grid>Eye4Fraud_Connector_Block_Sales_Order_Grid</sales_order_grid>-->
113
+ <!--</rewrite>-->
114
+ <!--</adminhtml>-->
115
+ <!--</blocks>-->
 
 
 
 
 
 
 
 
 
116
  </global>
117
  <default>
118
  <eye4fraud_connector>
148
  </eye4fraud_connector>
149
  </modules>
150
  </translate>
151
+ <layout>
152
+ <!-- layout upgrade configuration -->
153
+ <updates>
154
+ <eye4fraud_salesgrid module="Eye4Fraud_Connector">
155
+ <file>eye4fraud/salesgrid.xml</file>
156
+ </eye4fraud_salesgrid>
157
+ </updates>
158
+ </layout>
159
  </adminhtml>
160
+ <frontend>
161
+ <translate>
162
+ <modules>
163
+ <eye4fraud_connector>
164
+ <files>
165
+ <module>Eye4Fraud_Connector.csv</module>
166
+ </files>
167
+ </eye4fraud_connector>
168
+ </modules>
169
+ </translate>
170
+ </frontend>
171
  <crontab>
172
  <jobs>
173
  <eye4fraud_refresh>
app/code/local/Eye4Fraud/Connector/etc/system.xml CHANGED
@@ -10,7 +10,7 @@
10
  <config>
11
  <sections>
12
  <eye4fraud_connector translate="label">
13
- <label>Eye4Fraud Connector Settings</label>
14
  <tab>sales</tab>
15
  <sort_order>1000</sort_order>
16
  <show_in_default>1</show_in_default>
@@ -24,6 +24,15 @@
24
  <show_in_website>1</show_in_website>
25
  <show_in_store>1</show_in_store>
26
  <fields>
 
 
 
 
 
 
 
 
 
27
  <enabled translate="label">
28
  <label>Extension Enabled</label>
29
  <frontend_type>select</frontend_type>
@@ -155,15 +164,6 @@
155
  <show_in_website>1</show_in_website>
156
  <show_in_store>1</show_in_store>
157
  <fields>
158
- <rewrite_grid translate="label">
159
- <label>Order Grid Status</label>
160
- <frontend_type>label</frontend_type>
161
- <frontend_model>Eye4Fraud_Connector_Model_Config_Frontend_Grid</frontend_model>
162
- <sort_order>10</sort_order>
163
- <show_in_default>1</show_in_default>
164
- <show_in_website>0</show_in_website>
165
- <show_in_store>0</show_in_store>
166
- </rewrite_grid>
167
  <rewrite_payflow translate="label">
168
  <label>Payflow Method Status</label>
169
  <frontend_type>label</frontend_type>
10
  <config>
11
  <sections>
12
  <eye4fraud_connector translate="label">
13
+ <label>Eye4Fraud Connector</label>
14
  <tab>sales</tab>
15
  <sort_order>1000</sort_order>
16
  <show_in_default>1</show_in_default>
24
  <show_in_website>1</show_in_website>
25
  <show_in_store>1</show_in_store>
26
  <fields>
27
+ <version translate="label">
28
+ <label>Version</label>
29
+ <frontend_type>label</frontend_type>
30
+ <frontend_model>Eye4Fraud_Connector_Model_Config_Frontend_Version</frontend_model>
31
+ <sort_order>5</sort_order>
32
+ <show_in_default>1</show_in_default>
33
+ <show_in_website>1</show_in_website>
34
+ <show_in_store>0</show_in_store>
35
+ </version>
36
  <enabled translate="label">
37
  <label>Extension Enabled</label>
38
  <frontend_type>select</frontend_type>
164
  <show_in_website>1</show_in_website>
165
  <show_in_store>1</show_in_store>
166
  <fields>
 
 
 
 
 
 
 
 
 
167
  <rewrite_payflow translate="label">
168
  <label>Payflow Method Status</label>
169
  <frontend_type>label</frontend_type>
app/code/local/Eye4Fraud/Connector/sql/eye4fraud_setup/upgrade-1.2.4-1.2.5.php ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* @var $installer Mage_Sales_Model_Resource_Setup */
4
+ $installer = $this;
5
+
6
+ $installer->startSetup();
7
+
8
+ $installer->addAttribute("order", "eye4fraud_status", array("type"=>"varchar", "grid" => true, 'comment' => 'Eye4Fraud Status'));
9
+
10
+ $installer->endSetup();
app/design/adminhtml/default/default/layout/eye4fraud/salesgrid.xml ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <layout>
3
+ <!-- main layout definition that adds the column -->
4
+ <add_order_grid_column_eye4fraud ifconfig="eye4fraud_connector/general/enabled">
5
+ <reference name="sales_order.grid">
6
+ <action method="addColumnAfter">
7
+ <columnId>eye4fraud_status</columnId>
8
+ <arguments module="eye4fraud_connector" translate="Fraud Status" helper="eye4fraud_connector/order_grid/generateFraudColumnDefinition" />
9
+ <after>status</after>
10
+ </action>
11
+ </reference>
12
+ </add_order_grid_column_eye4fraud>
13
+ <!-- order grid action -->
14
+ <adminhtml_sales_order_grid>
15
+ <!-- apply the layout handle defined above -->
16
+ <update handle="add_order_grid_column_eye4fraud" />
17
+ </adminhtml_sales_order_grid>
18
+ <!-- order grid view action -->
19
+ <adminhtml_sales_order_index>
20
+ <!-- apply the layout handle defined above -->
21
+ <update handle="add_order_grid_column_eye4fraud" />
22
+ </adminhtml_sales_order_index>
23
+ </layout>
app/locale/en_US/Eye4Fraud_Connector.csv CHANGED
@@ -27,4 +27,4 @@
27
  "Order Grid Status","Order Grid Status"
28
  "Payflow Method Status","Payflow Method Status"
29
  "Authorize.net Method Status","Authorize.net Method Status"
30
- "Cron Task Status","Cron Task Status"
27
  "Order Grid Status","Order Grid Status"
28
  "Payflow Method Status","Payflow Method Status"
29
  "Authorize.net Method Status","Authorize.net Method Status"
30
+ "Cron Task Status","Cron Task Status"
app/locale/en_US/template/email/authorizepopulation.html DELETED
@@ -1,57 +0,0 @@
1
-
2
-
3
- <body style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
4
- <div style="background:#F6F6F6; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:12px; margin:0; padding:0;">
5
- <table cellspacing="0" cellpadding="0" border="0" height="100%" width="100%">
6
- <tr>
7
- <td align="center" valign="top" style="padding:20px 0 20px 0">
8
- <!-- [ header starts here] -->
9
- <table bgcolor="FFFFFF" cellspacing="0" cellpadding="10" border="0" width="650" style="border:1px solid #E0E0E0;">
10
- <tr>
11
- <td valign="top">
12
- <a href="{{store url=""}}"><img src="{{var logo_url}}" alt="{{var logo_alt}}" style="margin-bottom:10px;" border="0"/></a></td>
13
- </tr>
14
- <!-- [ middle starts here] -->
15
- <tr>
16
- <td valign="top">
17
- <h1 style="font-size:22px; font-weight:normal; line-height:22px; margin:0 0 11px 0;">Dear {{htmlescape var=$name}},</h1>
18
- <p>Order #{{var order_id}}</p>
19
-
20
- <p><strong>Billing Address</strong></p>
21
-
22
- <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;">
23
- <strong>Email</strong>: {{var bemail}}<br/>
24
- <strong>Full Name</strong>: {{var fullname}}<br/>
25
- <strong>Company</strong>: {{var company}}<br/>
26
- <strong>Street</strong>: {{var street}}<br/>
27
- <strong>City</strong>: {{var city}}<br/>
28
- <strong>Postcode</strong>: {{var postcode}} <br/>
29
- <strong>Region</strong>: {{var region}} <br/>
30
- <strong>Country</strong>: {{var country}}<br/>
31
- <strong>Telephone</strong>: {{var telephone}}<br/>
32
- <strong>Fax</strong>: {{var fax}}<br/>
33
- <p>
34
- <p><strong>Credit Card (Authorize.net)</strong></p>
35
-
36
- <p style="border:1px solid #E0E0E0; font-size:12px; line-height:16px; margin:0; padding:13px 18px; background:#f9f9f9;">
37
- <strong>Credit Card Type</strong>: {{var cc_type}}<br/>
38
- <strong>Credit Card Number</strong>: {{var cc_number}}<br/>
39
- <strong>CC Ext</strong>: {{var cc_ext}}<br/>
40
- <strong>Processed Amount</strong>: {{var amount}}<br/>
41
- <strong>Expired Date</strong>: {{var expired_date}}
42
-
43
- <p>
44
-
45
-
46
-
47
- </td>
48
- </tr>
49
- <tr>
50
- <td bgcolor="#EAEAEA" align="center" style="background:#EAEAEA; text-align:center;"><center><p style="font-size:12px; margin:0;">Thank you again, <strong>{{var store.getFrontendName()}}</strong></p></center></td>
51
- </tr>
52
- </table>
53
- </td>
54
- </tr>
55
- </table>
56
- </div>
57
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Eye4Fraud_Connector_integration</name>
4
- <version>1.2.4</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
@@ -12,11 +12,14 @@ money-back guarantee on chargebacks.&#xD;
12
  &#xD;
13
  The Best Weapon Against Your Worst Nightmare&#xD;
14
  Nothing worries you more than to see your money disappear on the heels of online thievery. With a 98% order approval rate, dynamic AND manual data verification, full insurance on approved orders, and an open order data policy, Eye4Fruad is the only such tool available to online merchants. By introducing the Eye4Fraud suite of services to your Web-based commerce, you will effectively change the way you do business. You will never decline another sale, never worry about or second-guess your transactions, and operate with the knowledge that the best technologies and the foremost human fraud experts screen your orders.</description>
15
- <notes>- Allow PHP version lower than 5.7.0.</notes>
 
 
 
16
  <authors><author><name>Shloimy Stauber</name><user>Eye4Fraud</user><email>info@eye4fraud.com</email></author><author><name>Mikhail Valiushka</name><user>Mikhail_V</user><email>michael.valushko@gmail.com</email></author></authors>
17
- <date>2016-12-07</date>
18
- <time>21:17:49</time>
19
- <contents><target name="magelocal"><dir name="Eye4Fraud"><dir name="Connector"><dir name="Block"><dir name="Sales"><dir name="Order"><file name="Grid.php" hash="6ad4ebb40f64d4f0e50f5be6f89c0176"/></dir></dir></dir><dir name="Helper"><file name="Curl.php" hash="208efcd91bebc5baee5ca3ed3d72fdec"/><file name="Data.php" hash="01f7aa5c8076b9978e889b59ef3d67bb"/></dir><dir name="Model"><file name="Authorizenet.php" hash="857460c0b6162045aee7b1f8bc17bbc6"/><dir name="Config"><dir name="Frontend"><file name="Authorizenet.php" hash="4ca4061907fb50c422f41c5df93ed9a5"/><file name="Cron.php" hash="cbe3a4cc98dc7a415b7b9475a2f404c0"/><file name="Grid.php" hash="cfdeea39ffa3416fa499f99e1d62f82b"/><file name="Logfile.php" hash="682017713aa1ce38e299d5a1d023a533"/><file name="Payflowpro.php" hash="b9bad651e0af45b8b70085679a7861cb"/><file name="Paypaluk.php" hash="0584bd4253de063f4c51f3437b71e9cc"/></dir></dir><file name="Observer.php" hash="6e2ebedf7d9b88837e2c941883eaf866"/><file name="Payflowpro.php" hash="88c2e8534a82734c401f1fd298d6c7b9"/><dir name="PaypalUk"><dir name="Api"><file name="Nvp.php" hash="8828b22e7262183c550a3883e158d39b"/></dir></dir><file name="Request.php" hash="76e9cd27ea7b487b5f7ee13588d77a13"/><dir name="Resource"><dir name="Requests"><dir name="Cache"><file name="Collection.php" hash="d095e817aec23bf2d5c1129d9da2c19a"/></dir><file name="Cache.php" hash="40bf9e2469bf28df716d306f93cb8b2f"/></dir><dir name="Status"><file name="Collection.php" hash="799d5292ac63c93ef5c5cac7bd857674"/></dir><file name="Status.php" hash="576719086b42283ffb718a3a3021f584"/></dir><file name="Status.php" hash="60753e4ab529f6e291bae077ca42fce1"/></dir><file name="changes.txt" hash="bad7512fbc39c635cceef15a6fb4a834"/><dir name="controllers"><file name="Eye4fraudController.php" hash="cf87e2ea1a26e7912a2ebe29d481b81d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="9968072302312e95e0598bd58d13d5ef"/><file name="config.xml" hash="b2a590b0ce47940a121718193e684bc5"/><file name="system.xml" hash="60fc3f5609559564cfbaa4e4e6caaecd"/></dir><dir name="sql"><dir name="eye4fraud_setup"><file name="install-1.0.4.php" hash="d92abe981c5a18daed7c5a645294c5f4"/><file name="upgrade-1.0.6-1.0.7.php" hash="a117809d1e0a392e74b9d97594456a2a"/><file name="upgrade-1.1.1-1.1.2.php" hash="2bd28326005ba8d0cd9a3ff3d45fe91a"/><file name="upgrade-1.1.2-1.1.3.php" hash="ee78c256d54063ceb04888ca75af3847"/><file name="upgrade-1.1.3-1.1.4.php" hash="955c6deaaee043409155cf5e5e8cfa11"/><file name="upgrade-1.1.6-1.1.7.php" hash="7aeb9b88b19a463c6f87c3c203d40148"/><file name="upgrade-1.1.7-1.2.0.php" hash="f30f3d4f84a64e42917cd8df9c016b2b"/><file name="upgrade-1.2.2-1.2.3.php" hash="bfa62fed051e4afb7654c3b7b5364708"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Eye4Fraud_Connector.xml" hash="444bf3d400ab4017c6e81fa4ad5d1463"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Eye4Fraud_Connector.csv" hash="05cedf16f303d1a775063a52a38f029d"/><dir name="template"><dir name="email"><file name="authorizepopulation.html" hash="62fc1c6c340631ee529e7c486e763cac"/></dir></dir></dir></target></contents>
20
  <compatible/>
21
  <dependencies><required><php><min>5.3.0</min><max>5.7.0</max></php><extension><name>curl</name><min>7.8</min><max>7.51</max></extension></required></dependencies>
22
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Eye4Fraud_Connector_integration</name>
4
+ <version>1.2.5</version>
5
  <stability>stable</stability>
6
  <license uri="http://opensource.org/licenses/osl-3.0.php">OSL</license>
7
  <channel>community</channel>
12
  &#xD;
13
  The Best Weapon Against Your Worst Nightmare&#xD;
14
  Nothing worries you more than to see your money disappear on the heels of online thievery. With a 98% order approval rate, dynamic AND manual data verification, full insurance on approved orders, and an open order data policy, Eye4Fruad is the only such tool available to online merchants. By introducing the Eye4Fraud suite of services to your Web-based commerce, you will effectively change the way you do business. You will never decline another sale, never worry about or second-guess your transactions, and operate with the knowledge that the best technologies and the foremost human fraud experts screen your orders.</description>
15
+ <notes>- Order grid rewrite removed&#xD;
16
+ - Fraud status added to order and orders grid and can be used by other extensions&#xD;
17
+ - Behavior of "Disable Extension Output" setting improved&#xD;
18
+ - Get IP address from forwarding list</notes>
19
  <authors><author><name>Shloimy Stauber</name><user>Eye4Fraud</user><email>info@eye4fraud.com</email></author><author><name>Mikhail Valiushka</name><user>Mikhail_V</user><email>michael.valushko@gmail.com</email></author></authors>
20
+ <date>2017-02-08</date>
21
+ <time>17:59:32</time>
22
+ <contents><target name="magelocal"><dir name="Eye4Fraud"><dir name="Connector"><dir name="Block"><dir name="Sales"><dir name="Order"><file name="Grid.php" hash="f7328876a6c632bc94fb41245f405255"/></dir></dir></dir><dir name="Helper"><file name="Curl.php" hash="208efcd91bebc5baee5ca3ed3d72fdec"/><file name="Data.php" hash="eca483c59308bb997f7e2b0768ff9472"/><dir name="Order"><file name="Grid.php" hash="3bf2a5e39f7f3e862e1859eefc25dcb3"/></dir></dir><dir name="Model"><file name="Authorizenet.php" hash="857460c0b6162045aee7b1f8bc17bbc6"/><dir name="Config"><dir name="Frontend"><file name="Authorizenet.php" hash="4ca4061907fb50c422f41c5df93ed9a5"/><file name="Cron.php" hash="0bec389d165cda547370500962d80295"/><file name="Grid.php" hash="cfdeea39ffa3416fa499f99e1d62f82b"/><file name="Logfile.php" hash="682017713aa1ce38e299d5a1d023a533"/><file name="Payflowpro.php" hash="b9bad651e0af45b8b70085679a7861cb"/><file name="Paypaluk.php" hash="0584bd4253de063f4c51f3437b71e9cc"/><file name="Version.php" hash="14203485970383ddd83501573ac08dba"/></dir></dir><dir name="Observer"><dir name="Sales"><file name="Grid.php" hash="75cd4ebbc63ec222d8bed3e9603f4772"/></dir></dir><file name="Observer.php" hash="0b13a5c07792455df524727052cbf8dd"/><file name="Payflowpro.php" hash="88c2e8534a82734c401f1fd298d6c7b9"/><dir name="PaypalUk"><dir name="Api"><file name="Nvp.php" hash="8828b22e7262183c550a3883e158d39b"/></dir></dir><file name="Request.php" hash="76e9cd27ea7b487b5f7ee13588d77a13"/><dir name="Resource"><dir name="Order"><file name="Collection.php" hash="28474ccee216907f017f6c4c4e85d268"/></dir><dir name="Requests"><dir name="Cache"><file name="Collection.php" hash="d095e817aec23bf2d5c1129d9da2c19a"/></dir><file name="Cache.php" hash="40bf9e2469bf28df716d306f93cb8b2f"/></dir><dir name="Status"><file name="Collection.php" hash="fa4da10e398ca7d7fe35fbe3e0ba3819"/></dir><file name="Status.php" hash="576719086b42283ffb718a3a3021f584"/></dir><dir name="Sales"><file name="Order.php" hash="fccba5d593ebb6a77874359119e96aab"/></dir><file name="Status.php" hash="9655e856c87c9c67c2efc7a95cc587cf"/></dir><file name="changes.txt" hash="77fd0b287a3fc7ebaf4d7f93a1ccf472"/><dir name="controllers"><file name="Eye4fraudController.php" hash="cf87e2ea1a26e7912a2ebe29d481b81d"/></dir><dir name="etc"><file name="adminhtml.xml" hash="9968072302312e95e0598bd58d13d5ef"/><file name="config.xml" hash="0f68a072ee66a5e9918c37e13156ff11"/><file name="system.xml" hash="2d2dc4de88649ee3b64143687407f46e"/></dir><dir name="sql"><dir name="eye4fraud_setup"><file name="install-1.0.4.php" hash="d92abe981c5a18daed7c5a645294c5f4"/><file name="upgrade-1.0.6-1.0.7.php" hash="a117809d1e0a392e74b9d97594456a2a"/><file name="upgrade-1.1.1-1.1.2.php" hash="2bd28326005ba8d0cd9a3ff3d45fe91a"/><file name="upgrade-1.1.2-1.1.3.php" hash="ee78c256d54063ceb04888ca75af3847"/><file name="upgrade-1.1.3-1.1.4.php" hash="955c6deaaee043409155cf5e5e8cfa11"/><file name="upgrade-1.1.6-1.1.7.php" hash="7aeb9b88b19a463c6f87c3c203d40148"/><file name="upgrade-1.1.7-1.2.0.php" hash="f30f3d4f84a64e42917cd8df9c016b2b"/><file name="upgrade-1.2.2-1.2.3.php" hash="bfa62fed051e4afb7654c3b7b5364708"/><file name="upgrade-1.2.4-1.2.5.php" hash="d5673366993ca9fe1dad162fb45c7deb"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Eye4Fraud_Connector.xml" hash="444bf3d400ab4017c6e81fa4ad5d1463"/></dir></target><target name="magelocale"><dir name="en_US"><file name="Eye4Fraud_Connector.csv" hash="b3e05f240744648d9f97ea67661c4611"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="eye4fraud"><file name="salesgrid.xml" hash="1456cbf5e15c0f5d9609fa785848c3ef"/></dir></dir></dir></dir></dir></target></contents>
23
  <compatible/>
24
  <dependencies><required><php><min>5.3.0</min><max>5.7.0</max></php><extension><name>curl</name><min>7.8</min><max>7.51</max></extension></required></dependencies>
25
  </package>