CDev_XPaymentsConnector - Version 1.8.1

Version Notes

What's new?

- Corrected email notifications
- Implemented ability to process the orders which were modified by the store admin
- Implemented multi-store support
- Speed up the callback requests processing
- Corrected operating with coupons (Shopping cart price rules)
- Minor bug-fixes and improvements

Download this release

Release Info

Developer Alexander Mulin
Extension CDev_XPaymentsConnector
Version 1.8.1
Comparing to
See all releases


Code changes from version 1.8.0 to 1.8.1

app/code/community/Cdev/XPaymentsConnector/Block/Adminhtml/Sales/Order/View/Tab/Xporderstate.php CHANGED
@@ -232,21 +232,31 @@ class Cdev_XPaymentsConnector_Block_Adminhtml_Sales_Order_View_Tab_Xporderstate
232
  $amount = 0.00;
233
 
234
  if (
235
- $data['capturedAmountAvail'] > 0
236
- && $data['refundedAmountAvail'] < 0.01
237
  ) {
238
 
239
- $amount = $data['capturedAmountAvailGateway'];
 
 
 
240
 
241
- } elseif (
242
- $data['refundedAmountAvail'] > 0
243
- && $data['capturedAmountAvail'] < 0.01
244
- ) {
245
 
246
- $amount = $data['refundedAmountAvail'];
 
 
 
 
 
 
247
  }
248
 
249
- if ($amount < 0.01 && $data['chargedAmount'] > 0) {
 
 
 
 
250
 
251
  $amount = $data['chargedAmount'];
252
  }
232
  $amount = 0.00;
233
 
234
  if (
235
+ isset($data['capturedAmountAvail'])
236
+ && ($data['refundedAmountAvail'])
237
  ) {
238
 
239
+ if (
240
+ $data['capturedAmountAvail'] > 0
241
+ && $data['refundedAmountAvail'] < 0.01
242
+ ) {
243
 
244
+ $amount = $data['capturedAmountAvailGateway'];
 
 
 
245
 
246
+ } elseif (
247
+ $data['refundedAmountAvail'] > 0
248
+ && $data['capturedAmountAvail'] < 0.01
249
+ ) {
250
+
251
+ $amount = $data['refundedAmountAvail'];
252
+ }
253
  }
254
 
255
+ if (
256
+ isset($data['chargedAmount'])
257
+ && $amount < 0.01
258
+ && $data['chargedAmount'] > 0
259
+ ) {
260
 
261
  $amount = $data['chargedAmount'];
262
  }
app/code/community/Cdev/XPaymentsConnector/Helper/Cart/Data.php CHANGED
@@ -41,7 +41,7 @@ class Cdev_XPaymentsConnector_Helper_Cart_Data extends Cdev_XPaymentsConnector_H
41
  if (
42
  isset($totals[$key])
43
  && is_object($totals[$key])
44
- && method_exists($totals[$key], 'getValue')
45
  ) {
46
  $value = abs($totals[$key]->getValue());
47
  }
@@ -70,7 +70,18 @@ class Cdev_XPaymentsConnector_Helper_Cart_Data extends Cdev_XPaymentsConnector_H
70
 
71
  } else {
72
 
73
- $quote->collectTotals();
 
 
 
 
 
 
 
 
 
 
 
74
  $totals = $quote->getTotals();
75
 
76
  $result['totalCost'] = $this->preparePrice($quote->getGrandTotal());
41
  if (
42
  isset($totals[$key])
43
  && is_object($totals[$key])
44
+ && is_callable(array($totals[$key], 'getValue'))
45
  ) {
46
  $value = abs($totals[$key]->getValue());
47
  }
70
 
71
  } else {
72
 
73
+ try {
74
+
75
+ if ('savedcards' != $quote->getPayment()->getMethodInstance()->getCode()) {
76
+ // Re-collecting totals erases single-use coupon from the "recharge" quote
77
+ $quote->collectTotals();
78
+ }
79
+
80
+ } catch (Exception $e) {
81
+
82
+ // Method is not set in the quote model yet. Do nothing.
83
+ }
84
+
85
  $totals = $quote->getTotals();
86
 
87
  $result['totalCost'] = $this->preparePrice($quote->getGrandTotal());
app/code/community/Cdev/XPaymentsConnector/Helper/Data.php CHANGED
@@ -712,16 +712,18 @@ class Cdev_XPaymentsConnector_Helper_Data extends Cdev_XPaymentsConnector_Helper
712
  *
713
  * @param string $entityId Quote ID or Cutomer ID
714
  * @param int $xpcSlot Slot index of the XPC payment method
 
715
  * @param bool $isZeroAuth Is it zero auth request
716
  *
717
  * @return array
718
  */
719
- public function getCallbackUrl($entityId, $xpcSlot, $isZeroAuth = false)
720
  {
721
  $params = array(
722
  '_secure' => !Mage::helper('settings_xpc')->getXpcConfig('xpay_force_http'),
723
  '_nosid' => true,
724
  'xpc_slot' => $xpcSlot,
 
725
  );
726
 
727
  if ($isZeroAuth) {
@@ -873,6 +875,7 @@ class Cdev_XPaymentsConnector_Helper_Data extends Cdev_XPaymentsConnector_Helper
873
  // Check if external checkout module is enabled
874
  $isOscModuleEnabled = Mage::helper('settings_xpc')->checkOscModuleEnabled();
875
  $isFirecheckoutModuleEnabled = Mage::helper('settings_xpc')->checkFirecheckoutModuleEnabled();
 
876
 
877
  // Grab data saved at checkout
878
  $data = unserialize($quote->getXpcData()->getData('checkout_data'));
@@ -913,9 +916,13 @@ class Cdev_XPaymentsConnector_Helper_Data extends Cdev_XPaymentsConnector_Helper
913
  // Save shipping method
914
  if (!empty($data['shipping_method'])) {
915
 
916
- if ($isFirecheckoutModuleEnabled) {
 
 
 
917
  // Necessary for the FC.
918
  // See TM_FireCheckout_IndexController::saveShippingAction()
 
919
  $quote->collectTotals();
920
  }
921
 
@@ -1028,7 +1035,10 @@ class Cdev_XPaymentsConnector_Helper_Data extends Cdev_XPaymentsConnector_Helper
1028
  $result = isset($data['create_account'])
1029
  && (bool)$data['create_account'];
1030
 
1031
- } elseif ($settings->checkFirecheckoutModuleEnabled()) {
 
 
 
1032
 
1033
  // For Firecheckout module
1034
  $data = unserialize($quote->getXpcData()->getData('checkout_data'));
712
  *
713
  * @param string $entityId Quote ID or Cutomer ID
714
  * @param int $xpcSlot Slot index of the XPC payment method
715
+ * @param int $storeId Store ID
716
  * @param bool $isZeroAuth Is it zero auth request
717
  *
718
  * @return array
719
  */
720
+ public function getCallbackUrl($entityId, $xpcSlot, $storeId = 0, $isZeroAuth = false)
721
  {
722
  $params = array(
723
  '_secure' => !Mage::helper('settings_xpc')->getXpcConfig('xpay_force_http'),
724
  '_nosid' => true,
725
  'xpc_slot' => $xpcSlot,
726
+ 'store_id' => $storeId,
727
  );
728
 
729
  if ($isZeroAuth) {
875
  // Check if external checkout module is enabled
876
  $isOscModuleEnabled = Mage::helper('settings_xpc')->checkOscModuleEnabled();
877
  $isFirecheckoutModuleEnabled = Mage::helper('settings_xpc')->checkFirecheckoutModuleEnabled();
878
+ $isIwdModuleEnabled = Mage::helper('settings_xpc')->checkIwdModuleEnabled();
879
 
880
  // Grab data saved at checkout
881
  $data = unserialize($quote->getXpcData()->getData('checkout_data'));
916
  // Save shipping method
917
  if (!empty($data['shipping_method'])) {
918
 
919
+ if (
920
+ $isFirecheckoutModuleEnabled
921
+ || $isIwdModuleEnabled
922
+ ) {
923
  // Necessary for the FC.
924
  // See TM_FireCheckout_IndexController::saveShippingAction()
925
+ // And for the IWD checkout module/Venedor theme
926
  $quote->collectTotals();
927
  }
928
 
1035
  $result = isset($data['create_account'])
1036
  && (bool)$data['create_account'];
1037
 
1038
+ } elseif (
1039
+ $settings->checkFirecheckoutModuleEnabled()
1040
+ || $settings->checkIwdModuleEnabled()
1041
+ ) {
1042
 
1043
  // For Firecheckout module
1044
  $data = unserialize($quote->getXpcData()->getData('checkout_data'));
app/code/community/Cdev/XPaymentsConnector/Helper/Settings/Data.php CHANGED
@@ -281,7 +281,7 @@ class Cdev_XPaymentsConnector_Helper_Settings_Data extends Cdev_XPaymentsConnect
281
  }
282
 
283
  /**
284
- * Check if some external checkout module is enablled and activated
285
  *
286
  * @param string $name Module name
287
  * @param string $configPath Configuration path to activate the module
@@ -308,7 +308,7 @@ class Cdev_XPaymentsConnector_Helper_Settings_Data extends Cdev_XPaymentsConnect
308
  }
309
 
310
  /**
311
- * Check if Idev OneStepCheckout module is enablled and activated
312
  *
313
  * @return bool
314
  */
@@ -321,7 +321,7 @@ class Cdev_XPaymentsConnector_Helper_Settings_Data extends Cdev_XPaymentsConnect
321
  }
322
 
323
  /**
324
- * Check if Firecheckout module is enablled and activated
325
  *
326
  * @return bool
327
  */
@@ -333,6 +333,19 @@ class Cdev_XPaymentsConnector_Helper_Settings_Data extends Cdev_XPaymentsConnect
333
  );
334
  }
335
 
 
 
 
 
 
 
 
 
 
 
 
 
 
336
  /**
337
  * Check if iframe should be used or not
338
  *
281
  }
282
 
283
  /**
284
+ * Check if some external checkout module is enabled and activated
285
  *
286
  * @param string $name Module name
287
  * @param string $configPath Configuration path to activate the module
308
  }
309
 
310
  /**
311
+ * Check if Idev OneStepCheckout module is enabled and activated
312
  *
313
  * @return bool
314
  */
321
  }
322
 
323
  /**
324
+ * Check if Firecheckout module is enabled and activated
325
  *
326
  * @return bool
327
  */
333
  );
334
  }
