Version Notes
What's new?
- Invoice for payment made using a saved credit card is now created automatically.
- X-Payments Connector settings page moved to admin controller. Potential 404 error fixed.
- Auto-detect of API version added. Test connection button removed, so connection between Magento store and X-Payments is tested automatically.
- Fixed issue with product attributes being reset after a product is added to the cart.
- Corrected recurring profiles creation. Fixed several issues with Recurring profiles and nominal items.
- "Allowed IP address" for X-Payments callback handling improved.
- Improved customer registration at checkout for OneStepCheckout module by Idev.
- Corrected password setting during customer registration at checkout.
- Corrected saving credit cards at customer profile.
- "My payment cards" section is now removed correctly if "Use saved card" payment method is not active.
- Compatibility with SUPEE-8788 vulnerability
- NoFraud service support added
- other minor bug-fixes and improvements in code and corrections to text labels.
Release Info
Developer | Alexander Mulin |
Extension | CDev_XPaymentsConnector |
Version | 1.7.1 |
Comparing to | |
See all releases |
Code changes from version 1.7.0 to 1.7.1
- app/code/community/Cdev/XPaymentsConnector/Block/{Control.php → Adminhtml/Settings/Xpc.php} +75 -42
- app/code/community/Cdev/XPaymentsConnector/Block/Checkout/Onepage/Orderdetail.php +4 -1
- app/code/community/Cdev/XPaymentsConnector/Block/Checkout/Onepage/Success.php +20 -0
- app/code/community/Cdev/XPaymentsConnector/Helper/Data.php +255 -205
- app/code/community/Cdev/XPaymentsConnector/Model/Fraudcheckdata.php +99 -0
- app/code/community/Cdev/XPaymentsConnector/{Block/Customer/Account/Navigation.php → Model/Mysql4/Fraudcheckdata.php} +14 -19
- app/code/community/Cdev/XPaymentsConnector/Model/Mysql4/Fraudcheckdata/Collection.php +41 -0
- app/code/community/Cdev/XPaymentsConnector/Model/Mysql4/Quote/Xpcdata.php +42 -0
- app/code/community/Cdev/XPaymentsConnector/Model/Mysql4/Quote/Xpcdata/Collection.php +37 -0
- app/code/community/Cdev/XPaymentsConnector/Model/Observer.php +7 -13
- app/code/community/Cdev/XPaymentsConnector/Model/Payment/Cc.php +147 -124
- app/code/community/Cdev/XPaymentsConnector/Model/Payment/Savedcards.php +1 -1
- app/code/community/Cdev/XPaymentsConnector/Model/Quote/Xpcdata.php +56 -0
- app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/FraudController.php +2 -1
- app/code/community/Cdev/XPaymentsConnector/controllers/{ControlController.php → Adminhtml/Settings/XpcController.php} +43 -32
- app/code/community/Cdev/XPaymentsConnector/controllers/ProcessingController.php +184 -103
- app/code/community/Cdev/XPaymentsConnector/etc/adminhtml.xml +5 -5
- app/code/community/Cdev/XPaymentsConnector/etc/config.xml +109 -107
- app/code/community/Cdev/XPaymentsConnector/etc/system.xml +9 -2
- app/code/community/Cdev/XPaymentsConnector/sql/xpaymentsconnector_setup/mysql4-upgrade-1.1.2-1.1.3.php +68 -0
- app/design/adminhtml/default/default/layout/xpaymentsconnector.xml +3 -3
- app/design/adminhtml/default/default/template/xpaymentsconnector/control.phtml +0 -212
- app/design/adminhtml/default/default/template/xpaymentsconnector/order/view/tab/xporderstate.phtml +94 -1
- app/design/adminhtml/default/default/template/xpaymentsconnector/settings/xpc.phtml +179 -0
- app/design/frontend/base/default/layout/xpaymentsconnector.xml +1 -1
- app/design/frontend/base/default/template/xpaymentsconnector/checkout/success.phtml +14 -4
- app/design/frontend/base/default/template/xpaymentsconnector/info/cc.phtml +1 -1
- js/xpayment/{xp-contorl.css → settings-xpc.css} +27 -1
- package.xml +23 -11
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -20,13 +21,13 @@
|
|
20 |
*/
|
21 |
|
22 |
/**
|
23 |
-
* X-Payments
|
24 |
*
|
25 |
* @package Cdev_XPaymentsConnector
|
26 |
* @see ____class_see____
|
27 |
* @since 1.0.0
|
28 |
*/
|
29 |
-
class
|
30 |
{
|
31 |
/**
|
32 |
* @var array
|
@@ -37,40 +38,22 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
37 |
* Constructor
|
38 |
*
|
39 |
* @return void
|
40 |
-
* @access public
|
41 |
-
* @see ____func_see____
|
42 |
-
* @since 1.0.0
|
43 |
*/
|
44 |
public function __construct()
|
45 |
{
|
46 |
parent::__construct();
|
47 |
-
$this->setTemplate('xpaymentsconnector/
|
48 |
}
|
49 |
|
50 |
/**
|
51 |
* Prepare layout
|
52 |
*
|
53 |
* @return void
|
54 |
-
* @access protected
|
55 |
-
* @see ____func_see____
|
56 |
-
* @since 1.0.0
|
57 |
*/
|
58 |
protected function _prepareLayout()
|
59 |
{
|
60 |
parent::_prepareLayout();
|
61 |
|
62 |
-
$this->setChild(
|
63 |
-
'testButton',
|
64 |
-
$this->getLayout()->createBlock('adminhtml/widget_button')
|
65 |
-
->setData(
|
66 |
-
array(
|
67 |
-
'type' => 'submit',
|
68 |
-
'label' => Mage::helper('adminhtml')->__('Test module'),
|
69 |
-
'class' => 'task'
|
70 |
-
)
|
71 |
-
)
|
72 |
-
);
|
73 |
-
|
74 |
$this->setChild(
|
75 |
'requestButton',
|
76 |
$this->getLayout()->createBlock('adminhtml/widget_button')
|
@@ -94,17 +77,12 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
94 |
)
|
95 |
)
|
96 |
);
|
97 |
-
|
98 |
-
|
99 |
}
|
100 |
|
101 |
/**
|
102 |
* Check - payment configuration is requested or not
|
103 |
*
|
104 |
* @return boolean
|
105 |
-
* @access public
|
106 |
-
* @see ____func_see____
|
107 |
-
* @since 1.0.0
|
108 |
*/
|
109 |
public function isMethodsRequested()
|
110 |
{
|
@@ -115,27 +93,22 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
115 |
* Get requested payment configurations
|
116 |
*
|
117 |
* @return array
|
118 |
-
* @access public
|
119 |
-
* @see ____func_see____
|
120 |
-
* @since 1.0.0
|
121 |
*/
|
122 |
public function getPaymentMethods()
|
123 |
{
|
124 |
$list = Mage::getModel('xpaymentsconnector/paymentconfiguration')->getCollection();
|
125 |
|
126 |
-
return ($list
|
127 |
}
|
128 |
|
129 |
/**
|
130 |
-
* Check - is payment configurations
|
131 |
*
|
132 |
* @return boolean
|
133 |
-
* @access public
|
134 |
-
* @see ____func_see____
|
135 |
-
* @since 1.0.0
|
136 |
*/
|
137 |
public function isMethodsAlreadyImported()
|
138 |
{
|
|
|
139 |
return 0 < count($this->getPaymentMethods());
|
140 |
}
|
141 |
|
@@ -143,9 +116,6 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
143 |
* Get system requiremenets errors list
|
144 |
*
|
145 |
* @return array
|
146 |
-
* @access public
|
147 |
-
* @see ____func_see____
|
148 |
-
* @since 1.0.0
|
149 |
*/
|
150 |
public function getRequiremenetsErrors()
|
151 |
{
|
@@ -173,13 +143,10 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
173 |
* Get module configuration errors list
|
174 |
*
|
175 |
* @return array
|
176 |
-
* @access public
|
177 |
-
* @see ____func_see____
|
178 |
-
* @since 1.0.0
|
179 |
*/
|
180 |
public function getConfigurationErrors()
|
181 |
{
|
182 |
-
if(empty($this->_configurationErrorList)){
|
183 |
$api = Mage::getModel('xpaymentsconnector/payment_cc');
|
184 |
|
185 |
$result = $api->getConfigurationErrors();
|
@@ -212,5 +179,71 @@ class Cdev_XPaymentsConnector_Block_Control extends Mage_Adminhtml_Block_Templat
|
|
212 |
return $this->_configurationErrorList;
|
213 |
}
|
214 |
|
215 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
21 |
*/
|
22 |
|
23 |
/**
|
24 |
+
* X-Payments Connector settings page block
|
25 |
*
|
26 |
* @package Cdev_XPaymentsConnector
|
27 |
* @see ____class_see____
|
28 |
* @since 1.0.0
|
29 |
*/
|
30 |
+
class Cdev_XPaymentsConnector_Block_Adminhtml_Settings_Xpc extends Mage_Adminhtml_Block_Template
|
31 |
{
|
32 |
/**
|
33 |
* @var array
|
38 |
* Constructor
|
39 |
*
|
40 |
* @return void
|
|
|
|
|
|
|
41 |
*/
|
42 |
public function __construct()
|
43 |
{
|
44 |
parent::__construct();
|
45 |
+
$this->setTemplate('xpaymentsconnector/settings/xpc.phtml');
|
46 |
}
|
47 |
|
48 |
/**
|
49 |
* Prepare layout
|
50 |
*
|
51 |
* @return void
|
|
|
|
|
|
|
52 |
*/
|
53 |
protected function _prepareLayout()
|
54 |
{
|
55 |
parent::_prepareLayout();
|
56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
$this->setChild(
|
58 |
'requestButton',
|
59 |
$this->getLayout()->createBlock('adminhtml/widget_button')
|
77 |
)
|
78 |
)
|
79 |
);
|
|
|
|
|
80 |
}
|
81 |
|
82 |
/**
|
83 |
* Check - payment configuration is requested or not
|
84 |
*
|
85 |
* @return boolean
|
|
|
|
|
|
|
86 |
*/
|
87 |
public function isMethodsRequested()
|
88 |
{
|
93 |
* Get requested payment configurations
|
94 |
*
|
95 |
* @return array
|
|
|
|
|
|
|
96 |
*/
|
97 |
public function getPaymentMethods()
|
98 |
{
|
99 |
$list = Mage::getModel('xpaymentsconnector/paymentconfiguration')->getCollection();
|
100 |
|
101 |
+
return !empty($list) ? $list : array();
|
102 |
}
|
103 |
|
104 |
/**
|
105 |
+
* Check - is payment configurations are already imported into DB or not
|
106 |
*
|
107 |
* @return boolean
|
|
|
|
|
|
|
108 |
*/
|
109 |
public function isMethodsAlreadyImported()
|
110 |
{
|
111 |
+
// TODO: Same as isMethodsRequested()
|
112 |
return 0 < count($this->getPaymentMethods());
|
113 |
}
|
114 |
|
116 |
* Get system requiremenets errors list
|
117 |
*
|
118 |
* @return array
|
|
|
|
|
|
|
119 |
*/
|
120 |
public function getRequiremenetsErrors()
|
121 |
{
|
143 |
* Get module configuration errors list
|
144 |
*
|
145 |
* @return array
|
|
|
|
|
|
|
146 |
*/
|
147 |
public function getConfigurationErrors()
|
148 |
{
|
149 |
+
if (empty($this->_configurationErrorList)) {
|
150 |
$api = Mage::getModel('xpaymentsconnector/payment_cc');
|
151 |
|
152 |
$result = $api->getConfigurationErrors();
|
179 |
return $this->_configurationErrorList;
|
180 |
}
|
181 |
|
182 |
+
/**
|
183 |
+
* Get System/X-Payments connector link
|
184 |
+
*
|
185 |
+
* @return string
|
186 |
+
*/
|
187 |
+
public function getSystemConfigXpcUrl()
|
188 |
+
{
|
189 |
+
return $this->getUrl('adminhtml/system_config/edit/section/xpaymentsconnector/');
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* Get System/X-Payments connector link
|
194 |
+
*
|
195 |
+
* @return string
|
196 |
+
*/
|
197 |
+
public function getTrialDemoUrl()
|
198 |
+
{
|
199 |
+
return 'http://www.x-payments.com/trial-demo.html?utm_source=mage_shop&utm_medium=link&utm_campaign=mage_shop_link';
|
200 |
+
}
|
201 |
+
|
202 |
+
/**
|
203 |
+
* Get User manual link
|
204 |
+
*
|
205 |
+
* @return string
|
206 |
+
*/
|
207 |
+
public function getUserManualUrl()
|
208 |
+
{
|
209 |
+
return 'http://help.x-cart.com/index.php?title=X-Payments:User_manual#Online_Stores';
|
210 |
+
}
|
211 |
+
|
212 |
+
/**
|
213 |
+
* Get video link
|
214 |
+
*
|
215 |
+
* @return string
|
216 |
+
*/
|
217 |
+
public function getVideoUrl()
|
218 |
+
{
|
219 |
+
return 'https://www.youtube.com/embed/2VRR0JW23qc';
|
220 |
+
}
|
221 |
|
222 |
+
/**
|
223 |
+
* Get Contact Us link
|
224 |
+
*
|
225 |
+
* @return string
|
226 |
+
*/
|
227 |
+
public function getContactUsUrl()
|
228 |
+
{
|
229 |
+
return 'http://www.x-payments.com/contact-us.html?utm_source=mage_shop&utm_medium=link&utm_campaign=mage_shop_link';
|
230 |
+
}
|
231 |
+
|
232 |
+
|
233 |
+
/**
|
234 |
+
* Get description
|
235 |
+
*
|
236 |
+
* @return string
|
237 |
+
*/
|
238 |
+
public function getDescription()
|
239 |
+
{
|
240 |
+
$description = 'Give your customers – and yourself – peace of mind with this payment processing module
|
241 |
+
that guarantees compliance with PCI security mandates, significantly reduces the risk of
|
242 |
+
data breaches and ensures you won’t be hit with a fine of up to $500,000 for non-compliance.
|
243 |
+
Safely and conveniently store customers credit card information to use for new orders, reorders
|
244 |
+
or recurring payments.';
|
245 |
+
|
246 |
+
return $this->__($description);
|
247 |
+
}
|
248 |
+
|
249 |
+
}
|
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -58,7 +59,9 @@ class Cdev_XPaymentsConnector_Block_Checkout_Onepage_Orderdetail extends Mage_Co
|
|
58 |
|
59 |
$product = $recQuoteItem->getProduct();
|
60 |
$productAdditionalInfo = unserialize($product->getCustomOption('info_buyRequest')->getValue());
|
61 |
-
$deferredDateStamp =
|
|
|
|
|
62 |
if($deferredDateStamp){
|
63 |
$initialFeeMessage = $this->__(" (initial fee only, 1st recurring fee will be charged on %s)",date('d-M-Y',$deferredDateStamp));
|
64 |
$rowTotal = $recQuoteItem->getXpRecurringInitialFee() + $recQuoteItem->getInitialfeeTaxAmount();
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
59 |
|
60 |
$product = $recQuoteItem->getProduct();
|
61 |
$productAdditionalInfo = unserialize($product->getCustomOption('info_buyRequest')->getValue());
|
62 |
+
$deferredDateStamp = isset($productAdditionalInfo['recurring_profile_start_datetime'])
|
63 |
+
? strtotime($productAdditionalInfo['recurring_profile_start_datetime'])
|
64 |
+
: false;
|
65 |
if($deferredDateStamp){
|
66 |
$initialFeeMessage = $this->__(" (initial fee only, 1st recurring fee will be charged on %s)",date('d-M-Y',$deferredDateStamp));
|
67 |
$rowTotal = $recQuoteItem->getXpRecurringInitialFee() + $recQuoteItem->getInitialfeeTaxAmount();
|
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -87,4 +88,23 @@ class Cdev_XPaymentsConnector_Block_Checkout_Onepage_Success extends Mage_Checko
|
|
87 |
}
|
88 |
}
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
}
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
88 |
}
|
89 |
}
|
90 |
|
91 |
+
/**
|
92 |
+
* Get recurring profiles
|
93 |
+
*
|
94 |
+
* @return array
|
95 |
+
*/
|
96 |
+
public function getRecurringProfiles()
|
97 |
+
{
|
98 |
+
$order = Mage::getModel('sales/order')->load($this->getData('order_entity_id'));
|
99 |
+
|
100 |
+
$profile = Mage::helper('xpaymentsconnector')->getOrderRecurringProfile($order);
|
101 |
+
|
102 |
+
if ($profile) {
|
103 |
+
$profile = array($profile);
|
104 |
+
} else {
|
105 |
+
$profile = false;
|
106 |
+
}
|
107 |
+
|
108 |
+
return $profile;
|
109 |
+
}
|
110 |
}
|
@@ -34,7 +34,12 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
34 |
const WEEK_TIME_STAMP = 604800;
|
35 |
const SEMI_MONTH_TIME_STAMP = 1209600;
|
36 |
|
37 |
-
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
const XPAYMENTS_LOG_FILE = 'xpayments.log';
|
40 |
const RECURRING_ORDER_TYPE = 'recurring';
|
@@ -323,15 +328,17 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
323 |
*/
|
324 |
public function setPrepareOrderType()
|
325 |
{
|
326 |
-
|
327 |
-
|
328 |
-
|
329 |
-
|
|
|
|
|
330 |
} else {
|
331 |
-
$
|
332 |
}
|
333 |
|
334 |
-
Mage::getSingleton('checkout/session')->setData('xpayment_prepare_order', $
|
335 |
}
|
336 |
|
337 |
/**
|
@@ -701,47 +708,35 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
701 |
$recurringProfile->save();
|
702 |
}
|
703 |
|
704 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
705 |
{
|
706 |
-
$
|
707 |
-
$quoteItems = $checkoutSession->getQuote()->getAllItems();
|
708 |
-
$result = array();
|
709 |
|
710 |
-
|
711 |
-
|
712 |
-
$product = $quoteItem->getProduct();
|
713 |
-
$issetRecurringOreder = (bool)$product->getIsRecurring();
|
714 |
-
if ($issetRecurringOreder) {
|
715 |
-
$result['isset'] = $issetRecurringOreder;
|
716 |
-
$result['quote_item'] = $quoteItem;
|
717 |
-
return $result;
|
718 |
-
}
|
719 |
-
}
|
720 |
}
|
721 |
-
$result['isset'] = false;
|
722 |
-
|
723 |
-
return $result;
|
724 |
-
}
|
725 |
|
726 |
-
|
727 |
-
* @return bool
|
728 |
-
*/
|
729 |
-
public function checkIssetSimpleOrder()
|
730 |
-
{
|
731 |
-
$checkoutSession = Mage::getSingleton('checkout/session');
|
732 |
-
$quoteItems = $checkoutSession->getQuote()->getAllItems();
|
733 |
|
734 |
-
|
735 |
-
|
736 |
-
|
737 |
-
$
|
738 |
-
|
739 |
-
|
740 |
-
|
|
|
741 |
}
|
742 |
}
|
743 |
|
744 |
-
return
|
745 |
}
|
746 |
|
747 |
/**
|
@@ -754,7 +749,9 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
754 |
|
755 |
$orderItemInfo = $recurringProfile->getData('order_item_info');
|
756 |
$infoBuyRequest = unserialize($orderItemInfo['info_buyRequest']);
|
757 |
-
$startDateTime = $infoBuyRequest['recurring_profile_start_datetime']
|
|
|
|
|
758 |
$xpaymentCCModel = Mage::getModel('xpaymentsconnector/payment_cc');
|
759 |
|
760 |
if (!empty($startDateTime)) {
|
@@ -905,7 +902,9 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
905 |
public function checkStartDateDataByProduct($product,$quoteItem = false)
|
906 |
{
|
907 |
$productAdditionalInfo = unserialize($product->getCustomOption('info_buyRequest')->getValue());
|
908 |
-
$dateTimeStamp =
|
|
|
|
|
909 |
|
910 |
if ($dateTimeStamp) {
|
911 |
$userSetTime = new Zend_Date($productAdditionalInfo['recurring_profile_start_datetime']);
|
@@ -963,20 +962,6 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
963 |
Mage::getSingleton('checkout/session')->addNotice($this->getFailureCheckoutNoticeHelper());
|
964 |
}
|
965 |
|
966 |
-
public function setRecurringProductDiscount()
|
967 |
-
{
|
968 |
-
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
969 |
-
$items = $quote->getAllVisibleItems();
|
970 |
-
foreach ($items as $item) {
|
971 |
-
if($item->getIsNominal()){
|
972 |
-
$discount = $item->getDiscountAmount();
|
973 |
-
$profile = $item->getProduct()->getRecurringProfile();
|
974 |
-
$profile['discount_amount'] = $discount;
|
975 |
-
$item->getProduct()->setRecurringProfile($profile)->save();
|
976 |
-
}
|
977 |
-
}
|
978 |
-
}
|
979 |
-
|
980 |
/**
|
981 |
* This function fixed magento bug. Magento can't create user
|
982 |
* during checkout with recurring products.
|
@@ -1403,31 +1388,26 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1403 |
*
|
1404 |
* @return void
|
1405 |
*/
|
1406 |
-
protected function
|
1407 |
{
|
1408 |
-
$
|
1409 |
-
|
1410 |
-
$quoteItem = $issetRecurringProduct['quote_item'];
|
1411 |
-
$product = $quoteItem->getProduct();
|
1412 |
-
|
1413 |
-
$item = $quote->getItemByProduct($product);
|
1414 |
-
|
1415 |
$recurringProfile = $product->getRecurringProfile();
|
1416 |
|
1417 |
$startDateParams = $this->checkStartDateDataByProduct($product, $item);
|
1418 |
$startDateParams = $startDateParams[$product->getId()];
|
1419 |
|
1420 |
-
$shipping = $
|
1421 |
-
$discount = abs($
|
1422 |
|
1423 |
-
$quantity = $
|
1424 |
|
1425 |
if ($startDateParams['success']) {
|
1426 |
|
1427 |
$minimalPayment = $startDateParams['minimal_payment_amount'];
|
1428 |
|
1429 |
$tax = !empty($recurringProfile['init_amount'])
|
1430 |
-
? $
|
1431 |
: 0;
|
1432 |
|
1433 |
$totalCost = $minimalPayment + $tax + $shipping - $discount;
|
@@ -1436,15 +1416,15 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1436 |
|
1437 |
$minimalPayment = 0;
|
1438 |
|
1439 |
-
$tax = $
|
1440 |
|
1441 |
-
$totalCost = $
|
1442 |
}
|
1443 |
|
1444 |
$recurringPrice = $product->getPrice();
|
1445 |
|
1446 |
if (!empty($recurringProfile['init_amount'])) {
|
1447 |
-
$recurringPrice += $
|
1448 |
}
|
1449 |
|
1450 |
$price = $minimalPayment
|
@@ -1458,7 +1438,8 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1458 |
'quantity' => intval($quantity),
|
1459 |
);
|
1460 |
|
1461 |
-
|
|
|
1462 |
$result['shippingCost'] = $this->preparePrice($shipping);
|
1463 |
$result['taxCost'] = $this->preparePrice($tax);
|
1464 |
$result['discount'] = $this->preparePrice($discount);
|
@@ -1474,11 +1455,9 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1474 |
*/
|
1475 |
protected function prepareItems(Mage_Sales_Model_Quote $quote, &$result)
|
1476 |
{
|
1477 |
-
|
1478 |
-
|
1479 |
-
|
1480 |
-
if ($issetRecurringProduct['isset'] && !$issetSimpleProducts) {
|
1481 |
-
$this->prepareRequringItems($quote, $result);
|
1482 |
} else {
|
1483 |
$this->prepareSimpleItems($quote, $result);
|
1484 |
}
|
@@ -1633,6 +1612,40 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1633 |
return $url;
|
1634 |
}
|
1635 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1636 |
/**
|
1637 |
* Get address data saved at checkout
|
1638 |
*
|
@@ -1656,6 +1669,17 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1656 |
|
1657 |
if (isset($data[$type])) {
|
1658 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1659 |
// Addrress data from checkout
|
1660 |
$result += array_filter($data[$type]);
|
1661 |
}
|
@@ -1664,110 +1688,34 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1664 |
}
|
1665 |
|
1666 |
/**
|
1667 |
-
*
|
1668 |
-
*
|
1669 |
-
* @param Mage_Sales_Model_Quote $quote
|
1670 |
-
* @param array $data Some checkout data
|
1671 |
-
*
|
1672 |
-
* @return void
|
1673 |
-
*/
|
1674 |
-
public function saveCheckoutData($quote, $data)
|
1675 |
-
{
|
1676 |
-
$this->writeLog('Save checkout data for Quote #' . $quote->getEntityId(), $data);
|
1677 |
-
|
1678 |
-
$data = serialize($data);
|
1679 |
-
$quote->setData(self::CHECKOUT_DATA, $data);
|
1680 |
-
$quote->save();
|
1681 |
-
}
|
1682 |
-
|
1683 |
-
/**
|
1684 |
-
* Load data saved at checkou
|
1685 |
*
|
1686 |
* @param Mage_Sales_Model_Quote $quote
|
1687 |
-
*
|
1688 |
-
* @return array
|
1689 |
-
*/
|
1690 |
-
public function loadCheckoutData(Mage_Sales_Model_Quote $quote)
|
1691 |
-
{
|
1692 |
-
return unserialize($quote->getData(self::CHECKOUT_DATA));
|
1693 |
-
}
|
1694 |
-
|
1695 |
-
/**
|
1696 |
-
* Save some temporary X-Payments data to Quote
|
1697 |
-
*
|
1698 |
-
* @param Mage_Sales_Model_Quote $quote
|
1699 |
-
* @param array $data Some data
|
1700 |
*
|
1701 |
-
* @return
|
1702 |
*/
|
1703 |
-
public function
|
1704 |
{
|
1705 |
-
$
|
1706 |
-
$quote->setData(self::XPC_DATA, $data);
|
1707 |
-
$quote->save();
|
1708 |
-
}
|
1709 |
|
1710 |
-
|
1711 |
-
|
1712 |
-
*
|
1713 |
-
* @param Mage_Sales_Model_Quote $quote
|
1714 |
-
*
|
1715 |
-
* @return void
|
1716 |
-
*/
|
1717 |
-
public function clearQuoteXpcData(Mage_Sales_Model_Quote $quote)
|
1718 |
-
{
|
1719 |
-
return $this->saveQuoteXpcData($quote);
|
1720 |
-
}
|
1721 |
-
|
1722 |
-
/**
|
1723 |
-
* Append some temporary X-Payments data to Quote
|
1724 |
-
*
|
1725 |
-
* @param Mage_Sales_Model_Quote $quote
|
1726 |
-
* @param array $appendData Some data to append
|
1727 |
-
*
|
1728 |
-
* @return void
|
1729 |
-
*/
|
1730 |
-
public function appendQuoteXpcData(Mage_Sales_Model_Quote $quote, $appendData = array())
|
1731 |
-
{
|
1732 |
-
$data = $this->loadQuoteXpcData($quote);
|
1733 |
-
|
1734 |
-
$data += $appendData;
|
1735 |
-
|
1736 |
-
$this->saveQuoteXpcData($quote, $data);
|
1737 |
-
}
|
1738 |
-
|
1739 |
-
/**
|
1740 |
-
* Load temporary X-Payments data from Quote
|
1741 |
-
*
|
1742 |
-
* @param Mage_Sales_Model_Quote $quote
|
1743 |
-
*
|
1744 |
-
* @return array
|
1745 |
-
*/
|
1746 |
-
public function loadQuoteXpcData(Mage_Sales_Model_Quote $quote)
|
1747 |
-
{
|
1748 |
-
$data = unserialize($quote->getData(self::XPC_DATA));
|
1749 |
-
|
1750 |
-
if (!is_array($data)) {
|
1751 |
-
$data = array();
|
1752 |
}
|
1753 |
|
1754 |
-
|
1755 |
-
|
|
|
|
|
|
|
1756 |
|
1757 |
-
|
1758 |
-
|
1759 |
-
|
1760 |
-
|
1761 |
-
|
1762 |
-
|
1763 |
-
*/
|
1764 |
-
public function getQuoteXpcDataToken(Mage_Sales_Model_Quote $quote)
|
1765 |
-
{
|
1766 |
-
$data = $this->loadQuoteXpcData($quote);
|
1767 |
|
1768 |
-
return
|
1769 |
-
? $data['token']
|
1770 |
-
: false;
|
1771 |
}
|
1772 |
|
1773 |
/**
|
@@ -1780,7 +1728,7 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1780 |
protected function processCheckoutData(Mage_Sales_Model_Quote $quote)
|
1781 |
{
|
1782 |
// Grab data saved at checkout
|
1783 |
-
$data = $this->
|
1784 |
|
1785 |
// Add billing address data from checkout
|
1786 |
$quote->getBillingAddress()->addData($this->getCheckoutAddressData($data, 'billing'));
|
@@ -1842,36 +1790,67 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1842 |
}
|
1843 |
|
1844 |
/**
|
1845 |
-
*
|
|
|
|
|
1846 |
*
|
1847 |
-
* @return
|
1848 |
*/
|
1849 |
protected function createNewCustomer(Mage_Sales_Model_Quote $quote)
|
1850 |
{
|
1851 |
-
$billing
|
1852 |
-
|
|
|
|
|
|
|
1853 |
|
1854 |
-
//$customer = Mage::getModel('customer/customer');
|
1855 |
$customer = $quote->getCustomer();
|
1856 |
-
|
1857 |
$customerBilling = $billing->exportCustomerAddress();
|
1858 |
$customer->addAddress($customerBilling);
|
1859 |
$billing->setCustomerAddress($customerBilling);
|
1860 |
$customerBilling->setIsDefaultBilling(true);
|
1861 |
-
|
|
|
|
|
|
|
|
|
|
|
1862 |
$customerShipping = $shipping->exportCustomerAddress();
|
1863 |
$customer->addAddress($customerShipping);
|
1864 |
$shipping->setCustomerAddress($customerShipping);
|
1865 |
$customerShipping->setIsDefaultShipping(true);
|
|
|
1866 |
} else {
|
|
|
1867 |
$customerBilling->setIsDefaultShipping(true);
|
1868 |
}
|
1869 |
|
1870 |
Mage::helper('core')->copyFieldset('checkout_onepage_quote', 'to_customer', $quote, $customer);
|
1871 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1872 |
$quote->setCustomer($customer)
|
1873 |
->setCustomerId(true);
|
1874 |
|
|
|
|
|
|
|
|
|
|
|
1875 |
return $customer;
|
1876 |
}
|
1877 |
|
@@ -1890,7 +1869,7 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1890 |
if ($this->checkOscModuleEnabled()) {
|
1891 |
|
1892 |
// For One Step Checkout module
|
1893 |
-
$data = $this->
|
1894 |
|
1895 |
$result = isset($data['create_account'])
|
1896 |
&& (bool)$data['create_account'];
|
@@ -1898,7 +1877,7 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1898 |
} elseif ($this->checkFirecheckoutModuleEnabled()) {
|
1899 |
|
1900 |
// For Firecheckout module
|
1901 |
-
$data = $this->
|
1902 |
|
1903 |
$result = isset($data['billing']['register_account'])
|
1904 |
&& (bool)$data['billing']['register_account'];
|
@@ -1933,11 +1912,12 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1933 |
|
1934 |
if ($this->isCreateNewCustomer($quote)) {
|
1935 |
|
1936 |
-
//
|
1937 |
-
$
|
1938 |
-
$customer->save();
|
1939 |
|
1940 |
-
$this->
|
|
|
|
|
1941 |
}
|
1942 |
|
1943 |
// Set payment method (maybe not necessary. Just in case)
|
@@ -1949,37 +1929,102 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
1949 |
|
1950 |
$order = $service->getOrder();
|
1951 |
|
1952 |
-
|
1953 |
|
1954 |
-
|
1955 |
-
$order->setData(self::XPC_DATA, $cardData);
|
1956 |
|
1957 |
-
|
|
|
|
|
1958 |
|
1959 |
-
|
1960 |
|
1961 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1962 |
|
1963 |
$refId = $order->getIncrementId();
|
1964 |
|
1965 |
-
$this->writeLog('Placed order #' . $refId, $
|
1966 |
|
1967 |
} catch (Exception $e) {
|
1968 |
|
1969 |
$this->writeLog('Unable to create order: ' . $e->getMessage(), $e->getTraceAsString());
|
1970 |
|
1971 |
// Save error message in quote
|
1972 |
-
$this->
|
1973 |
-
$
|
1974 |
-
|
1975 |
-
'xpc_message' => $e->getMessage(),
|
1976 |
-
)
|
1977 |
-
);
|
1978 |
}
|
1979 |
|
1980 |
return $refId;
|
1981 |
}
|
1982 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1983 |
/**
|
1984 |
* Just a wrapper to omit sid and secure params
|
1985 |
*
|
@@ -2070,7 +2115,7 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
2070 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
2071 |
}
|
2072 |
|
2073 |
-
$this->
|
2074 |
}
|
2075 |
|
2076 |
/**
|
@@ -2091,12 +2136,13 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
2091 |
/**
|
2092 |
* Write log
|
2093 |
*
|
2094 |
-
* @param string $title Log title
|
2095 |
* @param mixed $data Data to log
|
|
|
2096 |
*
|
2097 |
* @return void
|
2098 |
*/
|
2099 |
-
public function writeLog($title, $data = '')
|
2100 |
{
|
2101 |
if (!is_string($data)) {
|
2102 |
$data = var_export($data, true);
|
@@ -2105,9 +2151,13 @@ class Cdev_XPaymentsConnector_Helper_Data extends Mage_Payment_Helper_Data
|
|
2105 |
$message = PHP_EOL . date('Y-m-d H:i:s') . PHP_EOL
|
2106 |
. $title . PHP_EOL
|
2107 |
. $data . PHP_EOL
|
2108 |
-
. Mage::helper('core/url')->getCurrentUrl() . PHP_EOL
|
2109 |
-
|
2110 |
-
|
|
|
|
|
|
|
|
|
2111 |
|
2112 |
Mage::log($message, null, self::XPAYMENTS_LOG_FILE, true);
|
2113 |
}
|
34 |
const WEEK_TIME_STAMP = 604800;
|
35 |
const SEMI_MONTH_TIME_STAMP = 1209600;
|
36 |
|
37 |
+
/**
|
38 |
+
* Order statuses. Constant values are left for the backwards compatibility
|
39 |
+
*/
|
40 |
+
const STATUS_AUTHORIZED = 'xp_pending_payment';
|
41 |
+
const STATUS_CHARGED = 'processing';
|
42 |
+
const STATUS_FRAUD = 'fraud';
|
43 |
|
44 |
const XPAYMENTS_LOG_FILE = 'xpayments.log';
|
45 |
const RECURRING_ORDER_TYPE = 'recurring';
|
328 |
*/
|
329 |
public function setPrepareOrderType()
|
330 |
{
|
331 |
+
// TODO: Remove it? Or rework.
|
332 |
+
|
333 |
+
$data = Mage::getSingleton('checkout/session')->getData('xpayment_prepare_order');
|
334 |
+
|
335 |
+
if ($this->getRecurringQuoteItem()) {
|
336 |
+
$data['type'] = self::RECURRING_ORDER_TYPE;
|
337 |
} else {
|
338 |
+
$data['type'] = self::SIMPLE_ORDER_TYPE;
|
339 |
}
|
340 |
|
341 |
+
Mage::getSingleton('checkout/session')->setData('xpayment_prepare_order', $data);
|
342 |
}
|
343 |
|
344 |
/**
|
708 |
$recurringProfile->save();
|
709 |
}
|
710 |
|
711 |
+
/**
|
712 |
+
* Get quote item for the recurring product from the current checkout session. If any.
|
713 |
+
*
|
714 |
+
* @param Mage_Sales_model_Quote $quote Quote. If omitted use quote from checkout session
|
715 |
+
*
|
716 |
+
* @return Mage_Sales_Model_Quote_Item or false
|
717 |
+
*/
|
718 |
+
public function getRecurringQuoteItem($quote = false)
|
719 |
{
|
720 |
+
$result = false;
|
|
|
|
|
721 |
|
722 |
+
if (!$quote) {
|
723 |
+
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
724 |
}
|
|
|
|
|
|
|
|
|
725 |
|
726 |
+
foreach ($quote->getAllItems() as $item) {
|
|
|
|
|
|
|
|
|
|
|
|
|
727 |
|
728 |
+
if (
|
729 |
+
$item
|
730 |
+
&& $item->getProduct()
|
731 |
+
&& $item->getProduct()->getIsRecurring()
|
732 |
+
) {
|
733 |
+
|
734 |
+
$result = $item;
|
735 |
+
break;
|
736 |
}
|
737 |
}
|
738 |
|
739 |
+
return $result;
|
740 |
}
|
741 |
|
742 |
/**
|
749 |
|
750 |
$orderItemInfo = $recurringProfile->getData('order_item_info');
|
751 |
$infoBuyRequest = unserialize($orderItemInfo['info_buyRequest']);
|
752 |
+
$startDateTime = isset($infoBuyRequest['recurring_profile_start_datetime'])
|
753 |
+
? $infoBuyRequest['recurring_profile_start_datetime']
|
754 |
+
: false;
|
755 |
$xpaymentCCModel = Mage::getModel('xpaymentsconnector/payment_cc');
|
756 |
|
757 |
if (!empty($startDateTime)) {
|
902 |
public function checkStartDateDataByProduct($product,$quoteItem = false)
|
903 |
{
|
904 |
$productAdditionalInfo = unserialize($product->getCustomOption('info_buyRequest')->getValue());
|
905 |
+
$dateTimeStamp = isset($productAdditionalInfo['recurring_profile_start_datetime'])
|
906 |
+
? strtotime($productAdditionalInfo['recurring_profile_start_datetime'])
|
907 |
+
: false;
|
908 |
|
909 |
if ($dateTimeStamp) {
|
910 |
$userSetTime = new Zend_Date($productAdditionalInfo['recurring_profile_start_datetime']);
|
962 |
Mage::getSingleton('checkout/session')->addNotice($this->getFailureCheckoutNoticeHelper());
|
963 |
}
|
964 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
965 |
/**
|
966 |
* This function fixed magento bug. Magento can't create user
|
967 |
* during checkout with recurring products.
|
1388 |
*
|
1389 |
* @return void
|
1390 |
*/
|
1391 |
+
protected function prepareRecurringItems(Mage_Sales_Model_Quote $quote, &$result)
|
1392 |
{
|
1393 |
+
$item = $this->getRecurringQuoteItem($quote);
|
1394 |
+
$product = $item->getProduct();
|
|
|
|
|
|
|
|
|
|
|
1395 |
$recurringProfile = $product->getRecurringProfile();
|
1396 |
|
1397 |
$startDateParams = $this->checkStartDateDataByProduct($product, $item);
|
1398 |
$startDateParams = $startDateParams[$product->getId()];
|
1399 |
|
1400 |
+
$shipping = $item->getData('shipping_amount');
|
1401 |
+
$discount = abs($item->getData('discount_amount'));
|
1402 |
|
1403 |
+
$quantity = $item->getQty();
|
1404 |
|
1405 |
if ($startDateParams['success']) {
|
1406 |
|
1407 |
$minimalPayment = $startDateParams['minimal_payment_amount'];
|
1408 |
|
1409 |
$tax = !empty($recurringProfile['init_amount'])
|
1410 |
+
? $item->getData('initialfee_tax_amount')
|
1411 |
: 0;
|
1412 |
|
1413 |
$totalCost = $minimalPayment + $tax + $shipping - $discount;
|
1416 |
|
1417 |
$minimalPayment = 0;
|
1418 |
|
1419 |
+
$tax = $item->getData('initialfee_tax_amount') + $item->getData('tax_amount');
|
1420 |
|
1421 |
+
$totalCost = $item->getData('nominal_row_total');
|
1422 |
}
|
1423 |
|
1424 |
$recurringPrice = $product->getPrice();
|
1425 |
|
1426 |
if (!empty($recurringProfile['init_amount'])) {
|
1427 |
+
$recurringPrice += $item->getXpRecurringInitialFee() / $quantity;
|
1428 |
}
|
1429 |
|
1430 |
$price = $minimalPayment
|
1438 |
'quantity' => intval($quantity),
|
1439 |
);
|
1440 |
|
1441 |
+
|
1442 |
+
$result['totalCost'] = $this->preparePrice($price);
|
1443 |
$result['shippingCost'] = $this->preparePrice($shipping);
|
1444 |
$result['taxCost'] = $this->preparePrice($tax);
|
1445 |
$result['discount'] = $this->preparePrice($discount);
|
1455 |
*/
|
1456 |
protected function prepareItems(Mage_Sales_Model_Quote $quote, &$result)
|
1457 |
{
|
1458 |
+
if ($this->getRecurringQuoteItem($quote)) {
|
1459 |
+
// Actually, only one item per order
|
1460 |
+
$this->prepareRecurringItems($quote, $result);
|
|
|
|
|
1461 |
} else {
|
1462 |
$this->prepareSimpleItems($quote, $result);
|
1463 |
}
|
1612 |
return $url;
|
1613 |
}
|
1614 |
|
1615 |
+
/**
|
1616 |
+
* Get error message from X-Payments callback or detailed info data
|
1617 |
+
*
|
1618 |
+
* @param array $data Callback data
|
1619 |
+
*
|
1620 |
+
* @return string
|
1621 |
+
*/
|
1622 |
+
public function getResultMessage($data)
|
1623 |
+
{
|
1624 |
+
$message = array();
|
1625 |
+
|
1626 |
+
// Regular message from X-Payments
|
1627 |
+
if (!empty($data['message'])) {
|
1628 |
+
$message[] = $data['message'];
|
1629 |
+
}
|
1630 |
+
|
1631 |
+
if (isset($data['advinfo'])) {
|
1632 |
+
|
1633 |
+
// Message from payment gateway
|
1634 |
+
if (isset($data['advinfo']['message'])) {
|
1635 |
+
$message[] = $data['advinfo']['message'];
|
1636 |
+
}
|
1637 |
+
|
1638 |
+
// Message from 3-D Secure
|
1639 |
+
if (isset($data['advinfo']['s3d_message'])) {
|
1640 |
+
$message[] = $data['advinfo']['s3d_message'];
|
1641 |
+
}
|
1642 |
+
}
|
1643 |
+
|
1644 |
+
$message = array_unique($message);
|
1645 |
+
|
1646 |
+
return implode("\n", $message);
|
1647 |
+
}
|
1648 |
+
|
1649 |
/**
|
1650 |
* Get address data saved at checkout
|
1651 |
*
|
1669 |
|
1670 |
if (isset($data[$type])) {
|
1671 |
|
1672 |
+
if (
|
1673 |
+
isset($data[$type]['street'])
|
1674 |
+
&& is_array($data[$type]['street'])
|
1675 |
+
) {
|
1676 |
+
|
1677 |
+
// Prevent array to string conversion notice.
|
1678 |
+
// Necessary for:
|
1679 |
+
// - Registration at checkout for OSC module
|
1680 |
+
$data[$type]['street'] = implode(PHP_EOL, $data[$type]['street']);
|
1681 |
+
}
|
1682 |
+
|
1683 |
// Addrress data from checkout
|
1684 |
$result += array_filter($data[$type]);
|
1685 |
}
|
1688 |
}
|
1689 |
|
1690 |
/**
|
1691 |
+
* Get Quote xpc data (just a wrapper)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1692 |
*
|
1693 |
* @param Mage_Sales_Model_Quote $quote
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1694 |
*
|
1695 |
+
* @return Cdev_XPaymentsConnector_Model_Quote_XpcData
|
1696 |
*/
|
1697 |
+
public function getQuoteXpcData(Mage_Sales_Model_Quote $quote, $methodCode = false)
|
1698 |
{
|
1699 |
+
$quoteId = $quote->getEntityId();
|
|
|
|
|
|
|
1700 |
|
1701 |
+
if (!$methodCode) {
|
1702 |
+
$methodCode = 'xpaymentsconnector/payment_cc';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1703 |
}
|
1704 |
|
1705 |
+
$model = Mage::getModel('xpaymentsconnector/quote_xpcdata')
|
1706 |
+
->getCollection()
|
1707 |
+
->addFieldToFilter('quote_id', $quoteId)
|
1708 |
+
->addFieldToFilter('payment_method_code', $methodCode)
|
1709 |
+
->getFirstItem();
|
1710 |
|
1711 |
+
if (!$model->getQuoteId()) {
|
1712 |
+
// Fill "primary key" for the new entity
|
1713 |
+
$model->setQuoteId($quoteId)
|
1714 |
+
->setPaymentMethodCode($methodCode)
|
1715 |
+
->save();
|
1716 |
+
}
|
|
|
|
|
|
|
|
|
1717 |
|
1718 |
+
return $model;
|
|
|
|
|
1719 |
}
|
1720 |
|
1721 |
/**
|
1728 |
protected function processCheckoutData(Mage_Sales_Model_Quote $quote)
|
1729 |
{
|
1730 |
// Grab data saved at checkout
|
1731 |
+
$data = unserialize($this->getQuoteXpcData($quote)->getData('checkout_data'));
|
1732 |
|
1733 |
// Add billing address data from checkout
|
1734 |
$quote->getBillingAddress()->addData($this->getCheckoutAddressData($data, 'billing'));
|
1790 |
}
|
1791 |
|
1792 |
/**
|
1793 |
+
* Create customer and assign it to the quote
|
1794 |
+
*
|
1795 |
+
* @param Mage_Sales_Model_Quote $quote
|
1796 |
*
|
1797 |
+
* @return Mage_Customer_Model_Customer
|
1798 |
*/
|
1799 |
protected function createNewCustomer(Mage_Sales_Model_Quote $quote)
|
1800 |
{
|
1801 |
+
$billing = $quote->getBillingAddress();
|
1802 |
+
|
1803 |
+
$shipping = $quote->isVirtual()
|
1804 |
+
? null
|
1805 |
+
: $quote->getShippingAddress();
|
1806 |
|
|
|
1807 |
$customer = $quote->getCustomer();
|
1808 |
+
|
1809 |
$customerBilling = $billing->exportCustomerAddress();
|
1810 |
$customer->addAddress($customerBilling);
|
1811 |
$billing->setCustomerAddress($customerBilling);
|
1812 |
$customerBilling->setIsDefaultBilling(true);
|
1813 |
+
|
1814 |
+
if (
|
1815 |
+
$shipping
|
1816 |
+
&& !$shipping->getSameAsBilling()
|
1817 |
+
) {
|
1818 |
+
|
1819 |
$customerShipping = $shipping->exportCustomerAddress();
|
1820 |
$customer->addAddress($customerShipping);
|
1821 |
$shipping->setCustomerAddress($customerShipping);
|
1822 |
$customerShipping->setIsDefaultShipping(true);
|
1823 |
+
|
1824 |
} else {
|
1825 |
+
|
1826 |
$customerBilling->setIsDefaultShipping(true);
|
1827 |
}
|
1828 |
|
1829 |
Mage::helper('core')->copyFieldset('checkout_onepage_quote', 'to_customer', $quote, $customer);
|
1830 |
+
|
1831 |
+
$password = '';
|
1832 |
+
|
1833 |
+
if ($quote->getPasswordHash()) {
|
1834 |
+
// One page checkout
|
1835 |
+
$password = $customer->decryptPassword($quote->getPasswordHash());
|
1836 |
+
} else {
|
1837 |
+
$data = unserialize($this->getQuoteXpcData($quote)->getData('checkout_data'));
|
1838 |
+
if (!empty($data['billing']['customer_password'])) {
|
1839 |
+
// One step checkout
|
1840 |
+
$password = $data['billing']['customer_password'];
|
1841 |
+
}
|
1842 |
+
}
|
1843 |
+
|
1844 |
+
$customer->setPassword($password);
|
1845 |
+
|
1846 |
$quote->setCustomer($customer)
|
1847 |
->setCustomerId(true);
|
1848 |
|
1849 |
+
$quote->save();
|
1850 |
+
$customer->save();
|
1851 |
+
|
1852 |
+
$this->writeLog('Created new customer', $customer->getId());
|
1853 |
+
|
1854 |
return $customer;
|
1855 |
}
|
1856 |
|
1869 |
if ($this->checkOscModuleEnabled()) {
|
1870 |
|
1871 |
// For One Step Checkout module
|
1872 |
+
$data = unserialize($this->getQuoteXpcData($quote)->getData('checkout_data'));
|
1873 |
|
1874 |
$result = isset($data['create_account'])
|
1875 |
&& (bool)$data['create_account'];
|
1877 |
} elseif ($this->checkFirecheckoutModuleEnabled()) {
|
1878 |
|
1879 |
// For Firecheckout module
|
1880 |
+
$data = unserialize($this->getQuoteXpcData($quote)->getData('checkout_data'));
|
1881 |
|
1882 |
$result = isset($data['billing']['register_account'])
|
1883 |
&& (bool)$data['billing']['register_account'];
|
1912 |
|
1913 |
if ($this->isCreateNewCustomer($quote)) {
|
1914 |
|
1915 |
+
// Create customer's profile who's registered at checkout
|
1916 |
+
$this->createNewCustomer($quote);
|
|
|
1917 |
|
1918 |
+
$this->getQuoteXpcData($quote)
|
1919 |
+
->setData('address_saved', true)
|
1920 |
+
->save();
|
1921 |
}
|
1922 |
|
1923 |
// Set payment method (maybe not necessary. Just in case)
|
1929 |
|
1930 |
$order = $service->getOrder();
|
1931 |
|
1932 |
+
if (!$order) {
|
1933 |
|
1934 |
+
$orderId = $this->getQuoteXpcData($quote)->getData('recurring_order_id');
|
|
|
1935 |
|
1936 |
+
if ($orderId) {
|
1937 |
+
$order = Mage::getModel('sales/order')->load($orderId);
|
1938 |
+
}
|
1939 |
|
1940 |
+
if (!$order) {
|
1941 |
|
1942 |
+
// Cannot proceed further without an order anyway
|
1943 |
+
throw new Exception('Quote was not converted to order');
|
1944 |
+
}
|
1945 |
+
}
|
1946 |
+
|
1947 |
+
$quote->setIsActive(false)->save();
|
1948 |
+
|
1949 |
+
$xpcData = $this->getQuoteXpcData($quote)->getData();
|
1950 |
+
$order->setData(self::XPC_DATA, serialize($xpcData));
|
1951 |
+
|
1952 |
+
$order->setData('xpc_txnid', $xpcData['txn_id'])->save();
|
1953 |
|
1954 |
$refId = $order->getIncrementId();
|
1955 |
|
1956 |
+
$this->writeLog('Placed order #' . $refId, $xpcData);
|
1957 |
|
1958 |
} catch (Exception $e) {
|
1959 |
|
1960 |
$this->writeLog('Unable to create order: ' . $e->getMessage(), $e->getTraceAsString());
|
1961 |
|
1962 |
// Save error message in quote
|
1963 |
+
$this->getQuoteXpcData($quote)
|
1964 |
+
->setData('xpc_message', $e->getMessage())
|
1965 |
+
->save();
|
|
|
|
|
|
|
1966 |
}
|
1967 |
|
1968 |
return $refId;
|
1969 |
}
|
1970 |
|
1971 |
+
/**
|
1972 |
+
* Create invoice for the charged payment
|
1973 |
+
*
|
1974 |
+
* @param Mage_Sales_Model_Order $order
|
1975 |
+
*
|
1976 |
+
* @return void
|
1977 |
+
*/
|
1978 |
+
public function processCreateInvoice(Mage_Sales_Model_Order $order)
|
1979 |
+
{
|
1980 |
+
if (
|
1981 |
+
$order->getStatus() == self::STATUS_CHARGED
|
1982 |
+
&& $order->canInvoice()
|
1983 |
+
) {
|
1984 |
+
|
1985 |
+
$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
|
1986 |
+
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
|
1987 |
+
|
1988 |
+
$invoice->register();
|
1989 |
+
|
1990 |
+
$transaction = Mage::getModel('core/resource_transaction')
|
1991 |
+
->addObject($invoice)
|
1992 |
+
->addObject($invoice->getOrder());
|
1993 |
+
|
1994 |
+
$transaction->save();
|
1995 |
+
}
|
1996 |
+
}
|
1997 |
+
|
1998 |
+
/**
|
1999 |
+
* Get recurring profile for order
|
2000 |
+
*
|
2001 |
+
* @param Mage_Sales_Model_Order $order Order
|
2002 |
+
*
|
2003 |
+
* @return Mage_Sales_Model_Recurring_Profile or false
|
2004 |
+
*/
|
2005 |
+
public function getOrderRecurringProfile(Mage_Sales_Model_Order $order)
|
2006 |
+
{
|
2007 |
+
$txnId = $order->getData('xpc_txnid');
|
2008 |
+
|
2009 |
+
try {
|
2010 |
+
|
2011 |
+
$profile = Mage::getModel('sales/recurring_profile')->load($txnId, 'reference_id');
|
2012 |
+
|
2013 |
+
if (!$profile->isValid()) {
|
2014 |
+
|
2015 |
+
$profile = false;
|
2016 |
+
}
|
2017 |
+
|
2018 |
+
} catch (Exception $e) {
|
2019 |
+
|
2020 |
+
$this->writeLog('Unable to load recurring profile for reference ' . $txnId, $e->getMessage());
|
2021 |
+
|
2022 |
+
$profile = false;
|
2023 |
+
}
|
2024 |
+
|
2025 |
+
return $profile;
|
2026 |
+
}
|
2027 |
+
|
2028 |
/**
|
2029 |
* Just a wrapper to omit sid and secure params
|
2030 |
*
|
2115 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
2116 |
}
|
2117 |
|
2118 |
+
$this->getQuoteXpcData($quote)->clear();
|
2119 |
}
|
2120 |
|
2121 |
/**
|
2136 |
/**
|
2137 |
* Write log
|
2138 |
*
|
2139 |
+
* @param string $title Log title
|
2140 |
* @param mixed $data Data to log
|
2141 |
+
* @param bool $trace Include backtrace or not
|
2142 |
*
|
2143 |
* @return void
|
2144 |
*/
|
2145 |
+
public function writeLog($title, $data = '', $trace = false)
|
2146 |
{
|
2147 |
if (!is_string($data)) {
|
2148 |
$data = var_export($data, true);
|
2151 |
$message = PHP_EOL . date('Y-m-d H:i:s') . PHP_EOL
|
2152 |
. $title . PHP_EOL
|
2153 |
. $data . PHP_EOL
|
2154 |
+
. Mage::helper('core/url')->getCurrentUrl() . PHP_EOL;
|
2155 |
+
|
2156 |
+
if ($trace) {
|
2157 |
+
$message .= '--------------------------' . PHP_EOL
|
2158 |
+
. Varien_Debug::backtrace(true, false, false)
|
2159 |
+
. PHP_EOL;
|
2160 |
+
}
|
2161 |
|
2162 |
Mage::log($message, null, self::XPAYMENTS_LOG_FILE, true);
|
2163 |
}
|
@@ -0,0 +1,99 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Data from the fraud-check service (Kount, NoFraud, etc)
|
25 |
+
* Class Cdev_XPaymentsConnector_Model_FraudCheckData
|
26 |
+
*/
|
27 |
+
|
28 |
+
class Cdev_XPaymentsConnector_Model_Fraudcheckdata extends Mage_Core_Model_Abstract
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* Internal constructor
|
32 |
+
*
|
33 |
+
* @return void
|
34 |
+
*/
|
35 |
+
protected function _construct()
|
36 |
+
{
|
37 |
+
$this->_init('xpaymentsconnector/fraudcheckdata');
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Get and unserialize some data
|
42 |
+
*
|
43 |
+
* @param string $name Data name
|
44 |
+
*
|
45 |
+
* @return array
|
46 |
+
*/
|
47 |
+
private function getUnserializedData($name)
|
48 |
+
{
|
49 |
+
$list = $this->getData($name);
|
50 |
+
|
51 |
+
$list = @unserialize($list);
|
52 |
+
|
53 |
+
if (!is_array($list)) {
|
54 |
+
$list = array();
|
55 |
+
}
|
56 |
+
|
57 |
+
return $list;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Get list of the triggered rules
|
62 |
+
*
|
63 |
+
* @return array
|
64 |
+
*/
|
65 |
+
public function getRulesList()
|
66 |
+
{
|
67 |
+
return $this->getUnserializedData('rules');
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Get list of the errors
|
72 |
+
*
|
73 |
+
* @return array
|
74 |
+
*/
|
75 |
+
public function getErrorsList()
|
76 |
+
{
|
77 |
+
return $this->getUnserializedData('errors');
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Get list of the warnings
|
82 |
+
*
|
83 |
+
* @return array
|
84 |
+
*/
|
85 |
+
public function getWarningsList()
|
86 |
+
{
|
87 |
+
return $this->getUnserializedData('warnings');
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Get data as list
|
92 |
+
*
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
public function getDataList()
|
96 |
+
{
|
97 |
+
return $this->getUnserializedData('data');
|
98 |
+
}
|
99 |
+
}
|
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -20,28 +21,22 @@
|
|
20 |
*/
|
21 |
|
22 |
/**
|
23 |
-
*
|
|
|
|
|
|
|
|
|
24 |
*/
|
25 |
-
class Cdev_XPaymentsConnector_Block__Customer_Account_Navigation extends Mage_Customer_Block_Account_Navigation
|
26 |
-
{
|
27 |
-
/**
|
28 |
-
* @return $this
|
29 |
-
*/
|
30 |
-
public function removeLink()
|
31 |
-
{
|
32 |
-
$IsSaveCardsPaymentActive = (bool)Mage::getStoreConfig('payment/savedcards/active');
|
33 |
-
if (!$IsSaveCardsPaymentActive) {
|
34 |
-
unset($this->_links['customer_usercards']);
|
35 |
-
}
|
36 |
-
return $this;
|
37 |
-
}
|
38 |
|
|
|
|
|
39 |
/**
|
40 |
-
*
|
|
|
|
|
41 |
*/
|
42 |
-
protected function
|
43 |
{
|
44 |
-
$this->
|
45 |
-
return parent::_toHtml();
|
46 |
}
|
47 |
-
}
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
21 |
*/
|
22 |
|
23 |
/**
|
24 |
+
* Fraud check data RDBS-specific model
|
25 |
+
*
|
26 |
+
* @package Cdev_XPaymentsConnector
|
27 |
+
* @see ____class_see____
|
28 |
+
* @since 1.0.0
|
29 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
+
class Cdev_XPaymentsConnector_Model_Mysql4_Fraudcheckdata extends Mage_Core_Model_Mysql4_Abstract
|
32 |
+
{
|
33 |
/**
|
34 |
+
* Internal constructor
|
35 |
+
*
|
36 |
+
* @return void
|
37 |
*/
|
38 |
+
protected function _construct()
|
39 |
{
|
40 |
+
$this->_init('xpaymentsconnector/fraudcheckdata', 'data_id');
|
|
|
41 |
}
|
42 |
+
}
|
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Fraud check data RDMS-specific collection model
|
25 |
+
*
|
26 |
+
* @package Cdev_XPaymentsConnector
|
27 |
+
* @see ____class_see____
|
28 |
+
* @since 1.0.0
|
29 |
+
*/
|
30 |
+
|
31 |
+
class Cdev_XPaymentsConnector_Model_Mysql4_Fraudcheckdata_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
32 |
+
{
|
33 |
+
/**
|
34 |
+
* Initialize collection
|
35 |
+
*
|
36 |
+
*/
|
37 |
+
public function _construct()
|
38 |
+
{
|
39 |
+
$this->_init('xpaymentsconnector/fraudcheckdata');
|
40 |
+
}
|
41 |
+
}
|
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* X-Payments Connector Quote data RDBS-specific model
|
25 |
+
*
|
26 |
+
* @package Cdev_XPaymentsConnector
|
27 |
+
* @see ____class_see____
|
28 |
+
* @since 1.0.0
|
29 |
+
*/
|
30 |
+
|
31 |
+
class Cdev_XPaymentsConnector_Model_Mysql4_Quote_Xpcdata extends Mage_Core_Model_Mysql4_Abstract
|
32 |
+
{
|
33 |
+
/**
|
34 |
+
* Internal constructor
|
35 |
+
*
|
36 |
+
* @return void
|
37 |
+
*/
|
38 |
+
protected function _construct()
|
39 |
+
{
|
40 |
+
$this->_init('xpaymentsconnector/quote_xpcdata', 'data_id');
|
41 |
+
}
|
42 |
+
}
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* X-Payments Connector Data in quote
|
25 |
+
*
|
26 |
+
* @package Cdev_XPaymentsConnector
|
27 |
+
*/
|
28 |
+
class Cdev_XPaymentsConnector_Model_Mysql4_Quote_Xpcdata_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* Initialize collection
|
32 |
+
*/
|
33 |
+
public function _construct()
|
34 |
+
{
|
35 |
+
$this->_init('xpaymentsconnector/quote_xpcdata');
|
36 |
+
}
|
37 |
+
}
|
@@ -37,12 +37,6 @@ class Cdev_XPaymentsConnector_Model_Observer extends Mage_CatalogInventory_Model
|
|
37 |
$xpHelper = Mage::helper('xpaymentsconnector');
|
38 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
39 |
|
40 |
-
//set recurring product discount
|
41 |
-
$issetRecurrnigProduct = $xpHelper->checkIssetRecurringOrder();
|
42 |
-
if ($issetRecurrnigProduct['isset']) {
|
43 |
-
$xpHelper->setRecurringProductDiscount();
|
44 |
-
}
|
45 |
-
|
46 |
}
|
47 |
|
48 |
public function paymentMethodIsActive($observer)
|
@@ -112,9 +106,16 @@ class Cdev_XPaymentsConnector_Model_Observer extends Mage_CatalogInventory_Model
|
|
112 |
|
113 |
if ($response['success']) {
|
114 |
$result = $paymentCcModel->updateOrderByXpaymentResponse($order->getId(), $response['response']['transaction_id']);
|
|
|
|
|
|
|
|
|
115 |
if (!$result['success']) {
|
116 |
$checkoutSession->addError($result['error_message']);
|
117 |
$checkoutSession->addNotice($noticeHelper);
|
|
|
|
|
|
|
118 |
}
|
119 |
} else {
|
120 |
$checkoutSession->addError($response['error_message']);
|
@@ -465,9 +466,6 @@ class Cdev_XPaymentsConnector_Model_Observer extends Mage_CatalogInventory_Model
|
|
465 |
$xpHelper = Mage::helper('xpaymentsconnector');
|
466 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
467 |
|
468 |
-
//set recurring product discount
|
469 |
-
Mage::helper('xpaymentsconnector')->setRecurringProductDiscount();
|
470 |
-
|
471 |
// update InitAmount for recurring products
|
472 |
$cart = $observer->getCart('quote');
|
473 |
foreach ($cart->getAllVisibleItems() as $item){
|
@@ -584,10 +582,6 @@ class Cdev_XPaymentsConnector_Model_Observer extends Mage_CatalogInventory_Model
|
|
584 |
$unsetParams = array('token');
|
585 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
586 |
}
|
587 |
-
|
588 |
-
//set recurring product discount
|
589 |
-
$xpHelper->setRecurringProductDiscount();
|
590 |
-
|
591 |
}
|
592 |
|
593 |
|
37 |
$xpHelper = Mage::helper('xpaymentsconnector');
|
38 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
39 |
|
|
|
|
|
|
|
|
|
|
|
|
|
40 |
}
|
41 |
|
42 |
public function paymentMethodIsActive($observer)
|
106 |
|
107 |
if ($response['success']) {
|
108 |
$result = $paymentCcModel->updateOrderByXpaymentResponse($order->getId(), $response['response']['transaction_id']);
|
109 |
+
|
110 |
+
// Reload order data, since it has been changed
|
111 |
+
$order = Mage::getModel('sales/order')->load($order->getId());
|
112 |
+
|
113 |
if (!$result['success']) {
|
114 |
$checkoutSession->addError($result['error_message']);
|
115 |
$checkoutSession->addNotice($noticeHelper);
|
116 |
+
} else {
|
117 |
+
// Auto create invoice if necessary
|
118 |
+
Mage::helper('xpaymentsconnector')->processCreateInvoice($order);
|
119 |
}
|
120 |
} else {
|
121 |
$checkoutSession->addError($response['error_message']);
|
466 |
$xpHelper = Mage::helper('xpaymentsconnector');
|
467 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
468 |
|
|
|
|
|
|
|
469 |
// update InitAmount for recurring products
|
470 |
$cart = $observer->getCart('quote');
|
471 |
foreach ($cart->getAllVisibleItems() as $item){
|
582 |
$unsetParams = array('token');
|
583 |
$xpHelper->unsetXpaymentPrepareOrder($unsetParams);
|
584 |
}
|
|
|
|
|
|
|
|
|
585 |
}
|
586 |
|
587 |
|
@@ -63,6 +63,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
63 |
const XPATH_IP_ADDRESSES = 'xpaymentsconnector/settings/xpay_allowed_ip_addresses';
|
64 |
const XPATH_CURRENCY = 'xpaymentsconnector/settings/xpay_currency';
|
65 |
const XPATH_CONF_BUNDLE = 'xpaymentsconnector/settings/xpay_conf_bundle';
|
|
|
66 |
|
67 |
// Error codes
|
68 |
const REQ_CURL = 1;
|
@@ -122,7 +123,6 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
122 |
const TRAN_TYPE_GET_INFO = 'getInfo';
|
123 |
const TRAN_TYPE_ACCEPT = 'accept';
|
124 |
const TRAN_TYPE_DECLINE = 'decline';
|
125 |
-
const XP_API = '1.6';
|
126 |
|
127 |
/**
|
128 |
* Show or not save card checkbox statuses
|
@@ -131,6 +131,14 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
131 |
const SAVE_CARD_REQUIRED = 'Y';
|
132 |
const SAVE_CARD_OPTIONAL = 'O';
|
133 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
134 |
/**
|
135 |
* unique internal payment method identifier
|
136 |
*
|
@@ -377,6 +385,16 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
377 |
|
378 |
}
|
379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
380 |
/**
|
381 |
* Check - module is configured
|
382 |
*
|
@@ -502,7 +520,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
502 |
'callbackUrl' => Mage::getUrl('xpaymentsconnector/processing/callback',
|
503 |
array('order_refid' => $refId,'quote_id' => $quoteId,'_secure' => true)),
|
504 |
'saveCard' => 'Y',
|
505 |
-
'api_version' =>
|
506 |
);
|
507 |
|
508 |
list($status, $response) = $this->request('payment', 'init', $data);
|
@@ -548,6 +566,8 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
548 |
public function requestPaymentInfo($txn_id, $refresh = false,$withAdditionalInfo = false)
|
549 |
{
|
550 |
|
|
|
|
|
551 |
if($withAdditionalInfo){
|
552 |
$data = array(
|
553 |
'txnId' => $txn_id,
|
@@ -643,19 +663,38 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
643 |
{
|
644 |
srand();
|
645 |
|
646 |
-
$
|
647 |
|
648 |
-
|
649 |
-
|
650 |
-
'connect',
|
651 |
-
'test',
|
652 |
-
array('testCode' => $hash_code)
|
653 |
);
|
654 |
|
655 |
-
|
656 |
-
|
657 |
-
$
|
658 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
659 |
}
|
660 |
|
661 |
return $status;
|
@@ -715,7 +754,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
715 |
$data['target'] = $target;
|
716 |
$data['action'] = $action;
|
717 |
if(!isset($data['api_version'])){
|
718 |
-
$data['api_version'] =
|
719 |
}
|
720 |
|
721 |
|
@@ -900,36 +939,46 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
900 |
* Check - force use authorization request or not
|
901 |
*
|
902 |
* @return boolean
|
903 |
-
* @access protected
|
904 |
-
* @see ____func_see____
|
905 |
-
* @since 1.0.0
|
906 |
*/
|
907 |
protected function isForceAuth()
|
908 |
{
|
909 |
-
|
910 |
-
$isRecurringProduct = $xpHelper->checkIssetRecurringOrder();
|
911 |
|
912 |
-
|
913 |
-
|
914 |
-
return true;
|
915 |
-
};
|
916 |
|
917 |
-
|
918 |
-
|
919 |
-
|
920 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
921 |
|
922 |
-
|
923 |
-
|
924 |
-
|
925 |
-
|
926 |
-
if (
|
927 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
928 |
}
|
929 |
}
|
930 |
-
$useInitialFeeAuthorize = Mage::getStoreConfig('payment/xpayments/use_initialfee_authorize');
|
931 |
-
return (bool)$useInitialFeeAuthorize;
|
932 |
}
|
|
|
|
|
933 |
}
|
934 |
|
935 |
/**
|
@@ -1345,12 +1394,10 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1345 |
|
1346 |
if (!$zeroAuth) {
|
1347 |
|
1348 |
-
$
|
1349 |
-
'
|
1350 |
-
'
|
1351 |
-
|
1352 |
-
|
1353 |
-
$helper->saveQuoteXpcData($quote, $xpcData);
|
1354 |
}
|
1355 |
}
|
1356 |
|
@@ -1364,17 +1411,16 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1364 |
*/
|
1365 |
protected function getAllowSaveCard()
|
1366 |
{
|
|
|
|
|
1367 |
// Check if save card feature is available for customer
|
1368 |
-
$showToUser =
|
1369 |
&& Mage::getStoreConfig('payment/savedcards/active');
|
1370 |
|
1371 |
-
// Check if recurring product is purchased
|
1372 |
-
$isRecuringProduct = Mage::helper('xpaymentsconnector')->checkIssetRecurringOrder();
|
1373 |
-
$isRecuringProduct = (bool)$isRecuringProduct['isset'];
|
1374 |
-
|
1375 |
if ($showToUser) {
|
1376 |
|
1377 |
-
|
|
|
1378 |
? static::SAVE_CARD_REQUIRED
|
1379 |
: static::SAVE_CARD_OPTIONAL;
|
1380 |
|
@@ -1397,7 +1443,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1397 |
|
1398 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1399 |
|
1400 |
-
if (!$helper->
|
1401 |
// This saves token in the quote model
|
1402 |
$data = $this->sendIframeHandshakeRequest();
|
1403 |
}
|
@@ -1416,7 +1462,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1416 |
|
1417 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1418 |
|
1419 |
-
return (bool)$helper->
|
1420 |
}
|
1421 |
|
1422 |
/**
|
@@ -1430,7 +1476,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1430 |
|
1431 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1432 |
|
1433 |
-
$token = $helper->
|
1434 |
|
1435 |
return array(
|
1436 |
'target' => 'main',
|
@@ -1544,8 +1590,6 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1544 |
$status
|
1545 |
&& in_array($response['payment']['status'], array(self::AUTH_STATUS, self::CHARGED_STATUS))
|
1546 |
) {
|
1547 |
-
// TODO - save message - $response['message']
|
1548 |
-
// TODO - process faud status
|
1549 |
|
1550 |
if ($response['payment']['amount'] != number_format($order->getGrandTotal(), 2, '.','') && $checkOrderAmount) {
|
1551 |
$order->cancel();
|
@@ -1582,27 +1626,30 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1582 |
$order->getPayment()->setCcAvsStatus($response['payment']['advinfo']['AVS']);
|
1583 |
}
|
1584 |
|
1585 |
-
|
1586 |
-
|
1587 |
-
|
1588 |
-
|
1589 |
-
|
1590 |
-
)
|
1591 |
-
$
|
1592 |
-
|
1593 |
-
$order->setState(
|
1594 |
-
Mage_Sales_Model_Order::STATE_PROCESSING,
|
1595 |
-
(bool)$order->getPayment()->getMethodInstance()->getConfigData('order_status'),
|
1596 |
-
$xpaymentsHelper->__('preauthorize: Customer returned successfully')
|
1597 |
-
);
|
1598 |
-
$order->setStatus(Mage_Sales_Model_Order::STATE_PROCESSING);
|
1599 |
-
}
|
1600 |
|
1601 |
-
|
1602 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1603 |
}
|
1604 |
|
|
|
|
|
1605 |
$order->save();
|
|
|
1606 |
if(method_exists($order,'sendNewOrderEmail')){
|
1607 |
$order->sendNewOrderEmail();
|
1608 |
}elseif(method_exists($order,'queueNewOrderEmail')){
|
@@ -1767,74 +1814,45 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1767 |
}
|
1768 |
|
1769 |
/**
|
1770 |
-
*
|
1771 |
*
|
1772 |
* @param Mage_Payment_Model_Recurring_Profile $profile
|
1773 |
* @param Mage_Payment_Model_Info $paymentInfo
|
|
|
|
|
1774 |
*/
|
1775 |
public function submitRecurringProfile(Mage_Payment_Model_Recurring_Profile $profile, Mage_Payment_Model_Info $paymentInfo)
|
1776 |
{
|
1777 |
-
$
|
|
|
|
|
|
|
|
|
1778 |
$quote = $profile->getQuote();
|
1779 |
-
|
1780 |
-
$xpHelper->addXpDefaultRecurringSettings($profile);
|
1781 |
-
// end registered user
|
1782 |
-
$xpHelper->setPrepareOrderType();
|
1783 |
|
1784 |
-
|
1785 |
-
$cardData = $xpHelper->getXpCardData();
|
1786 |
|
1787 |
-
|
1788 |
-
|
1789 |
-
if (!$xpHelper->checkIssetSimpleOrder()) {
|
1790 |
-
if ($useIframe) {
|
1791 |
-
if (is_null($this->_currentProfileId)) {
|
1792 |
-
$payDeferredSubscription = $xpHelper->payDeferredSubscription($profile);
|
1793 |
-
if ($payDeferredSubscription) {
|
1794 |
-
$this->_currentProfileId = $profile->getProfileId();
|
1795 |
-
} else {
|
1796 |
-
$this->createFirstRecurringOrder($profile);
|
1797 |
-
}
|
1798 |
-
if($profile->getState() == Mage_Sales_Model_Recurring_Profile::STATE_CANCELED){
|
1799 |
-
$this->firstTransactionSuccess = false;
|
1800 |
-
};
|
1801 |
-
}else{
|
1802 |
-
if (!$this->firstTransactionSuccess) {
|
1803 |
-
$profile->setState(Mage_Sales_Model_Recurring_Profile::STATE_CANCELED);
|
1804 |
-
}
|
1805 |
-
}
|
1806 |
-
$xpHelper->prepareOrderKeyByRecurringProfile($profile);
|
1807 |
-
} else {
|
1808 |
-
if (is_null($this->_currentProfileId)) {
|
1809 |
-
$xpaymentResponse = $this->sendIframeHandshakeRequest();
|
1810 |
-
|
1811 |
-
if (isset($xpaymentResponse['success']) && !$xpaymentResponse['success']) {
|
1812 |
-
$this->firstTransactionSuccess = false;
|
1813 |
-
$profile->setState(Mage_Sales_Model_Recurring_Profile::STATE_CANCELED);
|
1814 |
-
}
|
1815 |
-
$xpHelper->updateRecurringMasKeys($profile);
|
1816 |
-
$this->_currentProfileId = $profile->getProfileId();
|
1817 |
-
} else {
|
1818 |
-
if (!$this->firstTransactionSuccess) {
|
1819 |
-
$profile->setState(Mage_Sales_Model_Recurring_Profile::STATE_CANCELED);
|
1820 |
-
}
|
1821 |
-
}
|
1822 |
-
}
|
1823 |
}
|
1824 |
|
1825 |
-
|
1826 |
-
|
1827 |
-
|
1828 |
-
|
1829 |
-
Mage::getSingleton('checkout/session')->setData('user_card_save', true);
|
1830 |
-
$this->saveUserCard($cardData, $usageType = Cdev_XPaymentsConnector_Model_Usercards::RECURRING_CARD);
|
1831 |
-
}
|
1832 |
-
$this->_currentProfileId = $profile->getProfileId();
|
1833 |
-
}else {
|
1834 |
-
$orderItemInfo = $profile->getData('order_item_info');
|
1835 |
-
$quote->getItemById($orderItemInfo['item_id'])->isDeleted(true);
|
1836 |
}
|
1837 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1838 |
}
|
1839 |
|
1840 |
/**
|
@@ -1894,7 +1912,12 @@ class Cdev_XPaymentsConnector_Model_Payment_Cc extends Mage_Payment_Model_Method
|
|
1894 |
*/
|
1895 |
public function createFirstRecurringOrder(Mage_Payment_Model_Recurring_Profile $profile)
|
1896 |
{
|
1897 |
-
$
|
|
|
|
|
|
|
|
|
|
|
1898 |
$cardData = $xpHelper->getXpCardData();
|
1899 |
$orderId = $xpHelper->createOrder($profile, $isFirstRecurringOrder = true);
|
1900 |
|
63 |
const XPATH_IP_ADDRESSES = 'xpaymentsconnector/settings/xpay_allowed_ip_addresses';
|
64 |
const XPATH_CURRENCY = 'xpaymentsconnector/settings/xpay_currency';
|
65 |
const XPATH_CONF_BUNDLE = 'xpaymentsconnector/settings/xpay_conf_bundle';
|
66 |
+
const XPATH_API_VERSION = 'xpaymentsconnector/settings/xpay_api_version';
|
67 |
|
68 |
// Error codes
|
69 |
const REQ_CURL = 1;
|
123 |
const TRAN_TYPE_GET_INFO = 'getInfo';
|
124 |
const TRAN_TYPE_ACCEPT = 'accept';
|
125 |
const TRAN_TYPE_DECLINE = 'decline';
|
|
|
126 |
|
127 |
/**
|
128 |
* Show or not save card checkbox statuses
|
131 |
const SAVE_CARD_REQUIRED = 'Y';
|
132 |
const SAVE_CARD_OPTIONAL = 'O';
|
133 |
|
134 |
+
/**
|
135 |
+
* List of supported API versions
|
136 |
+
*/
|
137 |
+
private $apiVersions = array(
|
138 |
+
1.7,
|
139 |
+
1.6,
|
140 |
+
);
|
141 |
+
|
142 |
/**
|
143 |
* unique internal payment method identifier
|
144 |
*
|
385 |
|
386 |
}
|
387 |
|
388 |
+
/**
|
389 |
+
* Get API version setting
|
390 |
+
*
|
391 |
+
* @return string
|
392 |
+
*/
|
393 |
+
public function getApiVersion()
|
394 |
+
{
|
395 |
+
return Mage::getStoreConfig(self::XPATH_API_VERSION);
|
396 |
+
}
|
397 |
+
|
398 |
/**
|
399 |
* Check - module is configured
|
400 |
*
|
520 |
'callbackUrl' => Mage::getUrl('xpaymentsconnector/processing/callback',
|
521 |
array('order_refid' => $refId,'quote_id' => $quoteId,'_secure' => true)),
|
522 |
'saveCard' => 'Y',
|
523 |
+
'api_version' => $this->getApiVersion(),
|
524 |
);
|
525 |
|
526 |
list($status, $response) = $this->request('payment', 'init', $data);
|
566 |
public function requestPaymentInfo($txn_id, $refresh = false,$withAdditionalInfo = false)
|
567 |
{
|
568 |
|
569 |
+
Mage::helper('xpaymentsconnector')->writeLog('INFO', array($txn_id, $refresh, $withAdditionalInfo));
|
570 |
+
|
571 |
if($withAdditionalInfo){
|
572 |
$data = array(
|
573 |
'txnId' => $txn_id,
|
663 |
{
|
664 |
srand();
|
665 |
|
666 |
+
$hashCode = strval(rand(0, 1000000));
|
667 |
|
668 |
+
$params = array(
|
669 |
+
'testCode' => $hashCode,
|
|
|
|
|
|
|
670 |
);
|
671 |
|
672 |
+
foreach ($this->apiVersions as $version) {
|
673 |
+
|
674 |
+
$params['api_version'] = $version;
|
675 |
+
|
676 |
+
// Make test request
|
677 |
+
list($status, $response) = $this->request(
|
678 |
+
'connect',
|
679 |
+
'test',
|
680 |
+
$params
|
681 |
+
);
|
682 |
+
|
683 |
+
if (
|
684 |
+
$status
|
685 |
+
&& isset($response['hashCode'])
|
686 |
+
&& md5($hashCode) == $response['hashCode']
|
687 |
+
) {
|
688 |
+
|
689 |
+
// Save working API version
|
690 |
+
Mage::getConfig()->saveConfig(self::XPATH_API_VERSION, $version);
|
691 |
+
Mage::getConfig()->reinit();
|
692 |
+
break;
|
693 |
+
|
694 |
+
} else {
|
695 |
+
|
696 |
+
$status = false;
|
697 |
+
}
|
698 |
}
|
699 |
|
700 |
return $status;
|
754 |
$data['target'] = $target;
|
755 |
$data['action'] = $action;
|
756 |
if(!isset($data['api_version'])){
|
757 |
+
$data['api_version'] = $this->getApiVersion();
|
758 |
}
|
759 |
|
760 |
|
939 |
* Check - force use authorization request or not
|
940 |
*
|
941 |
* @return boolean
|
|
|
|
|
|
|
942 |
*/
|
943 |
protected function isForceAuth()
|
944 |
{
|
945 |
+
if ('cardadd' == Mage::app()->getRequest()->getActionName()) {
|
|
|
946 |
|
947 |
+
// Force auth only for zero-auth/card setup
|
948 |
+
$result = true;
|
|
|
|
|
949 |
|
950 |
+
} else {
|
951 |
+
|
952 |
+
// Use option for regular products
|
953 |
+
$result = (bool)Mage::getStoreConfig('payment/xpayments/use_authorize');
|
954 |
+
|
955 |
+
$helper = Mage::helper('xpaymentsconnector');
|
956 |
+
|
957 |
+
$item = $helper->getRecurringQuoteItem();
|
958 |
+
|
959 |
+
if ($item) {
|
960 |
|
961 |
+
$product = $item->getProduct();
|
962 |
+
|
963 |
+
$checkQuoteItemResult = $helper->checkStartDateDataByProduct($product, $item);
|
964 |
+
|
965 |
+
if (
|
966 |
+
$checkQuoteItemResult[$product->getId()]['success']
|
967 |
+
&& !$item->getXpRecurringInitialFee()
|
968 |
+
) {
|
969 |
+
|
970 |
+
// Force auth because... It was forced.
|
971 |
+
$result = true;
|
972 |
+
|
973 |
+
} else {
|
974 |
+
|
975 |
+
// Use option for recurring products
|
976 |
+
$result = (bool)Mage::getStoreConfig('payment/xpayments/use_initialfee_authorize');
|
977 |
}
|
978 |
}
|
|
|
|
|
979 |
}
|
980 |
+
|
981 |
+
return $result;
|
982 |
}
|
983 |
|
984 |
/**
|
1394 |
|
1395 |
if (!$zeroAuth) {
|
1396 |
|
1397 |
+
$helper->getQuoteXpcData($quote)
|
1398 |
+
->setData('token', $response['token'])
|
1399 |
+
->setData('txn_id', $response['txnId'])
|
1400 |
+
->save();
|
|
|
|
|
1401 |
}
|
1402 |
}
|
1403 |
|
1411 |
*/
|
1412 |
protected function getAllowSaveCard()
|
1413 |
{
|
1414 |
+
$helper = Mage::helper('xpaymentsconnector');
|
1415 |
+
|
1416 |
// Check if save card feature is available for customer
|
1417 |
+
$showToUser = $helper->isRegisteredUser()
|
1418 |
&& Mage::getStoreConfig('payment/savedcards/active');
|
1419 |
|
|
|
|
|
|
|
|
|
1420 |
if ($showToUser) {
|
1421 |
|
1422 |
+
// Check if recurring product is purchased
|
1423 |
+
$allowSaveCard = $helper->getRecurringQuoteItem()
|
1424 |
? static::SAVE_CARD_REQUIRED
|
1425 |
: static::SAVE_CARD_OPTIONAL;
|
1426 |
|
1443 |
|
1444 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1445 |
|
1446 |
+
if (!$helper->getQuoteXpcData($quote)->getData('token')) {
|
1447 |
// This saves token in the quote model
|
1448 |
$data = $this->sendIframeHandshakeRequest();
|
1449 |
}
|
1462 |
|
1463 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1464 |
|
1465 |
+
return (bool)$helper->getQuoteXpcData($quote)->getData('token');
|
1466 |
}
|
1467 |
|
1468 |
/**
|
1476 |
|
1477 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
1478 |
|
1479 |
+
$token = $helper->getQuoteXpcData($quote)->getData('token');
|
1480 |
|
1481 |
return array(
|
1482 |
'target' => 'main',
|
1590 |
$status
|
1591 |
&& in_array($response['payment']['status'], array(self::AUTH_STATUS, self::CHARGED_STATUS))
|
1592 |
) {
|
|
|
|
|
1593 |
|
1594 |
if ($response['payment']['amount'] != number_format($order->getGrandTotal(), 2, '.','') && $checkOrderAmount) {
|
1595 |
$order->cancel();
|
1626 |
$order->getPayment()->setCcAvsStatus($response['payment']['advinfo']['AVS']);
|
1627 |
}
|
1628 |
|
1629 |
+
$state = Mage_Sales_Model_Order::STATE_PROCESSING;
|
1630 |
+
|
1631 |
+
$statusMessage = $xpaymentsHelper->getResultMessage($response);
|
1632 |
+
|
1633 |
+
if (
|
1634 |
+
isset($response['payment']['isFraudStatus'])
|
1635 |
+
&& $response['payment']['isFraudStatus']
|
1636 |
+
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1637 |
|
1638 |
+
$status = Cdev_XPaymentsConnector_Helper_Data::STATUS_FRAUD;
|
1639 |
+
|
1640 |
+
} elseif (self::AUTH_ACTION == $response['payment']['status']) {
|
1641 |
+
|
1642 |
+
$status = Cdev_XPaymentsConnector_Helper_Data::STATUS_AUTHORIZED;
|
1643 |
+
|
1644 |
+
} else {
|
1645 |
+
|
1646 |
+
$status = Cdev_XPaymentsConnector_Helper_Data::STATUS_CHARGED;
|
1647 |
}
|
1648 |
|
1649 |
+
$order->setState($state, $status, $statusMessage, false);
|
1650 |
+
|
1651 |
$order->save();
|
1652 |
+
|
1653 |
if(method_exists($order,'sendNewOrderEmail')){
|
1654 |
$order->sendNewOrderEmail();
|
1655 |
}elseif(method_exists($order,'queueNewOrderEmail')){
|
1814 |
}
|
1815 |
|
1816 |
/**
|
1817 |
+
* Process recurring profile when quote is converted to order
|
1818 |
*
|
1819 |
* @param Mage_Payment_Model_Recurring_Profile $profile
|
1820 |
* @param Mage_Payment_Model_Info $paymentInfo
|
1821 |
+
*
|
1822 |
+
* @return void
|
1823 |
*/
|
1824 |
public function submitRecurringProfile(Mage_Payment_Model_Recurring_Profile $profile, Mage_Payment_Model_Info $paymentInfo)
|
1825 |
{
|
1826 |
+
$helper = Mage::helper('xpaymentsconnector');
|
1827 |
+
|
1828 |
+
// Just in case. We don't know the status of the transaction yet
|
1829 |
+
$profile->setState(Mage_Sales_Model_Recurring_Profile::STATE_UNKNOWN);
|
1830 |
+
|
1831 |
$quote = $profile->getQuote();
|
1832 |
+
$txnId = $helper->getQuoteXpcData($quote)->getData('txn_id');
|
|
|
|
|
|
|
1833 |
|
1834 |
+
if (empty($txnId)) {
|
|
|
1835 |
|
1836 |
+
// Processing of exception is performed in helper's funcPlaceOrder()
|
1837 |
+
throw new Exception('Unable to submit recurring profile. TxnId is empty');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1838 |
}
|
1839 |
|
1840 |
+
$helper->writeLog('Quote customer ID', $quote->getCustomer()->getId());
|
1841 |
+
|
1842 |
+
if ($quote->getCustomer()->getId()) {
|
1843 |
+
$profile->setCustomerId($quote->getCustomer()->getId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1844 |
}
|
1845 |
|
1846 |
+
$profile->setReferenceId($txnId)->save();
|
1847 |
+
|
1848 |
+
$orderId = $helper->createOrder($profile, true);
|
1849 |
+
|
1850 |
+
$helper->getQuoteXpcData($quote)
|
1851 |
+
->setData('recurring_order_id', $orderId)
|
1852 |
+
->setData('recurring_profile_id', $profile->getInternalReferenceId())
|
1853 |
+
->save();
|
1854 |
+
|
1855 |
+
$helper->writeLog('Submit recurring profile #' . $profile->getInternalReferenceId() . ' TxnId: ' . $txnId);
|
1856 |
}
|
1857 |
|
1858 |
/**
|
1912 |
*/
|
1913 |
public function createFirstRecurringOrder(Mage_Payment_Model_Recurring_Profile $profile)
|
1914 |
{
|
1915 |
+
$helper = Mage::helper('xpaymentsconnector');
|
1916 |
+
$cardData = $helper->getXpCardData();
|
1917 |
+
|
1918 |
+
|
1919 |
+
$helper->writeLog('Create first recurring order', $cardData, true);
|
1920 |
+
|
1921 |
$cardData = $xpHelper->getXpCardData();
|
1922 |
$orderId = $xpHelper->createOrder($profile, $isFirstRecurringOrder = true);
|
1923 |
|
@@ -144,7 +144,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Savedcards extends Mage_Payment_Mode
|
|
144 |
$cardData = Mage::getModel('xpaymentsconnector/usercards')->load($paymentCardNumber);
|
145 |
$txnid = $cardData->getData('txnId');
|
146 |
|
147 |
-
if (
|
148 |
if(is_null($xpHelper->payDeferredProfileId)){
|
149 |
$payDeferredSubscription = $xpHelper->payDeferredSubscription($profile);
|
150 |
if(!$payDeferredSubscription){
|
144 |
$cardData = Mage::getModel('xpaymentsconnector/usercards')->load($paymentCardNumber);
|
145 |
$txnid = $cardData->getData('txnId');
|
146 |
|
147 |
+
if ($xpHelper->getRecurringQuoteItem()) {
|
148 |
if(is_null($xpHelper->payDeferredProfileId)){
|
149 |
$payDeferredSubscription = $xpHelper->payDeferredSubscription($profile);
|
150 |
if(!$payDeferredSubscription){
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* X-Payments Connector Data in quote
|
25 |
+
* Class Cdev_XPaymentsConnector_Model_FraudCheckData
|
26 |
+
*/
|
27 |
+
|
28 |
+
class Cdev_XPaymentsConnector_Model_Quote_Xpcdata extends Mage_Core_Model_Abstract
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* Internal constructor
|
32 |
+
*
|
33 |
+
* @return void
|
34 |
+
*/
|
35 |
+
protected function _construct()
|
36 |
+
{
|
37 |
+
$this->_init('xpaymentsconnector/quote_xpcdata');
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Clear data
|
42 |
+
*
|
43 |
+
* @return void
|
44 |
+
*/
|
45 |
+
public function clear()
|
46 |
+
{
|
47 |
+
$this->setData('txn_id', '')
|
48 |
+
->setData('token', '')
|
49 |
+
->setData('address_saved', false)
|
50 |
+
->setData('recurring_order_id', 0)
|
51 |
+
->setData('recurring_profile_id', 0)
|
52 |
+
->setData('xpc_message', '')
|
53 |
+
->setData('checkout_data', '')
|
54 |
+
->save();
|
55 |
+
}
|
56 |
+
}
|
@@ -37,7 +37,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_FraudController extends Mage
|
|
37 |
$result = $xpaymentCCModel->sendFraudRequest($xpcTxnid,'accept');
|
38 |
|
39 |
if ($result) {
|
40 |
-
|
|
|
41 |
$order->save();
|
42 |
}
|
43 |
}
|
37 |
$result = $xpaymentCCModel->sendFraudRequest($xpcTxnid,'accept');
|
38 |
|
39 |
if ($result) {
|
40 |
+
// TODO: Make sure for authorized payments the correct status is set
|
41 |
+
$order->setStatus(Cdev_XPaymentsConnector_Helper_Data::STATUS_CHARGED);
|
42 |
$order->save();
|
43 |
}
|
44 |
}
|
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -26,59 +27,69 @@
|
|
26 |
* @see ____class_see____
|
27 |
* @since 1.0.0
|
28 |
*/
|
29 |
-
class
|
30 |
{
|
|
|
|
|
31 |
/**
|
32 |
-
*
|
33 |
-
*
|
34 |
* @return void
|
35 |
-
* @access public
|
36 |
-
* @see ____func_see____
|
37 |
-
* @since 1.0.0
|
38 |
*/
|
39 |
-
public function
|
40 |
{
|
41 |
-
$
|
42 |
|
43 |
-
$
|
44 |
|
45 |
-
|
46 |
-
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('System'), Mage::helper('adminhtml')->__('System'));
|
47 |
-
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('X-Payments connector control'), Mage::helper('adminhtml')->__('X-Payments connector control'));
|
48 |
|
49 |
-
|
50 |
-
$this->_addContent($block);
|
51 |
|
52 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
}
|
54 |
|
55 |
/**
|
56 |
-
*
|
57 |
*
|
58 |
* @return void
|
59 |
-
* @access public
|
60 |
-
* @see ____func_see____
|
61 |
-
* @since 1.0.0
|
62 |
*/
|
63 |
-
public function
|
64 |
{
|
65 |
-
$
|
66 |
|
67 |
-
$
|
68 |
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
|
73 |
-
|
74 |
-
$session->addError(Mage::helper('adminhtml')->__('Test transaction failed. Please check the X-Payment Connector settings and try again. If all options is ok review your X-Payments settings and make sure you have properly defined shopping cart properties.'));
|
75 |
-
}
|
76 |
|
77 |
-
|
78 |
-
$session->addException($e, 'Test transaction failed. Please check the X-Payment Connector settings and try again. If all options is ok review your X-Payments settings and make sure you have properly defined shopping cart properties.');
|
79 |
-
}
|
80 |
|
81 |
-
$this->
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
/**
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
27 |
* @see ____class_see____
|
28 |
* @since 1.0.0
|
29 |
*/
|
30 |
+
class Cdev_XPaymentsConnector_Adminhtml_Settings_XpcController extends Mage_Adminhtml_Controller_Action
|
31 |
{
|
32 |
+
const ERROR_TEXT = 'Conection failed. Please check the X-Payment Connector settings and try again. If all options is ok review your X-Payments settings and make sure you have properly defined shopping cart properties.';
|
33 |
+
|
34 |
/**
|
35 |
+
* Check connection with X-Payments via test request. Set the API version
|
36 |
+
*
|
37 |
* @return void
|
|
|
|
|
|
|
38 |
*/
|
39 |
+
public function checkConnection()
|
40 |
{
|
41 |
+
$session = Mage::getSingleton('adminhtml/session');
|
42 |
|
43 |
+
$model = Mage::getModel('xpaymentsconnector/payment_cc');
|
44 |
|
45 |
+
try {
|
|
|
|
|
46 |
|
47 |
+
$result = $model->sendTestRequest();
|
|
|
48 |
|
49 |
+
} catch (Exception $e) {
|
50 |
+
|
51 |
+
$result = false;
|
52 |
+
}
|
53 |
+
|
54 |
+
if ($result) {
|
55 |
+
|
56 |
+
$text = Mage::helper('adminhtml')->__('Connection with X-Payments is OK. API version: ')
|
57 |
+
. $model->getApiVersion();
|
58 |
+
|
59 |
+
$session->addSuccess($text);
|
60 |
+
|
61 |
+
} else {
|
62 |
+
|
63 |
+
|
64 |
+
$session->addError(
|
65 |
+
Mage::helper('adminhtml')->__(self::ERROR_TEXT)
|
66 |
+
);
|
67 |
+
}
|
68 |
}
|
69 |
|
70 |
/**
|
71 |
+
* General action
|
72 |
*
|
73 |
* @return void
|
|
|
|
|
|
|
74 |
*/
|
75 |
+
public function indexAction()
|
76 |
{
|
77 |
+
$this->_title($this->__('System'))->_title($this->__('X-Payments Connector settings'));
|
78 |
|
79 |
+
$this->loadLayout();
|
80 |
|
81 |
+
$this->_setActiveMenu('system');
|
82 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('System'), Mage::helper('adminhtml')->__('System'));
|
83 |
+
$this->_addBreadcrumb(Mage::helper('adminhtml')->__('X-Payments connector control'), Mage::helper('adminhtml')->__('X-Payments Connector settings'));
|
84 |
|
85 |
+
$this->checkConnection();
|
|
|
|
|
86 |
|
87 |
+
$this->_initLayoutMessages('adminhtml/session');
|
|
|
|
|
88 |
|
89 |
+
$block = $this->getLayout()->createBlock('xpaymentsconnector/adminhtml_settings_xpc');
|
90 |
+
$this->_addContent($block);
|
91 |
+
|
92 |
+
$this->renderLayout();
|
93 |
}
|
94 |
|
95 |
/**
|
@@ -79,6 +79,13 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
79 |
$result = in_array($remoteAddr, $ips);
|
80 |
}
|
81 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
82 |
return $result;
|
83 |
}
|
84 |
|
@@ -92,11 +99,18 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
92 |
*/
|
93 |
protected function saveUserCard($cardData, $customerId)
|
94 |
{
|
95 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
96 |
|
97 |
$data = array(
|
98 |
'user_id' => $customerId,
|
99 |
-
'txnId' => $
|
100 |
'last_4_cc_num' => $cardData['last4'],
|
101 |
'first6' => $cardData['first6'],
|
102 |
'card_type' => $cardData['type'],
|
@@ -105,9 +119,11 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
105 |
'usage_type' => Cdev_XPaymentsConnector_Model_Usercards::SIMPLE_CARD,
|
106 |
);
|
107 |
|
108 |
-
$usercards->
|
|
|
|
|
109 |
|
110 |
-
$usercards->save();
|
111 |
}
|
112 |
|
113 |
/**
|
@@ -155,37 +171,61 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
155 |
}
|
156 |
|
157 |
/**
|
158 |
-
*
|
159 |
-
*
|
160 |
-
* @param array
|
161 |
-
*
|
162 |
-
*
|
|
|
163 |
*/
|
164 |
-
protected function
|
165 |
{
|
166 |
-
$
|
|
|
167 |
|
168 |
-
|
169 |
-
if (!empty($data['message'])) {
|
170 |
-
$message[] = $data['message'];
|
171 |
-
}
|
172 |
|
173 |
-
|
|
|
|
|
|
|
|
|
174 |
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
179 |
|
180 |
-
|
181 |
-
|
182 |
-
$message[] = $data['advinfo']['s3d_message'];
|
183 |
}
|
184 |
-
}
|
185 |
-
|
186 |
-
$message = array_unique($message);
|
187 |
|
188 |
-
|
|
|
|
|
189 |
}
|
190 |
|
191 |
/**
|
@@ -206,6 +246,9 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
206 |
!$order->getId()
|
207 |
|| empty($data['status'])
|
208 |
) {
|
|
|
|
|
|
|
209 |
return;
|
210 |
}
|
211 |
|
@@ -214,7 +257,7 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
214 |
$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
|
215 |
$api = Mage::getModel('xpaymentsconnector/payment_cc');
|
216 |
|
217 |
-
$message = $
|
218 |
|
219 |
if (
|
220 |
$api::AUTH_STATUS == $data['status']
|
@@ -223,27 +266,48 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
223 |
|
224 |
// Success
|
225 |
|
226 |
-
|
227 |
-
$order->getPayment()->setTransactionId($txnId);
|
228 |
|
229 |
-
|
230 |
-
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
|
|
|
|
|
|
236 |
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
|
|
|
|
|
242 |
|
243 |
-
|
244 |
-
|
|
|
|
|
|
|
245 |
|
246 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
|
248 |
// Failure
|
249 |
|
@@ -251,13 +315,10 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
251 |
|
252 |
$state = $status = $order::STATE_CANCELED;
|
253 |
|
254 |
-
// Save error message
|
255 |
-
$helper->
|
256 |
-
|
257 |
-
|
258 |
-
'xpc_message' => $message,
|
259 |
-
)
|
260 |
-
);
|
261 |
|
262 |
$quote->setIsActive(true)->save();
|
263 |
}
|
@@ -293,25 +354,42 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
293 |
{
|
294 |
$helper = Mage::helper('xpaymentsconnector');
|
295 |
|
296 |
-
$response = array(
|
297 |
-
'status' => 'cart-changed',
|
298 |
-
);
|
299 |
-
|
300 |
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
301 |
|
302 |
-
|
303 |
-
$refId = $helper->funcPlaceOrder($quote);
|
304 |
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
$preparedCart = $helper->prepareCart($quote, $refId);
|
309 |
|
310 |
-
|
311 |
-
|
312 |
-
'
|
313 |
);
|
314 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
}
|
316 |
|
317 |
return $response;
|
@@ -365,8 +443,7 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
365 |
|
366 |
// Check IP addresses
|
367 |
if (!$this->checkIpAdress()) {
|
368 |
-
|
369 |
-
return;
|
370 |
}
|
371 |
|
372 |
$helper = Mage::helper('xpaymentsconnector');
|
@@ -413,6 +490,9 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
413 |
// Save used credit card
|
414 |
$this->processMaskedCardData($data, $request['txnId']);
|
415 |
|
|
|
|
|
|
|
416 |
// Change order status according to the X-Payments payment status
|
417 |
$this->processPaymentStatus($data, $request['txnId']);
|
418 |
|
@@ -609,9 +689,7 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
609 |
*/
|
610 |
private function processSaveAddresses(Mage_Sales_Model_Quote $quote)
|
611 |
{
|
612 |
-
|
613 |
-
|
614 |
-
if (!empty($data['address_saved'])) {
|
615 |
// Address already saved during customer registration
|
616 |
return;
|
617 |
}
|
@@ -645,25 +723,15 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
645 |
$session->setLastQuoteId($quoteId)->setLastSuccessQuoteId($quoteId);
|
646 |
$session->setLastOrderId($order->getId())->setLastRealOrderId($order->getIncrementId());
|
647 |
|
648 |
-
|
649 |
-
$order->getStatus() == Mage_Sales_Model_Order::STATE_PROCESSING
|
650 |
-
&& $order->canInvoice()
|
651 |
-
) {
|
652 |
-
|
653 |
-
// Auto create invoice for the charged payment
|
654 |
-
|
655 |
-
$invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
|
656 |
-
$invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
|
657 |
|
658 |
-
|
659 |
-
|
660 |
-
$transaction = Mage::getModel('core/resource_transaction')
|
661 |
-
->addObject($invoice)
|
662 |
-
->addObject($invoice->getOrder());
|
663 |
-
|
664 |
-
$transaction->save();
|
665 |
}
|
666 |
|
|
|
|
|
|
|
667 |
// Save addresses in the adress book if necessary
|
668 |
$this->processSaveAddresses($quote);
|
669 |
|
@@ -683,11 +751,11 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
683 |
$session = $this->getOnePage()->getCheckout();
|
684 |
$helper = Mage::helper('xpaymentsconnector');
|
685 |
|
686 |
-
$
|
687 |
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
|
692 |
$session->clearHelperData();
|
693 |
|
@@ -710,11 +778,9 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
710 |
{
|
711 |
$helper = Mage::helper('xpaymentsconnector');
|
712 |
|
713 |
-
$
|
714 |
|
715 |
-
if (
|
716 |
-
$message = $data['xpc_message'];
|
717 |
-
} else {
|
718 |
$message = 'Order was lost';
|
719 |
}
|
720 |
|
@@ -779,10 +845,27 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
779 |
$helper = Mage::helper('xpaymentsconnector');
|
780 |
$helper->writeLog('Customer returned from X-Payments', $request);
|
781 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
782 |
try {
|
783 |
|
784 |
-
$quoteId = Mage::app()->getRequest()->getParam('quote_id');
|
785 |
-
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
786 |
$order = $helper->getOrderByTxnId($request['txnId']);
|
787 |
|
788 |
if (!$order->getId()) {
|
@@ -806,14 +889,10 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
806 |
|
807 |
$order->save();
|
808 |
|
809 |
-
// Login customer who's registered at checkout
|
810 |
-
if ($helper->isCreateNewCustomer($quote, true)) {
|
811 |
-
$customerId = $quote->getCustomer()->getId();
|
812 |
-
Mage::getSingleton('customer/session')->loginById($customerId);
|
813 |
-
}
|
814 |
-
|
815 |
} catch (Mage_Core_Exception $e) {
|
816 |
|
|
|
|
|
817 |
$this->_getCheckout()->addError($e->getMessage());
|
818 |
|
819 |
$session->setXpcRedirectUrl(Mage::getUrl('checkout/onepage/failure'));
|
@@ -879,8 +958,10 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
|
|
879 |
$helper = Mage::helper('xpaymentsconnector');
|
880 |
|
881 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
882 |
-
|
883 |
-
$
|
|
|
|
|
884 |
|
885 |
if ($helper->checkFirecheckoutModuleEnabled()) {
|
886 |
// return properly formatted {} for Firecheckout
|
79 |
$result = in_array($remoteAddr, $ips);
|
80 |
}
|
81 |
|
82 |
+
if (!$result) {
|
83 |
+
Mage::helper('xpaymentsconnector')->writeLog(
|
84 |
+
'Received callback request from unallowed IP address: ' . $remoteAddr . PHP_EOL
|
85 |
+
. 'Allowed IP\'s are: ' . Mage::getStoreConfig('xpaymentsconnector/settings/xpay_allowed_ip_addresses')
|
86 |
+
);
|
87 |
+
}
|
88 |
+
|
89 |
return $result;
|
90 |
}
|
91 |
|
99 |
*/
|
100 |
protected function saveUserCard($cardData, $customerId)
|
101 |
{
|
102 |
+
$txnId = $cardData['txnId'];
|
103 |
+
|
104 |
+
// Try to find card with already existing txnId.
|
105 |
+
// Then update it or fill the empty found entity.
|
106 |
+
$usercards = Mage::getModel('xpaymentsconnector/usercards')
|
107 |
+
->getCollection()
|
108 |
+
->addFieldToFilter('txnId', $txnId)
|
109 |
+
->getFirstItem();
|
110 |
|
111 |
$data = array(
|
112 |
'user_id' => $customerId,
|
113 |
+
'txnId' => $txnId,
|
114 |
'last_4_cc_num' => $cardData['last4'],
|
115 |
'first6' => $cardData['first6'],
|
116 |
'card_type' => $cardData['type'],
|
119 |
'usage_type' => Cdev_XPaymentsConnector_Model_Usercards::SIMPLE_CARD,
|
120 |
);
|
121 |
|
122 |
+
if ($usercards->getData('xp_card_id')) {
|
123 |
+
$data['xp_card_id'] = $usercards->getData('xp_card_id');
|
124 |
+
}
|
125 |
|
126 |
+
$usercards->setData($data)->save();
|
127 |
}
|
128 |
|
129 |
/**
|
171 |
}
|
172 |
|
173 |
/**
|
174 |
+
* Process fraud check data from the callback request
|
175 |
+
*
|
176 |
+
* @param array $data Update data
|
177 |
+
* @param string $txnId Payment reference
|
178 |
+
*
|
179 |
+
* @return void
|
180 |
*/
|
181 |
+
protected function processFraudCheckData($data, $txnId)
|
182 |
{
|
183 |
+
$helper = Mage::helper('xpaymentsconnector');
|
184 |
+
$order = $helper->getOrderByTxnId($txnId);
|
185 |
|
186 |
+
try {
|
|
|
|
|
|
|
187 |
|
188 |
+
if (
|
189 |
+
$order->getId()
|
190 |
+
&& !empty($data['fraudCheckData'])
|
191 |
+
&& is_array($data['fraudCheckData'])
|
192 |
+
) {
|
193 |
|
194 |
+
foreach ($data['fraudCheckData'] as $fraudCheckData) {
|
195 |
+
|
196 |
+
$model = Mage::getModel('xpaymentsconnector/fraudcheckdata')
|
197 |
+
->getCollection()
|
198 |
+
->addFieldToFilter('order_id', $order->getId())
|
199 |
+
->addFieldToFilter('code', $fraudCheckData['code'])
|
200 |
+
->getFirstItem();
|
201 |
+
|
202 |
+
$modelData = array(
|
203 |
+
'order_id' => $order->getId(),
|
204 |
+
'code' => $fraudCheckData['code'],
|
205 |
+
'service' => $fraudCheckData['service'],
|
206 |
+
'result' => $fraudCheckData['result'],
|
207 |
+
'status' => $fraudCheckData['status'],
|
208 |
+
'score' => isset($fraudCheckData['score']) ? $fraudCheckData['score'] : 0,
|
209 |
+
'message' => isset($fraudCheckData['message']) ? $fraudCheckData['message'] : '',
|
210 |
+
'transaction_id' => isset($fraudCheckData['transactionId']) ? $fraudCheckData['transactionId'] : '',
|
211 |
+
'url' => isset($fraudCheckData['url']) ? $fraudCheckData['url'] : '',
|
212 |
+
'errors' => isset($fraudCheckData['errors']) ? serialize($fraudCheckData['errors']) : '',
|
213 |
+
'warnings' => isset($fraudCheckData['warnings']) ? serialize($fraudCheckData['warnings']) : '',
|
214 |
+
'rules' => isset($fraudCheckData['rules']) ? serialize($fraudCheckData['rules']) : '',
|
215 |
+
'data' => isset($fraudCheckData['data']) ? serialize($fraudCheckData['data']) : '',
|
216 |
+
);
|
217 |
+
|
218 |
+
if ($model->getData('data_id')) {
|
219 |
+
$modelData['data_id'] = $model->getData('data_id');
|
220 |
+
}
|
221 |
|
222 |
+
$model->setData($modelData)->save();
|
223 |
+
}
|
|
|
224 |
}
|
|
|
|
|
|
|
225 |
|
226 |
+
} catch (Exception $e) {
|
227 |
+
$helper->writeLog('Error while saving fraud check data: ' . $e->getMessage(), $e->getTraceAsString());
|
228 |
+
}
|
229 |
}
|
230 |
|
231 |
/**
|
246 |
!$order->getId()
|
247 |
|| empty($data['status'])
|
248 |
) {
|
249 |
+
|
250 |
+
$helper->writeLog('Order not found for ' . $txnId);
|
251 |
+
|
252 |
return;
|
253 |
}
|
254 |
|
257 |
$quote = Mage::getModel('sales/quote')->load($order->getQuoteId());
|
258 |
$api = Mage::getModel('xpaymentsconnector/payment_cc');
|
259 |
|
260 |
+
$message = $helper->getResultMessage($data);
|
261 |
|
262 |
if (
|
263 |
$api::AUTH_STATUS == $data['status']
|
266 |
|
267 |
// Success
|
268 |
|
269 |
+
try {
|
|
|
270 |
|
271 |
+
// Set X-Payments payment reference
|
272 |
+
$order->getPayment()->setTransactionId($txnId);
|
273 |
+
|
274 |
+
// Set AVS. Something wrong actually. Need to add cardValidation
|
275 |
+
if (
|
276 |
+
isset($data['advinfo'])
|
277 |
+
&& isset($data['advinfo']['AVS'])
|
278 |
+
) {
|
279 |
+
$order->getPayment()->setCcAvsStatus($data['advinfo']['AVS']);
|
280 |
+
}
|
281 |
|
282 |
+
// Set status
|
283 |
+
$status = $api::AUTH_STATUS == $data['status']
|
284 |
+
? Cdev_XPaymentsConnector_Helper_Data::STATUS_AUTHORIZED
|
285 |
+
: Cdev_XPaymentsConnector_Helper_Data::STATUS_CHARGED;
|
286 |
|
287 |
+
// Set state
|
288 |
+
$state = Mage_Sales_Model_Order::STATE_PROCESSING;
|
289 |
|
290 |
+
$recurringProfile = $helper->getOrderRecurringProfile($order);
|
291 |
+
|
292 |
+
if ($recurringProfile) {
|
293 |
+
$recurringProfile->setState(Mage_Sales_Model_Recurring_Profile::STATE_ACTIVE)->save();
|
294 |
+
}
|
295 |
|
296 |
+
} catch (Exception $e) {
|
297 |
+
|
298 |
+
// Something wrong has happened.
|
299 |
+
// Even if the payment is successfull, try to finalize the order correctly with failed status
|
300 |
+
$helper->writeLog('Exception while processing successful payment', $e->getMessage());
|
301 |
+
$data['status'] = $api::DECLINED_STATUS;
|
302 |
+
|
303 |
+
$message = $this->__(
|
304 |
+
'Gateway reported about the successfull transaction, but the store cannot complete the order. Original response was: %s',
|
305 |
+
$message
|
306 |
+
);
|
307 |
+
}
|
308 |
+
}
|
309 |
+
|
310 |
+
if ($api::DECLINED_STATUS == $data['status']) {
|
311 |
|
312 |
// Failure
|
313 |
|
315 |
|
316 |
$state = $status = $order::STATE_CANCELED;
|
317 |
|
318 |
+
// Save error message for quote
|
319 |
+
$helper->getQuoteXpcData($quote)
|
320 |
+
->setData('xpc_message', $message)
|
321 |
+
->save();
|
|
|
|
|
|
|
322 |
|
323 |
$quote->setIsActive(true)->save();
|
324 |
}
|
354 |
{
|
355 |
$helper = Mage::helper('xpaymentsconnector');
|
356 |
|
|
|
|
|
|
|
|
|
357 |
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
358 |
|
359 |
+
if ($helper->getRecurringQuoteItem($quote)) {
|
|
|
360 |
|
361 |
+
// Place order with recurring profile.
|
362 |
+
// After that checking for nominal item is not possible.
|
363 |
+
$refId = $helper->funcPlaceOrder($quote);
|
|
|
364 |
|
365 |
+
// Send nominal items "as is"
|
366 |
+
$response = array(
|
367 |
+
'status' => 'cart-not-changed',
|
368 |
);
|
369 |
|
370 |
+
} else {
|
371 |
+
|
372 |
+
// Place regular order.
|
373 |
+
$refId = $helper->funcPlaceOrder($quote);
|
374 |
+
|
375 |
+
if ($refId) {
|
376 |
+
|
377 |
+
// Cart data to update payment
|
378 |
+
$preparedCart = $helper->prepareCart($quote, $refId);
|
379 |
+
|
380 |
+
$response = array(
|
381 |
+
'status' => 'cart-changed',
|
382 |
+
'ref_id' => $refId,
|
383 |
+
'cart' => $preparedCart,
|
384 |
+
);
|
385 |
+
|
386 |
+
} else {
|
387 |
+
|
388 |
+
// This will decline payment
|
389 |
+
$response = array(
|
390 |
+
'status' => 'cart-changed',
|
391 |
+
);
|
392 |
+
}
|
393 |
}
|
394 |
|
395 |
return $response;
|
443 |
|
444 |
// Check IP addresses
|
445 |
if (!$this->checkIpAdress()) {
|
446 |
+
exit;
|
|
|
447 |
}
|
448 |
|
449 |
$helper = Mage::helper('xpaymentsconnector');
|
490 |
// Save used credit card
|
491 |
$this->processMaskedCardData($data, $request['txnId']);
|
492 |
|
493 |
+
// Process fraud check data
|
494 |
+
$this->processFraudCheckData($data, $request['txnId']);
|
495 |
+
|
496 |
// Change order status according to the X-Payments payment status
|
497 |
$this->processPaymentStatus($data, $request['txnId']);
|
498 |
|
689 |
*/
|
690 |
private function processSaveAddresses(Mage_Sales_Model_Quote $quote)
|
691 |
{
|
692 |
+
if (Mage::helper('xpaymentsconnector')->getQuoteXpcData($quote)->getData('address_saved')) {
|
|
|
|
|
693 |
// Address already saved during customer registration
|
694 |
return;
|
695 |
}
|
723 |
$session->setLastQuoteId($quoteId)->setLastSuccessQuoteId($quoteId);
|
724 |
$session->setLastOrderId($order->getId())->setLastRealOrderId($order->getIncrementId());
|
725 |
|
726 |
+
$profile = Mage::helper('xpaymentsconnector')->getOrderRecurringProfile($order);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
727 |
|
728 |
+
if ($profile) {
|
729 |
+
$session->setLastRecurringProfileIds(array($profile->getProfileId()));
|
|
|
|
|
|
|
|
|
|
|
730 |
}
|
731 |
|
732 |
+
// Auto create invoice if necessary
|
733 |
+
Mage::helper('xpaymentsconnector')->processCreateInvoice($order);
|
734 |
+
|
735 |
// Save addresses in the adress book if necessary
|
736 |
$this->processSaveAddresses($quote);
|
737 |
|
751 |
$session = $this->getOnePage()->getCheckout();
|
752 |
$helper = Mage::helper('xpaymentsconnector');
|
753 |
|
754 |
+
$message = $helper->getQuoteXpcData($quote)->getData('xpc_message');
|
755 |
|
756 |
+
if (!$message) {
|
757 |
+
$message = 'Order declined. Try again';
|
758 |
+
}
|
759 |
|
760 |
$session->clearHelperData();
|
761 |
|
778 |
{
|
779 |
$helper = Mage::helper('xpaymentsconnector');
|
780 |
|
781 |
+
$message = $helper->getQuoteXpcData($quote)->getData('xpc_message');
|
782 |
|
783 |
+
if (!$message) {
|
|
|
|
|
784 |
$message = 'Order was lost';
|
785 |
}
|
786 |
|
845 |
$helper = Mage::helper('xpaymentsconnector');
|
846 |
$helper->writeLog('Customer returned from X-Payments', $request);
|
847 |
|
848 |
+
$quoteId = Mage::app()->getRequest()->getParam('quote_id');
|
849 |
+
$quote = Mage::getModel('sales/quote')->load($quoteId);
|
850 |
+
|
851 |
+
try {
|
852 |
+
|
853 |
+
// Log in customer who's registered at checkout
|
854 |
+
if ($helper->isCreateNewCustomer($quote, true)) {
|
855 |
+
|
856 |
+
$customerId = $quote->getCustomer()->getId();
|
857 |
+
$result = Mage::getSingleton('customer/session')->loginById($customerId);
|
858 |
+
|
859 |
+
$helper->writeLog('Log in customer who\'s registered at checkout: user #' . $customerId, $result);
|
860 |
+
}
|
861 |
+
|
862 |
+
} catch (Exception $e) {
|
863 |
+
|
864 |
+
$helper->writeLog('Unable to log in user registered at checkout. ' . $e->getMessage(), $e->getTraceAsString());
|
865 |
+
}
|
866 |
+
|
867 |
try {
|
868 |
|
|
|
|
|
869 |
$order = $helper->getOrderByTxnId($request['txnId']);
|
870 |
|
871 |
if (!$order->getId()) {
|
889 |
|
890 |
$order->save();
|
891 |
|
|
|
|
|
|
|
|
|
|
|
|
|
892 |
} catch (Mage_Core_Exception $e) {
|
893 |
|
894 |
+
$helper->writeLog($e->getMessage(), $e->getTraceAsString());
|
895 |
+
|
896 |
$this->_getCheckout()->addError($e->getMessage());
|
897 |
|
898 |
$session->setXpcRedirectUrl(Mage::getUrl('checkout/onepage/failure'));
|
958 |
$helper = Mage::helper('xpaymentsconnector');
|
959 |
|
960 |
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
961 |
+
|
962 |
+
$helper->getQuoteXpcData($quote)
|
963 |
+
->setData('checkout_data', serialize($request->getPost()))
|
964 |
+
->save();
|
965 |
|
966 |
if ($helper->checkFirecheckoutModuleEnabled()) {
|
967 |
// return properly formatted {} for Firecheckout
|
@@ -25,9 +25,9 @@
|
|
25 |
<system>
|
26 |
<children>
|
27 |
<control translate="title" module="xpaymentsconnector">
|
28 |
-
<title>X-Payments
|
29 |
<sort_order>300</sort_order>
|
30 |
-
<action>
|
31 |
</control>
|
32 |
</children>
|
33 |
</system>
|
@@ -39,12 +39,12 @@
|
|
39 |
<system>
|
40 |
<children>
|
41 |
<control>
|
42 |
-
<title>X-Payments
|
43 |
</control>
|
44 |
<config>
|
45 |
<children>
|
46 |
-
<xpaymentsconnector>
|
47 |
-
<title>X-Payments
|
48 |
</xpaymentsconnector>
|
49 |
</children>
|
50 |
</config>
|
25 |
<system>
|
26 |
<children>
|
27 |
<control translate="title" module="xpaymentsconnector">
|
28 |
+
<title>X-Payments Connector</title>
|
29 |
<sort_order>300</sort_order>
|
30 |
+
<action>adminhtml/settings_xpc/index</action>
|
31 |
</control>
|
32 |
</children>
|
33 |
</system>
|
39 |
<system>
|
40 |
<children>
|
41 |
<control>
|
42 |
+
<title>X-Payments Connector</title>
|
43 |
</control>
|
44 |
<config>
|
45 |
<children>
|
46 |
+
<xpaymentsconnector translate="title" module="xpaymentsconnector">
|
47 |
+
<title>X-Payments Connector Settings</title>
|
48 |
</xpaymentsconnector>
|
49 |
</children>
|
50 |
</config>
|
@@ -1,4 +1,5 @@
|
|
1 |
<?xml version="1.0"?>
|
|
|
2 |
<!--
|
3 |
/**
|
4 |
* Magento
|
@@ -23,11 +24,11 @@
|
|
23 |
<config>
|
24 |
<modules>
|
25 |
<Cdev_XPaymentsConnector>
|
26 |
-
<version>1.1.
|
27 |
</Cdev_XPaymentsConnector>
|
28 |
</modules>
|
29 |
-
|
30 |
-
|
31 |
<sales>
|
32 |
<rewrite>
|
33 |
<recurring_profile>Cdev_XPaymentsConnector_Model_Sales_Recurring_Profile</recurring_profile>
|
@@ -40,10 +41,10 @@
|
|
40 |
<recurring_profile>Cdev_XPaymentsConnector_Model_Payment_Recurring_Profile</recurring_profile>
|
41 |
</rewrite>
|
42 |
</payment>
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
<xpaymentsconnector_mysql4>
|
48 |
<class>Cdev_XPaymentsConnector_Model_Mysql4</class>
|
49 |
<entities>
|
@@ -53,34 +54,40 @@
|
|
53 |
<usercards>
|
54 |
<table>xpayment_user_cards</table>
|
55 |
</usercards>
|
|
|
|
|
|
|
|
|
|
|
|
|
56 |
</entities>
|
57 |
</xpaymentsconnector_mysql4>
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
<fieldsets>
|
85 |
<sales_convert_quote>
|
86 |
<xp_card_data>
|
@@ -89,13 +96,8 @@
|
|
89 |
</sales_convert_quote>
|
90 |
</fieldsets>
|
91 |
<blocks>
|
92 |
-
<customer>
|
93 |
-
<rewrite>
|
94 |
-
<account_navigation>Cdev_XPaymentsConnector_Block__Customer_Account_Navigation</account_navigation>
|
95 |
-
</rewrite>
|
96 |
-
</customer>
|
97 |
<xpaymentsconnector>
|
98 |
-
|
99 |
</xpaymentsconnector>
|
100 |
<checkout>
|
101 |
<rewrite>
|
@@ -108,7 +110,7 @@
|
|
108 |
<sales_order_view>Cdev_XPaymentsConnector_Block_Adminhtml_Sales_Order_View</sales_order_view>
|
109 |
</rewrite>
|
110 |
</adminhtml>
|
111 |
-
|
112 |
<events>
|
113 |
<sales_order_payment_cancel_invoice>
|
114 |
<observers>
|
@@ -326,48 +328,28 @@
|
|
326 |
</nominal_totals>
|
327 |
</quote>
|
328 |
</sales>
|
329 |
-
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
<events>
|
341 |
</events>
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
<layout>
|
352 |
-
<updates>
|
353 |
-
<xpaymentsconnector>
|
354 |
-
<file>xpaymentsconnector.xml</file>
|
355 |
-
</xpaymentsconnector>
|
356 |
-
</updates>
|
357 |
-
</layout>
|
358 |
-
</frontend>
|
359 |
-
<admin>
|
360 |
-
<routers>
|
361 |
-
<xpaymentsconnector>
|
362 |
-
<use>admin</use>
|
363 |
-
<args>
|
364 |
-
<module>Cdev_XPaymentsConnector</module>
|
365 |
-
<frontName>xpaymentsconnector</frontName>
|
366 |
-
</args>
|
367 |
-
</xpaymentsconnector>
|
368 |
-
</routers>
|
369 |
-
</admin>
|
370 |
-
<adminhtml>
|
371 |
<layout>
|
372 |
<updates>
|
373 |
<xpaymentsconnector>
|
@@ -375,26 +357,46 @@
|
|
375 |
</xpaymentsconnector>
|
376 |
</updates>
|
377 |
</layout>
|
378 |
-
|
379 |
-
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
386 |
-
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
-
|
393 |
-
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
398 |
<savedcards>
|
399 |
<active>0</active>
|
400 |
<model>xpaymentsconnector/payment_savedcards</model>
|
@@ -410,15 +412,15 @@
|
|
410 |
<allowspecific>0</allowspecific>
|
411 |
<title>Prepaid Payments (X-Payments)</title>
|
412 |
</prepaidpayments>-->
|
413 |
-
|
414 |
-
|
415 |
-
|
416 |
-
|
417 |
<xpay_minimum_payment_recurring_amount>0.5</xpay_minimum_payment_recurring_amount>
|
418 |
<xpay_currency>USD</xpay_currency>
|
419 |
-
|
420 |
-
|
421 |
-
|
422 |
<admin>
|
423 |
<routers>
|
424 |
<adminhtml>
|
1 |
<?xml version="1.0"?>
|
2 |
+
<!-- vim: set ts=4 sw=4 sts=4 et: -->
|
3 |
<!--
|
4 |
/**
|
5 |
* Magento
|
24 |
<config>
|
25 |
<modules>
|
26 |
<Cdev_XPaymentsConnector>
|
27 |
+
<version>1.1.3</version>
|
28 |
</Cdev_XPaymentsConnector>
|
29 |
</modules>
|
30 |
+
<global>
|
31 |
+
<models>
|
32 |
<sales>
|
33 |
<rewrite>
|
34 |
<recurring_profile>Cdev_XPaymentsConnector_Model_Sales_Recurring_Profile</recurring_profile>
|
41 |
<recurring_profile>Cdev_XPaymentsConnector_Model_Payment_Recurring_Profile</recurring_profile>
|
42 |
</rewrite>
|
43 |
</payment>
|
44 |
+
<xpaymentsconnector>
|
45 |
+
<class>Cdev_XPaymentsConnector_Model</class>
|
46 |
+
<resourceModel>xpaymentsconnector_mysql4</resourceModel>
|
47 |
+
</xpaymentsconnector>
|
48 |
<xpaymentsconnector_mysql4>
|
49 |
<class>Cdev_XPaymentsConnector_Model_Mysql4</class>
|
50 |
<entities>
|
54 |
<usercards>
|
55 |
<table>xpayment_user_cards</table>
|
56 |
</usercards>
|
57 |
+
<quote_xpcdata>
|
58 |
+
<table>xpayment_quote_xpcdata</table>
|
59 |
+
</quote_xpcdata>
|
60 |
+
<fraudcheckdata>
|
61 |
+
<table>xpayment_fraud_check_data</table>
|
62 |
+
</fraudcheckdata>
|
63 |
</entities>
|
64 |
</xpaymentsconnector_mysql4>
|
65 |
+
</models>
|
66 |
+
<helpers>
|
67 |
+
<xpaymentsconnector>
|
68 |
+
<class>Cdev_XPaymentsConnector_Helper</class>
|
69 |
+
</xpaymentsconnector>
|
70 |
+
</helpers>
|
71 |
+
<resources>
|
72 |
+
<xpaymentsconnector_setup>
|
73 |
+
<setup>
|
74 |
+
<module>Cdev_XPaymentsConnector</module>
|
75 |
+
</setup>
|
76 |
+
<connection>
|
77 |
+
<use>core_setup</use>
|
78 |
+
</connection>
|
79 |
+
</xpaymentsconnector_setup>
|
80 |
+
<xpaymentsconnector_write>
|
81 |
+
<connection>
|
82 |
+
<use>core_write</use>
|
83 |
+
</connection>
|
84 |
+
</xpaymentsconnector_write>
|
85 |
+
<xpaymentsconnector_read>
|
86 |
+
<connection>
|
87 |
+
<use>core_read</use>
|
88 |
+
</connection>
|
89 |
+
</xpaymentsconnector_read>
|
90 |
+
</resources>
|
91 |
<fieldsets>
|
92 |
<sales_convert_quote>
|
93 |
<xp_card_data>
|
96 |
</sales_convert_quote>
|
97 |
</fieldsets>
|
98 |
<blocks>
|
|
|
|
|
|
|
|
|
|
|
99 |
<xpaymentsconnector>
|
100 |
+
<class>Cdev_XPaymentsConnector_Block</class>
|
101 |
</xpaymentsconnector>
|
102 |
<checkout>
|
103 |
<rewrite>
|
110 |
<sales_order_view>Cdev_XPaymentsConnector_Block_Adminhtml_Sales_Order_View</sales_order_view>
|
111 |
</rewrite>
|
112 |
</adminhtml>
|
113 |
+
</blocks>
|
114 |
<events>
|
115 |
<sales_order_payment_cancel_invoice>
|
116 |
<observers>
|
328 |
</nominal_totals>
|
329 |
</quote>
|
330 |
</sales>
|
331 |
+
</global>
|
332 |
+
<frontend>
|
333 |
+
<routers>
|
334 |
+
<xpaymentsconnector>
|
335 |
+
<use>standard</use>
|
336 |
+
<args>
|
337 |
+
<module>Cdev_XPaymentsConnector</module>
|
338 |
+
<frontName>xpaymentsconnector</frontName>
|
339 |
+
</args>
|
340 |
+
</xpaymentsconnector>
|
341 |
+
</routers>
|
342 |
<events>
|
343 |
</events>
|
344 |
+
<translate>
|
345 |
+
<modules>
|
346 |
+
<Cdev_XPaymentsConnector>
|
347 |
+
<files>
|
348 |
+
<default>Cdev_XPaymentsConnector.csv</default>
|
349 |
+
</files>
|
350 |
+
</Cdev_XPaymentsConnector>
|
351 |
+
</modules>
|
352 |
+
</translate>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
<layout>
|
354 |
<updates>
|
355 |
<xpaymentsconnector>
|
357 |
</xpaymentsconnector>
|
358 |
</updates>
|
359 |
</layout>
|
360 |
+
</frontend>
|
361 |
+
<admin>
|
362 |
+
<routers>
|
363 |
+
<xpaymentsconnector>
|
364 |
+
<use>admin</use>
|
365 |
+
<args>
|
366 |
+
<module>Cdev_XPaymentsConnector</module>
|
367 |
+
<frontName>xpaymentsconnector</frontName>
|
368 |
+
</args>
|
369 |
+
</xpaymentsconnector>
|
370 |
+
</routers>
|
371 |
+
</admin>
|
372 |
+
<adminhtml>
|
373 |
+
<layout>
|
374 |
+
<updates>
|
375 |
+
<xpaymentsconnector>
|
376 |
+
<file>xpaymentsconnector.xml</file>
|
377 |
+
</xpaymentsconnector>
|
378 |
+
</updates>
|
379 |
+
</layout>
|
380 |
+
<translate>
|
381 |
+
<modules>
|
382 |
+
<Cdev_XPaymentsConnector>
|
383 |
+
<files>
|
384 |
+
<default>Cdev_XPaymentsConnector.csv</default>
|
385 |
+
</files>
|
386 |
+
</Cdev_XPaymentsConnector>
|
387 |
+
</modules>
|
388 |
+
</translate>
|
389 |
+
</adminhtml>
|
390 |
+
<default>
|
391 |
+
<payment>
|
392 |
+
<xpayments>
|
393 |
+
<active>0</active>
|
394 |
+
<model>xpaymentsconnector/payment_cc</model>
|
395 |
+
<order_status>1</order_status>
|
396 |
+
<allowspecific>0</allowspecific>
|
397 |
+
<title>Credit Card (X-Payments)</title>
|
398 |
+
<use_iframe>1</use_iframe>
|
399 |
+
</xpayments>
|
400 |
<savedcards>
|
401 |
<active>0</active>
|
402 |
<model>xpaymentsconnector/payment_savedcards</model>
|
412 |
<allowspecific>0</allowspecific>
|
413 |
<title>Prepaid Payments (X-Payments)</title>
|
414 |
</prepaidpayments>-->
|
415 |
+
</payment>
|
416 |
+
<xpaymentsconnector>
|
417 |
+
<settings>
|
418 |
+
<activationstatus>0</activationstatus>
|
419 |
<xpay_minimum_payment_recurring_amount>0.5</xpay_minimum_payment_recurring_amount>
|
420 |
<xpay_currency>USD</xpay_currency>
|
421 |
+
</settings>
|
422 |
+
</xpaymentsconnector>
|
423 |
+
</default>
|
424 |
<admin>
|
425 |
<routers>
|
426 |
<adminhtml>
|
@@ -223,8 +223,8 @@
|
|
223 |
<show_in_store>0</show_in_store>
|
224 |
</xpay_conf_bundle>
|
225 |
<xpay_allowed_ip_addresses translate="label,comment">
|
226 |
-
<label>
|
227 |
-
|
228 |
<frontend_type>text</frontend_type>
|
229 |
<sort_order>60</sort_order>
|
230 |
<show_in_default>1</show_in_default>
|
@@ -249,6 +249,13 @@
|
|
249 |
<show_in_website>0</show_in_website>
|
250 |
<show_in_store>0</show_in_store>
|
251 |
</xpay_minimum_payment_recurring_amount>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
252 |
|
253 |
</fields>
|
254 |
<label>X-Payments Connector Settings</label>
|
223 |
<show_in_store>0</show_in_store>
|
224 |
</xpay_conf_bundle>
|
225 |
<xpay_allowed_ip_addresses translate="label,comment">
|
226 |
+
<label>Allowed X-Payments IP addresses</label>
|
227 |
+
<comment><![CDATA[X-Payments sends callback requests to the store from specific IP addresses. To secure the data transfer and avoid fraudulent requests, specify these IP addresses here as a comma-separated list. Usually it is IP address of the server where X-Payments is installed.]]></comment>
|
228 |
<frontend_type>text</frontend_type>
|
229 |
<sort_order>60</sort_order>
|
230 |
<show_in_default>1</show_in_default>
|
249 |
<show_in_website>0</show_in_website>
|
250 |
<show_in_store>0</show_in_store>
|
251 |
</xpay_minimum_payment_recurring_amount>
|
252 |
+
<xpay_api_version>
|
253 |
+
<label>API version</label>
|
254 |
+
<sort_order>90</sort_order>
|
255 |
+
<show_in_default>0</show_in_default>
|
256 |
+
<show_in_website>0</show_in_website>
|
257 |
+
<show_in_store>0</show_in_store>
|
258 |
+
</xpay_api_version>
|
259 |
|
260 |
</fields>
|
261 |
<label>X-Payments Connector Settings</label>
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Used to store saved customer payment cards
|
25 |
+
*/
|
26 |
+
|
27 |
+
$installer = $this;
|
28 |
+
$installer->startSetup();
|
29 |
+
|
30 |
+
$installer->run("
|
31 |
+
CREATE TABLE {$this->getTable('xpayment_quote_xpcdata')} (
|
32 |
+
`data_id` int(11) unsigned NOT NULL auto_increment,
|
33 |
+
`quote_id` int(11) NOT NULL default 0,
|
34 |
+
`payment_method_code` varchar(255) NOT NULL,
|
35 |
+
`txn_id` varchar(255) NOT NULL,
|
36 |
+
`token` varchar(255) NOT NULL,
|
37 |
+
`address_saved` BOOL default false,
|
38 |
+
`recurring_order_id` int(11) NOT NULL default 0,
|
39 |
+
`recurring_profile_id` int(11) NOT NULL default 0,
|
40 |
+
`xpc_message` TEXT,
|
41 |
+
`checkout_data` TEXT,
|
42 |
+
PRIMARY KEY (`data_id`)
|
43 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
44 |
+
|
45 |
+
");
|
46 |
+
|
47 |
+
$installer->run("
|
48 |
+
CREATE TABLE {$this->getTable('xpayment_fraud_check_data')} (
|
49 |
+
`data_id` int(11) unsigned NOT NULL auto_increment,
|
50 |
+
`order_id` int(11) NOT NULL default 0,
|
51 |
+
`code` varchar(255) NOT NULL,
|
52 |
+
`service` varchar(255) NOT NULL,
|
53 |
+
`result` int(11) NOT NULL,
|
54 |
+
`status` varchar(255) NOT NULL,
|
55 |
+
`score` int(11) NOT NULL,
|
56 |
+
`message` varchar(255) NOT NULL,
|
57 |
+
`transaction_id` varchar(255) NOT NULL,
|
58 |
+
`url` varchar(255) NOT NULL,
|
59 |
+
`errors` varchar(255) NOT NULL,
|
60 |
+
`warnings` varchar(255) NOT NULL,
|
61 |
+
`rules` varchar(255) NOT NULL,
|
62 |
+
`data` varchar(255) NOT NULL,
|
63 |
+
PRIMARY KEY (data_id)
|
64 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
65 |
+
|
66 |
+
");
|
67 |
+
|
68 |
+
$installer->endSetup();
|
@@ -93,13 +93,13 @@
|
|
93 |
</reference>
|
94 |
</adminhtml_system_config_edit>
|
95 |
|
96 |
-
<
|
97 |
<reference name="head">
|
98 |
<action method="addItem">
|
99 |
<type>js_css</type>
|
100 |
-
<name>xpayment/
|
101 |
</action>
|
102 |
</reference>
|
103 |
-
</
|
104 |
|
105 |
</layout>
|
93 |
</reference>
|
94 |
</adminhtml_system_config_edit>
|
95 |
|
96 |
+
<adminhtml_settings_xpc_index>
|
97 |
<reference name="head">
|
98 |
<action method="addItem">
|
99 |
<type>js_css</type>
|
100 |
+
<name>xpayment/settings-xpc.css</name>
|
101 |
</action>
|
102 |
</reference>
|
103 |
+
</adminhtml_settings_xpc_index>
|
104 |
|
105 |
</layout>
|
@@ -1,212 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Magento
|
4 |
-
*
|
5 |
-
* NOTICE OF LICENSE
|
6 |
-
*
|
7 |
-
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
-
* that is bundled with this package in the file LICENSE.txt.
|
9 |
-
* It is also available through the world-wide-web at this URL:
|
10 |
-
* http://opensource.org/licenses/osl-3.0.php
|
11 |
-
* If you did not receive a copy of the license and are unable to
|
12 |
-
* obtain it through the world-wide-web, please send an email
|
13 |
-
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
-
*
|
15 |
-
* @author Qualiteam Software info@qtmsoft.com
|
16 |
-
* @category Cdev
|
17 |
-
* @package Cdev_XPaymentsConnector
|
18 |
-
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
19 |
-
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
20 |
-
*/
|
21 |
-
?>
|
22 |
-
<?php
|
23 |
-
/**
|
24 |
-
* @see Cdev_XPaymentsConnector_Block_Control
|
25 |
-
*/
|
26 |
-
?>
|
27 |
-
<?php if ($this->getRequiremenetsErrors()) { ?>
|
28 |
-
|
29 |
-
<h4><?php echo $this->__('Failed to meet environment requirements'); ?></h4>
|
30 |
-
<ul>
|
31 |
-
<?php foreach ($this->getRequiremenetsErrors() as $err) { ?>
|
32 |
-
<li class="error"><?php echo $this->__($err); ?></li>
|
33 |
-
<?php } ?>
|
34 |
-
</ul>
|
35 |
-
<br/>
|
36 |
-
<?php } ?>
|
37 |
-
|
38 |
-
<div class="xpayment-info">
|
39 |
-
<div class="content-header">
|
40 |
-
<table cellspacing="0">
|
41 |
-
<tbody>
|
42 |
-
<tr>
|
43 |
-
<td>
|
44 |
-
<h3>
|
45 |
-
<?php echo $this->__('X-Payments connector'); ?>
|
46 |
-
</h3>
|
47 |
-
</td>
|
48 |
-
</tr>
|
49 |
-
</tbody>
|
50 |
-
</table>
|
51 |
-
</div>
|
52 |
-
|
53 |
-
<?php if ($this->getConfigurationErrors()) { ?>
|
54 |
-
<p><strong>
|
55 |
-
<h4 class="sub-heading">
|
56 |
-
<?php echo $this->__('X-Payments not configured yet. Please, check x-payment'); ?>
|
57 |
-
<a href="<?php echo $this->getUrl('adminhtml/system_config/edit/section/xpaymentsconnector/'); ?>"
|
58 |
-
target="_blank">
|
59 |
-
<strong>
|
60 |
-
<?php echo $this->__('settings') ?>
|
61 |
-
</strong>
|
62 |
-
</a>
|
63 |
-
</h4>
|
64 |
-
</strong>
|
65 |
-
</p>
|
66 |
-
|
67 |
-
<div class="payment-description">
|
68 |
-
<div class="payment-logo">
|
69 |
-
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/xpayment-logo.png'; ?>"
|
70 |
-
alt="xpayments connector"/>
|
71 |
-
</div>
|
72 |
-
<div class="description-block">
|
73 |
-
<p>
|
74 |
-
|
75 |
-
<?php
|
76 |
-
$xpDescr = "Give your customers – and yourself – peace of mind with this payment processing module "
|
77 |
-
. "that guarantees compliance with PCI security mandates, significantly reduces the risk of "
|
78 |
-
. "data breaches and ensures you won’t be hit with a fine of up to $500,000 for non-compliance. "
|
79 |
-
. "Safely and conveniently store customers credit card information to use for new orders, reorders "
|
80 |
-
. "or recurring payments.";
|
81 |
-
echo $this->__($xpDescr); ?>
|
82 |
-
</p>
|
83 |
-
</div>
|
84 |
-
</div>
|
85 |
-
|
86 |
-
<h4>
|
87 |
-
<?php echo $this->__('Connect to X-Payments in 3 easy steps:'); ?>
|
88 |
-
</h4>
|
89 |
-
<div class="payment-step">
|
90 |
-
<div class="step">
|
91 |
-
<span class="step-number">1</span>
|
92 |
-
<p><?php echo $this->__('Open your'); ?>
|
93 |
-
<a href="http://www.x-payments.com/trial-demo.html?utm_source=mage_shop&utm_medium=link&utm_campaign=mage_shop_link"
|
94 |
-
target="_blank">
|
95 |
-
<?php echo $this->__('X-Payments'); ?>
|
96 |
-
</a>
|
97 |
-
<?php echo $this->__('back-end (if you do not have it)'); ?>
|
98 |
-
</p>
|
99 |
-
<button onclick="window.open('http://www.x-payments.com/trial-demo.html?utm_source=mage_shop&utm_medium=link&utm_campaign=mage_shop_link');">
|
100 |
-
<span>
|
101 |
-
<span>
|
102 |
-
<span>
|
103 |
-
<?php echo $this->__('Start free Trial'); ?>
|
104 |
-
</span>
|
105 |
-
</span>
|
106 |
-
</span>
|
107 |
-
</button>
|
108 |
-
</div>
|
109 |
-
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/atep-arrow.png' ?>" class=" step-arrow">
|
110 |
-
<div class="step">
|
111 |
-
<span class="step-number">2</span>
|
112 |
-
|
113 |
-
<p>
|
114 |
-
<?php echo $this->__('Configure payment methods at'); ?>
|
115 |
-
<strong>
|
116 |
-
<?php echo $this->__('X-Payments'); ?>
|
117 |
-
</strong>
|
118 |
-
</p>
|
119 |
-
<a href="http://help.x-cart.com/index.php?title=X-Payments:User_manual#Online_Stores" target="_blank">
|
120 |
-
<?php echo $this->__('Read how to do that'); ?>
|
121 |
-
</a>
|
122 |
-
</div>
|
123 |
-
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/atep-arrow.png' ?>" class=" step-arrow">
|
124 |
-
<div class="step">
|
125 |
-
<span class="step-number">3</span>
|
126 |
-
<p>
|
127 |
-
<?php echo $this->__('Connect'); ?>
|
128 |
-
<strong>
|
129 |
-
<?php echo $this->__('X-Payments'); ?>
|
130 |
-
</strong>
|
131 |
-
<?php echo $this->__('with'); ?>
|
132 |
-
<strong>
|
133 |
-
<?php echo $this->__('Magento'); ?>
|
134 |
-
</strong>
|
135 |
-
</p>
|
136 |
-
<a href="https://www.youtube.com/embed/2VRR0JW23qc" target="_blank">See how to do that</a>
|
137 |
-
</div>
|
138 |
-
</div>
|
139 |
-
<?php } ?>
|
140 |
-
</div>
|
141 |
-
<?php if ($this->getConfigurationErrors()): ?>
|
142 |
-
<hr/>
|
143 |
-
<?php endif; ?>
|
144 |
-
<br/>
|
145 |
-
|
146 |
-
<h4><?php echo $this->__('Test module'); ?></h4>
|
147 |
-
|
148 |
-
<p><?php echo $this->__("To test the module settings and connection with X-Payments click the button below. If the module is configured properly, a 'Test transaction completed successfully' message will be displayed at the top of the page."); ?></p>
|
149 |
-
|
150 |
-
<form action="<?php echo $this->getUrl('xpaymentsconnector/control/test'); ?>" method="post" name="testmodule_form">
|
151 |
-
<?php echo $this->getBlockHtml('formkey'); ?>
|
152 |
-
<?php echo $this->getChildHtml('testButton'); ?>
|
153 |
-
</form>
|
154 |
-
|
155 |
-
<br/>
|
156 |
-
<br/>
|
157 |
-
|
158 |
-
<h4><?php echo $this->__('Import payment methods'); ?></h4>
|
159 |
-
|
160 |
-
<p><?php echo $this->__('To be able to use X-Payments payment methods you need to import them from X-Payments first.'); ?></p>
|
161 |
-
|
162 |
-
<?php if ($this->isMethodsRequested()) { ?>
|
163 |
-
|
164 |
-
<?php echo $this->__('The list of payment configurations imported from X-Payments'); ?>:<br/>
|
165 |
-
|
166 |
-
<div class="grid">
|
167 |
-
<table cellpadding="5" cellspacing="1">
|
168 |
-
<tr class="headings">
|
169 |
-
<th><?php echo $this->__('Payment method'); ?></th>
|
170 |
-
<th><?php echo $this->__('Payment method ID'); ?></th>
|
171 |
-
<th><?php echo $this->__('Auth'); ?></th>
|
172 |
-
</tr>
|
173 |
-
|
174 |
-
<?php foreach ($this->getPaymentMethods() as $pm) { ?>
|
175 |
-
|
176 |
-
<tr>
|
177 |
-
<td><?php echo $pm['name']; ?></td>
|
178 |
-
<td><?php echo $pm['confid']; ?></td>
|
179 |
-
<td><?php if ($pm['is_auth']) { ?><?php echo $this->__('Yes'); ?><?php } else { ?><?php echo $this->__('No'); ?><?php } ?></td>
|
180 |
-
</tr>
|
181 |
-
|
182 |
-
<?php } ?>
|
183 |
-
|
184 |
-
</table>
|
185 |
-
</div>
|
186 |
-
|
187 |
-
<form action="<?php echo $this->getUrl('xpaymentsconnector/control/clear'); ?>" method="post" name="clear_form">
|
188 |
-
<?php echo $this->getBlockHtml('formkey'); ?>
|
189 |
-
<?php echo $this->getChildHtml('clearButton'); ?>
|
190 |
-
</form>
|
191 |
-
|
192 |
-
<?php if ($this->isMethodsAlreadyImported()) { ?>
|
193 |
-
<br/>
|
194 |
-
<br/>
|
195 |
-
<p><?php echo $this->__('Warning! Importing payment configurations from X-Payments will disable the X-Payments connector payment method!'); ?></p>
|
196 |
-
<?php } ?>
|
197 |
-
|
198 |
-
<?php } ?>
|
199 |
-
|
200 |
-
<form action="<?php echo $this->getUrl('xpaymentsconnector/control/request'); ?>" method="post" name="request_form">
|
201 |
-
<?php echo $this->getBlockHtml('formkey'); ?>
|
202 |
-
<?php echo $this->getChildHtml('requestButton'); ?>
|
203 |
-
</form>
|
204 |
-
|
205 |
-
<br/>
|
206 |
-
<br/>
|
207 |
-
<h4>
|
208 |
-
<?php echo $this->__('Need help in settings of x-payments?'); ?>
|
209 |
-
<a href="http://www.x-payments.com/contact-us.html?utm_source=mage_shop&utm_medium=link&utm_campaign=mage_shop_link" target="_blank">
|
210 |
-
<?php echo $this->__('Contact us!'); ?>
|
211 |
-
</a>
|
212 |
-
</h4>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
// vim: set ts=
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
@@ -274,3 +274,96 @@
|
|
274 |
<?php else: ?>
|
275 |
<?php echo $xpaymentsOrderInfo["error_message"];?>
|
276 |
<?php endif;?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
+
// vim: set ts=2 sw=2 sts=2 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
274 |
<?php else: ?>
|
275 |
<?php echo $xpaymentsOrderInfo["error_message"];?>
|
276 |
<?php endif;?>
|
277 |
+
|
278 |
+
<?php
|
279 |
+
|
280 |
+
$fraudCheckData = Mage::getModel('xpaymentsconnector/fraudcheckdata')
|
281 |
+
->getCollection()
|
282 |
+
->addFieldToFilter('order_id', $this->getOrder()->getId());
|
283 |
+
?>
|
284 |
+
|
285 |
+
<?php foreach ($fraudCheckData as $data): ?>
|
286 |
+
<div class="entry-edit">
|
287 |
+
<div class="entry-edit-head">
|
288 |
+
<h4><?php echo $this->__($data->getData('service')); ?></h4>
|
289 |
+
</div>
|
290 |
+
<div class="fieldset">
|
291 |
+
<table cellspacing="0" class="form-list">
|
292 |
+
<tr>
|
293 |
+
<td class="label"><?php echo $this->__('Result'); ?></td>
|
294 |
+
<td class="value">
|
295 |
+
<?php if ('1' == $data->getData('result')): ?>
|
296 |
+
<strong><?php echo $this->__('Antifraud check passed'); ?></strong>
|
297 |
+
<?php elseif ('2' == $data->getData('result') && 'nofraud' == $data->getData('code')): ?>
|
298 |
+
<strong><?php echo $this->__('Being Reviewed by NoFraud'); ?></strong>
|
299 |
+
<?php elseif ('2' == $data->getData('result')): ?>
|
300 |
+
<strong><?php echo $this->__('Manual Review required'); ?></strong>
|
301 |
+
<?php elseif ('3' == $data->getData('result')): ?>
|
302 |
+
<strong><?php echo $this->__('High fraud risk detected'); ?></strong>
|
303 |
+
<?php else: ?>
|
304 |
+
<strong><?php echo $this->__('Unknown'); ?></strong>
|
305 |
+
<?php endif; ?>
|
306 |
+
</td>
|
307 |
+
</td>
|
308 |
+
<tr>
|
309 |
+
<td class="label"><?php echo $this->__('Status'); ?></td>
|
310 |
+
<td class="value"><strong><?php echo $data->getData('status'); ?></strong></td>
|
311 |
+
</td>
|
312 |
+
<?php if ($data->getData('score')): ?>
|
313 |
+
<tr>
|
314 |
+
<td class="label"><?php echo $this->__('Score'); ?></td>
|
315 |
+
<td class="value"><strong><?php echo $data->getData('score'); ?></strong></td>
|
316 |
+
</td>
|
317 |
+
<?php endif; ?>
|
318 |
+
<?php if ($data->getData('transaction_id')): ?>
|
319 |
+
<tr>
|
320 |
+
<td class="label"><?php echo $this->__('Transaction ID'); ?></td>
|
321 |
+
<td class="value">
|
322 |
+
<?php if ($data->getData('url')): ?>
|
323 |
+
<strong><a href="<?php echo $data->getData('url'); ?>" target="_blank"><?php echo $data->getData('transaction_id'); ?></a></strong>
|
324 |
+
<?php else: ?>
|
325 |
+
<strong><?php echo $data->getData('transaction_id'); ?></strong>
|
326 |
+
<?php endif; ?>
|
327 |
+
</td>
|
328 |
+
</td>
|
329 |
+
<?php endif; ?>
|
330 |
+
<?php if ($data->getData('rules')): ?>
|
331 |
+
<tr>
|
332 |
+
<td class="label"><?php echo $this->__('Triggered rules'); ?></td>
|
333 |
+
<td class="value">
|
334 |
+
<ul>
|
335 |
+
<?php foreach ($data->getRulesList() as $rule): ?>
|
336 |
+
<li><?php echo $rule; ?></li>
|
337 |
+
<?php endforeach; ?>
|
338 |
+
</ul>
|
339 |
+
</td>
|
340 |
+
</td>
|
341 |
+
<?php endif; ?>
|
342 |
+
<?php if ($data->getData('errors')): ?>
|
343 |
+
<tr>
|
344 |
+
<td class="label"><?php echo $this->__('Errors'); ?></td>
|
345 |
+
<td class="value">
|
346 |
+
<ul>
|
347 |
+
<?php foreach ($data->getErrorsList() as $error): ?>
|
348 |
+
<li><?php echo $error; ?></li>
|
349 |
+
<?php endforeach; ?>
|
350 |
+
</ul>
|
351 |
+
</td>
|
352 |
+
</td>
|
353 |
+
<?php endif; ?>
|
354 |
+
<?php if ($data->getData('warnings')): ?>
|
355 |
+
<tr>
|
356 |
+
<td class="label"><?php echo $this->__('Warnings'); ?></td>
|
357 |
+
<td class="value">
|
358 |
+
<ul>
|
359 |
+
<?php foreach ($data->getWarningsList() as $warning): ?>
|
360 |
+
<li><?php echo $warning; ?></li>
|
361 |
+
<?php endforeach; ?>
|
362 |
+
</ul>
|
363 |
+
</td>
|
364 |
+
</td>
|
365 |
+
<?php endif; ?>
|
366 |
+
</table>
|
367 |
+
</div>
|
368 |
+
</div>
|
369 |
+
<?php endforeach; ?>
|
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// vim: set ts=2 sw=2 sts=2 et:
|
3 |
+
/**
|
4 |
+
* Magento
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
* If you did not receive a copy of the license and are unable to
|
13 |
+
* obtain it through the world-wide-web, please send an email
|
14 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
15 |
+
*
|
16 |
+
* @author Qualiteam Software info@qtmsoft.com
|
17 |
+
* @category Cdev
|
18 |
+
* @package Cdev_XPaymentsConnector
|
19 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
20 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
21 |
+
*/
|
22 |
+
?>
|
23 |
+
<?php
|
24 |
+
/**
|
25 |
+
* @see Cdev_XPaymentsConnector_Block_Adminhtml_Settings_Xpc
|
26 |
+
*/
|
27 |
+
?>
|
28 |
+
<?php if ($this->getRequiremenetsErrors()): ?>
|
29 |
+
|
30 |
+
<h4><?php echo $this->__('Failed to meet environment requirements'); ?></h4>
|
31 |
+
|
32 |
+
<ul>
|
33 |
+
<?php foreach ($this->getRequiremenetsErrors() as $err): ?>
|
34 |
+
<li class="error">
|
35 |
+
<?php echo $this->__($err); ?>
|
36 |
+
</li>
|
37 |
+
<?php endforeach; ?>
|
38 |
+
</ul>
|
39 |
+
|
40 |
+
<br/>
|
41 |
+
|
42 |
+
<?php endif; ?>
|
43 |
+
|
44 |
+
<div class="xpayment-info">
|
45 |
+
|
46 |
+
<div class="content-header">
|
47 |
+
<table cellspacing="0">
|
48 |
+
<tr>
|
49 |
+
<td><h3><?php echo $this->__('X-Payments Connector'); ?></h3></td>
|
50 |
+
</tr>
|
51 |
+
</table>
|
52 |
+
</div>
|
53 |
+
|
54 |
+
<?php if ($this->getConfigurationErrors()): ?>
|
55 |
+
|
56 |
+
<h4 class="sub-heading">
|
57 |
+
<?php echo $this->__('X-Payments Connector is not configured yet. Please, check'); ?>
|
58 |
+
<a href="<?php echo $this->getSystemConfigXpcUrl(); ?>" target="_blank"><?php echo $this->__('settings') ?></a>
|
59 |
+
</h4>
|
60 |
+
|
61 |
+
<div class="payment-description">
|
62 |
+
|
63 |
+
<div class="payment-logo">
|
64 |
+
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/xpayment-logo.png'; ?>" alt="X-Payments Connector"/>
|
65 |
+
</div>
|
66 |
+
|
67 |
+
<div class="description-block">
|
68 |
+
<p>
|
69 |
+
<?php echo $this->getDescription(); ?>
|
70 |
+
</p>
|
71 |
+
</div>
|
72 |
+
|
73 |
+
</div>
|
74 |
+
|
75 |
+
<h4>
|
76 |
+
<?php echo $this->__('Connect to X-Payments in 3 easy steps:'); ?>
|
77 |
+
</h4>
|
78 |
+
|
79 |
+
<div class="payment-step">
|
80 |
+
|
81 |
+
<div class="step">
|
82 |
+
<span class="step-number">1</span>
|
83 |
+
<p>
|
84 |
+
<?php echo $this->__('Open your'); ?>
|
85 |
+
<a href="<?php echo $this->getTrialDemoUrl(); ?>" target="_blank"><?php echo $this->__('X-Payments'); ?></a>
|
86 |
+
<?php echo $this->__('back-end (if you do not have it)'); ?>
|
87 |
+
</p>
|
88 |
+
<button onclick="javascript: window.open('<?php echo $this->getTrialDemoUrl(); ?>');">
|
89 |
+
<?php echo $this->__('Start free Trial'); ?>
|
90 |
+
</button>
|
91 |
+
</div>
|
92 |
+
|
93 |
+
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/atep-arrow.png' ?>" class="step-arrow">
|
94 |
+
|
95 |
+
<div class="step">
|
96 |
+
<span class="step-number">2</span>
|
97 |
+
<p>
|
98 |
+
<?php echo $this->__('Configure payment methods at'); ?>
|
99 |
+
<strong style="white-space: nowrap;"><?php echo $this->__('X-Payments'); ?></strong>
|
100 |
+
</p>
|
101 |
+
<a href="<?php echo $this->getUserManualUrl(); ?>" target="_blank"><?php echo $this->__('Read how to do that'); ?></a>
|
102 |
+
</div>
|
103 |
+
|
104 |
+
<img src="<?php echo Mage::getBaseUrl('js') . 'xpayment/images/atep-arrow.png' ?>" class="step-arrow">
|
105 |
+
|
106 |
+
<div class="step">
|
107 |
+
<span class="step-number">3</span>
|
108 |
+
<p>
|
109 |
+
<?php echo $this->__('Connect'); ?>
|
110 |
+
<strong><?php echo $this->__('X-Payments'); ?></strong>
|
111 |
+
<?php echo $this->__('with'); ?>
|
112 |
+
<strong><?php echo $this->__('Magento'); ?></strong>
|
113 |
+
</p>
|
114 |
+
<a href="<?php echo $this->getUserVideoUrl(); ?>" target="_blank"><?php echo $this->__('See how to do that'); ?></a>
|
115 |
+
</div>
|
116 |
+
|
117 |
+
</div>
|
118 |
+
|
119 |
+
<hr/>
|
120 |
+
|
121 |
+
<?php endif; ?>
|
122 |
+
|
123 |
+
</div>
|
124 |
+
|
125 |
+
<br/>
|
126 |
+
|
127 |
+
<h4><?php echo $this->__('Import payment methods'); ?></h4>
|
128 |
+
|
129 |
+
<p><?php echo $this->__('To be able to use X-Payments payment methods you need to import them from X-Payments first.'); ?></p>
|
130 |
+
|
131 |
+
<?php if ($this->isMethodsRequested()) { ?>
|
132 |
+
|
133 |
+
<?php echo $this->__('The list of payment configurations imported from X-Payments'); ?>:<br/>
|
134 |
+
|
135 |
+
<div class="grid">
|
136 |
+
<table cellpadding="5" cellspacing="1">
|
137 |
+
<tr class="headings">
|
138 |
+
<th><?php echo $this->__('Payment method'); ?></th>
|
139 |
+
<th><?php echo $this->__('Payment method ID'); ?></th>
|
140 |
+
<th><?php echo $this->__('Auth'); ?></th>
|
141 |
+
</tr>
|
142 |
+
|
143 |
+
<?php foreach ($this->getPaymentMethods() as $pm) { ?>
|
144 |
+
|
145 |
+
<tr>
|
146 |
+
<td><?php echo $pm['name']; ?></td>
|
147 |
+
<td><?php echo $pm['confid']; ?></td>
|
148 |
+
<td><?php if ($pm['is_auth']) { ?><?php echo $this->__('Yes'); ?><?php } else { ?><?php echo $this->__('No'); ?><?php } ?></td>
|
149 |
+
</tr>
|
150 |
+
|
151 |
+
<?php } ?>
|
152 |
+
|
153 |
+
</table>
|
154 |
+
</div>
|
155 |
+
|
156 |
+
<form action="<?php echo $this->getUrl('adminhtml/settings_xpc/clear'); ?>" method="post" name="clear_form">
|
157 |
+
<?php echo $this->getBlockHtml('formkey'); ?>
|
158 |
+
<?php echo $this->getChildHtml('clearButton'); ?>
|
159 |
+
</form>
|
160 |
+
|
161 |
+
<?php if ($this->isMethodsAlreadyImported()) { ?>
|
162 |
+
<br/>
|
163 |
+
<br/>
|
164 |
+
<p><?php echo $this->__('Warning! Importing payment configurations from X-Payments will disable the X-Payments connector payment method!'); ?></p>
|
165 |
+
<?php } ?>
|
166 |
+
|
167 |
+
<?php } ?>
|
168 |
+
|
169 |
+
<form action="<?php echo $this->getUrl('adminhtml/settings_xpc/request'); ?>" method="post" name="request_form">
|
170 |
+
<?php echo $this->getBlockHtml('formkey'); ?>
|
171 |
+
<?php echo $this->getChildHtml('requestButton'); ?>
|
172 |
+
</form>
|
173 |
+
|
174 |
+
<br/>
|
175 |
+
<br/>
|
176 |
+
<h4>
|
177 |
+
<?php echo $this->__('Need help in settings of X-Payments?'); ?>
|
178 |
+
<a href="<?php echo $this->getContactUsUrl(); ?>" target="_blank"><?php echo $this->__('Contact us!'); ?></a>
|
179 |
+
</h4>
|
@@ -153,7 +153,7 @@ vim: set ts=4 sw=4 sts=4 et:
|
|
153 |
</action>
|
154 |
</reference>
|
155 |
<reference name="customer_account_navigation">
|
156 |
-
<action method="addLink" translate="label" module="xpaymentsconnector">
|
157 |
<name>customer_usercards</name>
|
158 |
<path>xpaymentsconnector/customer/usercards</path>
|
159 |
<label>My Payment Cards</label>
|
153 |
</action>
|
154 |
</reference>
|
155 |
<reference name="customer_account_navigation">
|
156 |
+
<action method="addLink" translate="label" module="xpaymentsconnector" ifconfig="payment/savedcards/active">
|
157 |
<name>customer_usercards</name>
|
158 |
<path>xpaymentsconnector/customer/usercards</path>
|
159 |
<label>My Payment Cards</label>
|
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Magento
|
4 |
*
|
@@ -23,8 +24,9 @@
|
|
23 |
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
24 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
25 |
*/
|
26 |
-
?>
|
27 |
|
|
|
|
|
28 |
<div class="page-title">
|
29 |
<h1>
|
30 |
<?php if ($this->checkOrderSuccess()): ?>
|
@@ -62,12 +64,20 @@
|
|
62 |
<p><?php echo $this->__('Your billing agreement # is: %s.', sprintf('<a href="%s">%s</a>', $this->escapeHtml($this->getAgreementUrl()), $this->escapeHtml($this->getAgreementRefId())))?></p>
|
63 |
<?php endif;?>
|
64 |
|
65 |
-
<?php if ($profiles
|
|
|
66 |
<p><?php echo $this->__('Your recurring payment profiles:'); ?></p>
|
67 |
<ul class="disc">
|
68 |
<?php foreach($profiles as $profile):?>
|
69 |
-
|
70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
<?php endforeach;?>
|
72 |
</ul>
|
73 |
<?php endif;?>
|
1 |
<?php
|
2 |
+
// vim: set ts=4 sw=4 sts=4 et:
|
3 |
/**
|
4 |
* Magento
|
5 |
*
|
24 |
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
25 |
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
26 |
*/
|
|
|
27 |
|
28 |
+
$profiles = $this->getRecurringProfiles();
|
29 |
+
?>
|
30 |
<div class="page-title">
|
31 |
<h1>
|
32 |
<?php if ($this->checkOrderSuccess()): ?>
|
64 |
<p><?php echo $this->__('Your billing agreement # is: %s.', sprintf('<a href="%s">%s</a>', $this->escapeHtml($this->getAgreementUrl()), $this->escapeHtml($this->getAgreementRefId())))?></p>
|
65 |
<?php endif;?>
|
66 |
|
67 |
+
<?php if ($profiles && $this->checkOrderSuccess()): ?>
|
68 |
+
|
69 |
<p><?php echo $this->__('Your recurring payment profiles:'); ?></p>
|
70 |
<ul class="disc">
|
71 |
<?php foreach($profiles as $profile):?>
|
72 |
+
<li>
|
73 |
+
<?php echo $this->__('Payment profile #'); ?>
|
74 |
+
<?php if ($this->getCanViewProfiles()): ?>
|
75 |
+
<a href="<?php echo $this->escapeHtml($this->getProfileUrl($profile)); ?>"><?php echo $profile->getReferenceId(); ?></a>
|
76 |
+
<?php else: ?>
|
77 |
+
<?php echo $profile->getReferenceId(); ?>
|
78 |
+
<?php endif; ?>
|
79 |
+
: <?php echo $profile->getScheduleDescription(); ?>
|
80 |
+
</li>
|
81 |
<?php endforeach;?>
|
82 |
</ul>
|
83 |
<?php endif;?>
|
@@ -43,6 +43,6 @@ if ($order) {
|
|
43 |
|
44 |
<?php if ($cardData): ?>
|
45 |
<span id="x-payment-prepaid-card-info">
|
46 |
-
<?php echo $this->__('
|
47 |
</span>
|
48 |
<?php endif; ?>
|
43 |
|
44 |
<?php if ($cardData): ?>
|
45 |
<span id="x-payment-prepaid-card-info">
|
46 |
+
<?php echo $this->__('Payment card used for this order: %s', $cardData); ?>
|
47 |
</span>
|
48 |
<?php endif; ?>
|
@@ -1,3 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
.xpayment-info .payment-step {
|
2 |
padding-bottom: 64px;
|
3 |
}
|
@@ -70,4 +96,4 @@
|
|
70 |
|
71 |
.payment-step p {
|
72 |
margin: 0 0 20px;
|
73 |
-
}
|
1 |
+
/**
|
2 |
+
vim: set ts=4 sw=4 sts=4 et:
|
3 |
+
* X-Payments Connector Settings
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
* If you did not receive a copy of the license and are unable to
|
12 |
+
* obtain it through the world-wide-web, please send an email
|
13 |
+
* to license@magentocommerce.com so we can send you a copy immediately.
|
14 |
+
*
|
15 |
+
* @author Qualiteam Software info@qtmsoft.com
|
16 |
+
* @category Cdev
|
17 |
+
* @package Cdev_XPaymentsConnector
|
18 |
+
* @copyright (c) 2010-2016 Qualiteam software Ltd <info@x-cart.com>. All rights reserved
|
19 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
20 |
+
*/
|
21 |
+
|
22 |
+
.xpayment-info h4 a,
|
23 |
+
.xpayment-info h4 a:hover {
|
24 |
+
font-weight: bold;
|
25 |
+
}
|
26 |
+
|
27 |
.xpayment-info .payment-step {
|
28 |
padding-bottom: 64px;
|
29 |
}
|
96 |
|
97 |
.payment-step p {
|
98 |
margin: 0 0 20px;
|
99 |
+
}
|
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>CDev_XPaymentsConnector</name>
|
4 |
-
<version>1.7.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL 3.0</license>
|
7 |
<channel>community</channel>
|
@@ -11,23 +11,35 @@
|
|
11 |
This extension integrates Magento with X-Payments - a PA-DSS certified payment module.</description>
|
12 |
<notes>What's new?
|
13 |

|
14 |
-
-
|
15 |

|
16 |
-
-
|
17 |

|
18 |
-
-
|
19 |

|
20 |
-
-
|
21 |

|
22 |
-
-
|
23 |

|
24 |
-
-
|
25 |

|
26 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
<authors><author><name>Alexander Mulin</name><user>xpayments</user><email>alex.mulin@x-payments.com</email></author></authors>
|
28 |
-
<date>2016-
|
29 |
-
<time>
|
30 |
-
<contents><target name="magecommunity"><dir name="Cdev"><dir name="XPaymentsConnector"><dir name="Block"><dir name="Adminhtml"><dir name="Customer"><dir name="Edit"><dir name="Renderer"><file name="Cardnumber.php" hash="208d21b744e56583b868038a0410b4f7"/><file name="Cardtype.php" hash="a2428e2e572e4d4a8cec6fd4b9519807"/><file name="Txnid.php" hash="27ef7dcdcb042b270758dbed42888e93"/></dir><dir name="Tab"><file name="Usercards.php" hash="958a1e10005ee9109e85d7e9ca448251"/></dir></dir></dir><dir name="Sales"><dir name="Order"><dir name="View"><dir name="Tab"><file name="Xporderstate.php" hash="bf18faf8efa855d23a098c0a79d3da43"/></dir></dir><file name="View.php" hash="8e26bb4e8c69e388aaec6a5b3709ca9c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Subselect.php" hash="4386558bb6ea49f56fb72e04cb1ed7a1"/></dir></dir></dir><dir name="Usercards"><file name="Grid.php" hash="98675f504e5ad16f25fa56b1222fb233"/></dir></dir><file name="Beforesuccess.php" hash="6a2d9e8742024b527efa9b64bb8c2d1d"/><file name="Cancel.php" hash="a119a76eb7b3d829df844a1450ebbf4d"/><dir name="Checkout"><dir name="Onepage"><file name="Orderdetail.php" hash="87bd0df83e6f5599d722ddc5e634db5a"/><file name="Settings.php" hash="366aa9c1ecb505be9b141c33e4f48983"/><file name="Success.php" hash="1a088733576ad7b07f5c9b42a9b073e3"/></dir></dir><file name="Control.php" hash="4ca05330579dd64dc492ef071b9fa820"/><dir name="Customer"><dir name="Account"><file name="Navigation.php" hash="e09c51996c7e0430d32f8a34479853da"/></dir><file name="Cardadd.php" hash="4fbb08e3a63034d4f4e3132f6a462902"/><file name="Success.php" hash="626854ad5b66983245ca05fec3139d10"/><file name="Usercards.php" hash="dacb606ccd0fe69666db059189406242"/></dir><file name="Failure.php" hash="4bc8bca872e68e55995c8996704a684d"/><dir name="Form"><file name="Cc.php" hash="4098182e7fcd53c3393736ca8a3b952e"/><file name="Container.php" hash="135a20a2537d890a7f304c09d28a3fa2"/><file name="Prepaidpayments.php" hash="6d24537b07085cf3cd497838be5ae641"/><file name="Savedcards.php" hash="fef05cb7cb4968a7a1f25adacbfa291d"/></dir><dir name="Info"><file name="Cc.php" hash="535973175a08d886d887743841c2259f"/><file name="Prepaidpayments.php" hash="27e8370e77323ef3d4509883317da43e"/><file name="Savedcards.php" hash="0ecab8333c35cc2c23c7460cd182f3f8"/></dir><dir name="Recurring"><dir name="Profile"><file name="View.php" hash="dd064d6997e107a12bd67666358961c1"/></dir></dir><file name="Redirect.php" hash="d06d3d1971637ec51f1663a0e5d06249"/><file name="Return.php" hash="7e69b6d4db495181f130874e3955d4ba"/><file name="Success.php" hash="557dcdaf4997f652c7949846bfe75f43"/></dir><dir name="Helper"><file name="Data.php" hash="0f029a1c927deea7495dd2e27d5af4f9"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Placedisplay.php" hash="ce97cc70fad01ae856186ed84f96a091"/></dir></dir></dir></dir><dir name="Mysql4"><dir name="Paymentconfiguration"><file name="Collection.php" hash="e639637d93fced47e15feff45dde7040"/></dir><file name="Paymentconfiguration.php" hash="27933b2a1a1b48f79c086fa2a1a055dc"/><dir name="Usercards"><file name="Collection.php" hash="6181af181afe7ca149a4f4def81ab2c3"/></dir><file name="Usercards.php" hash="6987664f7d934a01a20cd4b2360410ec"/></dir><file name="Observer.php" hash="bd91ad52f90f01643866e6e3a90793a6"/><dir name="Payment"><file name="Cc.php" hash="bdae2cee2cec0fe417a08c7393262c4a"/><file name="Prepaidpayments.php" hash="d95213d1d1a1ca0a75f21331e20c6112"/><dir name="Recurring"><file name="Profile.php" hash="81d78bf46f16921f315d25a1882f689c"/></dir><file name="Savedcards.php" hash="177be52129ddd5a85cc267e4798f439c"/></dir><file name="Paymentconfiguration.php" hash="8f59c00bb689cba01419643291f84c5a"/><dir name="Quote"><dir name="Address"><dir name="Total"><dir name="Nominal"><dir name="Recurring"><file name="Discount.php" hash="de7bad92f97b7ae18c0ea14553b20b6e"/><dir name="Initialfee"><file name="Tax.php" hash="c34e0dfc1cda64509c20095d48280d30"/></dir></dir></dir><file name="Nominal.php" hash="151e80f6a973925ba5e75d53185b9a17"/></dir></dir></dir><file name="Quote.php" hash="f9ce2d25eac3ffe894586370f2b7e875"/><dir name="Sales"><dir name="Recurring"><file name="Profile.php" hash="ab2f07180d0f9e6b07739dcd9a72aaaf"/></dir></dir><dir name="Source"><file name="Paymentconfiguration.php" hash="e43240d7f8c5ce6c79a11cd22fdf1654"/></dir><file name="Usercards.php" hash="d60af463fad1d64a44e3132e6dd8145d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="CustomerController.php" hash="2afbf9ce68581c095b1c0908c338bf8b"/><dir name="Sales"><dir name="Order"><file name="FraudController.php" hash="2e0a090bb9be675825c745749d8f6326"/></dir></dir></dir><file name="ControlController.php" hash="a8b443665c0e0d6545ea53e9e16c84f4"/><file name="CustomerController.php" hash="826b6c20bac3e7cda40d777f299185a0"/><file name="ProcessingController.php" hash="b8172d20445ca4ae8e4ecd96201da64a"/></dir><dir name="etc"><file name="adminhtml.xml" hash="78e39e2b965ba1f3b42dc15165e5980d"/><file name="config.xml" hash="4d5380472a56701c514904baa1fbb649"/><file name="system.xml" hash="92af8118851818b7aa03a04621f30098"/></dir><dir name="sql"><dir name="xpaymentsconnector_setup"><file name="mysql4-install-1.0.0.php" hash="54fd2b472da6f22807d7ce9d55f76f68"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="ecfbe69f2a44d954419a5ba8e6a33601"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="38f97b9ad495e37cd5616b63244003d8"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="52b4b083d68c400a2d15b7ab24432d31"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="9f504310fbd5760dbc4121575d58c1ff"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="bc258c44475f4820820b34e25a692e11"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="673e6984f3629a287cf750c62ad409d3"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="adde05f2858ab60250b0d66d88f7ccf1"/><file name="mysql4-upgrade-1.0.7-1.0.8.php" hash="ded44ef94cce61a6bbe76e97190e0508"/><file name="mysql4-upgrade-1.0.8-1.0.9.php" hash="e4ff2a01393423ea4a82226c1c160e83"/><file name="mysql4-upgrade-1.0.9-1.1.0.php" hash="f8332f7edb571e682dca101fb0a5f0d8"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="ff155b7f421d73c4962c373c88bc3ca0"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="07611a099e3057b57ec75d30e1b3cf17"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="xpayment"><file name="backend-xpayment.js" hash="0a21df00e9499cbdbf1f83866d5da7f7"/><file name="checkout-submit.js" hash="5b993541002979e0e050bff8688e6e42"/><dir name="images"><file name="arrow-down.png" hash="a0beb6cd0ca4dd686ee5bf772432176e"/><file name="arrow-up.png" hash="df40115c816a7e08016c04120ac22e53"/><file name="atep-arrow.png" hash="99b20583434330394fb2302b9b9f7331"/><file name="btn_bg_fraud.png" hash="028ca5db7bdc7a5327e5cafa8747e079"/><file name="card_types.png" hash="d35ba97c55e2cc1273a0dd1d7862d84c"/><file name="loader.gif" hash="e67d85a8d2d4021514815d0ff4d65173"/><file name="xpayment-logo.png" hash="a46be1bc2589a988172a104c11bed332"/></dir><file name="settings.css" hash="75fd8264d825def2a1c8538d052b9b25"/><file name="xp-contorl.css" hash="1c59c23f49000d35ba43149500b97682"/></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Cdev_XPaymentsConnector.csv" hash="38e98f8fd9a7ce64b0dd18ae6c00a481"/></dir></target><target name="mageetc"><dir name="modules"><file name="Cdev_XPaymentsConnector.xml" hash="d45ede4b1566ecf143546c1c9b2330c7"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><file name="control.phtml" hash="76989067ba4a38dab48e15ea784ddbf4"/><dir><dir name="form"><file name="prepaidpayments.phtml" hash="4dbfedd5c45d0238a77e2856d151165d"/><file name="savedcards.phtml" hash="2657b09d08dda25c96f787edf00dcb21"/></dir><dir name="info"><file name="cc.phtml" hash="87b0d497ce0c26cc7f9508da5d392d27"/><file name="prepaidpayments.phtml" hash="46668fa9790f7567512a320ca6192846"/><file name="savedcards.phtml" hash="e947d6efe2602959be9a9723a1f5a470"/></dir><dir name="order"><dir name="view"><dir name="tab"><file name="xporderstate.phtml" hash="f74738e126f5b5a377f6b6dd231e2bb2"/></dir></dir></dir><dir name="pdf"><file name="info.phtml" hash="ff4c8de6adb0c26a14bdb67b84002591"/></dir><dir name="usercards"><dir name="tab"><file name="js.phtml" hash="066a4fbebce98147eb69e37a37797187"/></dir></dir></dir><file name="info.phtml" hash="18765aeb9490d25c6cb72d90355815c1"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="d6a3c4f69e4d02070d139f1c1f6b9da5"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><file name="blank.phtml" hash="a1d80c783123430a9821084154e74d3a"/><file name="cancel.phtml" hash="b7b95521b4bce46fa00a7d48799d2159"/><dir name="checkout"><dir name="onepage"><file name="beforesuccess.phtml" hash="e93a3c562ffa3bb11e1ccc85c60e9305"/><file name="order-detail.phtml" hash="d0f638fba56e1a38bf47060e540034c0"/><dir name="review"><file name="button.phtml" hash="e2b28eda13695bff1107e32382f1d944"/></dir><file name="xpayment-iframe.phtml" hash="01d055a10a706e16dcd6cb1cc3e162c3"/></dir><file name="success.phtml" hash="5a8796782f54d41e6065144aa1adbf68"/></dir><dir name="customer"><file name="cardaddsuccess.phtml" hash="ed7746e9d604ffb8d047fd8086c12531"/><dir name="usercards"><file name="cardadd.phtml" hash="d57f1f395a42ce0adb7f531b0f01c246"/><file name="list.phtml" hash="18e4d3d87d1ad121392deaeff263194b"/></dir></dir><file name="failure.phtml" hash="ff9a3cab106068011e2fc5617bb5c9db"/><dir name="form"><file name="cc.phtml" hash="5aa9052f7b789c20b9a5ba5d424d636b"/><file name="savedcards.phtml" hash="40815a71bfbcb61bb6975042159da4d3"/></dir><dir name="info"><file name="cc.phtml" hash="dff25040debc42f3bf08fdb7829e2fa8"/><file name="prepaidpayments.phtml" hash="4e8fec0502e991c6634233e3ba15202d"/><file name="savedcards.phtml" hash="e97d1c1356bf89eff3a969d430872136"/></dir><file name="redirect.phtml" hash="295b92ed99297c0349225e97b895110d"/><file name="redirectiframe.phtml" hash="8e9b635f16fbe7deb271759714eb856d"/><file name="return.phtml" hash="ae55cad4282970013ab72f746002fded"/><file name="xpc_data.phtml" hash="e1d2b67adc37e07bce05d2f2ef8f610f"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="e818bab9188628976a0fa782e1bea371"/></dir></dir></dir></dir></target></contents>
|
31 |
<compatible/>
|
32 |
<dependencies><required><php><min>5.3.0</min><max>7.0.9</max></php></required></dependencies>
|
33 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>CDev_XPaymentsConnector</name>
|
4 |
+
<version>1.7.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/osl-3.0.php">OSL 3.0</license>
|
7 |
<channel>community</channel>
|
11 |
This extension integrates Magento with X-Payments - a PA-DSS certified payment module.</description>
|
12 |
<notes>What's new?
|
13 |

|
14 |
+
- Invoice for payment made using a saved credit card is now created automatically.
|
15 |

|
16 |
+
- X-Payments Connector settings page moved to admin controller. Potential 404 error fixed.
|
17 |

|
18 |
+
- Auto-detect of API version added. Test connection button removed, so connection between Magento store and X-Payments is tested automatically.
|
19 |

|
20 |
+
- Fixed issue with product attributes being reset after a product is added to the cart.
|
21 |

|
22 |
+
- Corrected recurring profiles creation. Fixed several issues with Recurring profiles and nominal items.
|
23 |

|
24 |
+
- "Allowed IP address" for X-Payments callback handling improved.
|
25 |

|
26 |
+
- Improved customer registration at checkout for OneStepCheckout module by Idev.
|
27 |
+

|
28 |
+
- Corrected password setting during customer registration at checkout.
|
29 |
+

|
30 |
+
- Corrected saving credit cards at customer profile.
|
31 |
+

|
32 |
+
- "My payment cards" section is now removed correctly if "Use saved card" payment method is not active.
|
33 |
+

|
34 |
+
- Compatibility with SUPEE-8788 vulnerability
|
35 |
+

|
36 |
+
- NoFraud service support added
|
37 |
+

|
38 |
+
- other minor bug-fixes and improvements in code and corrections to text labels.</notes>
|
39 |
<authors><author><name>Alexander Mulin</name><user>xpayments</user><email>alex.mulin@x-payments.com</email></author></authors>
|
40 |
+
<date>2016-10-31</date>
|
41 |
+
<time>14:06:47</time>
|
42 |
+
<contents><target name="magecommunity"><dir name="Cdev"><dir name="XPaymentsConnector"><dir name="Block"><dir name="Adminhtml"><dir name="Customer"><dir name="Edit"><dir name="Renderer"><file name="Cardnumber.php" hash="208d21b744e56583b868038a0410b4f7"/><file name="Cardtype.php" hash="a2428e2e572e4d4a8cec6fd4b9519807"/><file name="Txnid.php" hash="27ef7dcdcb042b270758dbed42888e93"/></dir><dir name="Tab"><file name="Usercards.php" hash="958a1e10005ee9109e85d7e9ca448251"/></dir></dir></dir><dir name="Sales"><dir name="Order"><dir name="View"><dir name="Tab"><file name="Xporderstate.php" hash="bf18faf8efa855d23a098c0a79d3da43"/></dir></dir><file name="View.php" hash="8e26bb4e8c69e388aaec6a5b3709ca9c"/></dir></dir><dir name="Settings"><file name="Xpc.php" hash="d255424fb7efede011fa0ae347d533f5"/></dir><dir name="System"><dir name="Config"><dir name="Form"><file name="Subselect.php" hash="4386558bb6ea49f56fb72e04cb1ed7a1"/></dir></dir></dir><dir name="Usercards"><file name="Grid.php" hash="98675f504e5ad16f25fa56b1222fb233"/></dir></dir><file name="Beforesuccess.php" hash="6a2d9e8742024b527efa9b64bb8c2d1d"/><file name="Cancel.php" hash="a119a76eb7b3d829df844a1450ebbf4d"/><dir name="Checkout"><dir name="Onepage"><file name="Orderdetail.php" hash="bd289826d2bf55ea59437ec98dabe0dd"/><file name="Settings.php" hash="366aa9c1ecb505be9b141c33e4f48983"/><file name="Success.php" hash="08efe39f353822c763bf0893a7f50090"/></dir></dir><dir name="Customer"><file name="Cardadd.php" hash="4fbb08e3a63034d4f4e3132f6a462902"/><file name="Success.php" hash="626854ad5b66983245ca05fec3139d10"/><file name="Usercards.php" hash="dacb606ccd0fe69666db059189406242"/></dir><file name="Failure.php" hash="4bc8bca872e68e55995c8996704a684d"/><dir name="Form"><file name="Cc.php" hash="4098182e7fcd53c3393736ca8a3b952e"/><file name="Container.php" hash="135a20a2537d890a7f304c09d28a3fa2"/><file name="Prepaidpayments.php" hash="6d24537b07085cf3cd497838be5ae641"/><file name="Savedcards.php" hash="fef05cb7cb4968a7a1f25adacbfa291d"/></dir><dir name="Info"><file name="Cc.php" hash="535973175a08d886d887743841c2259f"/><file name="Prepaidpayments.php" hash="27e8370e77323ef3d4509883317da43e"/><file name="Savedcards.php" hash="0ecab8333c35cc2c23c7460cd182f3f8"/></dir><dir name="Recurring"><dir name="Profile"><file name="View.php" hash="dd064d6997e107a12bd67666358961c1"/></dir></dir><file name="Redirect.php" hash="d06d3d1971637ec51f1663a0e5d06249"/><file name="Return.php" hash="7e69b6d4db495181f130874e3955d4ba"/><file name="Success.php" hash="557dcdaf4997f652c7949846bfe75f43"/></dir><dir name="Helper"><file name="Data.php" hash="2751c4c0ea2f01a3f0a8ed23223ca870"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Placedisplay.php" hash="ce97cc70fad01ae856186ed84f96a091"/></dir></dir></dir></dir><file name="Fraudcheckdata.php" hash="55e3d4d8cd9922656370750d06db29c9"/><dir name="Mysql4"><dir name="Fraudcheckdata"><file name="Collection.php" hash="1cfe63c0fdd6e32f84b65a509297ed1f"/></dir><file name="Fraudcheckdata.php" hash="bbb6193b99c15a83c77840b5e40b610a"/><dir name="Paymentconfiguration"><file name="Collection.php" hash="e639637d93fced47e15feff45dde7040"/></dir><file name="Paymentconfiguration.php" hash="27933b2a1a1b48f79c086fa2a1a055dc"/><dir name="Quote"><dir name="Xpcdata"><file name="Collection.php" hash="ae6baceed692aed2da612097d7e48a62"/></dir><file name="Xpcdata.php" hash="ecd2a442867bb59d716910be0327e4c0"/></dir><dir name="Usercards"><file name="Collection.php" hash="6181af181afe7ca149a4f4def81ab2c3"/></dir><file name="Usercards.php" hash="6987664f7d934a01a20cd4b2360410ec"/></dir><file name="Observer.php" hash="d90c8ed40aca74010998e3b040d0d8b0"/><dir name="Payment"><file name="Cc.php" hash="4cc153ad9e7c3376b2cee0c826aff29c"/><file name="Prepaidpayments.php" hash="d95213d1d1a1ca0a75f21331e20c6112"/><dir name="Recurring"><file name="Profile.php" hash="81d78bf46f16921f315d25a1882f689c"/></dir><file name="Savedcards.php" hash="e95aaf3421eb394d2cfefce2b4f4fcd4"/></dir><file name="Paymentconfiguration.php" hash="8f59c00bb689cba01419643291f84c5a"/><dir name="Quote"><dir name="Address"><dir name="Total"><dir name="Nominal"><dir name="Recurring"><file name="Discount.php" hash="de7bad92f97b7ae18c0ea14553b20b6e"/><dir name="Initialfee"><file name="Tax.php" hash="c34e0dfc1cda64509c20095d48280d30"/></dir></dir></dir><file name="Nominal.php" hash="151e80f6a973925ba5e75d53185b9a17"/></dir></dir><file name="Xpcdata.php" hash="fca39568010bbcce0c88a5069cf7ef4a"/></dir><file name="Quote.php" hash="f9ce2d25eac3ffe894586370f2b7e875"/><dir name="Sales"><dir name="Recurring"><file name="Profile.php" hash="ab2f07180d0f9e6b07739dcd9a72aaaf"/></dir></dir><dir name="Source"><file name="Paymentconfiguration.php" hash="e43240d7f8c5ce6c79a11cd22fdf1654"/></dir><file name="Usercards.php" hash="d60af463fad1d64a44e3132e6dd8145d"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="CustomerController.php" hash="2afbf9ce68581c095b1c0908c338bf8b"/><dir name="Sales"><dir name="Order"><file name="FraudController.php" hash="b3dfee2e445d0ef0946c0c617a58ae7c"/></dir></dir><dir name="Settings"><file name="XpcController.php" hash="b4f3258f36018e63d2712c7b180fd83b"/></dir></dir><file name="CustomerController.php" hash="826b6c20bac3e7cda40d777f299185a0"/><file name="ProcessingController.php" hash="7da853c09b9c13bee733bcba6677f41a"/></dir><dir name="etc"><file name="adminhtml.xml" hash="38134239e74d0a020fb7ae2e8a83304a"/><file name="config.xml" hash="7d1a38e617473b73a6d8ecd2b34bcb76"/><file name="system.xml" hash="f1fb265a300efb04a2d715d5489b0ec9"/></dir><dir name="sql"><dir name="xpaymentsconnector_setup"><file name="mysql4-install-1.0.0.php" hash="54fd2b472da6f22807d7ce9d55f76f68"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="ecfbe69f2a44d954419a5ba8e6a33601"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="38f97b9ad495e37cd5616b63244003d8"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="52b4b083d68c400a2d15b7ab24432d31"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="9f504310fbd5760dbc4121575d58c1ff"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="bc258c44475f4820820b34e25a692e11"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="673e6984f3629a287cf750c62ad409d3"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="adde05f2858ab60250b0d66d88f7ccf1"/><file name="mysql4-upgrade-1.0.7-1.0.8.php" hash="ded44ef94cce61a6bbe76e97190e0508"/><file name="mysql4-upgrade-1.0.8-1.0.9.php" hash="e4ff2a01393423ea4a82226c1c160e83"/><file name="mysql4-upgrade-1.0.9-1.1.0.php" hash="f8332f7edb571e682dca101fb0a5f0d8"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="ff155b7f421d73c4962c373c88bc3ca0"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="07611a099e3057b57ec75d30e1b3cf17"/><file name="mysql4-upgrade-1.1.2-1.1.3.php" hash="fcca09f1a92b89c23741adcbe28bb674"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="xpayment"><file name="backend-xpayment.js" hash="0a21df00e9499cbdbf1f83866d5da7f7"/><file name="checkout-submit.js" hash="5b993541002979e0e050bff8688e6e42"/><dir name="images"><file name="arrow-down.png" hash="a0beb6cd0ca4dd686ee5bf772432176e"/><file name="arrow-up.png" hash="df40115c816a7e08016c04120ac22e53"/><file name="atep-arrow.png" hash="99b20583434330394fb2302b9b9f7331"/><file name="btn_bg_fraud.png" hash="028ca5db7bdc7a5327e5cafa8747e079"/><file name="card_types.png" hash="d35ba97c55e2cc1273a0dd1d7862d84c"/><file name="loader.gif" hash="e67d85a8d2d4021514815d0ff4d65173"/><file name="xpayment-logo.png" hash="a46be1bc2589a988172a104c11bed332"/></dir><file name="settings-xpc.css" hash="65f93e043e6710b0755e43f403fb6aa7"/><file name="settings.css" hash="75fd8264d825def2a1c8538d052b9b25"/></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Cdev_XPaymentsConnector.csv" hash="38e98f8fd9a7ce64b0dd18ae6c00a481"/></dir></target><target name="mageetc"><dir name="modules"><file name="Cdev_XPaymentsConnector.xml" hash="d45ede4b1566ecf143546c1c9b2330c7"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><dir><dir name="form"><file name="prepaidpayments.phtml" hash="4dbfedd5c45d0238a77e2856d151165d"/><file name="savedcards.phtml" hash="2657b09d08dda25c96f787edf00dcb21"/></dir><dir name="info"><file name="cc.phtml" hash="87b0d497ce0c26cc7f9508da5d392d27"/><file name="prepaidpayments.phtml" hash="46668fa9790f7567512a320ca6192846"/><file name="savedcards.phtml" hash="e947d6efe2602959be9a9723a1f5a470"/></dir><dir name="order"><dir name="view"><dir name="tab"><file name="xporderstate.phtml" hash="47dc7e8b7e946cf8e5ffb0257d8a19e5"/></dir></dir></dir><dir name="pdf"><file name="info.phtml" hash="ff4c8de6adb0c26a14bdb67b84002591"/></dir><dir name="settings"><file name="xpc.phtml" hash="390a08b88913d55281e889b1bde16a61"/></dir><dir name="usercards"><dir name="tab"><file name="js.phtml" hash="066a4fbebce98147eb69e37a37797187"/></dir></dir></dir><file name="info.phtml" hash="18765aeb9490d25c6cb72d90355815c1"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="fb87962a843d476eb48c7a7b85d442fa"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><file name="blank.phtml" hash="a1d80c783123430a9821084154e74d3a"/><file name="cancel.phtml" hash="b7b95521b4bce46fa00a7d48799d2159"/><dir name="checkout"><dir name="onepage"><file name="beforesuccess.phtml" hash="e93a3c562ffa3bb11e1ccc85c60e9305"/><file name="order-detail.phtml" hash="d0f638fba56e1a38bf47060e540034c0"/><dir name="review"><file name="button.phtml" hash="e2b28eda13695bff1107e32382f1d944"/></dir><file name="xpayment-iframe.phtml" hash="01d055a10a706e16dcd6cb1cc3e162c3"/></dir><file name="success.phtml" hash="6051fdfd2efbfc936b8b7beb573c233d"/></dir><dir name="customer"><file name="cardaddsuccess.phtml" hash="ed7746e9d604ffb8d047fd8086c12531"/><dir name="usercards"><file name="cardadd.phtml" hash="d57f1f395a42ce0adb7f531b0f01c246"/><file name="list.phtml" hash="18e4d3d87d1ad121392deaeff263194b"/></dir></dir><file name="failure.phtml" hash="ff9a3cab106068011e2fc5617bb5c9db"/><dir name="form"><file name="cc.phtml" hash="5aa9052f7b789c20b9a5ba5d424d636b"/><file name="savedcards.phtml" hash="40815a71bfbcb61bb6975042159da4d3"/></dir><dir name="info"><file name="cc.phtml" hash="c47bcbf6bc0373cebe15beabfc6214c9"/><file name="prepaidpayments.phtml" hash="4e8fec0502e991c6634233e3ba15202d"/><file name="savedcards.phtml" hash="e97d1c1356bf89eff3a969d430872136"/></dir><file name="redirect.phtml" hash="295b92ed99297c0349225e97b895110d"/><file name="redirectiframe.phtml" hash="8e9b635f16fbe7deb271759714eb856d"/><file name="return.phtml" hash="ae55cad4282970013ab72f746002fded"/><file name="xpc_data.phtml" hash="e1d2b67adc37e07bce05d2f2ef8f610f"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="0e2680e432b27aa30b72d260ae6210a2"/></dir></dir></dir></dir></target></contents>
|
43 |
<compatible/>
|
44 |
<dependencies><required><php><min>5.3.0</min><max>7.0.9</max></php></required></dependencies>
|
45 |
</package>
|