riskified_magento - Version 1.0.9.2

Version Notes

* Better handling of SQL deadlock exception

Download this release

Release Info

Developer Riskified_Mage
Extension riskified_magento
Version 1.0.9.2
Comparing to
See all releases


Code changes from version 1.0.8.4 to 1.0.9.2

app/code/community/Riskified/Full/.DS_Store CHANGED
Binary file
app/code/community/Riskified/Full/Helper/Order.php CHANGED
@@ -84,7 +84,8 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
84
  case self::ACTION_CREATE:
85
  $orderForTransport = $this->getOrder($order);
86
  $response = $transport->createOrder($orderForTransport);
87
-
 
88
  break;
89
  case self::ACTION_UPDATE:
90
  $orderForTransport = $this->getOrder($order);
@@ -124,7 +125,19 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
124
  );
125
 
126
  throw $curlException;
127
- } catch (Exception $e) {
 
 
 
 
 
 
 
 
 
 
 
 
128
  Mage::helper('full/log')->logException($e);
129
  Mage::getSingleton('adminhtml/session')->addError('Riskified extension: ' . $e->getMessage());
130
 
@@ -143,7 +156,9 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
143
  {
144
  $orders = array();
145
  foreach ($models as $model) {
146
- $orders[] = $this->getOrder($model);
 
 
147
  }
148
 
149
  $msgs = $this->getTransport()->sendHistoricalOrders($orders);
@@ -454,22 +469,22 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
454
  try {
455
  switch ($gatewayName) {
456
  case 'authorizenet':
457
- $authorize_data = $payment->getAdditionalInformation('authorize_cards');
458
- if ($authorize_data && is_array($authorize_data)) {
459
- $cards_data = array_values($authorize_data);
460
- if ($cards_data && $cards_data[0]) {
461
- $card_data = $cards_data[0];
462
- if (isset($card_data['cc_last4'])) {
463
- $creditCardNumber = $card_data['cc_last4'];
464
  }
465
- if (isset($card_data['cc_type'])) {
466
- $creditCardCompany = $card_data['cc_type'];
467
  }
468
- if (isset($card_data['cc_avs_result_code'])) {
469
- $avsResultCode = $card_data['cc_avs_result_code'];
470
  }// getAvsResultCode
471
- if (isset($card_data['cc_response_code'])) {
472
- $cvvResultCode = $card_data['cc_response_code'];
473
  } // getCardCodeResponseCode
474
  }
475
  }
@@ -494,20 +509,20 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
494
  case 'paypal_express':
495
  case 'paypaluk_express':
496
  case 'paypal_standard':
497
- $payer_email = $payment->getAdditionalInformation('paypal_payer_email');
498
- $payer_status = $payment->getAdditionalInformation('paypal_payer_status');
499
- $payer_address_status = $payment->getAdditionalInformation('paypal_address_status');
500
- $protection_eligibility = $payment->getAdditionalInformation('paypal_protection_eligibility');
501
- $payment_status = $payment->getAdditionalInformation('paypal_payment_status');
502
- $pending_reason = $payment->getAdditionalInformation('paypal_pending_reason');
503
  return new Model\PaymentDetails(array_filter(array(
504
  'authorization_id' => $transactionId,
505
- 'payer_email' => $payer_email,
506
- 'payer_status' => $payer_status,
507
- 'payer_address_status' => $payer_address_status,
508
- 'protection_eligibility' => $protection_eligibility,
509
- 'payment_status' => $payment_status,
510
- 'pending_reason' => $pending_reason
511
  ), 'strlen'));
512
  case 'paypal_direct':
513
  case 'paypaluk_direct':
@@ -554,6 +569,11 @@ class Riskified_Full_Helper_Order extends Mage_Core_Helper_Abstract
554
  $creditCardBin = $payment->getAdyenCardBin();
555
  break;
556
 
 
 
 
 
 
557
  default:
558
  Mage::helper('full/log')->log("unknown gateway:" . $gatewayName);
559
  Mage::helper('full/log')->log("Gateway payment (" . $gatewayName . ") additional info: " . PHP_EOL . var_export($payment->getAdditionalInformation(), 1));
84
  case self::ACTION_CREATE:
85
  $orderForTransport = $this->getOrder($order);
86
  $response = $transport->createOrder($orderForTransport);
87
+ $order->setIsSentToRiskfied(1);
88
+ $order->save();
89
  break;
90
  case self::ACTION_UPDATE:
91
  $orderForTransport = $this->getOrder($order);
125
  );
126
 
127
  throw $curlException;
128
+ }
129
+ catch (\Riskified\OrderWebhook\Exception\MalformedJsonException $e) {
130
+ if (strstr($e->getMessage(), "504") && strstr($e->getMessage(), "Status Code:")) {
131
+ $this->updateOrder($order, 'error', null, 'Error transferring order data to Riskified');
132
+ $this->scheduleSubmissionRetry($order, $action);
133
+ }
134
+ Mage::dispatchEvent(
135
+ 'riskified_decider_post_order_error',
136
+ $eventData
137
+ );
138
+ throw $e;
139
+ }
140
+ catch (Exception $e) {
141
  Mage::helper('full/log')->logException($e);
142
  Mage::getSingleton('adminhtml/session')->addError('Riskified extension: ' . $e->getMessage());
143
 
156
  {
157
  $orders = array();
158
  foreach ($models as $model) {
159
+ $order = $this->getOrder($model);
160
+ Mage::getModel('full/sent')->setOrderId($model->getId())->save();
161
+ $orders[] = $order;
162
  }
163
 
164
  $msgs = $this->getTransport()->sendHistoricalOrders($orders);
469
  try {
470
  switch ($gatewayName) {
471
  case 'authorizenet':
472
+ $authorizeData = $payment->getAdditionalInformation('authorize_cards');
473
+ if ($authorizeData && is_array($authorizeData)) {
474
+ $cardsData = array_values($authorizeData);
475
+ if ($cardsData && $cardsData[0]) {
476
+ $cardData = $cardsData[0];
477
+ if (isset($cardData['cc_last4'])) {
478
+ $creditCardNumber = $cardData['cc_last4'];
479
  }
480
+ if (isset($cardData['cc_type'])) {
481
+ $creditCardCompany = $cardData['cc_type'];
482
  }
483
+ if (isset($cardData['cc_avs_result_code'])) {
484
+ $avsResultCode = $cardData['cc_avs_result_code'];
485
  }// getAvsResultCode
486
+ if (isset($cardData['cc_response_code'])) {
487
+ $cvvResultCode = $cardData['cc_response_code'];
488
  } // getCardCodeResponseCode
489
  }
490
  }
509
  case 'paypal_express':
510
  case 'paypaluk_express':
511
  case 'paypal_standard':
512
+ $payerEmail = $payment->getAdditionalInformation('paypal_payer_email');
513
+ $payerStatus = $payment->getAdditionalInformation('paypal_payer_status');
514
+ $payerAddressStatus = $payment->getAdditionalInformation('paypal_address_status');
515
+ $protectionEligibility = $payment->getAdditionalInformation('paypal_protection_eligibility');
516
+ $paymentStatus = $payment->getAdditionalInformation('paypal_payment_status');
517
+ $pendingReason = $payment->getAdditionalInformation('paypal_pending_reason');
518
  return new Model\PaymentDetails(array_filter(array(
519
  'authorization_id' => $transactionId,
520
+ 'payer_email' => $payerEmail,
521
+ 'payer_status' => $payerStatus,
522
+ 'payer_address_status' => $payerAddressStatus,
523
+ 'protection_eligibility' => $protectionEligibility,
524
+ 'payment_status' => $paymentStatus,
525
+ 'pending_reason' => $pendingReason
526
  ), 'strlen'));
527
  case 'paypal_direct':
528
  case 'paypaluk_direct':
569
  $creditCardBin = $payment->getAdyenCardBin();
570
  break;
571
 
572
+ // Conekta gateway
573
+ case 'card':
574
+ $creditCardBin = $payment->getCardBin();
575
+ break;
576
+
577
  default:
578
  Mage::helper('full/log')->log("unknown gateway:" . $gatewayName);
579
  Mage::helper('full/log')->log("Gateway payment (" . $gatewayName . ") additional info: " . PHP_EOL . var_export($payment->getAdditionalInformation(), 1));
app/code/community/Riskified/Full/Model/Cron.php CHANGED
@@ -50,6 +50,11 @@ class Riskified_Full_Model_Cron
50
  ->order('updated_at ASC')
51
  ->limit(self::BATCH_SIZE);
52
 
 
 
 
 
 
53
  $mapperOrder = array();
54
  $orderIds = array();
55
 
@@ -84,4 +89,32 @@ class Riskified_Full_Model_Cron
84
 
85
  Mage::helper('full/log')->log("Done retrying failed order submissions");
86
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
87
  }
50
  ->order('updated_at ASC')
51
  ->limit(self::BATCH_SIZE);
52
 
53
+ if ($retries->getSize() === 0) {
54
+ Mage::helper('full/log')->log('No orders to retry');
55
+ return $this;
56
+ }
57
+
58
  $mapperOrder = array();
59
  $orderIds = array();
60
 
89
 
90
  Mage::helper('full/log')->log("Done retrying failed order submissions");
91
  }
92
+
93
+ public function uploadHistoricalOrders() {
94
+ if(!Mage::getStoreConfig('riskified/cron/run_historical_orders')) return;
95
+
96
+ $orders = Mage::getModel('sales/order')->getCollection();
97
+
98
+ if(Mage::getStoreConfig('riskified/cron/resend')) {
99
+ $orders->addFieldToFilter('entity_id', array('nin' => $this->getSentCollection()));
100
+ }
101
+ $orders->getSelect()->order('entity_id DESC');
102
+
103
+ Mage::helper('full/order')->postHistoricalOrders($orders);
104
+
105
+ Mage::getConfig()->saveConfig('riskified/cron/run_historical_orders', 0);
106
+ Mage::getConfig()->saveConfig('riskified/cron/resend', 0);
107
+ Mage::app()->getStore()->resetConfig();
108
+ }
109
+
110
+ protected function getSentCollection() {
111
+ $sentCollection = Mage::getModel('full/sent')->getCollection();
112
+ $sentArray = array();
113
+
114
+ foreach($sentCollection AS $entry) {
115
+ $sentArray[] = $entry->getOrderId();
116
+ }
117
+
118
+ return array_unique($sentArray);
119
+ }
120
  }
app/code/community/Riskified/Full/Model/Resource/Sent.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Riskified_Full_Model_Resource_Sent extends Mage_Core_Model_Resource_Db_Abstract
4
+ {
5
+ protected function _construct()
6
+ {
7
+ $this->_init('full/historical_order_sent', 'id');
8
+ }
9
+ }
app/code/community/Riskified/Full/Model/Resource/Sent/Collection.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Riskified_Full_Model_Resource_Sent_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
4
+ {
5
+ public function _construct()
6
+ {
7
+ $this->_init('full/sent');
8
+ }
9
+ }
app/code/community/Riskified/Full/Model/Sent.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Riskified_Full_Model_Sent extends Mage_Core_Model_Abstract
4
+ {
5
+ protected function _construct()
6
+ {
7
+ $this->_init('full/sent');
8
+ }
9
+
10
+ protected function _beforeSave() {
11
+ parent::_beforeSave();
12
+
13
+ if($this->isObjectNew()) {
14
+ $this->setCreatedAt(date('Y-m-d H:i:s'));
15
+ }
16
+ }
17
+ }
app/code/community/Riskified/Full/controllers/Adminhtml/RiskifiedfullController.php CHANGED
@@ -1,8 +1,14 @@
1
  <?php
 
 
 
 
 
 
2
 
3
  class Riskified_Full_Adminhtml_RiskifiedfullController extends Mage_Adminhtml_Controller_Action
4
  {
5
-
6
  /**
7
  * Acl check for admin
8
  *
@@ -29,4 +35,129 @@ class Riskified_Full_Adminhtml_RiskifiedfullController extends Mage_Adminhtml_Co
29
  $call->postOrderIds($order_ids);
30
  Mage::app()->getResponse()->setRedirect(Mage::helper('adminhtml')->getUrl("adminhtml/sales_order/index"));
31
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
1
  <?php
2
+ use Riskified\Common\Riskified;
3
+ use Riskified\Common\Env;
4
+ use Riskified\Common\Validations;
5
+ use Riskified\Common\Signature;
6
+ use Riskified\OrderWebhook\Model;
7
+ use Riskified\OrderWebhook\Transport;
8
 
9
  class Riskified_Full_Adminhtml_RiskifiedfullController extends Mage_Adminhtml_Controller_Action
10
  {
11
+ const MAX_HISTORICAL_FOR_PAGE = 1000;
12
  /**
13
  * Acl check for admin
14
  *
35
  $call->postOrderIds($order_ids);
36
  Mage::app()->getResponse()->setRedirect(Mage::helper('adminhtml')->getUrl("adminhtml/sales_order/index"));
37
  }
38
+
39
+ public function sendHistoricalOrdersAction() {
40
+ ignore_user_abort(true);
41
+ set_time_limit(0);
42
+
43
+ $batch_size = 10;
44
+ $page = $this->getRequest()->getParam('page', 1);
45
+
46
+ if (!$page) {
47
+ $page = 1;
48
+ }
49
+
50
+ include MAGENTO_ROOT . '/lib/riskified_php_sdk/src/Riskified/autoloader.php';
51
+
52
+ $helper = Mage::helper('full');
53
+ $authToken = $helper->getAuthToken();
54
+ $env = constant($helper->getConfigEnv());
55
+ $domain = $helper->getShopDomain();
56
+
57
+ Riskified::init($domain, $authToken, $env, Validations::SKIP);
58
+ $resend = $this->getRequest()->getParam('resend', false);
59
+ $orders = Mage::getModel('sales/order')->getCollection();
60
+ $alreadySent = $this->getSentCollection();
61
+
62
+ if(!$resend && count($alreadySent) > 0) {
63
+ $orders->addFieldToFilter('entity_id', array('nin' => $alreadySent));
64
+ }
65
+
66
+ $total_count = $orders->getSize();
67
+
68
+ if($total_count > self::MAX_HISTORICAL_FOR_PAGE) {
69
+ $this->_enableCronJob();
70
+ if($resend) {
71
+ $this->_enableResendOrders();
72
+ }
73
+ Mage::app()->getStore()->resetConfig();
74
+ echo json_encode(array('success' => true, 'by_cron' => true));
75
+ return;
76
+ }
77
+ $orders_collection = Mage::getModel('sales/order')->getCollection();
78
+ $orders_collection->getSelect()->order('entity_id DESC');
79
+ $orders_collection->setPageSize($batch_size)->setCurPage($page);
80
+
81
+ if(!$resend && count($alreadySent) > 0) {
82
+ $orders_collection->addFieldToFilter('entity_id', array('nin' => $alreadySent));
83
+ }
84
+
85
+ $total_uploaded = 0;
86
+ if($total_count > 0) {
87
+ while ($total_uploaded < $total_count) {
88
+ try {
89
+ Mage::helper('full/order')->postHistoricalOrders($orders_collection);
90
+ $total_uploaded += $orders_collection->count();
91
+
92
+ $orders_collection = Mage::getModel('sales/order')
93
+ ->getCollection()
94
+ ->setPageSize($batch_size)
95
+ ->setCurPage($page);
96
+ $orders_collection->getSelect()->order('entity_id DESC');
97
+
98
+ if(!$resend) {
99
+ $orders_collection->addFieldToFilter('entity_id', array('nin' => $this->getSentCollection()));
100
+ }
101
+ $page++;
102
+ } catch (Exception $e) {
103
+ Mage::logException($e);
104
+ exit(1);
105
+ }
106
+ }
107
+ }
108
+
109
+ if($total_uploaded > 0) {
110
+ $message = Mage::helper('full')->__('%s was sent to Riskified', $total_count);
111
+ } else {
112
+ $message = Mage::helper('full')->__('No new orders sent to Riskified');
113
+ }
114
+ echo json_encode(array('success' => true, 'uploaded' => $total_uploaded, 'message' => $message));
115
+ }
116
+
117
+ public function sendHistoricalOrdersStatusAction() {
118
+ try {
119
+ $_allorders = Mage::getModel('sales/order')->getCollection();
120
+ $all = $_allorders->getSize();
121
+
122
+ $orders = Mage::getModel('sales/order')->getCollection();
123
+ $orders->addFieldToFilter('entity_id', array('nin' => $this->getSentCollection()));
124
+ $sent = $orders->getSize();
125
+
126
+ echo json_encode(array('success' => true, 'status' => ($sent/$all), 'total_sent' => $sent)); exit;
127
+ } catch(Exception $e) {
128
+ echo json_encode(array('success' => false)); exit;
129
+ }
130
+ }
131
+
132
+ protected function getSentCollection() {
133
+ $sentCollection = Mage::getModel('full/sent')->getCollection();
134
+ $sentArray = array();
135
+
136
+ foreach($sentCollection AS $entry) {
137
+ $sentArray[] = $entry->getOrderId();
138
+ }
139
+
140
+ return array_unique($sentArray);
141
+ }
142
+
143
+ private function _enableCronJob() {
144
+ Mage::getConfig()->saveConfig('riskified/cron/run_historical_orders', 1);
145
+ $timecreated = strftime("%Y-%m-%d %H:%M:%S", mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")));
146
+ $timescheduled = strftime("%Y-%m-%d %H:%M:%S", mktime(date("H"), date("i")+ 5, date("s"), date("m"), date("d"), date("Y")));
147
+
148
+ try {
149
+ $schedule = Mage::getModel('cron/schedule');
150
+ $schedule->setJobCode("riskfied_full_upload_historical_orders")
151
+ ->setCreatedAt($timecreated)
152
+ ->setScheduledAt($timescheduled)
153
+ ->setStatus(Mage_Cron_Model_Schedule::STATUS_PENDING)
154
+ ->save();
155
+ } catch (Exception $e) {
156
+ throw new Exception(Mage::helper('cron')->__('Unable to save Cron expression'));
157
+ }
158
+ }
159
+
160
+ private function _enableResendOrders() {
161
+ Mage::getConfig()->saveConfig('riskified/cron/resend', 1);
162
+ }
163
  }
app/code/community/Riskified/Full/controllers/ResponseController.php CHANGED
@@ -1,78 +1,96 @@
1
- <?php
2
-
3
- class Riskified_Full_ResponseController extends Mage_Core_Controller_Front_Action
4
- {
5
- public function getresponseAction()
6
- {
7
- $request = $this->getRequest();
8
- $response = $this->getResponse();
9
- $helper = Mage::helper('full/order');
10
- $logger = Mage::helper('full/log');
11
- $statusCode = 200;
12
- $id = null;
13
- $msg = null;
14
-
15
- try {
16
- $notification = $helper->parseRequest($request);
17
- $id = $notification->id;
18
- if ($notification->status == 'test' && $id == 0) {
19
- $statusCode = 200;
20
- $msg = 'Test notification received successfully';
21
- Mage::helper('full/log')->log("Test Notification received: ", serialize($notification));
22
- } else {
23
-
24
- // Changing scope to ADMIN store so that all orders will be visible and all admin functionalities will work
25
- Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
26
-
27
- Mage::helper('full/log')->log("Notification received: ", serialize($notification));
28
-
29
- $order = $this->loadOrderByOrigId($id);
30
- if (!$order || !$order->getId()) {
31
- $logger->log("ERROR: Unable to load order (" . $id . ")");
32
- $statusCode = 400;
33
- $msg = 'Could not find order to update.';
34
- } else {
35
- $helper->updateOrder($order, $notification->status, $notification->oldStatus, $notification->description);
36
- $statusCode = 200;
37
- $msg = 'Order-Update event triggered.';
38
- }
39
- }
40
- } catch (Riskified\DecisionNotification\Exception\AuthorizationException $e) {
41
- $logger->logException($e);
42
- $statusCode = 401;
43
- $msg = 'Authentication Failed.';
44
- } catch (\Riskified\DecisionNotification\Exception\BadPostJsonException $e) {
45
- $logger->logException($e);
46
- $statusCode = 400;
47
- $msg = "JSON Parsing Error.";
48
- } catch (Exception $e) {
49
- $logger->log("ERROR: while processing notification for order $id");
50
- $logger->logException($e);
51
- $statusCode = 500;
52
- $msg = "Internal Error";
53
- }
54
-
55
- $response->setHttpResponseCode($statusCode);
56
- $response->setHeader('Content-Type', 'application/json');
57
- $response->setBody('{ "order" : { "id" : "' . $id . '", "description" : "' . $msg . '" } }');
58
- }
59
-
60
- private function loadOrderByOrigId($full_orig_id)
61
- {
62
- if (!$full_orig_id) {
63
- return null;
64
- }
65
-
66
- $magento_ids = explode("_", $full_orig_id);
67
- $order_id = $magento_ids[0];
68
- $increment_id = $magento_ids[1];
69
-
70
- if ($order_id && $increment_id) {
71
- return Mage::getModel('sales/order')->getCollection()
72
- ->addFieldToFilter('entity_id', $order_id)
73
- ->addFieldToFilter('increment_id', $increment_id)
74
- ->getFirstItem();
75
- }
76
- return Mage::getModel('sales/order')->load($order_id);
77
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  }
1
+ <?php
2
+
3
+ class Riskified_Full_ResponseController extends Mage_Core_Controller_Front_Action
4
+ {
5
+ public function getresponseAction()
6
+ {
7
+ $request = $this->getRequest();
8
+ $response = $this->getResponse();
9
+ $helper = Mage::helper('full/order');
10
+ $logger = Mage::helper('full/log');
11
+ $statusCode = 200;
12
+ $id = null;
13
+ $msg = null;
14
+
15
+ try {
16
+ $notification = $helper->parseRequest($request);
17
+ $id = $notification->id;
18
+ if ($notification->status == 'test' && $id == 0) {
19
+ $statusCode = 200;
20
+ $msg = 'Test notification received successfully';
21
+ Mage::helper('full/log')->log("Test Notification received: ", serialize($notification));
22
+ } else {
23
+
24
+ // Changing scope to ADMIN store so that all orders will be visible and all admin functionalities will work
25
+ Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
26
+
27
+ Mage::helper('full/log')->log("Notification received: ", serialize($notification));
28
+
29
+ $order = $this->loadOrderByOrigId($id);
30
+ if (!$order || !$order->getId()) {
31
+ $logger->log("ERROR: Unable to load order (" . $id . ")");
32
+ $statusCode = 400;
33
+ $msg = 'Could not find order to update.';
34
+ } else {
35
+ try {
36
+ $helper->updateOrder(
37
+ $order,
38
+ $notification->status,
39
+ $notification->oldStatus,
40
+ $notification->description
41
+ );
42
+
43
+ $statusCode = 200;
44
+ $msg = 'Order-Update event triggered.';
45
+ } catch (PDOException $e) {
46
+ $exceptionMessage = 'SQLSTATE[40001]: Serialization '
47
+ . 'failure: 1213 Deadlock found when trying to get '
48
+ . 'lock; try restarting transaction';
49
+
50
+ if ($e->getMessage() === $exceptionMessage) {
51
+ throw new Exception('Deadlock exception handled.');
52
+ } else {
53
+ throw $e;
54
+ }
55
+ }
56
+ }
57
+ }
58
+ } catch (Riskified\DecisionNotification\Exception\AuthorizationException $e) {
59
+ $logger->logException($e);
60
+ $statusCode = 401;
61
+ $msg = 'Authentication Failed.';
62
+ } catch (\Riskified\DecisionNotification\Exception\BadPostJsonException $e) {
63
+ $logger->logException($e);
64
+ $statusCode = 400;
65
+ $msg = "JSON Parsing Error.";
66
+ } catch (Exception $e) {
67
+ $logger->log("ERROR: while processing notification for order $id");
68
+ $logger->logException($e);
69
+ $statusCode = 500;
70
+ $msg = "Internal Error";
71
+ }
72
+
73
+ $response->setHttpResponseCode($statusCode);
74
+ $response->setHeader('Content-Type', 'application/json');
75
+ $response->setBody('{ "order" : { "id" : "' . $id . '", "description" : "' . $msg . '" } }');
76
+ }
77
+
78
+ private function loadOrderByOrigId($full_orig_id)
79
+ {
80
+ if (!$full_orig_id) {
81
+ return null;
82
+ }
83
+
84
+ $magento_ids = explode("_", $full_orig_id);
85
+ $order_id = $magento_ids[0];
86
+ $increment_id = $magento_ids[1];
87
+
88
+ if ($order_id && $increment_id) {
89
+ return Mage::getModel('sales/order')->getCollection()
90
+ ->addFieldToFilter('entity_id', $order_id)
91
+ ->addFieldToFilter('increment_id', $increment_id)
92
+ ->getFirstItem();
93
+ }
94
+ return Mage::getModel('sales/order')->load($order_id);
95
+ }
96
  }
app/code/community/Riskified/Full/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Riskified_Full>
5
- <version>1.0.8.4</version>
6
  </Riskified_Full>
7
  </modules>
8
 
@@ -23,6 +23,9 @@
23
  <retry>
24
  <table>riskified_full_retry</table>
25
  </retry>
 
 
 
26
  </entities>
27
  </riskified_full_resource>
28
  </models>
@@ -255,6 +258,11 @@
255
  <model>full/cron::retrySubmissions</model>
256
  </run>
257
  </riskified_full_retry_submission>
 
 
 
 
 
258
  </jobs>
259
  </crontab>
260
 
2
  <config>
3
  <modules>
4
  <Riskified_Full>
5
+ <version>1.0.9.2</version>
6
  </Riskified_Full>
7
  </modules>
8
 
23
  <retry>
24
  <table>riskified_full_retry</table>
25
  </retry>
26
+ <historical_order_sent>
27
+ <table>riskified_full_historical_sent</table>
28
+ </historical_order_sent>
29
  </entities>
30
  </riskified_full_resource>
31
  </models>
258
  <model>full/cron::retrySubmissions</model>
259
  </run>
260
  </riskified_full_retry_submission>
261
+ <riskfied_full_upload_historical_orders>
262
+ <run>
263
+ <model>full/cron::uploadHistoricalOrders</model>
264
+ </run>
265
+ </riskfied_full_upload_historical_orders>
266
  </jobs>
267
  </crontab>
268
 
app/code/community/Riskified/Full/sql/riskified_full_setup/mysql4-upgrade-1.0.9.0-1.0.9.1.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* @var $installer Mage_Core_Model_Resource_Setup */
4
+ $installer = $this;
5
+
6
+ $installer->startSetup();
7
+
8
+ $table = $installer->getConnection()
9
+ ->newTable($installer->getTable('full/historical_order_sent'))
10
+ ->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
11
+ 'identity' => true,
12
+ 'unsigned' => true,
13
+ 'nullable' => false,
14
+ 'primary' => true,
15
+ ), 'Id')
16
+ ->addColumn('order_id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
17
+ 'unsigned' => true,
18
+ 'nullable' => false,
19
+ 'default' => 0
20
+ ), 'Order Id')
21
+ ->addColumn('created_at', Varien_Db_Ddl_Table::TYPE_DATETIME, null, array(
22
+ 'nullable' => false
23
+ ), 'Date when order was sent');
24
+
25
+ $installer->getConnection()->createTable($table);
26
+
27
+ $installer->endSetup();
app/design/adminhtml/default/default/template/full/jsinit.phtml CHANGED
@@ -21,6 +21,8 @@
21
 
22
  <?php
23
  $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
 
 
24
  ?>
25
 
26
  <style type="text/css">
@@ -48,6 +50,9 @@ $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
48
  text-decoration: none;
49
  color: #FFF;
50
  }
 
 
 