335
 
336
+ /**
337
+ * Check IWD One Page Checkout is enabled and activated
338
+ *
339
+ * @return bool
340
+ */
341
+ public function checkIwdModuleEnabled()
342
+ {
343
+ return $this->checkExternalCheckoutModuleEnabled(
344
+ 'IWD_OnepageCheckout',
345
+ 'onepagecheckout/general/enabled'
346
+ );
347
+ }
348
+
349
  /**
350
  * Check if iframe should be used or not
351
  *
app/code/community/Cdev/XPaymentsConnector/Model/Payment/Cc.php CHANGED
@@ -120,6 +120,8 @@ abstract class Cdev_XPaymentsConnector_Model_Payment_Cc extends Cdev_XPaymentsCo
120
  $refId = 'authorization';
121
  $entityId = $customer->getId();
122
 
 
 
123
  $preparedCart = Mage::helper('cart_xpc')->prepareFakeCart($customer, $this->getXpcSlot());
124
 
125
  $isBackend = (bool)$customer->getXpBufer();
@@ -128,6 +130,8 @@ abstract class Cdev_XPaymentsConnector_Model_Payment_Cc extends Cdev_XPaymentsCo
128
 
129
  $entityId = $quote->getEntityId();
130
 
 
 
131
  if ($quote->isBackendOrderQuote()) {
132
  $refId = $quote->getXpcData()->getData('backend_orderid');
133
  $isBackend = true;
@@ -145,7 +149,7 @@ abstract class Cdev_XPaymentsConnector_Model_Payment_Cc extends Cdev_XPaymentsCo
145
  'refId' => $refId,
146
  'cart' => $preparedCart,
147
  'returnUrl' => $helper->getReturnUrl($entityId, $this->getXpcSlot(), $isZeroAuth, $isBackend),
148
- 'callbackUrl' => $helper->getCallbackUrl($entityId, $this->getXpcSlot(), $isZeroAuth),
149
  );
150
 
151
  $response = Mage::helper('api_xpc')->initPayment($data);
120
  $refId = 'authorization';
121
  $entityId = $customer->getId();
122
 
123
+ $storeId = 0; // TODO. Consider this later.
124
+
125
  $preparedCart = Mage::helper('cart_xpc')->prepareFakeCart($customer, $this->getXpcSlot());
126
 
127
  $isBackend = (bool)$customer->getXpBufer();
130
 
131
  $entityId = $quote->getEntityId();
132
 
133
+ $storeId = $quote->getStoreId();
134
+
135
  if ($quote->isBackendOrderQuote()) {
136
  $refId = $quote->getXpcData()->getData('backend_orderid');
137
  $isBackend = true;
149
  'refId' => $refId,
150
  'cart' => $preparedCart,
151
  'returnUrl' => $helper->getReturnUrl($entityId, $this->getXpcSlot(), $isZeroAuth, $isBackend),
152
+ 'callbackUrl' => $helper->getCallbackUrl($entityId, $this->getXpcSlot(), $storeId, $isZeroAuth),
153
  );
154
 
155
  $response = Mage::helper('api_xpc')->initPayment($data);
app/code/community/Cdev/XPaymentsConnector/Model/Payment/Savedcards.php CHANGED
@@ -131,7 +131,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Savedcards extends Cdev_XPaymentsCon
131
  'amount' => $amount,
132
  'description' => $description,
133
  'cart' => $preparedCart,
134
- 'callbackUrl' => Mage::helper('xpaymentsconnector')->getCallbackUrl($entityId, $this->getXpcSlot(), false),
135
  );
136
 
137
  $response = Mage::helper('api_xpc')->requestPaymentRecharge($data);
@@ -148,23 +148,32 @@ class Cdev_XPaymentsConnector_Model_Payment_Savedcards extends Cdev_XPaymentsCon
148
  */
149
  public function isAvailable($quote = null)
150
  {
 
 
151
  if (
152
  parent::isAvailable($quote)
153
  && $quote
154
- && $quote->getData('customer_id')
155
  ) {
156
 
157
- $cardsCount = Mage::getModel('xpaymentsconnector/usercards')
 
158
  ->getCollection()
159
- ->addFieldToFilter('user_id', $quote->getData('customer_id'))
160
- ->addFieldToFilter('usage_type', Cdev_XPaymentsConnector_Model_Usercards::SIMPLE_CARD)
161
- ->count();
162
 
163
- $result = (bool)$cardsCount;
164
 
165
- } else {
 
 
 
 
166
 
167
- $result = false;
 
 
 
 
168
  }
169
 
170
  return $result;
@@ -191,6 +200,14 @@ class Cdev_XPaymentsConnector_Model_Payment_Savedcards extends Cdev_XPaymentsCon
191
  $cardId = $request['xp_payment_card'];
192
  $customerId = $session->getQuote()->getCustomerId();
193
 
 
 
 
 
 
 
 
 
194
  $card = Mage::getModel('xpaymentsconnector/usercards')->load($cardId);
195
 
196
  // Make sure this card belongs to the current customer
@@ -203,7 +220,7 @@ class Cdev_XPaymentsConnector_Model_Payment_Savedcards extends Cdev_XPaymentsCon
203
  } catch (Exception $exception) {
204
 
205
  // Save error to display
206
- $session->addError($e->getMessage());
207
 
208
  // And throw it further
209
  throw $exception;
131
  'amount' => $amount,
132
  'description' => $description,
133
  'cart' => $preparedCart,
134
+ 'callbackUrl' => Mage::helper('xpaymentsconnector')->getCallbackUrl($entityId, $this->getXpcSlot(), $this->getStoreId(), false),
135
  );
136
 
137
  $response = Mage::helper('api_xpc')->requestPaymentRecharge($data);
148
  */
149
  public function isAvailable($quote = null)
