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 +19 -9
- app/code/community/Cdev/XPaymentsConnector/Helper/Cart/Data.php +13 -2
- app/code/community/Cdev/XPaymentsConnector/Helper/Data.php +13 -3
- app/code/community/Cdev/XPaymentsConnector/Helper/Settings/Data.php +16 -3
- app/code/community/Cdev/XPaymentsConnector/Model/Payment/Cc.php +5 -1
- app/code/community/Cdev/XPaymentsConnector/Model/Payment/Savedcards.php +27 -10
- app/code/community/Cdev/XPaymentsConnector/Model/Quote.php +5 -1
- app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/CreateController.php +3 -3
- app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/EditController.php +78 -0
- app/code/community/Cdev/XPaymentsConnector/controllers/Adminhtml/Sales/Order/PaymentController.php +51 -44
- app/code/community/Cdev/XPaymentsConnector/controllers/ProcessingController.php +44 -12
- app/code/community/Cdev/XPaymentsConnector/etc/config.xml +2 -2
- app/code/community/Cdev/XPaymentsConnector/sql/xpaymentsconnector_setup/mysql4-upgrade-1.8.0-1.8.1.php +33 -0
- app/design/frontend/base/default/layout/xpaymentsconnector.xml +17 -0
- js/xpayment/checkout-submit.js +70 -3
- package.xml +10 -31
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']
|
236 |
-
&& $data['refundedAmountAvail']
|
237 |
) {
|
238 |
|
239 |
-
|
|
|
|
|
|
|
240 |
|
241 |
-
|
242 |
-
$data['refundedAmountAvail'] > 0
|
243 |
-
&& $data['capturedAmountAvail'] < 0.01
|
244 |
-
) {
|
245 |
|
246 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
}
|
248 |
|
249 |
-
if (
|
|
|
|
|
|
|
|
|
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 |
-
&&
|
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 (
|
|
|
|
|
|
|
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 (
|
|
|
|
|
|
|
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
|
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
|
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
|
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->
|
155 |
) {
|
156 |
|
157 |
-
$
|
|
|
158 |
->getCollection()
|
159 |
-
->addFieldToFilter('
|
160 |
-
->addFieldToFilter('usage_type', Cdev_XPaymentsConnector_Model_Usercards::SIMPLE_CARD)
|
161 |
-
->count();
|
162 |
|
163 |
-
$
|
164 |
|
165 |
-
|
|
|
|
|
|
|
|
|
166 |
|
167 |
-
|
|
|
|
|
|
|
|
|
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($
|
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 |
-
&&
|
|
|
|
|
|
|
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->
|
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->
|
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->
|
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 $
|
98 |
-
|
99 |
-
$this->_getSession()->addError($this->__($e->getMessage()));
|
100 |
|
101 |
-
$this->
|
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->
|
126 |
|
127 |
-
} catch (Exception $
|
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()->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 $
|
206 |
-
|
207 |
-
$this->_getSession()->addError($this->__($e->getMessage()));
|
208 |
|
209 |
-
|
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 $
|
238 |
-
|
239 |
-
$this->_getSession()->addError($this->__($e->getMessage()));
|
240 |
|
241 |
-
|
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 $
|
270 |
-
|
271 |
-
$this->_getSession()->addError($this->__($e->getMessage()));
|
272 |
|
273 |
-
|
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 $
|
322 |
-
|
323 |
-
$this->_getSession()->addError($this->__($e->getMessage()));
|
324 |
|
325 |
-
|
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')
|
568 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
|
|
|
|
824 |
|
825 |
-
|
826 |
-
->setCustomerId($customerId)
|
827 |
-
->setSaveInAddressBook(true);
|
828 |
|
829 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
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
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
-
return
|
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 |
-
|
|
|
|
|
|
|
|
|
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.
|
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?
|
13 |

|
14 |
-
|
15 |
-
-
|
16 |
-
-
|
17 |
-
-
|
18 |
-
-
|
19 |
-
-
|
20 |
-
- “X-Payments Order State” page redesigned. This page allows to do partial refunds/voids and capture authorized funds.
|
21 |
-
- Now the access to the X-Payments Connector features can be partially or completely restricted with the help of the Magento’s Roles and Permissions.
|
22 |
-
- Added support of the Developer Mode (Use HTTP protocol) for the. testing/development environment which do not have valid SSL certificate.
|
23 |
-

|
24 |
-
2) Customer front-end
|
25 |
-
- Checkout can have up to three X-Payments payment methods.
|
26 |
-
- Saving credit cards by customers has been revamped and improved.
|
27 |
-
- Support of the One step Checkout module by Ahead Works (beta).
|
28 |
-
- Automatically unset used coupon for the declined payments.
|
29 |
-
- Corrected free shipping calculation for the FireCheckout extension.
|
30 |
-
- Increased speed of the callback requests processing, which makes checkout. faster.
|
31 |
-
- Corrected store operation if the extension is switched off.
|
32 |
-

|
33 |
-
3) Code re-factoring (for the developers who extend the module features)
|
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.
|
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.
|
36 |
-
- Corrected and simplified the inheritance tree. Internal quote model is used to transport data during the payment processing, and it doesn’t affect the quote class extensions made by other modules.
|
37 |
-
- Removed the unused legacy code. Code-style is improved
|
38 |
-
- Corrected version in the internal config file. 
|
39 |
-
- Other minor bug-fixes and improvements.
|
40 |
-
</notes>
|
41 |
<authors><author><name>Alexander Mulin</name><user>xpayments</user><email>alex.mulin@x-payments.com</email></author></authors>
|
42 |
-
<date>2017-
|
43 |
-
<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?
|
13 |

|
14 |
+
- Corrected email notifications
|
15 |
+
- Implemented ability to process the orders which were modified by the store admin
|
16 |
+
- Implemented multi-store support
|
17 |
+
- Speed up the callback requests processing
|
18 |
+
- Corrected operating with coupons (Shopping cart price rules) 
|
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>
|