51
 
52
  .step-inner {
53
  display: inline-block;
@@ -69,6 +74,73 @@ $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
69
  clear: both;
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  </style>
73
 
74
  <script type="text/javascript">
@@ -76,6 +148,7 @@ $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
76
 
77
  document.observe("dom:loaded", function() {
78
  var rhtml = '';
 
79
  rhtml += '<span id="riskified-logo" style="margin-top: 12px; margin-bottom: 19px; display:block">';
80
  rhtml += ' <img width="204px" height="53px" src="<?php echo $this->getSkinUrl('images/riskified/logo.jpg'); ?>"/>';
81
  rhtml += '</span>';
@@ -92,6 +165,12 @@ $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
92
  rhtml = '<span id="riskified-logo" style="margin-top: 12px; margin-bottom: 19px; display:block"> <img width="204px" height="53px" src="<?php echo $this->getSkinUrl('images/riskified/logo.jpg'); ?>"></span>';
93
  rhtml += '<div id="riskified-header" style="font-family:Helvetica Neue; font-size: 19px; line-height: 23px; color: #393536;margin-bottom: 25px;">The extension is connected to your Riskified account</div>';
94
  rhtml += '<a class="riskified-botton" style="margin-bottom:30px" href="//<?php echo Mage::helper('full/order')->getRiskifiedApp()?>" target="_blank">Go to Riskified App</a>';
 
 
 
 
 
 
95
  }else{
96
  rhtml += '<span class="step-wrapper">';
97
  rhtml += ' <div class="step-title" style="font-family:Helvetica Neue; font-size: 25px; line-height: 30px; color: #393536; display:inline-block">';
@@ -111,6 +190,59 @@ $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
111
  htmlBody = rhtml;
112
 
113
  section.up().insert({top:htmlBody});
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  });
115
 
116
  //]]>
21
 
22
  <?php
23
  $all_active_methods = Mage::getModel('payment/config')->getActiveMethods();
24
+ $alreadySent = Mage::getModel('full/sent')->getCollection()->getSize();
25
+ $sendingOrdersToRiskified = Mage::getStoreConfig('riskified/cron/run_historical_orders', 0);
26
  ?>
27
 
28
  <style type="text/css">
50
  text-decoration: none;
51
  color: #FFF;
52
  }