150
  {
151
+ $result = false;
152
+
153
  if (
154
  parent::isAvailable($quote)
155
  && $quote
156
+ && !empty($quote->getCustomer()->getEmail())
157
  ) {
158
 
159
+ $email = $quote->getCustomer()->getEmail();
160
+ $list = Mage::getModel('customer/customer')
161
  ->getCollection()
162
+ ->addFieldToFilter('email', $email);
 
 
163
 
164
+ foreach ($list as $customer) {
165
 
166
+ $cardsCount = Mage::getModel('xpaymentsconnector/usercards')
167
+ ->getCollection()
168
+ ->addFieldToFilter('user_id', $customer->getEntityId())
169
+ ->addFieldToFilter('usage_type', Cdev_XPaymentsConnector_Model_Usercards::SIMPLE_CARD)
170
+ ->count();
171
 
172
+ if ($cardsCount) {
173
+ $result = true;
174
+ break;
175
+ }
176
+ }
177
  }
178
 
179
  return $result;
200
  $cardId = $request['xp_payment_card'];
201
  $customerId = $session->getQuote()->getCustomerId();
202
 
203
+ if (empty($customerId)) {
204
+
205
+ // Occasionally customer can be undefined at checkout session.
206
+ // Try taking it from the customer session.
207
+ $customer = Mage::getSingleton('customer/session')->getCustomer();
208
+ $customerId = $customer->getEntityId();
209
+ }
210
+
211
  $card = Mage::getModel('xpaymentsconnector/usercards')->load($cardId);
212
 
213
  // Make sure this card belongs to the current customer
220
  } catch (Exception $exception) {
221
 
222
  // Save error to display
223
+ $session->addError($exception->getMessage());
224
 
225
  // And throw it further
226
  throw $exception;
app/code/community/Cdev/XPaymentsConnector/Model/Quote.php CHANGED
@@ -245,11 +245,15 @@ class Cdev_XPaymentsConnector_Model_Quote extends Mage_Sales_Model_Quote
245
 
246
  if (
247
  count($addresses) > 2
248
- && Mage::helper('settings_xpc')->checkFirecheckoutModuleEnabled()
 
 
 
249
  ) {
250
 
251
  // Remove "extra" addresses for the Firecheckout module
252
  // See XP-659
 
253
 
254
  $shippingFound = $billingFound = false;
255
 
245
 
246
  if (
247
  count($addresses) > 2
248
+ && (
249
+ Mage::helper('settings_xpc')->checkFirecheckoutModuleEnabled()
250
+ || Mage::helper('settings_xpc')->checkIwdModuleEnabled()
251
+ )
252
  ) {
253
 
254
  // Remove "extra" addresses for the Firecheckout module
255
  // See XP-659
256
+ // And for the IWD checkout module/Venedor theme
257
 
258
  $shippingFound = $billingFound = false;
259
 
app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/CreateController.php CHANGED
@@ -54,12 +54,12 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_CreateController extends Mag
54
 
55
  if (
56
  isset($payment['method'])
57
- && $order->getId()
58
  ) {
59
  if (Mage::helper('settings_xpc')->isXpcMethod($payment['method'], false)) {
60
 
61
  // Redirect user to the payment page
62
- $this->_redirect('adminhtml/sales_order_payment/pay', array('order_id' => $order->getId()));
63
 
64
  } elseif (Mage::helper('settings_xpc')->isSavedCardsMethod($payment['method'])) {
65
 
@@ -67,7 +67,7 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_CreateController extends Mag
67
  // Redirect to the different controller to process the recharge action
68
 
69
  $params = array(
70
- 'order_id' => $order->getId(),
71
  'card_id' => $payment['xp_payment_card'],
72
  );
73
 
54
 
55
  if (
56
  isset($payment['method'])
57
+ && $order->getEntityId()
58
  ) {
59
  if (Mage::helper('settings_xpc')->isXpcMethod($payment['method'], false)) {
60
 
61
  // Redirect user to the payment page
62
+ $this->_redirect('adminhtml/sales_order_payment/pay', array('order_id' => $order->getEntityId()));
63
 
64
  } elseif (Mage::helper('settings_xpc')->isSavedCardsMethod($payment['method'])) {
65
 
67
  // Redirect to the different controller to process the recharge action
68
 
69
  $params = array(
70
+ 'order_id' => $order->getEntityId(),
71
  'card_id' => $payment['xp_payment_card'],
72
  );
73
 
app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/EditController.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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@x-cart.com>
17
+ * @category Cdev
18
+ * @package Cdev_XPaymentsConnector
19
+ * @copyright (c) 2010-present 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
+ * Edit order controller
25
+ */
26
+ require_once 'Mage/Adminhtml/controllers/Sales/Order/EditController.php';
27
+
28
+ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_EditController extends Mage_Adminhtml_Sales_Order_EditController
29
+ {
30
+ /**
31
+ * Check if pay for order is allowed for user
32
+ *
33
+ * @return bool
34
+ */
35
+ protected function _isAllowed()
36
+ {
37
+ return Mage::getSingleton('admin/session')->isAllowed('system/xpaymentsconnector/pay_orders');
38
+ }
39
+
40
+ /**
41
+ * Saving quote and create order
42
+ *
43
+ * @return void
44
+ */
45
+ public function saveAction()
46
+ {
47
+ parent::saveAction();
48
+
49
+ $quote = Mage::getSingleton('adminhtml/session_quote')->getQuote();
50
+ $incrementId = $quote->getData('reserved_order_id');
51
+ $order = Mage::getModel('sales/order')->load($incrementId, 'increment_id');
52
+
53
+ $payment = $this->getRequest()->getPost('payment');
54
+
55
+ if (
56
+ isset($payment['method'])
57
+ && $order->getEntityId()
58
+ ) {
59
+ if (Mage::helper('settings_xpc')->isXpcMethod($payment['method'], false)) {
60
+
61
+ // Redirect user to the payment page
62
+ $this->_redirect('adminhtml/sales_order_payment/pay', array('order_id' => $order->getEntityId()));
63
+
64
+ } elseif (Mage::helper('settings_xpc')->isSavedCardsMethod($payment['method'])) {
65
+
66
+ // Process payment by saved card
67
+ // Redirect to the different controller to process the recharge action
68
+
69
+ $params = array(
70
+ 'order_id' => $order->getEntityId(),
71
+ 'card_id' => $payment['xp_payment_card'],
72
+ );
73
+
74
+ $this->_redirect('adminhtml/sales_order_payment/recharge', $params);
75
+ }
76
+ }
77
+ }
78
+ }
app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/PaymentController.php CHANGED
@@ -61,6 +61,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
61
  */
62
  public function payAction()
63
  {
 
 
64
  try {
65
 
66
  $order = $this->getOrder();
@@ -77,7 +79,7 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
77
 
78
  // For some reason quote is empty here. But we actually need only its ID.
79
  // All the necessary data is taken from the quote XPC data
80
- $quote->setEntityId($order->getQuoteId());
81
 
82
  $quote->getXpcData()->setData('backend_orderid', $order->getIncrementId())->save();
83
 
@@ -94,11 +96,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
94
  echo $block->toHtml();
95
  exit;
96
 
97
- } catch (Exception $e) {
98
-
99
- $this->_getSession()->addError($this->__($e->getMessage()));
100
 
101
- $this->_redirect('*/sales_order/view', array('order_id' => $this->getRequest()->getParam('order_id')));
102
  }
103
  }
104
 
@@ -122,9 +122,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
122
  $this->_getSession()->addError('Order was not paid');
123
  }
124
 
125
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
126
 
127
- } catch (Exception $e) {
128
 
129
  $this->_getSession()->addError($this->__($e->getMessage()));
130
  $this->_redirect('*/*/');
@@ -155,7 +155,34 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
155
  throw new Exception($message);
156
  }
157
 
158
- $this->_redirect('*/sales_order/view', array('order_id' => $this->getOrder()->getId()));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
  }
160
 
161
  /**
@@ -165,6 +192,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
165
  */
166
  public function secondaryAction()
167
  {
 
 
168
  try {
169
 
170
  // Model is not necessary to perform the action
@@ -202,16 +231,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
202
  'Operation failed'
203
  );
204
 
205
- } catch (Exception $e) {
206
-
207
- $this->_getSession()->addError($this->__($e->getMessage()));
208
 
209
- if ($order) {
210
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
211
- } else {
212
- $this->_redirect('*/*/');
213
- $this->setFlag('', self::FLAG_NO_DISPATCH, true);
214
- }
215
  }
216
  }
217
 
@@ -222,6 +244,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
222
  */
223
  public function acceptAction()
224
  {
 
 
225
  try {
226
 
227
  $order = $this->getOrder();
@@ -234,16 +258,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
234
  'Transaction was not accepted'
235
  );
236
 
237
- } catch (Exception $e) {
238
-
239
- $this->_getSession()->addError($this->__($e->getMessage()));
240
 
241
- if ($order) {
242
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
243
- } else {
244
- $this->_redirect('*/*/');
245
- $this->setFlag('', self::FLAG_NO_DISPATCH, true);
246
- }
247
  }
248
  }
249
 
@@ -254,6 +271,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
254
  */
255
  public function declineAction()
256
  {
 
 
257
  try {
258
 
259
  $order = $this->getOrder();
@@ -266,16 +285,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
266
  'Transaction was not declined'
267
  );
268
 
269
- } catch (Exception $e) {
270
-
271
- $this->_getSession()->addError($this->__($e->getMessage()));
272
 
273
- if ($order) {
274
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
275
- } else {
276
- $this->_redirect('*/*/');
277
- $this->setFlag('', self::FLAG_NO_DISPATCH, true);
278
- }
279
  }
280
  }
281
 
@@ -286,6 +298,8 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
286
  */
287
  public function rechargeAction()
288
  {
 
 
289
  try {
290
 
291
  $helper = Mage::helper('xpaymentsconnector');
@@ -318,16 +332,9 @@ class Cdev_XPaymentsConnector_Adminhtml_Sales_Order_PaymentController extends Ma
318
  'Order was not paid'
319
  );
320
 
321
- } catch (Exception $e) {
322
-
323
- $this->_getSession()->addError($this->__($e->getMessage()));
324
 
325
- if ($order) {
326
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
327
- } else {
328
- $this->_redirect('*/*/');
329
- $this->setFlag('', self::FLAG_NO_DISPATCH, true);
330
- }
331
  }
332
  }
333
 
61
  */
62
  public function payAction()
63
  {
64
+ $order = null;
65
+
66
  try {
67
 
68
  $order = $this->getOrder();
79
 
80
  // For some reason quote is empty here. But we actually need only its ID.
81
  // All the necessary data is taken from the quote XPC data
82
+ $quote->setEntityId($order->getQuoteId())->setStoreId($order->getStoreId());
83
 
84
  $quote->getXpcData()->setData('backend_orderid', $order->getIncrementId())->save();
85
 
96
  echo $block->toHtml();
97
  exit;
98
 
99
+ } catch (Exception $exception) {
 
 
100
 
101
+ $this->processExceptionAndRedirect($exception, $order);
102
  }
103
  }
104
 
122
  $this->_getSession()->addError('Order was not paid');
123
  }
124
 
125
+ $this->_redirect('*/sales_order/view', array('order_id' => $order->getEntityId()));
126
 
127
+ } catch (Exception $exception) {
128
 
129
  $this->_getSession()->addError($this->__($e->getMessage()));
130
  $this->_redirect('*/*/');
155
  throw new Exception($message);
156
  }
157
 
158
+ $this->_redirect('*/sales_order/view', array('order_id' => $this->getOrder()->getEntityId()));
159
+ }
160
+
161
+ /**
162
+ * Process X-Payments response and redirect
163
+ *
164
+ * @param Exception $exception
165
+ * @param Mage_Sales_Model_Order $order
166
+ *
167
+ * @return void
168
+ */
169
+ private function processExceptionAndRedirect(Exception $exception, Mage_Sales_Model_Order $order = null)
170
+ {
171
+ $this->_getSession()->addError($this->__($exception->getMessage()));
172
+
173
+ if ($order) {
174
+
175
+ $this->_redirect('*/sales_order/view', array('order_id' => $order->getEntityId()));
176
+
177
+ } elseif ($this->getRequest()->getParam('order_id')) {
178
+
179
+ $this->_redirect('*/sales_order/view', array('order_id' => $this->getRequest()->getParam('order_id')));
180
+
181
+ } else {
182
+
183
+ $this->_redirect('*/sales_order/');
184
+ $this->setFlag('', self::FLAG_NO_DISPATCH, true);
185
+ }
186
  }
187
 
188
  /**
192
  */
193
  public function secondaryAction()
194
  {
195
+ $order = null;
196
+
197
  try {
198
 
199
  // Model is not necessary to perform the action
231
  'Operation failed'
232
  );
233
 
234
+ } catch (Exception $exception) {
 
 
235
 
236
+ $this->processExceptionAndRedirect($exception, $order);
 
 
 
 
 
237
  }
238
  }
239
 
244
  */
245
  public function acceptAction()
246
  {
247
+ $order = null;
248
+
249
  try {
250
 
251
  $order = $this->getOrder();
258
  'Transaction was not accepted'
259
  );
260
 
261
+ } catch (Exception $exception) {
 
 
262
 
263
+ $this->processExceptionAndRedirect($exception, $order);
 
 
 
 
 
264
  }
265
  }
266
 
271
  */
272
  public function declineAction()
273
  {
274
+ $order = null;
275
+
276
  try {
277
 
278
  $order = $this->getOrder();
285
  'Transaction was not declined'
286
  );
287
 
288
+ } catch (Exception $exception) {
 
 
289
 
290
+ $this->processExceptionAndRedirect($exception, $order);
 
 
 
 
 
291
  }
292
  }
293
 
