Skip to content

Commit

Permalink
Improvements.
Browse files Browse the repository at this point in the history
Fixing issue with Payflow Express Checkout.
Fixing issue with IPv6 being skiped when it is the first one.
Improving logging by separating the Signifyd Connect logs from the
magento system.log.
  • Loading branch information
cristian-vatca-osf committed May 4, 2017
1 parent 3056b73 commit e835fb9
Show file tree
Hide file tree
Showing 8 changed files with 96 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Helper/LogHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class LogHelper
protected $_log;

public function __construct(
LoggerInterface $logger,
\Signifyd\Connect\Logger\Logger $logger,
ScopeConfigInterface $scopeConfig
) {
$this->_log = $scopeConfig->getValue('signifyd/logs/log', 'store');
Expand Down
16 changes: 15 additions & 1 deletion Helper/PurchaseHelper.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,11 @@ protected function getIPAddress(Order $order)
* @param $ip
* @return mixed
*/
protected function filterIp($ip)
protected function filterIp($ipString)
{
$matches = array();
$ipArray = explode(',', $ipString);
$ip = $ipArray[0];

// Uses format IPv4
if (preg_match('/[0-9]{1,3}(?:\.[0-9]{1,3}){3}/', $ip, $matches)) {
Expand Down Expand Up @@ -372,4 +374,16 @@ public function postCaseToSignifyd($caseData, $order)

return $id;
}

/**
* Check if case has guaranty
* @param $order
* @return bool
*/
public function hasGuaranty($order)
{
$case = $this->getCase($order);
return ($case->getGuarantee() == 'N/A')? false : true;
}

}
23 changes: 23 additions & 0 deletions Logger/Handler.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php


/**
* Copyright 2015 SIGNIFYD Inc. All rights reserved.
* See LICENSE.txt for license details.
*/
namespace Signifyd\Connect\Logger;

class Handler extends \Magento\Framework\Logger\Handler\Base
{
/**
* Logging Level
* @var int
*/
protected $loggerType = Logger::INFO;

/**
* The Signifyd file log name
* @var string
*/
protected $fileName = '/var/log/signifyd_connect.log';
}
12 changes: 12 additions & 0 deletions Logger/Logger.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?php

/**
* Copyright 2015 SIGNIFYD Inc. All rights reserved.
* See LICENSE.txt for license details.
*/
namespace Signifyd\Connect\Logger;

class Logger extends \Monolog\Logger
{

}
35 changes: 30 additions & 5 deletions Observer/Purchase.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ class Purchase implements ObserverInterface
*/
protected $_api;

protected $specialMethods = ['payflow_express'];

public function __construct(
LogHelper $logger,
PurchaseHelper $helper,
Expand All @@ -63,7 +65,8 @@ public function execute(Observer $observer)

// Check if case already exists for this order
if ($this->_helper->doesCaseExist($order)) {
return;
// backup hold order
$this->holdOrder($order);
}

$orderData = $this->_helper->processOrderData($order);
Expand All @@ -74,17 +77,39 @@ public function execute(Observer $observer)
// Post case to signifyd service
$result = $this->_helper->postCaseToSignifyd($orderData, $order);

if($order->canHold()){
$order->hold()->getResource()->save($order);
}
// Initial hold order
$this->holdOrder($order);

if($result){
$case->setCode($result);
$case->setMagentoStatus(CaseRetry::IN_REVIEW_STATUS)->setUpdated(strftime('%Y-%m-%d %H:%M:%S', time()));
$case->getResource()->save($case);
try {
$case->getResource()->save($case);
$this->_logger->debug('Case saved. Order No:' . $order->getIncrementId());
} catch (\Exception $e) {
$this->_logger->error('Exception in: ' . __FILE__ . ', on line: ' . __LINE__);
$this->_logger->error('Exception:' . $e->__toString());
}
}
} catch (\Exception $ex) {
$this->_logger->error($ex->getMessage());
}
}

public function holdOrder($order)
{
if($order->canHold()){
if(in_array($order->getPayment()->getMethod(), $this->specialMethods)){
if(!$order->getEmailSent()){ return false; }
if($this->_helper->hasGuaranty($order)) { return false; }
}

if(!$this->_helper->hasGuaranty($order)) {
$this->_logger->debug('Purchase Observer Order Hold: No: ' . $order->getIncrementId());
$order->hold()->getResource()->save($order);
}
}

return true;
}
}
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"signifyd/signifyd-php":"0.1.*"
},
"type": "magento2-module",
"version": "2.0.4",
"version": "2.0.5",
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
Expand Down
13 changes: 13 additions & 0 deletions etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,17 @@
</argument>
</arguments>
</virtualType>
<type name="Signifyd\Connect\Logger\Handler">
<arguments>
<argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
</arguments>
</type>
<type name="Signifyd\Connect\Logger\Logger">
<arguments>
<argument name="name" xsi:type="string">SignifydLogger</argument>
<argument name="handlers" xsi:type="array">
<item name="system" xsi:type="object">Signifyd\Connect\Logger\Handler</item>
</argument>
</arguments>
</type>
</config>
2 changes: 1 addition & 1 deletion etc/module.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Signifyd_Connect" setup_version="2.0.4">
<module name="Signifyd_Connect" setup_version="2.0.5">
<sequence>
<module name="Magento_Sales" />
<module name="Magento_Payment" />
Expand Down

0 comments on commit e835fb9

Please sign in to comment.