53
+ .riskified-botton.send {
54
+ margin-bottom: 10px;
55
+ }
56
 
57
  .step-inner {
58
  display: inline-block;
74
  clear: both;
75
  }
76
 
77
+ #send-historical-orders-message {
78
+ font-family: Helvetica Neue, sans-serif;
79
+ color : #ff0000;
80
+ margin-bottom:30px;
81
+ font-size: 16px;
82
+ }
83
+
84
+ .already-sent {
85
+ margin-bottom: 30px;
86
+ font-size: 16px;
87
+ color: #1b6800;
88
+ }
89
+
90
+ .one {
91
+ opacity: 0;
92
+ -webkit-animation: dot 1.3s infinite;
93
+ -webkit-animation-delay: 0.0s;
94
+ animation: dot 1.3s infinite;
95
+ animation-delay: 0.0s;
96
+ }
97
+
98
+ .two {
99
+ opacity: 0;
100
+ -webkit-animation: dot 1.3s infinite;
101
+ -webkit-animation-delay: 0.2s;
102
+ animation: dot 1.3s infinite;
103
+ animation-delay: 0.2s;
104
+ }
105
+
106
+ .three {
107
+ opacity: 0;
108
+ -webkit-animation: dot 1.3s infinite;
109
+ -webkit-animation-delay: 0.3s;
110
+ animation: dot 1.3s infinite;
111
+ animation-delay: 0.3s;
112
+ }
113
+
114
+ @-webkit-keyframes dot {
115
+ 0% {
116
+ opacity: 0;
117
+ }
118
+ 50% {
119
+ opacity: 0;
120
+ }
121
+ 100% {
122
+ opacity: 1;
123
+ }
124
+ }
125
+
126
+ @keyframes dot {
127
+ 0% {
128
+ opacity: 0;
129
+ }
130
+ 50% {
131
+ opacity: 0;
132
+ }
133
+ 100% {
134
+ opacity: 1;
135
+ }
136
+ }
137
+
138
+ #send-again {
139
+ color: #000;
140
+ font-weight: bolder;
141
+ cursor: pointer;
142
+ }
143
+
144
  </style>