298
  */
299
  public function rechargeAction()
300
  {
301
+ $order = null;
302
+
303
  try {
304
 
305
  $helper = Mage::helper('xpaymentsconnector');
332
  'Order was not paid'
333
  );
334
 
335
+ } catch (Exception $exception) {
 
 
336
 
337
+ $this->processExceptionAndRedirect($exception, $order);
 
 
 
 
 
338
  }
339
  }
340
 
app/code/community/Cdev/XPaymentsConnector/controllers/ProcessingController.php CHANGED
@@ -557,15 +557,24 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
557
  *
558
  * @param string $quoteId
559
  * @param int $xpcSlot Slot index of the XPC payment method
 
560
  *
561
  * @return array
562
  */
563
- protected function getQuoteCheckCartResponse($quoteId, $xpcSlot)
564
  {
565
  $helper = Mage::helper('xpaymentsconnector');
566
 
567
- $quote = Mage::getModel('xpaymentsconnector/quote')->load($quoteId)
568
- ->setXpcSlot($xpcSlot);
 
 
 
 
 
 
 
 
569
 
570
  if ($quote->isBackendOrderQuote()) {
571
 
@@ -655,10 +664,17 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
655
  $size = ob_get_length();
656
 
657
  header('Content-Length: ' . $size);
 
658
 
659
  ob_end_flush();
660
  flush();
661
 
 
 
 
 
 
 
662
  exit;
663
  }
664
 
@@ -695,6 +711,7 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
695
  $quoteId = Mage::app()->getRequest()->getParam('quote_id');
696
  $customerId = Mage::app()->getRequest()->getParam('customer_id');
697
  $xpcSlot = Mage::app()->getRequest()->getParam('xpc_slot');
 
698
  $confId = Mage::helper('settings_xpc')->getConfidByXpcSlot($xpcSlot);
699
 
700
  if (
@@ -709,7 +726,7 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
709
  // Process check-cart callback request
710
 
711
  $data = $quoteId
712
- ? $this->getQuoteCheckCartResponse($quoteId, $xpcSlot)
713
  : $this->getCustomerCheckCartResponse($customerId, $request['txnId']);
714
 
715
  $helper->writeLog('Response for check-cart request', $data);
@@ -820,13 +837,25 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
820
  */
821
  private function saveAddress($data, $customerId)
822
  {
823
- $newAddress = Mage::getModel('customer/address');
 
 
 
 
824
 
825
- $newAddress->setData($data)
826
- ->setCustomerId($customerId)
827
- ->setSaveInAddressBook(true);
828
 
829
- $newAddress->save();
 
 
 
 
 
 
 
 
 
 
830
  }
831
 
832
  /**
@@ -1032,15 +1061,15 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
1032
  // Process return after successful payment
1033
  $this->processReturnSuccess($quote, $order);
1034
 
 
 
 
1035
  } else {
1036
 
1037
  // Process return after declined payment
1038
  $this->processReturnDecline($quote, $order);
1039
  }
1040
 
1041
- // Send confirmation email
1042
- $this->processConfirmationEmail($order);
1043
-
1044
  $order->save();
1045
 
1046
  } catch (Mage_Core_Exception $e) {
@@ -1175,6 +1204,9 @@ class Cdev_XPaymentsConnector_ProcessingController extends Mage_Core_Controller_
1175
  // Auto create invoice if necessary
1176
  Mage::helper('xpaymentsconnector')->processCreateInvoice($order);
1177
 
 
 
 
1178
  $this->_redirect('checkout/onepage/success');
1179
  }
1180
  }
557
  *
558
  * @param string $quoteId
559
  * @param int $xpcSlot Slot index of the XPC payment method
560
+ * @param int $storeId Store ID
561
  *
562
  * @return array
563
  */
564
+ protected function getQuoteCheckCartResponse($quoteId, $xpcSlot, $storeId = 0)
565
  {
566
  $helper = Mage::helper('xpaymentsconnector');
567
 
568
+ $quote = Mage::getModel('xpaymentsconnector/quote');
569
+
570
+ if (!empty($storeId)) {
571
+
572
+ // Set current store (if passed)
573
+ $store = Mage::getSingleton('core/store')->load($storeId);
574
+ $quote->setStore($store);
575
+ }
576
+
577
+ $quote->load($quoteId)->setXpcSlot($xpcSlot);
578
 
579
  if ($quote->isBackendOrderQuote()) {
580
 
664
  $size = ob_get_length();
665
 
666
  header('Content-Length: ' . $size);
667
+ header('Content-Encoding: none');
668
 
669
  ob_end_flush();
670
  flush();
671
 
672
+ if (is_callable('fastcgi_finish_request')) {
673
+ // Required for nginx
674
+ session_write_close();
675
+ fastcgi_finish_request();
676
+ }
677
+
678
  exit;
679
  }
680
 
711
  $quoteId = Mage::app()->getRequest()->getParam('quote_id');
712
  $customerId = Mage::app()->getRequest()->getParam('customer_id');
713
  $xpcSlot = Mage::app()->getRequest()->getParam('xpc_slot');
714
+ $storeId = Mage::app()->getRequest()->getParam('store_id');
715
  $confId = Mage::helper('settings_xpc')->getConfidByXpcSlot($xpcSlot);
716
 
717
  if (
726
  // Process check-cart callback request
727
 
728
  $data = $quoteId
729
+ ? $this->getQuoteCheckCartResponse($quoteId, $xpcSlot, $storeId)
730
  : $this->getCustomerCheckCartResponse($customerId, $request['txnId']);
731
 
732
  $helper->writeLog('Response for check-cart request', $data);
837
  */
838
  private function saveAddress($data, $customerId)
839
  {
840
+ if (!is_numeric($customerId)) {
841
+ return;
842
+ }
843
+
844
+ try {
845
 
846
+ $newAddress = Mage::getModel('customer/address');
 
 
847
 
848
+ $newAddress->setData($data)
849
+ ->setCustomerId($customerId)
850
+ ->setSaveInAddressBook(true);
851
+
852
+ $newAddress->save();
853
+
854
+ } catch (Exception $e) {
855
+
856
+ // Unable to save address for some reason
857
+ Mage::helper('xpaymentsconnector')->writeLog('Error saving address in address book', $e->getMessage());
858
+ }
859
  }
860
 
861
  /**
1061
  // Process return after successful payment
1062
  $this->processReturnSuccess($quote, $order);
1063
 
1064
+ // Send confirmation email
1065
+ $this->processConfirmationEmail($order);
1066
+
1067
  } else {
1068
 
1069
  // Process return after declined payment
1070
  $this->processReturnDecline($quote, $order);
1071
  }
1072
 
 
 
 
1073
  $order->save();
1074
 
1075
  } catch (Mage_Core_Exception $e) {
1204
  // Auto create invoice if necessary
1205
  Mage::helper('xpaymentsconnector')->processCreateInvoice($order);
1206
 
1207
+ // Send confirmation email
1208
+ $this->processConfirmationEmail($order);
1209
+
1210
  $this->_redirect('checkout/onepage/success');
1211
  }
1212
  }
app/code/community/Cdev/XPaymentsConnector/etc/config.xml CHANGED
@@ -24,7 +24,7 @@
24
  <config>
25
  <modules>
26
  <Cdev_XPaymentsConnector>
27
- <version>1.8.0</version>
28
  </Cdev_XPaymentsConnector>
29
  </modules>
30
  <global>
@@ -294,7 +294,7 @@
294
  <xpay_api_version>1.7</xpay_api_version>
295
  <xpay_use_iframe>1</xpay_use_iframe>
296
  <xpay_iframe_place>payment</xpay_iframe_place>
297
- <xpay_zero_auth_amount>0.5</xpay_zero_auth_amount>
298
  <xpay_zero_auth_description>Card setup</xpay_zero_auth_description>
299
  </settings>
300
  </xpaymentsconnector>
24
  <config>
25
  <modules>
26
  <Cdev_XPaymentsConnector>
27
+ <version>1.8.1</version>
28
  </Cdev_XPaymentsConnector>
29
  </modules>
30
  <global>
294
  <xpay_api_version>1.7</xpay_api_version>
295
  <xpay_use_iframe>1</xpay_use_iframe>
296
  <xpay_iframe_place>payment</xpay_iframe_place>
297
+ <xpay_zero_auth_amount>1.0</xpay_zero_auth_amount>
298
  <xpay_zero_auth_description>Card setup</xpay_zero_auth_description>
299
  </settings>
300
  </xpaymentsconnector>
app/code/community/Cdev/XPaymentsConnector/sql/xpaymentsconnector_setup/mysql4-upgrade-1.8.0-1.8.1.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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@x-cart.com>
17
+ * @category Cdev
18
+ * @package Cdev_XPaymentsConnector
19
+ * @copyright (c) 2010-present 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
+ $quoteXpcDataTable = $installer->getTable('xpaymentsconnector/quote_xpcdata');
31
+ $installer->getConnection()->modifyColumn($quoteXpcDataTable, 'backend_orderid', 'VARCHAR(255) NOT NULL');
32
+
33
+ $installer->endSetup();
app/design/frontend/base/default/layout/xpaymentsconnector.xml CHANGED
@@ -122,6 +122,23 @@ vim: set ts=4 sw=4 sts=4 et:
122
  </reference>
123
  </checkout_onepage_review>
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  <checkout_onepage_success>
126
  <reference name="content">
127
  <reference name="checkout.success">
122
  </reference>
123
  </checkout_onepage_review>
124
 
125
+ <onepagecheckout_index_index translate="label">
126
+ <block type="core/template" name="xpc_data" template="xpaymentsconnector/checkout/xpc_data.phtml"/>
127
+ <reference name="head">
128
+ <action method="addItem" module="xpaymentsconnector" ifconfig="xpaymentsconnector/settings/xpay_is_configured">
129
+ <type>js_css</type>
130
+ <name>xpayment/settings.css</name>
131
+ </action>
132
+ <action method="addItem" module="xpaymentsconnector" ifconfig="xpaymentsconnector/settings/xpay_is_configured">
133
+ <type>js</type>
134
+ <name>xpayment/checkout-submit.js</name>
135
+ </action>
136
+ <action method="append" module="xpaymentsconnector" ifconfig="xpaymentsconnector/settings/xpay_is_configured">
137
+ <block>xpc_data</block>
138
+ </action>
139
+ </reference>
140
+ </onepagecheckout_index_index>
141
+
142
  <checkout_onepage_success>
143
  <reference name="content">
144
  <reference name="checkout.success">
js/xpayment/checkout-submit.js CHANGED
@@ -51,9 +51,20 @@ function sendSubmitMessage()
51
  */
52
  function isXpcMethod()
53
  {
54
- var block = $$('input:checked[type=radio][name=payment[method]][value^=xpayments]');
 
 
 
 
 
 
 
 
 
 
 
55
 
56
- return Boolean(block.length);
57
  }
58
 
59
  function getCurrentXpcMethod()
@@ -64,6 +75,8 @@ function getCurrentXpcMethod()
64
 
65
  if (block.length) {
66
  code = block[0].value;
 
 
67
  }
68
 
69
  return code;
@@ -405,7 +418,11 @@ document.observe('dom:loaded', function () {
405
  }
406
 
407
  // This is for Firecheckout
408
- if ($('firecheckout-form')) {
 
 
 
 
409
 
410
  checkout.setLoadWaiting(false);
411
  $('review-please-wait').hide();
@@ -675,6 +692,56 @@ document.observe('dom:loaded', function () {
675
  }
676
  );
677
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
  });
679
 
680
 
51
  */
52
  function isXpcMethod()
53
  {
54
+ var result = false;
55
+
56
+ if ($$('input:checked[type=radio][name=payment[method]][value^=xpayments]').length) {
57
+
58
+ // This is for other checkout modules
59
+ result = true;
60
+
61
+ } else if (null != $('iwd_opc_payment_method_select')) {
62
+
63
+ // This is for IWD Checkout suite
64
+ result = $('iwd_opc_payment_method_select').value.match(/xpayments/);
65
+ }
66
 
67
+ return result;
68
  }
69
 
70
  function getCurrentXpcMethod()
75
 
76
  if (block.length) {
77
  code = block[0].value;
78
+ } else if (null != $('iwd_opc_payment_method_select')) {
79
+ code = $('iwd_opc_payment_method_select').value;
80
  }
81
 
82
  return code;
418
  }
419
 
420
  // This is for Firecheckout
421
+ // And Venedor Theme 1.6.3
422
+ if (
423
+ $('firecheckout-form')
424
+ || $('onepagecheckout_orderform')
425
+ ) {
426
 
427
  checkout.setLoadWaiting(false);
428
  $('review-please-wait').hide();
692
  }
693
  );
694
  }
695
+
696
+ // This is for Venedor Theme (1.6.3) and Onepagecheckout
697
+ if ($('onepagecheckout_orderform')) {
698
+
699
+ // Checkout is loaded
700
+ document.fire('xpc:checkoutChanged', 'loaded');
701
+
702
+ payment.switchMethod = payment.switchMethod.wrap(
703
+ function(parentMethod) {
704
+ parentMethod();
705
+
706
+ // Payment method changed
707
+ document.fire('xpc:checkoutChanged', 'payment');
708
+ }
709
+ );
710
+
711
+ OPC.prototype.save = OPC.prototype.save.wrap(
712
+ function(parentMethod) {
713
+
714
+ if (isXpcMethod()) {
715
+
716
+ if (this.loadWaiting != false) {
717
+ return;
718
+ }
719
+
720
+ // Save original "save" URL
721
+ this.savedSaveUrl = this.saveUrl;
722
+
723
+ this.saveUrl = xpcData.url[getCurrentXpcMethod()].saveCheckoutData;
724
+
725
+ parentMethod();
726
+
727
+ checkout.setLoadWaiting(true);
728
+ $('review-please-wait').show();
729
+
730
+ this.saveUrl = this.savedSaveUrl;
731
+
732
+ if (xpcData.useIframe) {
733
+ sendSubmitMessage();
734
+ } else {
735
+ window.location.href = xpcData.url[getCurrentXpcMethod()].dropTokenAndRedirect;
736
+ }
737
+
738
+ } else {
739
+
740
+ return parentMethod();
741
+ }
742
+ }
743
+ );
744
+ }
745
  });
