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 +0 -0
- app/code/community/Riskified/Full/Helper/Order.php +48 -28
- app/code/community/Riskified/Full/Model/Cron.php +33 -0
- app/code/community/Riskified/Full/Model/Resource/Sent.php +9 -0
- app/code/community/Riskified/Full/Model/Resource/Sent/Collection.php +9 -0
- app/code/community/Riskified/Full/Model/Sent.php +17 -0
- app/code/community/Riskified/Full/controllers/Adminhtml/RiskifiedfullController.php +132 -1
- app/code/community/Riskified/Full/controllers/ResponseController.php +95 -77
- app/code/community/Riskified/Full/etc/config.xml +9 -1
- app/code/community/Riskified/Full/sql/riskified_full_setup/mysql4-upgrade-1.0.9.0-1.0.9.1.php +27 -0
- app/design/adminhtml/default/default/template/full/jsinit.phtml +132 -0
- lib/riskified_php_sdk/composer.json +8 -0
- lib/riskified_php_sdk/sample/README.md +1 -0
- lib/riskified_php_sdk/sample/order_full_flow.php +26 -7
- lib/riskified_php_sdk/src/Riskified/Common/Riskified.php +1 -1
- lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Address.php +1 -0
- lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Customer.php +7 -2
- lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/LineItem.php +6 -1
- lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/Order.php +5 -2
- lib/riskified_php_sdk/src/Riskified/OrderWebhook/Model/PaymentDetails.php +1 -0
- lib/riskified_scripts/.DS_Store +0 -0
- package.xml +5 -5
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 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
$
|
|
|
|
|
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 |
-
$
|
458 |
-
if ($
|
459 |
-
$
|
460 |
-
if ($
|
461 |
-
$
|
462 |
-
if (isset($
|
463 |
-
$creditCardNumber = $
|
464 |
}
|
465 |
-
if (isset($
|
466 |
-
$creditCardCompany = $
|
467 |
}
|
468 |
-
if (isset($
|
469 |
-
$avsResultCode = $
|
470 |
}// getAvsResultCode
|
471 |
-
if (isset($
|
472 |
-
$cvvResultCode = $
|
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 |
-
$
|
498 |
-
$
|
499 |
-
$
|
500 |
-
$
|
501 |
-
$
|
502 |
-
$
|
503 |
return new Model\PaymentDetails(array_filter(array(
|
504 |
'authorization_id' => $transactionId,
|
505 |
-
'payer_email' => $
|
506 |
-
'payer_status' => $
|
507 |
-
'payer_address_status' => $
|
508 |
-
'protection_eligibility' => $
|
509 |
-
'payment_status' => $
|
510 |
-
'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 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
}
|
76 |
-
|
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.
|
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' => '
|
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.
|
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' =>
|
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' =>
|
|
|
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' =>
|
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.
|
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 & guarantees
|
11 |
transactions you would otherwise decline.</description>
|
12 |
-
<notes>*
|
13 |
<authors><author><name>Riskified_Mage</name><user>Riskified_Mage</user><email>support@riskified.com</email></author></authors>
|
14 |
-
<date>2016-
|
15 |
-
<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="
|
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 & guarantees
|
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>
|