145
 
146
  <script type="text/javascript">
148
 
149
  document.observe("dom:loaded", function() {
150
  var rhtml = '';
151
+ var bottomHtml = '';
152
  rhtml += '<span id="riskified-logo" style="margin-top: 12px; margin-bottom: 19px; display:block">';
153
  rhtml += ' <img width="204px" height="53px" src="<?php echo $this->getSkinUrl('images/riskified/logo.jpg'); ?>"/>';
154
  rhtml += '</span>';
165
  rhtml = '<span id="riskified-logo" style="margin-top: 12px; margin-bottom: 19px; display:block"> <img width="204px" height="53px" src="<?php echo $this->getSkinUrl('images/riskified/logo.jpg'); ?>"></span>';
166
  rhtml += '<div id="riskified-header" style="font-family:Helvetica Neue; font-size: 19px; line-height: 23px; color: #393536;margin-bottom: 25px;">The extension is connected to your Riskified account</div>';
167
  rhtml += '<a class="riskified-botton" style="margin-bottom:30px" href="//<?php echo Mage::helper('full/order')->getRiskifiedApp()?>" target="_blank">Go to Riskified App</a>';
168
+ bottomHtml += '<a class="riskified-botton send" id="send-historical-orders" style="display:block;" href="javascript:void(0);">Send All Historical Orders</a>';
169
+ bottomHtml += '<p id="send-historical-orders-message"<?php echo $sendingOrdersToRiskified ? 'style="display:block;"' : 'style="display:none;"'; ?>>Sending orders to Riskified<span class="one">.</span><span class="two">.</span><span class="three">.</span>​</p>';
170
+ bottomHtml += '<p id="send-historical-orders-status" style="display:none;"></p>';
171
+ <?php if($alreadySent): ?>
172
+ bottomHtml += '<p class="already-sent"><span id="already-sent-count"><?php echo $alreadySent; ?></span> order(s) were sent in the past.<?php if(!$sendingOrdersToRiskified): ?> <span id="send-again"> Send All Again</span><?php endif; ?></p>';
173
+ <?php endif; ?>
174
  }else{
175
  rhtml += '<span class="step-wrapper">';
176
  rhtml += ' <div class="step-title" style="font-family:Helvetica Neue; font-size: 25px; line-height: 30px; color: #393536; display:inline-block">';
190
  htmlBody = rhtml;
191
 
192
  section.up().insert({top:htmlBody});
193
+ section.up().insert(bottomHtml);
194
+
195
+ $("send-historical-orders").observe('click', function(){
196
+ sendRequest();
197
+ });
198
+ if($("send-again")) {
199
+ $("send-again").observe('click', function() {
200
+ sendRequest(true);
201
+ });
202
+ }
203
+ var internal = null;
204
+ function sendRequest(resend) {
205
+ $('send-historical-orders-message').show();
206
+ new Ajax.Request('<?php echo Mage::helper('adminhtml')->getUrl("adminhtml/riskifiedfull/sendHistoricalOrders"); ?>', {
207
+ method: 'get',
208
+ parameters : {
209
+ resend : resend
210
+ },
211
+ onSuccess : function(resp) {
212
+ var response = JSON.parse(resp.responseText);
213
+
214
+ if(response.success && !response.by_cron) {
215
+ $('send-historical-orders-status').show().update(response.message);
216
+ $('send-historical-orders-message').hide();
217
+ } else if(response.by_cron){
218
+ initUpdate();
219
+ }
220
+ }
221
+ });
222
+ }
223
+
224
+ function initUpdate() {
225
+ internal = setInterval(getProgress, 5000);
226
+ }
227
+
228
+ function getProgress() {
229
+ new Ajax.Request('<?php echo Mage::helper('adminhtml')->getUrl("adminhtml/riskifiedfull/sendHistoricalOrdersStatus"); ?>', {
230
+ method: 'get',
231
+ onCreate: function(request) {
232
+ Ajax.Responders.unregister(varienLoaderHandler.handler);
233
+ },
234
+ onSuccess : function(resp) {
235
+ Ajax.Responders.register(varienLoaderHandler.handler);
236
+ var response = JSON.parse(resp.responseText);
237
+ if (response.success) {
238
+ $('already-sent-count').update(response.total_sent);
239
+ if(response.status == 1) {
240
+ clearInterval(internal);
241
+ }
242
+ }
243
+ }
244
+ });
245
+ }
246
  });