746
 
747
 
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>CDev_XPaymentsConnector</name>
4
- <version>1.8.0</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,37 +11,16 @@
11
  This extension integrates Magento with X-Payments - a PA-DSS certified payment module.</description>
12
  <notes>What's new?&#xD;
13
  &#xD;
14
- 1) Magento admin back-end&#xD;
15
- - Major improvement and revamp of connection and configuration - instead of multiple configuration pages admin user can do whole X-Payments connection and configuration on the same page now.&#xD;
16
- - Now you can configure up to 3 payment gateways supported by X-Payments in your Magento checkout.&#xD;
17
- - Admin user can save credit cards into customer profiles on behalf of customers.&#xD;
18
- - Admin can enter a new credit card to pay for a new order created in Magento back-end.&#xD;
19
- - &#x201C;Saving credit card&#x201D; setup is now available to Magento admin user.&#xD;
20
- - &#x201C;X-Payments Order State&#x201D; page redesigned. This page allows to do partial refunds/voids and capture authorized funds.&#xD;
21
- - Now the access to the X-Payments Connector features can be partially or completely restricted with the help of the Magento&#x2019;s Roles and Permissions.&#xD;
22
- - Added support of the Developer Mode (Use HTTP protocol) for the. testing/development environment which do not have valid SSL certificate.&#xD;
23
- &#xD;
24
- 2) Customer front-end&#xD;
25
- - Checkout can have up to three X-Payments payment methods.&#xD;
26
- - Saving credit cards by customers has been revamped and improved.&#xD;
27
- - Support of the One step Checkout module by Ahead Works (beta).&#xD;
28
- - Automatically unset used coupon for the declined payments.&#xD;
29
- - Corrected free shipping calculation for the FireCheckout extension.&#xD;
30
- - Increased speed of the callback requests processing, which makes checkout. faster.&#xD;
31
- - Corrected store operation if the extension is switched off.&#xD;
32
- &#xD;
33
- 3) Code re-factoring (for the developers who extend the module features)&#xD;
34
- - Decomposed common extension helper. Now the different features such as API communication, preparing cart data, address processing and the module settings are separated by the different sequestered helpers.&#xD;
35
- - Reworked functionality which was handled by the observer. Instead it was changed according to the MVC design. E.g. request to charge the card again is executed by special API request from the certain controller.&#xD;
36
- - Corrected and simplified the inheritance tree. Internal quote model is used to transport data during the payment processing, and it doesn&#x2019;t affect the quote class extensions made by other modules.&#xD;
37
- - Removed the unused legacy code. Code-style is improved&#xD;
38
- - Corrected version in the internal config file. &#xD;
39
- - Other minor bug-fixes and improvements.&#xD;
40
- </notes>
41
  <authors><author><name>Alexander Mulin</name><user>xpayments</user><email>alex.mulin@x-payments.com</email></author></authors>
42
- <date>2017-04-28</date>
43
- <time>13:21:24</time>
44
- <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="aaa40254a1b52d301f685237a5236a63"/><file name="Cardtype.php" hash="ddedf8207c0c01e576f7612de0298b66"/><file name="Txnid.php" hash="4abe68a1ee9286ad11e852441c860d08"/></dir><dir name="Tab"><file name="Usercards.php" hash="338ae39eae4d32f8be53e61bb7fc32ad"/></dir></dir></dir><dir name="Sales"><dir name="Order"><file name="Pay.php" hash="3ea7ea845356e1b7dbee7f23e975391c"/><dir name="View"><dir name="Tab"><file name="Xporderstate.php" hash="227b12fa8235c66aac15a2ebe66a99c1"/></dir></dir><file name="View.php" hash="d061d2ba0f31b311b88cfe33102da053"/></dir></dir><dir name="Settings"><file name="Help.php" hash="846a5274e57954e3a88feb8968617ead"/><dir name="Tab"><file name="Connection.php" hash="6290fff818f73a5039477f25e6a8acd6"/><file name="PaymentMethods.php" hash="db92f73ce1539109e1ed7644e7029d92"/><file name="Welcome.php" hash="6e31f739b5e7ee2eeb0a05953f3996b8"/><file name="ZeroAuth.php" hash="138dd6ec97485473ff611b095d06eb8e"/></dir><file name="Tab.php" hash="83eab5a75ae26be7d42026e7c45cd4f9"/><file name="Tabs.php" hash="3dffcbd26112d9395893f3844693b7de"/><file name="Xpc.php" hash="e2984fdc1910dc4de164407a62ad8230"/></dir><dir name="Usercards"><file name="Add.php" hash="d37c99d20229ff99e59bc2b87f24e6cd"/><file name="Grid.php" hash="da0b87349dc121a009b9ab64652fe9ba"/><file name="Iframe.php" hash="2cf7d0840339e8c7bf9c4adbc78d3969"/></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Orderdetail.php" hash="78dac8d8c6fca33640812973a92aa690"/><dir name="Review"><file name="Cc.php" hash="4250b4eaa9f220912a0be949bd9a9135"/></dir><file name="Success.php" hash="fb5aa9b8ae9422984e4f308085615965"/></dir><file name="Redirect.php" hash="36ab6fe76bb1be00144f1864ee6ebaff"/><file name="Return.php" hash="fb06e7b45aa467af0f0a3fb821ebdee7"/></dir><dir name="Customer"><dir name="Usercards"><file name="Add.php" hash="c0d718c85085af9e71089a3954f4a680"/><file name="Iframe.php" hash="d910b54614e93a4c00729c221a2d1a34"/><file name="List.php" hash="2a0c2cbe1fcf7a4cd362867f7dc8582c"/></dir></dir><dir name="Form"><file name="Cc.php" hash="abb21204c6bd54f17ca8f59456e06453"/><file name="Savedcards.php" hash="3165da4531d2878af73072cfadf76ace"/></dir><dir name="Info"><file name="Cc.php" hash="34a4ab8b987706aac6dc01cc5a303170"/><file name="Prepaidpayments.php" hash="17621a3dcfa5bc6f6f86e8c95033466e"/><file name="Savedcards.php" hash="6ae9e49561755ce92d7fd0930aadfda3"/></dir><dir name="Recurring"><dir name="Profile"><file name="View.php" hash="99f8f97567ada3edc6fd64ac29a17b83"/></dir></dir></dir><dir name="Helper"><file name="Abstract.php" hash="2e42ec3ecf8f4ec144350039b607c8d9"/><dir name="Address"><file name="Data.php" hash="f6db4d33d974dade9b7823d6b8b5d0a5"/></dir><dir name="Api"><file name="Data.php" hash="2a502e1747e5de5d7db24283c5187c6f"/></dir><dir name="Cart"><file name="Data.php" hash="bfae3d1ba405bc4eed326a7b33e3f290"/></dir><file name="Data.php" hash="a215685c6e7d188b912fc65ae4cfc9f9"/><dir name="Settings"><file name="Data.php" hash="2a19d5c2bb40cfc61b2744d512006d5f"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Placedisplay.php" hash="e8d7d8c93a02eb373f0301a4ef087a1f"/></dir></dir></dir></dir><file name="Fraudcheckdata.php" hash="67ec2c9416b758da8a595e1b9f4d1cfc"/><dir name="Mysql4"><dir name="Coupon"><file name="Usage.php" hash="550bbc526828c943cd94c1014f62f480"/></dir><dir name="Fraudcheckdata"><file name="Collection.php" hash="65be31250429aac5c657e0d6905c8b7a"/></dir><file name="Fraudcheckdata.php" hash="4e21b50a5f7df50409c9098fe330df84"/><dir name="Paymentconfiguration"><file name="Collection.php" hash="4f8029d4d23c5f31fb877b4d28250798"/></dir><file name="Paymentconfiguration.php" hash="2289772e650bde075a581a57e90ccdb4"/><dir name="Quote"><dir name="Xpcdata"><file name="Collection.php" hash="6cec9e95afd39e87012cb896c84a26a6"/></dir><file name="Xpcdata.php" hash="743b47d77181eac0060ae18b7b3091c7"/></dir><dir name="Usercards"><file name="Collection.php" hash="d408cb3f3bac4fd7f8f982b9271311b4"/></dir><file name="Usercards.php" hash="76b2c6211e494a589f62b2e7efd9fcf2"/></dir><file name="Observer.php" hash="4417002f7f3e4decedf952ec6084e47e"/><dir name="Payment"><file name="Abstract.php" hash="73fc353305d5247f9d63b517a4719584"/><file name="Cc.php" hash="89d80674e8c775384ade29b7af84b1e3"/><file name="Cc1.php" hash="b75ec36b087723a37e05889072a75e6c"/><file name="Cc2.php" hash="e8b83d62206e400bed6ad961222509ec"/><file name="Cc3.php" hash="6998dec58c419d666382c2e793446a40"/><dir name="Recurring"><file name="Profile.php" hash="136d1c070a47b4df2b8387d812457975"/></dir><file name="Savedcards.php" hash="215f9fd4bf2c2bd81aed18879a8390a7"/></dir><file name="Paymentconfiguration.php" hash="20745abddc071a2a1a67f04dc9407297"/><dir name="Quote"><dir name="Address"><dir name="Total"><dir name="Nominal"><dir name="Recurring"><file name="Discount.php" hash="e00831a19d3dc3984a988442f898045d"/><dir name="Initialfee"><file name="Tax.php" hash="df2e35cd60fb9b072a4a45582c4baf4a"/></dir></dir></dir><file name="Nominal.php" hash="67d677b941e01156e25bde52afd3452f"/></dir></dir><file name="Xpcdata.php" hash="18e4eed0bd2ded95eeb9fce580cd75e9"/></dir><file name="Quote.php" hash="b6f245417906a61b3383f565e1690358"/><dir name="Sales"><dir name="Recurring"><file name="Profile.php" hash="4b42debdef8853eafb2a2fad69648374"/></dir></dir><dir name="Source"><file name="Paymentconfiguration.php" hash="93eacabe0c8db27ee32f6e939d2a6d25"/></dir><file name="Usercards.php" hash="928d309bc2e3964891a32e6355b3d98a"/></dir><dir name="Transport"><file name="ApiResponse.php" hash="9798265b06eae6292ac9cf8f892911ed"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AddnewcardController.php" hash="8dc065cdb27a8f2f2bfd153b5489fdc0"/><file name="CustomerController.php" hash="89bb3462fde3308a6ec2b8a8b963fe81"/><dir name="Sales"><dir name="Order"><file name="CreateController.php" hash="369a5e97490e1fe5011490f195b47ef4"/><file name="PaymentController.php" hash="8e487447f5253983e93e1c9eed957114"/></dir></dir><dir name="Settings"><file name="XpcController.php" hash="9c26442bc3de95f3e36af321968f2d31"/></dir></dir><file name="CustomerController.php" hash="87866f3feb3bd2fcd2b9915689dbc5ea"/><file name="ProcessingController.php" hash="236beafeed2b2b9a7cf36e156397f152"/></dir><dir name="etc"><file name="adminhtml.xml" hash="ae219070bda0fec0797fbe400fa74d8f"/><file name="config.xml" hash="2b90273abc6ba0ca928c99f05decfc91"/><file name="system.xml" hash="5ea77283425202f6ee5f8f1581bb9583"/></dir><dir name="sql"><dir name="xpaymentsconnector_setup"><file name="mysql4-install-1.0.0.php" hash="65499bf19d3160b294943ba66c35806a"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="947960c070b098218808b95b8773d410"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="fabef89153591eeae3933ec8f478de51"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="cdf4d24d4bbd68aad2cf0ed586aa5710"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="d7f8ad91db27cfb83bec9e2162751b9c"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="ed59d38aa5fa9c70eb5ac5399e7430b8"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="d69cf11809ff724fd43eab4e6450cf94"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="afe29b79e383b2bf8d91035fc0ba5939"/><file name="mysql4-upgrade-1.0.7-1.0.8.php" hash="36914c857f46f3cf1f921f18ca7aa435"/><file name="mysql4-upgrade-1.0.8-1.0.9.php" hash="eecb339e90a5eb1033425d0d9c5ab60a"/><file name="mysql4-upgrade-1.0.9-1.1.0.php" hash="404757e176b56a089aa0d8c3a0384a51"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="50406b4966e81d44d914134aed88bf3e"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="69ff2db057f6e102b3219f10b5ad1e88"/><file name="mysql4-upgrade-1.1.2-1.1.3.php" hash="411047613212e6dce7df98798fdbee9d"/><file name="mysql4-upgrade-1.1.3-1.8.0.php" hash="f60fc38a73442b853614035c37aa9a88"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="xpayment"><file name="add-new-card.css" hash="50e744658fb135d4f2e22eae5c78feb5"/><file name="add-new-card.js" hash="5ef66621ba2c45e0591f65220a0babe4"/><file name="backend-xpayment.js" hash="9cdcb40212f976fbb6626e79f565b819"/><file name="checkout-submit.js" hash="37922beb46d42d89124ccb4c914101e4"/><dir name="images"><file name="arrow-down.png" hash="a0beb6cd0ca4dd686ee5bf772432176e"/><file name="arrow-up.png" hash="df40115c816a7e08016c04120ac22e53"/><file name="btn_bg_fraud.png" hash="028ca5db7bdc7a5327e5cafa8747e079"/><file name="card_types.png" hash="0e50345d855268c0396a740fcf37df92"/><file name="loader.gif" hash="e67d85a8d2d4021514815d0ff4d65173"/><file name="pci_dss_compliance.png" hash="db4e8b0e5eaa6779db9a73e66c136670"/><file name="step-arrow.png" hash="99b20583434330394fb2302b9b9f7331"/><file name="xpayment-logo.png" hash="a46be1bc2589a988172a104c11bed332"/></dir><file name="settings-xpc.css" hash="9a15cbafff63e93950d4fd839c0c5a03"/><file name="settings-xpc.js" hash="f8474c94344434fadda42a7d04cd8335"/><file name="settings.css" hash="1e0235171cd10198ce9334e67467a8c3"/></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Cdev_XPaymentsConnector.csv" hash="9c4ff78f5c159b2e98f2db51fcbc864c"/></dir></target><target name="mageetc"><dir name="modules"><file name="Cdev_XPaymentsConnector.xml" hash="6553887d9368d89585de4508b02eb0f7"/></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="cc.phtml" hash="a082a166647d2e850937aa4a1721cc9b"/><file name="prepaidpayments.phtml" hash="d2af544b65ae496be0f6465f7500549b"/><file name="savedcards.phtml" hash="377bdc79eb740329be215d933a204f6f"/></dir><dir name="info"><file name="cc.phtml" hash="2c0647d013182c158f0615e6788f57b1"/><file name="prepaidpayments.phtml" hash="63a15ae6dd0e3d1f7aa56bda95813dc9"/><file name="savedcards.phtml" hash="93de9ff106a72972861e93bd010bdf9a"/></dir><dir name="order"><file name="pay.phtml" hash="b5753ed33f7998acc097023089d7ad43"/><dir name="view"><dir name="tab"><file name="xporderstate.phtml" hash="d0d3795d3ad9e428bd3ae013f6fc495d"/></dir></dir></dir><dir name="pdf"><file name="info.phtml" hash="14dfc11d70bfc47614fe345e7d542e25"/></dir><dir name="settings"><file name="help.phtml" hash="701542e3a4cfc1fe4b8da81f118ceeee"/><dir name="tabs"><file name="connection.phtml" hash="2dc816bdf75caef351e4edf3b101b8bd"/><file name="payment_methods.phtml" hash="04ff2cb22cac2bb1184e0f90504a9352"/><file name="welcome.phtml" hash="28f15bb1031ff1e4ccddb3cd925091bc"/><file name="zero_auth.phtml" hash="8fc3b0b30090b39742d93941b039b8b8"/></dir><file name="xpc.phtml" hash="eded46dbbb2657a2ac9df2658acc4c42"/></dir><dir name="usercards"><file name="add.phtml" hash="eb3d93c62f542192ca041be2d223e6c5"/><file name="iframe.phtml" hash="b6cb88eeec648a31b77c4bff38bcfc09"/><dir name="tab"><file name="js.phtml" hash="a5f221fa7e8772352b14867947871fd8"/></dir></dir></dir><file name="info.phtml" hash="1f1dde8ac842af5e77460ad8316063a2"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="3f2143b8c10a6284569b8ec6b31c427b"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><dir name="checkout"><file name="blank.phtml" hash="7eec31175dc5516d73ef00b5634ba645"/><dir name="onepage"><file name="order-detail.phtml" hash="f5b8746678af65f95e0eb7fa1a8fad8b"/><dir name="review"><file name="button.phtml" hash="a1e2d615c019950d32b99c7cfc85da23"/><file name="cc.phtml" hash="fc8579a2877de308de4d75c105ff8137"/></dir></dir><file name="redirect.phtml" hash="99583bd93ed8b839b9758eebfb04f2f3"/><file name="return.phtml" hash="8468d24da3aaf06b44278315ace4cc8d"/><file name="success.phtml" hash="a2a2097281d67372887770b7810846df"/><file name="xpc_data.phtml" hash="b68322c7b86436fa83d241bb1ef43a26"/></dir><dir name="customer"><dir name="usercards"><file name="add.phtml" hash="8e5740f2f7f864c990b62852afd7e212"/><file name="iframe.phtml" hash="f5517759de042157921daf82764cf2ca"/><file name="list.phtml" hash="81f636155dc0605369b689838be81b5a"/></dir></dir><dir name="form"><file name="cc.phtml" hash="d8e0f65ce865838bfce9a6a603dc20f3"/><file name="savedcards.phtml" hash="c7909e538d7b3f65699005dcc26a0338"/></dir><dir name="info"><file name="cc.phtml" hash="3be1a8d0af0f362bed14f8a596319eda"/><file name="prepaidpayments.phtml" hash="7981ab636d54ccc28d678161a1bd1f26"/><file name="savedcards.phtml" hash="94b4f35db16f7814c39a9e64a8e2f055"/></dir></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="7de99a56ac04621483eb4c6cf177b2b0"/></dir></dir></dir></dir></target></contents>
45
  <compatible/>