247
 
248
  //]]>
lib/riskified_php_sdk/composer.json ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "riskified/php_sdk",
3
+ "autoload": {
4
+ "psr-4": {
5
+ "Riskified\\": "src/Riskified"
6
+ }
7
+ }
8
+ }
lib/riskified_php_sdk/sample/README.md ADDED
@@ -0,0 +1 @@
 
1
+ Run samples
lib/riskified_php_sdk/sample/order_full_flow.php CHANGED
@@ -36,7 +36,7 @@ Riskified::init($domain, $authToken, Env::SANDBOX, Validations::ALL);
36
  $order_details = array(
37
  'id' => 'ch567',
38
  'name' => '#1234',
39
- 'email' => 'great.customer@example.com',
40
  'created_at' => '2010-01-10T11:00:00-05:00',
41
  'closed_at' => null,
42
  'currency' => 'CAD',
@@ -55,8 +55,24 @@ $order_details = array(
55
  'quantity' => 1,
56
  'title' => 'ACME Widget',
57
  'product_id' => '101',
58
- 'sku' => 'ABCD'
59
- )),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
60
  // Digital Goods product example using "requires_shipping":false
61
  new Model\LineItem(array(
62
  'title' => 'Giftcard',
@@ -74,7 +90,7 @@ $order_details = array(
74
  'category' => 'ACME Spring Category',
75
  'sub_category' => 'ACME Spring Sub Category'
76
  ))
77
- ),
78
  'discount_codes' => new Model\DiscountCode(array(
79
  'amount' => 19.95,
80
  'code' => '12'
@@ -87,7 +103,8 @@ $order_details = array(
87
  'payment_details' => new Model\PaymentDetails(array(
88
  'credit_card_bin' => '370002',
89
  'credit_card_number' => 'xxxx-xxxx-xxxx-1234',
90
- 'credit_card_company' => 'VISA'
 
91
  )),
92
  'customer' => new Model\Customer(array(
93
  'email' => 'email@address.com',
@@ -97,7 +114,9 @@ $order_details = array(
97
  'created_at' => '2008-01-10T11:00:00-05:00',
98
  'orders_count' => 6,
99
  'verified_email' => true,
100
- 'account_type' => 'free'
 
 
101
  )),
102
  'billing_address' => new Model\Address(array(
103
  'first_name' => 'John',
@@ -131,7 +150,7 @@ $order_details = array(
131
  )),
132
  'charge_free_payment_details' => new Model\ChargeFreePaymentDetails(array(
133
  'gateway' => 'giftcard',
134
- 'amount' => '50',
135
  ))
136
  );
137
 
36
  $order_details = array(
37
  'id' => 'ch567',
38
  'name' => '#1234',
39
+ 'email' => 'erin.o\'neill@cbre.com',
40
  'created_at' => '2010-01-10T11:00:00-05:00',
41
  'closed_at' => null,
42
  'currency' => 'CAD',
55
  'quantity' => 1,
56
  'title' => 'ACME Widget',
57
  'product_id' => '101',
58
+ 'sku' => 'ABCD',
59
+ 'delivered_to' => 'store_pickup',
60
+ 'size' => '13',
61
+ 'release_date' => '2016-03-10T11:00:00-05:00',
62
+ 'seller' => new Model\Seller(array(
63
+ 'customer' => new Model\Customer(array(
64
+ 'email' => 'email@address.com',
65
+ 'first_name' => 'Firstname',
66
+ 'last_name' => 'Lastname',
67
+ 'id' => '1233',
68
+ 'created_at' => '2008-01-10T11:00:00-05:00',
69
+ 'orders_count' => 6,
70
+ 'verified_email' => true,
71
+ 'account_type' => 'free',
72
+ 'buy_attempts' => 3,
73
+ 'sell_attempts' => 44
74
+ )),
75
+ ))),
76
  // Digital Goods product example using "requires_shipping":false
77
  new Model\LineItem(array(
78
  'title' => 'Giftcard',
90
  'category' => 'ACME Spring Category',
91
  'sub_category' => 'ACME Spring Sub Category'
92
  ))
93
+ )),
94
  'discount_codes' => new Model\DiscountCode(array(
95
  'amount' => 19.95,
96
  'code' => '12'
103
  'payment_details' => new Model\PaymentDetails(array(
104
  'credit_card_bin' => '370002',
105
  'credit_card_number' => 'xxxx-xxxx-xxxx-1234',
106
+ 'credit_card_company' => 'VISA',
107
+ 'credit_card_token' => '0022334466'
108
  )),
109
  'customer' => new Model\Customer(array(
110
  'email' => 'email@address.com',
114
  'created_at' => '2008-01-10T11:00:00-05:00',
115
  'orders_count' => 6,
116
  'verified_email' => true,
117
+ 'account_type' => 'free',
118
+ 'buy_attempts' => 5,
119
+ 'sell_attempts' => 7
120
  )),
121
  'billing_address' => new Model\Address(array(
122
  'first_name' => 'John',
150
  )),
151
  'charge_free_payment_details' => new Model\ChargeFreePaymentDetails(array(
152
  'gateway' => 'giftcard',
153
+ 'amount' => '50'
154
  ))
155
  );
156
 
lib/riskified_php_sdk/src/Riskified/Common/Riskified.php CHANGED
@@ -20,7 +20,7 @@
20
  * @package Riskified\Common
21
  */
22
  class Riskified {
23
- const VERSION = '1.6.1';
24
  const API_VERSION = '2';
25
 
26
  /**
20
  * @package Riskified\Common
21
  */
22
  class Riskified {
23
+ const VERSION = '1.6.6';
24
  const API_VERSION = '2';
25
 
26
  /**
lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Address.php CHANGED
@@ -39,5 +39,6 @@ class Address extends AbstractModel {
39
  'zip' => 'string optional',
40
  'latitude' => 'float optional',
41
  'longitude' => 'float optional',
 
42
  );
43
  }
39
  'zip' => 'string optional',
40
  'latitude' => 'float optional',
41
  'longitude' => 'float optional',
42
+ 'verified_phone' => 'boolean optional'
43
  );
44
  }
lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Customer.php CHANGED
@@ -22,7 +22,7 @@
22
  class Customer extends AbstractModel {
23
 
24
  protected $_fields = array(
25
- 'email' => 'string /^[A-Z0-9._%+\-!]+@[A-Z0-9.-]+\.[A-Z]{2,20}$/i',
26
  'first_name' => 'string',
27
  'last_name' => 'string',
28
 
@@ -43,6 +43,11 @@ class Customer extends AbstractModel {
43
  'account_type' => 'string optional',
44
 
45
  'default_address' => 'object \Address optional',
46
- 'social' => 'array object \SocialDetails optional'
 
 
 
 
 
47
  );
48
  }
22
  class Customer extends AbstractModel {
23
 
24
  protected $_fields = array(
25
+ 'email' => "string /^[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+(?:\.[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:[a-z]{2,})$/i",
26
  'first_name' => 'string',
27
  'last_name' => 'string',
28
 
43
  'account_type' => 'string optional',
44
 
45
  'default_address' => 'object \Address optional',
46
+ 'social' => 'array object \SocialDetails optional',
47
+
48
+ 'buy_attempts' => 'number optional',
49
+ 'sell_attempts' => 'number optional',
50
+
51
+ 'address' => 'object \Address optional'
52
  );
53
  }
lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/LineItem.php CHANGED
@@ -101,6 +101,11 @@ class LineItem extends AbstractModel {
101
 
102
  'properties' =>'array object \Attribute optional',
103
  'tax_lines' => 'array object \TaxLine optional',
104
- 'seller' => 'object \Seller optional'
 
 
 
 
 
105
  );
106
  }
101
 
102
  'properties' =>'array object \Attribute optional',
103
  'tax_lines' => 'array object \TaxLine optional',
104
+ 'seller' => 'object \Seller optional',
105
+
106
+ 'delivered_to'=> 'string optional',
107
+
108
+ 'release_date' => 'date optional',
109
+ 'size' => 'string optional'
110
  );
111
  }
lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Order.php CHANGED
@@ -23,7 +23,8 @@ class Order extends AbstractModel {
23
 
24
  protected $_fields = array(
25
  'id' => 'string',
26
- 'email' => 'string /^[A-Z0-9._%+\-!]+@[A-Z0-9.-]+\.[A-Z]{2,20}$/i',
 
27
  'created_at' => 'date',
28
  'updated_at' => 'date',
29
  'currency' => 'string /^[A-Z]{3}$/i',
@@ -35,7 +36,7 @@ class Order extends AbstractModel {
35
  'line_items' => 'array object \LineItem',
36
 
37
  'name' => 'string optional',
38
- 'additional_emails' => 'array string /^[A-Z0-9._%+\-!]+@[A-Z0-9.-]+\.[A-Z]{2,20}$/i optional',
39
  'note' => 'string optional',
40
  'number' => 'number optional',
41
  'order_number' => 'number optional',
@@ -70,6 +71,8 @@ class Order extends AbstractModel {
70
  'tags' => 'string optional',
71
  'vendor_id' => 'string optional',
72
  'vendor_name' => 'string optional',
 
 
73
 
74
  'shipping_address' => 'object \Address optional',
75
  'billing_address' => 'object \Address optional',
23
 
24
  protected $_fields = array(
25
  'id' => 'string',
26
+ 'email' => "string /^[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+(?:\.[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:[a-z]{2,})$/i",
27
+
28
  'created_at' => 'date',
29
  'updated_at' => 'date',
30
  'currency' => 'string /^[A-Z]{3}$/i',
36
  'line_items' => 'array object \LineItem',
37
 
38
  'name' => 'string optional',
39
+ 'additional_emails' => "array /^[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+(?:\.[a-z0-9,!#\$%&'\*\+\/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(?:\.[a-z0-9-]+)*\.(?:[a-z]{2,})$/i",
40
  'note' => 'string optional',
41
  'number' => 'number optional',
42
  'order_number' => 'number optional',
71
  'tags' => 'string optional',
72
  'vendor_id' => 'string optional',
73
  'vendor_name' => 'string optional',
74
+ 'order_type' => 'string optional',
75
+ 'submission_reason' => 'string optional',
76
 
77
  'shipping_address' => 'object \Address optional',
78
  'billing_address' => 'object \Address optional',
lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/PaymentDetails.php CHANGED
@@ -27,6 +27,7 @@ class PaymentDetails extends AbstractModel {
27
  'cvv_result_code' => 'string /^.+$/i',
28
  'credit_card_number' => 'string',
29
  'credit_card_company' => 'string',
 
30
 
31
  'payer_email' => 'string optional',
32
  'payer_status' => 'string optional',
27
  'cvv_result_code' => 'string /^.+$/i',
28
  'credit_card_number' => 'string',
29
  'credit_card_company' => 'string',
30
+ 'credit_card_token' => 'string',
31
 
32
  'payer_email' => 'string optional',
33
  'payer_status' => 'string optional',
lib/riskified_scripts/.DS_Store ADDED
Binary file
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>riskified_magento</name>
4
- <version>1.0.8.4</version>
5
  <stability>stable</stability>
6
  <license>OSL v3.0</license>
7
  <channel>community</channel>
@@ -9,11 +9,11 @@
9
  <summary>Riskified Magento extension</summary>
10
  <description>Riskified reviews, approves &amp; guarantees&#xD;
11
  transactions you would otherwise decline.</description>
12
- <notes>* Extended support for Braintree gateway</notes>
13
  <authors><author><name>Riskified_Mage</name><user>Riskified_Mage</user><email>support@riskified.com</email></author></authors>
14
- <date>2016-04-25</date>
15
- <time>16:26:26</time>
16
- <contents><target name="magecommunity"><dir name="Riskified"><dir name="Full"><dir><dir name="Block"><file name="Beacon.php" hash="00c6f36ab82a4805b5408cda907bdcfa"/></dir><dir name="Helper"><dir name="Customer"><file name="Order.php" hash="38278dee0939fba4a017e347ac1784ad"/></dir><file name="Data.php" hash="de74f8666de65022c11ccc7290c494be"/><file name="Debug.php" hash="b4cd9735bdd601cb624f7495242606e2"/><file name="Log.php" hash="ae614c5071160221b71fb0ed600da67e"/><dir name="Order"><file name="Invoice.php" hash="0117cd5689818c3dc9ab9b59fced6c18"/><file name="Status.php" hash="210a0c440b4070fdcb2ead2c2db4e567"/></dir><file name="Order.php" hash="8b38d94739b8cfee632bbf17b3bc982f"/></dir><dir name="Model"><file name="Authorizenet.php" hash="4b910a92820a8d5571a5129e51b54fd3"/><dir name="Container"><file name="Beacon.php" hash="b1c3910031983b9291c98dbe46d61f09"/></dir><file name="Cron.php" hash="47bbfb6faee152d0545f00c9edff8009"/><file name="Observer.php" hash="ce32dda2157928a76fd94311a113bb27"/><dir name="Resource"><dir name="Retry"><file name="Collection.php" hash="fd62ad4e4cdd8d372751bfa9988cc3a9"/></dir><file name="Retry.php" hash="3be3db7e54bd8bb45e0faffa1941f515"/></dir><file name="Retry.php" hash="89e7344139affa4fe0b9a252a5d1c592"/><dir name="System"><dir name="Config"><dir name="Source"><file name="ApprovedState.php" hash="6f4d7f7eb52922e57ff9069ec6031b63"/><file name="CanceledStateStatuses.php" hash="c274fb739314b34104e0b0085f1039c8"/><file name="CaptureCase.php" hash="6f2505f2c51df6a7caa26d5f89995b47"/><file name="DeclinedState.php" hash="d2c80dd15b3843bce5eb4d2a660b080a"/><file name="Env.php" hash="e213a59d9c438e4dc39b226134a85fab"/><file name="HoldedStateStatuses.php" hash="212f2476e5f6bed6d3456133d6e27c40"/><file name="ProcessingStateStatuses.php" hash="19af6046f86df7a5ba28693545493304"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="General.php" hash="a5d4950c5655960879e7d75c06977941"/></dir><dir name="Helper"><dir name="General"><dir name="fixtures"><file name="extensionConfigEnabled.yaml" hash="eec8c8d8a1d5de49897b19740cf8e074"/></dir></dir><file name="General.php" hash="607c9711656be48084f6688e114b6bf6"/></dir><dir name="Model"><file name="Environments.php" hash="f3fc028d17c82b9b84b709b932e64eae"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="RiskifiedfullController.php" hash="2bcd1d1e3b05bc35e08bd0a9609bb2df"/></dir><file name="ResponseController.php" hash="2e1cc71cb0d8ed2668b21e2e143067b2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="333f4002a4c677b670cd449147b9d3c8"/><file name="cache.xml" hash="3a7cd749515499cce292330c46ce5028"/><file name="config.xml" hash="c137fdedcca7740b6ba9bc933b584704"/><file name="system.xml" hash="58e468c2ef66e1b0b8ffc0dcd7e6c55e"/></dir><dir name="sql"><dir name="riskified_full_setup"><file name="mysql4-install-1.0.1.php" hash="66592f315ddacbb116e70b34094fbbef"/><file name="mysql4-upgrade-1.0.2.0-1.0.2.1.php" hash="5d12b7203027e843f6322b5a48fb3d23"/><file name="mysql4-upgrade-1.0.4-1.0.5.0.php" hash="df9bb6016ebab61444d65a5d92b0a70e"/><file name="mysql4-upgrade-1.0.5.5-1.0.6.0.php" hash="c749f3c2564fdf9310dcd22d493630d8"/><file name="mysql4-upgrade-1.0.8.0-1.0.8.1.php" hash="45ac33ab1e02f06f6850dd9876017f09"/></dir></dir></dir><file name=".DS_Store" hash="af9575107ec7e509e8f187f6c21faa5f"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Riskified_Full.xml" hash="d684caecdf710e5d0173ca07e5c5d1c0"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="full.xml" hash="8dbb3dd16fcb5821eb07e9b5d978d55c"/></dir><dir name="template"><dir name="full"><file name="jsinit.phtml" hash="a88b28f46d8dcdf51633802c367bcc41"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="full.xml" hash="96d4fb310618a1e6fb149dc367952812"/></dir><dir name="template"><dir name="full"><file name="beacon.phtml" hash="396625d0c46c9f4dd287cef289a9bef8"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="riskified"><file name="logo.jpg" hash="0ac96bf07aa8b8ecb3ff06c2ccbf0827"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="riskified_php_sdk"><file name="README.md" hash="f37118baa641e4ef6d670bb1c0298482"/><dir><dir name="sample"><file name="callback.php" hash="c6fb5a90b2c527b794fcec803acb36d9"/><file name="order_full_flow.php" hash="2f9ee71abb1188685d8adb18dca97321"/><file name="order_marketplace_create.php" hash="ae3d2fb28154a710934d6243302a590d"/><file name="order_simple_submit.php" hash="d8458f7992b486b6dac28558526f068b"/><file name="run_callback_server.sh" hash="8202fd93c15e088d072805d3a2f4c02b"/><file name="update_merchant_settings.php" hash="24499737ab057aba76cd054fd5051aad"/><file name="upload_historical.php" hash="78bdb85c036183de16968a79c8836efd"/></dir><dir name="src"><dir name="Riskified"><dir name="Common"><file name="Env.php" hash="3fc8342a423141fb0c110901deebfe25"/><dir name="Exception"><file name="BaseException.php" hash="ce902d0a3bd9af53b3c1923541602ead"/></dir><file name="Riskified.php" hash="c3adcd9835e919c85507636b22665fcc"/><dir name="Signature"><file name="HttpDataSignature.php" hash="b9f5d57db1903126a72eb38ca55ba878"/></dir><file name="Validations.php" hash="4af37b31901f215b660c868c31594b75"/></dir><dir name="DecisionNotification"><dir name="Exception"><file name="AuthorizationException.php" hash="4cab71ac324efd3b29bdfa6236a8f531"/><file name="BadHeaderException.php" hash="407a0d9e94d52e8b43bed02e34bd4a70"/><file name="BadPostJsonException.php" hash="2e2a7f84fae19fd525f01f6899ea218b"/><file name="NotificationException.php" hash="8f7d1ed8b9523ec66423c6ff2703085f"/></dir><dir name="Model"><file name="Notification.php" hash="9e2f5fd421abe37ab7b742767966f312"/></dir></dir><dir name="OrderWebhook"><dir name="Exception"><file name="ClassMismatchPropertyException.php" hash="8854b7aea6736b290826eb44ac0ba578"/><file name="CurlException.php" hash="27488d2dd0fa2c25b647a5967e3821b1"/><file name="FormatMismatchPropertyException.php" hash="2729989c3ac2a245341fd01a4d004b49"/><file name="InvalidPropertyException.php" hash="97084ff2ff33f5c657c5876a44aa97d2"/><file name="MalformedJsonException.php" hash="8c795b605988f20f1899dcf160f29cf1"/><file name="MissingPropertyException.php" hash="5ad8df6ba645a113fac7b65e08167d2c"/><file name="MultiplePropertiesException.php" hash="aaa042c5a0fcfd15dc2744059b15798b"/><file name="PropertyException.php" hash="7a234406434c5616aab72da27a1ed6ed"/><file name="TypeMismatchPropertyException.php" hash="5eed61220c954a462411f433a2c85bf2"/><file name="UnsuccessfulActionException.php" hash="b02fafbda955fa889ca36c5092ccc68d"/></dir><dir name="Model"><file name="AbstractModel.php" hash="73adfaac9fe9e189827baac5a71e41a4"/><file name="Address.php" hash="afcbe96d54dd0c03b01eb057662cdcf9"/><file name="Attribute.php" hash="e7fa146d7c9c807494c225e6a41afcfb"/><file name="AuthorizationError.php" hash="b82229eff42d94ceba58d4d6a3a4118b"/><file name="ChargeFreePaymentDetails.php" hash="07ab9a9022cc3152404617b72230e843"/><file name="Checkout.php" hash="ede0e6d2fd8319ada669de35b4c3190f"/><file name="ClientDetails.php" hash="50b329fa6b77bcbeff4b725705b957af"/><file name="Customer.php" hash="43baa39c861eb653834066b595b55407"/><file name="Decision.php" hash="55bf62bfcfc49ab9e5b823e7ec90d6bd"/><file name="DecisionDetails.php" hash="317121548885d2b8eb75a4d5e383f9f8"/><file name="DiscountCode.php" hash="0861920950828a3ff19904b92b4cb50d"/><file name="Fulfillment.php" hash="9111db9b13ae7b2fbe6bf806a66d78f2"/><file name="FulfillmentDetails.php" hash="d3c11d4e8943862fc4a774f3f8e9d7d7"/><file name="LineItem.php" hash="f01c65e7ad1195bb994d77d869e301d7"/><file name="MerchantSettings.php" hash="62f42b50b7a25b014cbed4ea528998aa"/><file name="Order.php" hash="e5264565f54800012294d8aecf0619cf"/><file name="OrderCancellation.php" hash="f6f2d5234bb98b56902e632fbccc07b3"/><file name="PaymentDetails.php" hash="413b5a6ab26ec6b9b0664a9d9e301c02"/><file name="Refund.php" hash="1c3ad264984585cfcefc909ffa708dc4"/><file name="RefundDetails.php" hash="f9a0e27e26bbfb6699bb0dd44fe6a184"/><file name="Seller.php" hash="2dd5dc2dc22582231263cad803149a16"/><file name="ShippingLine.php" hash="5ac14361474789db570fa6d14b17a973"/><file name="SocialDetails.php" hash="1fbc1939121c9618e612316c1a4500ca"/><file name="TaxLine.php" hash="59f82a19bc9ada690aa79bc96307db5e"/></dir><dir name="Transport"><file name="AbstractTransport.php" hash="6be123376c81f478968ee420ca5b31cb"/><file name="CurlTransport.php" hash="ecfb195ac0f8f9599dd859dffc40c968"/></dir></dir><file name="autoloader.php" hash="f3471e90daf6184a096d337bbcd40bd1"/></dir></dir></dir><file name=".gitignore" hash="73f01e1298c44b6cc3e24a70cad8c56c"/></dir><dir name="riskified_scripts"><file name="riskified_historical_upload.php" hash="db28908aa4d29a78b712057fa60924fb"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>4.4.0</min><max>6.0.0</max></php></required></dependencies>
19
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>riskified_magento</name>
4
+ <version>1.0.9.2</version>
5
  <stability>stable</stability>
6
  <license>OSL v3.0</license>
7
  <channel>community</channel>
9
  <summary>Riskified Magento extension</summary>
10
  <description>Riskified reviews, approves &amp; guarantees&#xD;
11
  transactions you would otherwise decline.</description>
12
+ <notes>* Better handling of SQL deadlock exception</notes>
13
  <authors><author><name>Riskified_Mage</name><user>Riskified_Mage</user><email>support@riskified.com</email></author></authors>
14
+ <date>2016-07-13</date>
15
+ <time>09:20:36</time>
16
+ <contents><target name="magecommunity"><dir name="Riskified"><dir name="Full"><dir><dir name="Block"><file name="Beacon.php" hash="00c6f36ab82a4805b5408cda907bdcfa"/></dir><dir name="Helper"><dir name="Customer"><file name="Order.php" hash="38278dee0939fba4a017e347ac1784ad"/></dir><file name="Data.php" hash="de74f8666de65022c11ccc7290c494be"/><file name="Debug.php" hash="b4cd9735bdd601cb624f7495242606e2"/><file name="Log.php" hash="ae614c5071160221b71fb0ed600da67e"/><dir name="Order"><file name="Invoice.php" hash="0117cd5689818c3dc9ab9b59fced6c18"/><file name="Status.php" hash="210a0c440b4070fdcb2ead2c2db4e567"/></dir><file name="Order.php" hash="2ac086bcac466a1828430db727147704"/></dir><dir name="Model"><file name="Authorizenet.php" hash="4b910a92820a8d5571a5129e51b54fd3"/><dir name="Container"><file name="Beacon.php" hash="b1c3910031983b9291c98dbe46d61f09"/></dir><file name="Cron.php" hash="123074f2f44bc1f28f55ae864d759e27"/><file name="Observer.php" hash="ce32dda2157928a76fd94311a113bb27"/><dir name="Resource"><dir name="Retry"><file name="Collection.php" hash="fd62ad4e4cdd8d372751bfa9988cc3a9"/></dir><file name="Retry.php" hash="3be3db7e54bd8bb45e0faffa1941f515"/><dir name="Sent"><file name="Collection.php" hash="8960157c9c5b16463aac33cf75116bc8"/></dir><file name="Sent.php" hash="744833cbe4ac4bb7ca69395d90229c0c"/></dir><file name="Retry.php" hash="89e7344139affa4fe0b9a252a5d1c592"/><file name="Sent.php" hash="cf2b22314d20f469f40e31ae14477032"/><dir name="System"><dir name="Config"><dir name="Source"><file name="ApprovedState.php" hash="6f4d7f7eb52922e57ff9069ec6031b63"/><file name="CanceledStateStatuses.php" hash="c274fb739314b34104e0b0085f1039c8"/><file name="CaptureCase.php" hash="6f2505f2c51df6a7caa26d5f89995b47"/><file name="DeclinedState.php" hash="d2c80dd15b3843bce5eb4d2a660b080a"/><file name="Env.php" hash="e213a59d9c438e4dc39b226134a85fab"/><file name="HoldedStateStatuses.php" hash="212f2476e5f6bed6d3456133d6e27c40"/><file name="ProcessingStateStatuses.php" hash="19af6046f86df7a5ba28693545493304"/></dir></dir></dir></dir><dir name="Test"><dir name="Config"><file name="General.php" hash="a5d4950c5655960879e7d75c06977941"/></dir><dir name="Helper"><dir name="General"><dir name="fixtures"><file name="extensionConfigEnabled.yaml" hash="eec8c8d8a1d5de49897b19740cf8e074"/></dir></dir><file name="General.php" hash="607c9711656be48084f6688e114b6bf6"/></dir><dir name="Model"><file name="Environments.php" hash="f3fc028d17c82b9b84b709b932e64eae"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="RiskifiedfullController.php" hash="c1927328b0feadc25073ae1e948cfa6b"/></dir><file name="ResponseController.php" hash="05173a743f73c1ed7b7cb9e0a580de3a"/></dir><dir name="etc"><file name="adminhtml.xml" hash="333f4002a4c677b670cd449147b9d3c8"/><file name="cache.xml" hash="3a7cd749515499cce292330c46ce5028"/><file name="config.xml" hash="f7aac272dae6a5a44b51d64de2721531"/><file name="system.xml" hash="58e468c2ef66e1b0b8ffc0dcd7e6c55e"/></dir><dir name="sql"><dir name="riskified_full_setup"><file name="mysql4-install-1.0.1.php" hash="66592f315ddacbb116e70b34094fbbef"/><file name="mysql4-upgrade-1.0.2.0-1.0.2.1.php" hash="5d12b7203027e843f6322b5a48fb3d23"/><file name="mysql4-upgrade-1.0.4-1.0.5.0.php" hash="df9bb6016ebab61444d65a5d92b0a70e"/><file name="mysql4-upgrade-1.0.5.5-1.0.6.0.php" hash="c749f3c2564fdf9310dcd22d493630d8"/><file name="mysql4-upgrade-1.0.8.0-1.0.8.1.php" hash="45ac33ab1e02f06f6850dd9876017f09"/><file name="mysql4-upgrade-1.0.9.0-1.0.9.1.php" hash="3cc6f0423a53bf1b8484b7dfe14fc328"/></dir></dir></dir><file name=".DS_Store" hash="87b64a6de9627eade2d4e9ade2a3ffc1"/></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Riskified_Full.xml" hash="d684caecdf710e5d0173ca07e5c5d1c0"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="full.xml" hash="8dbb3dd16fcb5821eb07e9b5d978d55c"/></dir><dir name="template"><dir name="full"><file name="jsinit.phtml" hash="ae0e337973ce84f21ba956f80bf2ff4c"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="full.xml" hash="96d4fb310618a1e6fb149dc367952812"/></dir><dir name="template"><dir name="full"><file name="beacon.phtml" hash="396625d0c46c9f4dd287cef289a9bef8"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="riskified"><file name="logo.jpg" hash="0ac96bf07aa8b8ecb3ff06c2ccbf0827"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="riskified_php_sdk"><file name="README.md" hash="f37118baa641e4ef6d670bb1c0298482"/><file name="composer.json" hash="96ba594b3b4ae47223d03f4fc78dcb16"/><dir><dir name="sample"><file name="README.md" hash="d6e555fdf2501b66b52d056857b3d903"/><file name="callback.php" hash="c6fb5a90b2c527b794fcec803acb36d9"/><file name="order_full_flow.php" hash="f85e1ca28b6f7deae958271d88cbeaed"/><file name="order_marketplace_create.php" hash="ae3d2fb28154a710934d6243302a590d"/><file name="order_simple_submit.php" hash="d8458f7992b486b6dac28558526f068b"/><file name="run_callback_server.sh" hash="8202fd93c15e088d072805d3a2f4c02b"/><file name="update_merchant_settings.php" hash="24499737ab057aba76cd054fd5051aad"/><file name="upload_historical.php" hash="78bdb85c036183de16968a79c8836efd"/></dir><dir name="src"><dir name="Riskified"><dir name="Common"><file name="Env.php" hash="3fc8342a423141fb0c110901deebfe25"/><dir name="Exception"><file name="BaseException.php" hash="ce902d0a3bd9af53b3c1923541602ead"/></dir><file name="Riskified.php" hash="0d1ff23815dbbf8716f2f3d349c1f8f3"/><dir name="Signature"><file name="HttpDataSignature.php" hash="b9f5d57db1903126a72eb38ca55ba878"/></dir><file name="Validations.php" hash="4af37b31901f215b660c868c31594b75"/></dir><dir name="DecisionNotification"><dir name="Exception"><file name="AuthorizationException.php" hash="4cab71ac324efd3b29bdfa6236a8f531"/><file name="BadHeaderException.php" hash="407a0d9e94d52e8b43bed02e34bd4a70"/><file name="BadPostJsonException.php" hash="2e2a7f84fae19fd525f01f6899ea218b"/><file name="NotificationException.php" hash="8f7d1ed8b9523ec66423c6ff2703085f"/></dir><dir name="Model"><file name="Notification.php" hash="9e2f5fd421abe37ab7b742767966f312"/></dir></dir><dir name="OrderWebhook"><dir name="Exception"><file name="ClassMismatchPropertyException.php" hash="8854b7aea6736b290826eb44ac0ba578"/><file name="CurlException.php" hash="27488d2dd0fa2c25b647a5967e3821b1"/><file name="FormatMismatchPropertyException.php" hash="2729989c3ac2a245341fd01a4d004b49"/><file name="InvalidPropertyException.php" hash="97084ff2ff33f5c657c5876a44aa97d2"/><file name="MalformedJsonException.php" hash="8c795b605988f20f1899dcf160f29cf1"/><file name="MissingPropertyException.php" hash="5ad8df6ba645a113fac7b65e08167d2c"/><file name="MultiplePropertiesException.php" hash="aaa042c5a0fcfd15dc2744059b15798b"/><file name="PropertyException.php" hash="7a234406434c5616aab72da27a1ed6ed"/><file name="TypeMismatchPropertyException.php" hash="5eed61220c954a462411f433a2c85bf2"/><file name="UnsuccessfulActionException.php" hash="b02fafbda955fa889ca36c5092ccc68d"/></dir><dir name="Model"><file name="AbstractModel.php" hash="73adfaac9fe9e189827baac5a71e41a4"/><file name="Address.php" hash="743e6e5ad9562d19e6af68334079d3cb"/><file name="Attribute.php" hash="e7fa146d7c9c807494c225e6a41afcfb"/><file name="AuthorizationError.php" hash="b82229eff42d94ceba58d4d6a3a4118b"/><file name="ChargeFreePaymentDetails.php" hash="07ab9a9022cc3152404617b72230e843"/><file name="Checkout.php" hash="ede0e6d2fd8319ada669de35b4c3190f"/><file name="ClientDetails.php" hash="50b329fa6b77bcbeff4b725705b957af"/><file name="Customer.php" hash="7e68c5804c145a93c2e48f4460a63759"/><file name="Decision.php" hash="55bf62bfcfc49ab9e5b823e7ec90d6bd"/><file name="DecisionDetails.php" hash="317121548885d2b8eb75a4d5e383f9f8"/><file name="DiscountCode.php" hash="0861920950828a3ff19904b92b4cb50d"/><file name="Fulfillment.php" hash="9111db9b13ae7b2fbe6bf806a66d78f2"/><file name="FulfillmentDetails.php" hash="d3c11d4e8943862fc4a774f3f8e9d7d7"/><file name="LineItem.php" hash="28af24c031cb3e162c2b4b7a3423980b"/><file name="MerchantSettings.php" hash="62f42b50b7a25b014cbed4ea528998aa"/><file name="Order.php" hash="cdff0611ed8e2b673938a8e1d36d64c5"/><file name="OrderCancellation.php" hash="f6f2d5234bb98b56902e632fbccc07b3"/><file name="PaymentDetails.php" hash="1d0bc8094d3a02ba6fe6b52ee139f47e"/><file name="Refund.php" hash="1c3ad264984585cfcefc909ffa708dc4"/><file name="RefundDetails.php" hash="f9a0e27e26bbfb6699bb0dd44fe6a184"/><file name="Seller.php" hash="2dd5dc2dc22582231263cad803149a16"/><file name="ShippingLine.php" hash="5ac14361474789db570fa6d14b17a973"/><file name="SocialDetails.php" hash="1fbc1939121c9618e612316c1a4500ca"/><file name="TaxLine.php" hash="59f82a19bc9ada690aa79bc96307db5e"/></dir><dir name="Transport"><file name="AbstractTransport.php" hash="6be123376c81f478968ee420ca5b31cb"/><file name="CurlTransport.php" hash="ecfb195ac0f8f9599dd859dffc40c968"/></dir></dir><file name="autoloader.php" hash="f3471e90daf6184a096d337bbcd40bd1"/></dir></dir></dir><file name=".gitignore" hash="73f01e1298c44b6cc3e24a70cad8c56c"/></dir><dir name="riskified_scripts"><file name="riskified_historical_upload.php" hash="db28908aa4d29a78b712057fa60924fb"/><file name=".DS_Store" hash="2d4da7900011d5d8888ce53ed3dfcba7"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>4.4.0</min><max>6.0.0</max></php></required></dependencies>
19
  </package>