46
  <dependencies><required><php><min>5.5.0</min><max>7.2.0</max></php></required></dependencies>
47
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>CDev_XPaymentsConnector</name>
4
+ <version>1.8.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?&#xD;
13
  &#xD;
14
+ - Corrected email notifications&#xD;
15
+ - Implemented ability to process the orders which were modified by the store admin&#xD;
16
+ - Implemented multi-store support&#xD;
17
+ - Speed up the callback requests processing&#xD;
18
+ - Corrected operating with coupons (Shopping cart price rules) &#xD;
19
+ - Minor bug-fixes and improvements</notes>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  <authors><author><name>Alexander Mulin</name><user>xpayments</user><email>alex.mulin@x-payments.com</email></author></authors>
21
+ <date>2017-09-07</date>
22
+ <time>03:08:21</time>
23
+ <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="aaa40254a1b52d301f685237a5236a63"/><file name="Cardtype.php" hash="ddedf8207c0c01e576f7612de0298b66"/><file name="Txnid.php" hash="4abe68a1ee9286ad11e852441c860d08"/></dir><dir name="Tab"><file name="Usercards.php" hash="338ae39eae4d32f8be53e61bb7fc32ad"/></dir></dir></dir><dir name="Sales"><dir name="Order"><file name="Pay.php" hash="3ea7ea845356e1b7dbee7f23e975391c"/><dir name="View"><dir name="Tab"><file name="Xporderstate.php" hash="970bf6cdfda16eb408c7a41ebc0b704e"/></dir></dir><file name="View.php" hash="d061d2ba0f31b311b88cfe33102da053"/></dir></dir><dir name="Settings"><file name="Help.php" hash="846a5274e57954e3a88feb8968617ead"/><dir name="Tab"><file name="Connection.php" hash="6290fff818f73a5039477f25e6a8acd6"/><file name="PaymentMethods.php" hash="db92f73ce1539109e1ed7644e7029d92"/><file name="Welcome.php" hash="6e31f739b5e7ee2eeb0a05953f3996b8"/><file name="ZeroAuth.php" hash="138dd6ec97485473ff611b095d06eb8e"/></dir><file name="Tab.php" hash="83eab5a75ae26be7d42026e7c45cd4f9"/><file name="Tabs.php" hash="3dffcbd26112d9395893f3844693b7de"/><file name="Xpc.php" hash="e2984fdc1910dc4de164407a62ad8230"/></dir><dir name="Usercards"><file name="Add.php" hash="d37c99d20229ff99e59bc2b87f24e6cd"/><file name="Grid.php" hash="da0b87349dc121a009b9ab64652fe9ba"/><file name="Iframe.php" hash="2cf7d0840339e8c7bf9c4adbc78d3969"/></dir></dir><dir name="Checkout"><dir name="Onepage"><file name="Orderdetail.php" hash="78dac8d8c6fca33640812973a92aa690"/><dir name="Review"><file name="Cc.php" hash="4250b4eaa9f220912a0be949bd9a9135"/></dir><file name="Success.php" hash="fb5aa9b8ae9422984e4f308085615965"/></dir><file name="Redirect.php" hash="36ab6fe76bb1be00144f1864ee6ebaff"/><file name="Return.php" hash="fb06e7b45aa467af0f0a3fb821ebdee7"/></dir><dir name="Customer"><dir name="Usercards"><file name="Add.php" hash="c0d718c85085af9e71089a3954f4a680"/><file name="Iframe.php" hash="d910b54614e93a4c00729c221a2d1a34"/><file name="List.php" hash="2a0c2cbe1fcf7a4cd362867f7dc8582c"/></dir></dir><dir name="Form"><file name="Cc.php" hash="abb21204c6bd54f17ca8f59456e06453"/><file name="Savedcards.php" hash="3165da4531d2878af73072cfadf76ace"/></dir><dir name="Info"><file name="Cc.php" hash="34a4ab8b987706aac6dc01cc5a303170"/><file name="Prepaidpayments.php" hash="17621a3dcfa5bc6f6f86e8c95033466e"/><file name="Savedcards.php" hash="6ae9e49561755ce92d7fd0930aadfda3"/></dir><dir name="Recurring"><dir name="Profile"><file name="View.php" hash="99f8f97567ada3edc6fd64ac29a17b83"/></dir></dir></dir><dir name="Helper"><file name="Abstract.php" hash="2e42ec3ecf8f4ec144350039b607c8d9"/><dir name="Address"><file name="Data.php" hash="f6db4d33d974dade9b7823d6b8b5d0a5"/></dir><dir name="Api"><file name="Data.php" hash="2a502e1747e5de5d7db24283c5187c6f"/></dir><dir name="Cart"><file name="Data.php" hash="7ac41495ee8196f0f44b52b95967545e"/></dir><file name="Data.php" hash="8dd39f5b17b8a58a9694181ae1fdcd29"/><dir name="Settings"><file name="Data.php" hash="5381ff7b6a69e3a742ef5b6c6366a5ad"/></dir></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><file name="Placedisplay.php" hash="e8d7d8c93a02eb373f0301a4ef087a1f"/></dir></dir></dir></dir><file name="Fraudcheckdata.php" hash="67ec2c9416b758da8a595e1b9f4d1cfc"/><dir name="Mysql4"><dir name="Coupon"><file name="Usage.php" hash="550bbc526828c943cd94c1014f62f480"/></dir><dir name="Fraudcheckdata"><file name="Collection.php" hash="65be31250429aac5c657e0d6905c8b7a"/></dir><file name="Fraudcheckdata.php" hash="4e21b50a5f7df50409c9098fe330df84"/><dir name="Paymentconfiguration"><file name="Collection.php" hash="4f8029d4d23c5f31fb877b4d28250798"/></dir><file name="Paymentconfiguration.php" hash="2289772e650bde075a581a57e90ccdb4"/><dir name="Quote"><dir name="Xpcdata"><file name="Collection.php" hash="6cec9e95afd39e87012cb896c84a26a6"/></dir><file name="Xpcdata.php" hash="743b47d77181eac0060ae18b7b3091c7"/></dir><dir name="Usercards"><file name="Collection.php" hash="d408cb3f3bac4fd7f8f982b9271311b4"/></dir><file name="Usercards.php" hash="76b2c6211e494a589f62b2e7efd9fcf2"/></dir><file name="Observer.php" hash="4417002f7f3e4decedf952ec6084e47e"/><dir name="Payment"><file name="Abstract.php" hash="73fc353305d5247f9d63b517a4719584"/><file name="Cc.php" hash="f524db48ee7135457d68c96b8134b965"/><file name="Cc1.php" hash="b75ec36b087723a37e05889072a75e6c"/><file name="Cc2.php" hash="e8b83d62206e400bed6ad961222509ec"/><file name="Cc3.php" hash="6998dec58c419d666382c2e793446a40"/><dir name="Recurring"><file name="Profile.php" hash="136d1c070a47b4df2b8387d812457975"/></dir><file name="Savedcards.php" hash="4dd1fe169aa623a030f8c311f91dd6aa"/></dir><file name="Paymentconfiguration.php" hash="20745abddc071a2a1a67f04dc9407297"/><dir name="Quote"><dir name="Address"><dir name="Total"><dir name="Nominal"><dir name="Recurring"><file name="Discount.php" hash="e00831a19d3dc3984a988442f898045d"/><dir name="Initialfee"><file name="Tax.php" hash="df2e35cd60fb9b072a4a45582c4baf4a"/></dir></dir></dir><file name="Nominal.php" hash="67d677b941e01156e25bde52afd3452f"/></dir></dir><file name="Xpcdata.php" hash="18e4eed0bd2ded95eeb9fce580cd75e9"/></dir><file name="Quote.php" hash="62745034a635f174eb2ae52a434363c1"/><dir name="Sales"><dir name="Recurring"><file name="Profile.php" hash="4b42debdef8853eafb2a2fad69648374"/></dir></dir><dir name="Source"><file name="Paymentconfiguration.php" hash="93eacabe0c8db27ee32f6e939d2a6d25"/></dir><file name="Usercards.php" hash="928d309bc2e3964891a32e6355b3d98a"/></dir><dir name="Transport"><file name="ApiResponse.php" hash="9798265b06eae6292ac9cf8f892911ed"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="AddnewcardController.php" hash="8dc065cdb27a8f2f2bfd153b5489fdc0"/><file name="CustomerController.php" hash="89bb3462fde3308a6ec2b8a8b963fe81"/><dir name="Sales"><dir name="Order"><file name="CreateController.php" hash="f56c255a9178620bc12be627e35f21f1"/><file name="EditController.php" hash="eaf72fc44b5ec85e216b0df9126d36d1"/><file name="PaymentController.php" hash="3db75642760038bc17b8d920855b5712"/></dir></dir><dir name="Settings"><file name="XpcController.php" hash="9c26442bc3de95f3e36af321968f2d31"/></dir></dir><file name="CustomerController.php" hash="87866f3feb3bd2fcd2b9915689dbc5ea"/><file name="ProcessingController.php" hash="7ea2cee1245e6431080ee8c031344ab0"/></dir><dir name="etc"><file name="adminhtml.xml" hash="ae219070bda0fec0797fbe400fa74d8f"/><file name="config.xml" hash="e9bba691ee27231b05df21547636a4e8"/><file name="system.xml" hash="5ea77283425202f6ee5f8f1581bb9583"/></dir><dir name="sql"><dir name="xpaymentsconnector_setup"><file name="mysql4-install-1.0.0.php" hash="65499bf19d3160b294943ba66c35806a"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="947960c070b098218808b95b8773d410"/><file name="mysql4-upgrade-1.0.1-1.0.2.php" hash="fabef89153591eeae3933ec8f478de51"/><file name="mysql4-upgrade-1.0.2-1.0.3.php" hash="cdf4d24d4bbd68aad2cf0ed586aa5710"/><file name="mysql4-upgrade-1.0.3-1.0.4.php" hash="d7f8ad91db27cfb83bec9e2162751b9c"/><file name="mysql4-upgrade-1.0.4-1.0.5.php" hash="ed59d38aa5fa9c70eb5ac5399e7430b8"/><file name="mysql4-upgrade-1.0.5-1.0.6.php" hash="d69cf11809ff724fd43eab4e6450cf94"/><file name="mysql4-upgrade-1.0.6-1.0.7.php" hash="afe29b79e383b2bf8d91035fc0ba5939"/><file name="mysql4-upgrade-1.0.7-1.0.8.php" hash="36914c857f46f3cf1f921f18ca7aa435"/><file name="mysql4-upgrade-1.0.8-1.0.9.php" hash="eecb339e90a5eb1033425d0d9c5ab60a"/><file name="mysql4-upgrade-1.0.9-1.1.0.php" hash="404757e176b56a089aa0d8c3a0384a51"/><file name="mysql4-upgrade-1.1.0-1.1.1.php" hash="50406b4966e81d44d914134aed88bf3e"/><file name="mysql4-upgrade-1.1.1-1.1.2.php" hash="69ff2db057f6e102b3219f10b5ad1e88"/><file name="mysql4-upgrade-1.1.2-1.1.3.php" hash="411047613212e6dce7df98798fdbee9d"/><file name="mysql4-upgrade-1.1.3-1.8.0.php" hash="f60fc38a73442b853614035c37aa9a88"/><file name="mysql4-upgrade-1.8.0-1.8.1.php" hash="be20b12e641298da720eef5a1d804f01"/></dir></dir></dir></dir></target><target name="mage"><dir name="js"><dir name="xpayment"><file name="add-new-card.css" hash="50e744658fb135d4f2e22eae5c78feb5"/><file name="add-new-card.js" hash="5ef66621ba2c45e0591f65220a0babe4"/><file name="backend-xpayment.js" hash="9cdcb40212f976fbb6626e79f565b819"/><file name="checkout-submit.js" hash="af4bc5f33291688c6820ad74ef643041"/><dir name="images"><file name="arrow-down.png" hash="a0beb6cd0ca4dd686ee5bf772432176e"/><file name="arrow-up.png" hash="df40115c816a7e08016c04120ac22e53"/><file name="btn_bg_fraud.png" hash="028ca5db7bdc7a5327e5cafa8747e079"/><file name="card_types.png" hash="0e50345d855268c0396a740fcf37df92"/><file name="loader.gif" hash="e67d85a8d2d4021514815d0ff4d65173"/><file name="pci_dss_compliance.png" hash="db4e8b0e5eaa6779db9a73e66c136670"/><file name="step-arrow.png" hash="99b20583434330394fb2302b9b9f7331"/><file name="xpayment-logo.png" hash="a46be1bc2589a988172a104c11bed332"/></dir><file name="settings-xpc.css" hash="9a15cbafff63e93950d4fd839c0c5a03"/><file name="settings-xpc.js" hash="f8474c94344434fadda42a7d04cd8335"/><file name="settings.css" hash="1e0235171cd10198ce9334e67467a8c3"/></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Cdev_XPaymentsConnector.csv" hash="9c4ff78f5c159b2e98f2db51fcbc864c"/></dir></target><target name="mageetc"><dir name="modules"><file name="Cdev_XPaymentsConnector.xml" hash="6553887d9368d89585de4508b02eb0f7"/></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="cc.phtml" hash="a082a166647d2e850937aa4a1721cc9b"/><file name="prepaidpayments.phtml" hash="d2af544b65ae496be0f6465f7500549b"/><file name="savedcards.phtml" hash="377bdc79eb740329be215d933a204f6f"/></dir><dir name="info"><file name="cc.phtml" hash="2c0647d013182c158f0615e6788f57b1"/><file name="prepaidpayments.phtml" hash="63a15ae6dd0e3d1f7aa56bda95813dc9"/><file name="savedcards.phtml" hash="93de9ff106a72972861e93bd010bdf9a"/></dir><dir name="order"><file name="pay.phtml" hash="b5753ed33f7998acc097023089d7ad43"/><dir name="view"><dir name="tab"><file name="xporderstate.phtml" hash="d0d3795d3ad9e428bd3ae013f6fc495d"/></dir></dir></dir><dir name="pdf"><file name="info.phtml" hash="14dfc11d70bfc47614fe345e7d542e25"/></dir><dir name="settings"><file name="help.phtml" hash="701542e3a4cfc1fe4b8da81f118ceeee"/><dir name="tabs"><file name="connection.phtml" hash="2dc816bdf75caef351e4edf3b101b8bd"/><file name="payment_methods.phtml" hash="04ff2cb22cac2bb1184e0f90504a9352"/><file name="welcome.phtml" hash="28f15bb1031ff1e4ccddb3cd925091bc"/><file name="zero_auth.phtml" hash="8fc3b0b30090b39742d93941b039b8b8"/></dir><file name="xpc.phtml" hash="eded46dbbb2657a2ac9df2658acc4c42"/></dir><dir name="usercards"><file name="add.phtml" hash="eb3d93c62f542192ca041be2d223e6c5"/><file name="iframe.phtml" hash="b6cb88eeec648a31b77c4bff38bcfc09"/><dir name="tab"><file name="js.phtml" hash="a5f221fa7e8772352b14867947871fd8"/></dir></dir></dir><file name="info.phtml" hash="1f1dde8ac842af5e77460ad8316063a2"/></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="3f2143b8c10a6284569b8ec6b31c427b"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="xpaymentsconnector"><dir name="checkout"><file name="blank.phtml" hash="7eec31175dc5516d73ef00b5634ba645"/><dir name="onepage"><file name="order-detail.phtml" hash="f5b8746678af65f95e0eb7fa1a8fad8b"/><dir name="review"><file name="button.phtml" hash="a1e2d615c019950d32b99c7cfc85da23"/><file name="cc.phtml" hash="fc8579a2877de308de4d75c105ff8137"/></dir></dir><file name="redirect.phtml" hash="99583bd93ed8b839b9758eebfb04f2f3"/><file name="return.phtml" hash="8468d24da3aaf06b44278315ace4cc8d"/><file name="success.phtml" hash="a2a2097281d67372887770b7810846df"/><file name="xpc_data.phtml" hash="b68322c7b86436fa83d241bb1ef43a26"/></dir><dir name="customer"><dir name="usercards"><file name="add.phtml" hash="8e5740f2f7f864c990b62852afd7e212"/><file name="iframe.phtml" hash="f5517759de042157921daf82764cf2ca"/><file name="list.phtml" hash="81f636155dc0605369b689838be81b5a"/></dir></dir><dir name="form"><file name="cc.phtml" hash="d8e0f65ce865838bfce9a6a603dc20f3"/><file name="savedcards.phtml" hash="c7909e538d7b3f65699005dcc26a0338"/></dir><dir name="info"><file name="cc.phtml" hash="3be1a8d0af0f362bed14f8a596319eda"/><file name="prepaidpayments.phtml" hash="7981ab636d54ccc28d678161a1bd1f26"/><file name="savedcards.phtml" hash="94b4f35db16f7814c39a9e64a8e2f055"/></dir></dir></dir><dir name="layout"><file name="xpaymentsconnector.xml" hash="80f2c4c93167d29255cd13a45e4e8e83"/></dir></dir></dir></dir></target></contents>
24
  <compatible/>
25
  <dependencies><required><php><min>5.5.0</min><max>7.2.0</max></php></required></dependencies>
26
  </package>