Version Notes
Kancart supports guest checkout now;
We developed a promotion mechanism, you can add promotion rules for mobile user;
More details of improvements can be found on www.kancart.com
Download this release
Release Info
Developer | Kancart.com |
Extension | KANCART_MobileAPI |
Version | 2.1.0 |
Comparing to | |
See all releases |
Code changes from version 2.0.9 to 2.1.0
- app/code/community/Kancart/MobileApi/Model/Checkout.php +11 -4
- app/code/community/Kancart/MobileApi/Model/Item.php +1 -1
- app/code/community/Kancart/MobileApi/Model/Items.php +3 -1
- app/code/community/Kancart/MobileApi/Model/Order.php +3 -2
- app/code/community/Kancart/MobileApi/Model/Payment.php +19 -9
- app/code/community/Kancart/MobileApi/Model/Store.php +23 -27
- app/code/community/Kancart/MobileApi/controllers/IndexController.php +3 -3
- app/code/community/Kancart/MobileApi/etc/system.xml +18 -16
- package.xml +8 -5
app/code/community/Kancart/MobileApi/Model/Checkout.php
CHANGED
@@ -64,8 +64,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
64 |
if ($this->getRequest()->getParam('payment_method_id') == 'paypalwpp') {
|
65 |
Kancart::getModel('PayPalEC')->kancart_shoppingcart_paypalec_detail();
|
66 |
} else {
|
67 |
-
if (!$this->isLoggedIn() || (
|
68 |
-
!Mage::helper('checkout')->isAllowedGuestCheckout($this->getOnepage()->getQuote()))) {
|
69 |
return array(false, '0x0002', 'You need login first.');
|
70 |
}
|
71 |
|
@@ -195,7 +194,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
195 |
$shippingMethodResult = $this->getOnepage()->saveShippingMethod($ShippingRateCode);
|
196 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
197 |
if (isset($shippingMethodResult['error'])) {
|
198 |
-
$_SESSION['checkout_messages'] = $shippingMethodResult['message'];
|
199 |
}
|
200 |
|
201 |
return $this->shoppingCartCheckoutDetail();
|
@@ -337,7 +336,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
337 |
'purchaseorder' => 3
|
338 |
);
|
339 |
|
340 |
-
$kcode =
|
341 |
$payments = array();
|
342 |
$methods = $this->getAvailablePayment();
|
343 |
if ($methods) {
|
@@ -417,6 +416,10 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
417 |
return $this->_customer;
|
418 |
}
|
419 |
|
|
|
|
|
|
|
|
|
420 |
public function getCheckout() {
|
421 |
if (empty($this->_checkout)) {
|
422 |
$this->_checkout = Mage::getSingleton('checkout/session');
|
@@ -424,6 +427,10 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
424 |
return $this->_checkout;
|
425 |
}
|
426 |
|
|
|
|
|
|
|
|
|
427 |
public function getQuote() {
|
428 |
if (empty($this->_quote)) {
|
429 |
$this->_quote = $this->getCheckout()->getQuote();
|
64 |
if ($this->getRequest()->getParam('payment_method_id') == 'paypalwpp') {
|
65 |
Kancart::getModel('PayPalEC')->kancart_shoppingcart_paypalec_detail();
|
66 |
} else {
|
67 |
+
if (!$this->isLoggedIn() || $this->getRequest()->getParam('guest_checkout')) {
|
|
|
68 |
return array(false, '0x0002', 'You need login first.');
|
69 |
}
|
70 |
|
194 |
$shippingMethodResult = $this->getOnepage()->saveShippingMethod($ShippingRateCode);
|
195 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
196 |
if (isset($shippingMethodResult['error'])) {
|
197 |
+
$_SESSION['checkout_messages'][] = $shippingMethodResult['message'];
|
198 |
}
|
199 |
|
200 |
return $this->shoppingCartCheckoutDetail();
|
336 |
'purchaseorder' => 3
|
337 |
);
|
338 |
|
339 |
+
$kcode = str_replace('kancart_', '', $payment_id);
|
340 |
$payments = array();
|
341 |
$methods = $this->getAvailablePayment();
|
342 |
if ($methods) {
|
416 |
return $this->_customer;
|
417 |
}
|
418 |
|
419 |
+
/**
|
420 |
+
*
|
421 |
+
* @return Mage_Checkout_Model_Session
|
422 |
+
*/
|
423 |
public function getCheckout() {
|
424 |
if (empty($this->_checkout)) {
|
425 |
$this->_checkout = Mage::getSingleton('checkout/session');
|
427 |
return $this->_checkout;
|
428 |
}
|
429 |
|
430 |
+
/**
|
431 |
+
*
|
432 |
+
* @return Mage_Sales_Model_Quote
|
433 |
+
*/
|
434 |
public function getQuote() {
|
435 |
if (empty($this->_quote)) {
|
436 |
$this->_quote = $this->getCheckout()->getQuote();
|
app/code/community/Kancart/MobileApi/Model/Item.php
CHANGED
@@ -762,7 +762,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
762 |
|
763 |
private function collectBundleProductPrices($product) {
|
764 |
$prices = array();
|
765 |
-
$prices['currency'] = Mage::
|
766 |
$display_prices = array();
|
767 |
$prices['tier_prices'] = $this->getItemTierPrice($product);
|
768 |
|
762 |
|
763 |
private function collectBundleProductPrices($product) {
|
764 |
$prices = array();
|
765 |
+
$prices['currency'] = Mage::app()->getStore()->getCurrentCurrencyCode();
|
766 |
$display_prices = array();
|
767 |
$prices['tier_prices'] = $this->getItemTierPrice($product);
|
768 |
|
app/code/community/Kancart/MobileApi/Model/Items.php
CHANGED
@@ -86,6 +86,7 @@ class Kancart_MobileApi_Model_Items extends Kancart_MobileApi_Model_Abstract {
|
|
86 |
$productList = $collection->getItems();
|
87 |
|
88 |
$items = array();
|
|
|
89 |
$itemObject = Kancart::getModel('Item');
|
90 |
foreach ($productList as $product) {
|
91 |
if ($product->getId()) {
|
@@ -94,9 +95,10 @@ class Kancart_MobileApi_Model_Items extends Kancart_MobileApi_Model_Abstract {
|
|
94 |
$itemObject->getItemPrices();
|
95 |
$items[] = $itemObject->getItem();
|
96 |
$itemObject->clear();
|
|
|
97 |
}
|
98 |
}
|
99 |
-
array_multisort($
|
100 |
|
101 |
$products = array();
|
102 |
$products['items'] = $items;
|
86 |
$productList = $collection->getItems();
|
87 |
|
88 |
$items = array();
|
89 |
+
$sortOrder = array();
|
90 |
$itemObject = Kancart::getModel('Item');
|
91 |
foreach ($productList as $product) {
|
92 |
if ($product->getId()) {
|
95 |
$itemObject->getItemPrices();
|
96 |
$items[] = $itemObject->getItem();
|
97 |
$itemObject->clear();
|
98 |
+
$sortOrder[] = array_search($product->getId(), $itemIds);
|
99 |
}
|
100 |
}
|
101 |
+
array_multisort($sortOrder, SORT_ASC, $items);
|
102 |
|
103 |
$products = array();
|
104 |
$products['items'] = $items;
|
app/code/community/Kancart/MobileApi/Model/Order.php
CHANGED
@@ -197,8 +197,9 @@ class Kancart_MobileApi_Model_Order extends Kancart_MobileApi_Model_Abstract {
|
|
197 |
}
|
198 |
|
199 |
private function getOrderPayment($order) {
|
|
|
200 |
return array('pm_id' => $order->getPayment()->getMethod(),
|
201 |
-
'title' =>
|
202 |
'description' => '');
|
203 |
}
|
204 |
|
@@ -404,7 +405,7 @@ class Kancart_MobileApi_Model_Order extends Kancart_MobileApi_Model_Abstract {
|
|
404 |
empty($total) && $total = $order->getPayment()->getAmountAuthorized();
|
405 |
$currency = $order->getOrderCurrencyCode();
|
406 |
} else {
|
407 |
-
$currency = Mage::
|
408 |
$total = 0;
|
409 |
}
|
410 |
|
197 |
}
|
198 |
|
199 |
private function getOrderPayment($order) {
|
200 |
+
$path = 'payment/' . $order->getPayment()->getMethod() . '/title';
|
201 |
return array('pm_id' => $order->getPayment()->getMethod(),
|
202 |
+
'title' => Mage::app()->getStore()->getConfig($path),
|
203 |
'description' => '');
|
204 |
}
|
205 |
|
405 |
empty($total) && $total = $order->getPayment()->getAmountAuthorized();
|
406 |
$currency = $order->getOrderCurrencyCode();
|
407 |
} else {
|
408 |
+
$currency = Mage::app()->getStore()->getCurrentCurrencyCode();
|
409 |
$total = 0;
|
410 |
}
|
411 |
|
app/code/community/Kancart/MobileApi/Model/Payment.php
CHANGED
@@ -16,7 +16,11 @@ class Kancart_MobileApi_Model_Payment extends Kancart_MobileApi_Model_Abstract {
|
|
16 |
return array(false, '0x9000', 'ShoppingCart is empty.');
|
17 |
}
|
18 |
|
19 |
-
$
|
|
|
|
|
|
|
|
|
20 |
$paypal = Kancart::getModel('PayPalWPS');
|
21 |
list($result, $order) = $paypal->placeOrder($payment, $comments);
|
22 |
if ($result === true) {
|
@@ -32,16 +36,22 @@ class Kancart_MobileApi_Model_Payment extends Kancart_MobileApi_Model_Abstract {
|
|
32 |
public function kancart_payment_done($orderId, $comments, $state) {
|
33 |
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
|
34 |
if ($order && $order->getId()) {
|
35 |
-
$
|
36 |
-
|
37 |
-
|
38 |
-
$
|
39 |
-
|
40 |
-
|
41 |
-
|
|
|
42 |
} else {
|
43 |
-
|
44 |
}
|
|
|
|
|
|
|
|
|
|
|
45 |
} else {
|
46 |
return array(false, '0xFFFF', 'Error this order doesn\'t exist.');
|
47 |
}
|
16 |
return array(false, '0x9000', 'ShoppingCart is empty.');
|
17 |
}
|
18 |
|
19 |
+
if (($title = $this->getRequest()->getParam('payment_method_name'))) {
|
20 |
+
$comments = 'From mobile payment ' . $title;
|
21 |
+
} else {
|
22 |
+
$comments = 'From mobile payment ' . $paymentId;
|
23 |
+
}
|
24 |
$paypal = Kancart::getModel('PayPalWPS');
|
25 |
list($result, $order) = $paypal->placeOrder($payment, $comments);
|
26 |
if ($result === true) {
|
36 |
public function kancart_payment_done($orderId, $comments, $state) {
|
37 |
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
|
38 |
if ($order && $order->getId()) {
|
39 |
+
if (($result = strtolower($state) == 'succeed')) {
|
40 |
+
$state = $this->getRequest()->getParam('order_state', Mage_Sales_Model_Order::STATE_PROCESSING);
|
41 |
+
} else {
|
42 |
+
$state = Mage_Sales_Model_Order::STATE_PENDING_PAYMENT;
|
43 |
+
}
|
44 |
+
$title = $this->getRequest()->getParam('payment_method_name', $_REQUEST['payment_method_id']);
|
45 |
+
if ($result) {
|
46 |
+
$message = 'Your order has been paid on our mobile payment service ' . $title;
|
47 |
} else {
|
48 |
+
$message = 'Your order has been paid failed on our mobile payment service ' . $title;
|
49 |
}
|
50 |
+
$order->setState($state, TRUE, $comments);
|
51 |
+
$order->save();
|
52 |
+
$order->sendOrderUpdateEmail(TRUE, $message);
|
53 |
+
$data = Kancart::getModel('Order')->getPaymentOrderInfo($order, $orderId);
|
54 |
+
return array(true, '0x0000', $data);
|
55 |
} else {
|
56 |
return array(false, '0xFFFF', 'Error this order doesn\'t exist.');
|
57 |
}
|
app/code/community/Kancart/MobileApi/Model/Store.php
CHANGED
@@ -147,13 +147,15 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
147 |
$languages = array();
|
148 |
$stores = Mage::app()->getStores(false, true);
|
149 |
foreach ($stores as $store) {
|
150 |
-
if ($store->
|
151 |
-
$
|
152 |
-
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
|
|
|
|
157 |
}
|
158 |
}
|
159 |
return $languages;
|
@@ -161,35 +163,29 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
161 |
|
162 |
public function getCountries() {
|
163 |
$collection = Mage::getResourceModel('directory/country_collection')->loadByStore();
|
164 |
-
$result = array();
|
165 |
-
foreach ($collection as $country) {
|
166 |
-
$country->getName();
|
167 |
-
$result[] = $country->toArray(array('country_id', 'iso2_code', 'iso3_code', 'name'));
|
168 |
-
}
|
169 |
$countries = array();
|
170 |
-
|
171 |
-
$countries[
|
172 |
-
|
173 |
-
|
174 |
-
|
|
|
|
|
175 |
}
|
176 |
return $countries;
|
177 |
}
|
178 |
|
179 |
public function getZones() {
|
180 |
-
$collection = Mage::getModel('directory/country')->getCollection();
|
181 |
-
$result = array();
|
182 |
$zones = array();
|
183 |
-
$
|
184 |
foreach ($collection as $country) {
|
185 |
foreach ($country->getRegions() as $region) {
|
186 |
-
$
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
$i++;
|
193 |
}
|
194 |
}
|
195 |
return $zones;
|
147 |
$languages = array();
|
148 |
$stores = Mage::app()->getStores(false, true);
|
149 |
foreach ($stores as $store) {
|
150 |
+
if ($store->getIsActive() && $store->getWebsite()->getIsDefault()) {
|
151 |
+
if ($store->getGroup()->getId() == $store->getWebsite()->getDefaultGroupId()) {
|
152 |
+
$locale = Mage::getStoreConfig('general/locale/code', $store->getCode());
|
153 |
+
$languages[] = array(
|
154 |
+
'language_id' => $store->getCode(),
|
155 |
+
'language_code' => $locale,
|
156 |
+
'language_name' => $store->getName(),
|
157 |
+
'position' => $store->getSortOrder());
|
158 |
+
}
|
159 |
}
|
160 |
}
|
161 |
return $languages;
|
163 |
|
164 |
public function getCountries() {
|
165 |
$collection = Mage::getResourceModel('directory/country_collection')->loadByStore();
|
|
|
|
|
|
|
|
|
|
|
166 |
$countries = array();
|
167 |
+
foreach ($collection as $country) {
|
168 |
+
$countries[] = array(
|
169 |
+
'country_id' => $country->getCountryId(),
|
170 |
+
'country_name' => $country->getName(),
|
171 |
+
'country_iso_code_2' => $country->getIso2Code(),
|
172 |
+
'country_iso_code_3' => $country->getIso3Code()
|
173 |
+
);
|
174 |
}
|
175 |
return $countries;
|
176 |
}
|
177 |
|
178 |
public function getZones() {
|
|
|
|
|
179 |
$zones = array();
|
180 |
+
$collection = Mage::getModel('directory/country')->getCollection();
|
181 |
foreach ($collection as $country) {
|
182 |
foreach ($country->getRegions() as $region) {
|
183 |
+
$zones[] = array(
|
184 |
+
'zone_id' => $region->getRegionId(),
|
185 |
+
'country_id' => $region->getCountryId(),
|
186 |
+
'zone_name' => $region->getName(),
|
187 |
+
'zone_code' => $region->getCode()
|
188 |
+
);
|
|
|
189 |
}
|
190 |
}
|
191 |
return $zones;
|
app/code/community/Kancart/MobileApi/controllers/IndexController.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
|
3 |
error_reporting(E_ALL ^ E_NOTICE);
|
4 |
-
define('KANCART_PLUGIN_VERSION', '2.0
|
5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
6 |
-
define('KANCART_APP_SECRECT', Mage::getStoreConfig('Kancart/Kancart_group/
|
7 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
8 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'ErrorHandler.php');
|
9 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'Abstract.php');
|
@@ -71,7 +71,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
71 |
|
72 |
if ($this->getRequest()->getParam('discount_amount') || $this->getRequest()->getParam('coupon_free_ship', 0) > 0) {
|
73 |
Mage::app()->getConfig()->setNode('global/sales/quote/totals/discount/class', 'mobileapi/discount');
|
74 |
-
Mage::app()->getConfig()->setNode('global/sales/order_invoice/totals/discount/class', 'mobileapi/invoice');
|
75 |
}
|
76 |
|
77 |
$this->compilerPlugin(); //To prevent user backstage collapse after compiled
|
1 |
<?php
|
2 |
|
3 |
error_reporting(E_ALL ^ E_NOTICE);
|
4 |
+
define('KANCART_PLUGIN_VERSION', '2.1.0');
|
5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
6 |
+
define('KANCART_APP_SECRECT', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appsecret', Mage::app()->getStore()));
|
7 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
8 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'ErrorHandler.php');
|
9 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'Abstract.php');
|
71 |
|
72 |
if ($this->getRequest()->getParam('discount_amount') || $this->getRequest()->getParam('coupon_free_ship', 0) > 0) {
|
73 |
Mage::app()->getConfig()->setNode('global/sales/quote/totals/discount/class', 'mobileapi/discount');
|
74 |
+
Mage::app()->getConfig()->setNode('global/sales/order_invoice/totals/discount/class', 'mobileapi/invoice');
|
75 |
}
|
76 |
|
77 |
$this->compilerPlugin(); //To prevent user backstage collapse after compiled
|
app/code/community/Kancart/MobileApi/etc/system.xml
CHANGED
@@ -15,16 +15,18 @@
|
|
15 |
<show_in_website>1</show_in_website>
|
16 |
<show_in_store>1</show_in_store>
|
17 |
<groups>
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
|
|
|
|
28 |
<label>Kancart APP Key</label>
|
29 |
<comment>This is the Key Kancart.com assigned to you to identify yourself.</comment>
|
30 |
<frontend_type>text</frontend_type>
|
@@ -33,17 +35,17 @@
|
|
33 |
<show_in_website>1</show_in_website>
|
34 |
<show_in_store>1</show_in_store>
|
35 |
</Kancart_appkey>
|
36 |
-
|
37 |
-
<label>Kancart APP
|
38 |
-
<comment>This is the
|
39 |
<frontend_type>text</frontend_type>
|
40 |
<sort_order>20</sort_order>
|
41 |
<show_in_default>1</show_in_default>
|
42 |
<show_in_website>1</show_in_website>
|
43 |
<show_in_store>1</show_in_store>
|
44 |
-
</
|
45 |
-
|
46 |
-
|
47 |
</groups>
|
48 |
</Kancart>
|
49 |
</sections>
|
15 |
<show_in_website>1</show_in_website>
|
16 |
<show_in_store>1</show_in_store>
|
17 |
<groups>
|
18 |
+
<Kancart_group translate="label">
|
19 |
+
<label>Authorization</label>
|
20 |
+
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>100</sort_order>
|
22 |
+
<show_in_default>1</show_in_default>
|
23 |
+
<show_in_website>1</show_in_website>
|
24 |
+
<show_in_store>1</show_in_store>
|
25 |
+
<comment><![CDATA[<a href="http://www.kancart.com" target="_blank">Sign up for an Kancart account to get your key and secret</a>]]>
|
26 |
+
</comment>
|
27 |
+
<fields>
|
28 |
+
<!-- New fields go here -->
|
29 |
+
<Kancart_appkey translate="label">
|
30 |
<label>Kancart APP Key</label>
|
31 |
<comment>This is the Key Kancart.com assigned to you to identify yourself.</comment>
|
32 |
<frontend_type>text</frontend_type>
|
35 |
<show_in_website>1</show_in_website>
|
36 |
<show_in_store>1</show_in_store>
|
37 |
</Kancart_appkey>
|
38 |
+
<Kancart_appsecret translate="label">
|
39 |
+
<label>Kancart APP Secret</label>
|
40 |
+
<comment>This is the Secret Kancart.com assigned to you to protect your data.</comment>
|
41 |
<frontend_type>text</frontend_type>
|
42 |
<sort_order>20</sort_order>
|
43 |
<show_in_default>1</show_in_default>
|
44 |
<show_in_website>1</show_in_website>
|
45 |
<show_in_store>1</show_in_store>
|
46 |
+
</Kancart_appsecret>
|
47 |
+
</fields>
|
48 |
+
</Kancart_group>
|
49 |
</groups>
|
50 |
</Kancart>
|
51 |
</sections>
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>KANCART_MobileAPI</name>
|
4 |
-
<version>2.0
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL v3.0</license>
|
7 |
<channel>community</channel>
|
@@ -9,11 +9,14 @@
|
|
9 |
<summary>Kancart Mobile API Service</summary>
|
10 |
<description>Kancart.com provides a fast on boarding iOS, Android native app and mobile web site solution.&amp;
|
11 |
This is the Magento server side extension to provide API service for all Kancart mobile clients.</description>
|
12 |
-
<notes>
|
|
|
|
|
|
|
13 |
<authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
|
14 |
-
<date>2013-
|
15 |
-
<time>
|
16 |
-
<contents><target name="magecommunity"><dir name="Kancart"><dir name="MobileApi"><dir name="Helper"><file name="CryptoUtil.php" hash="2db9a53cbaed6e8bc5f2dae4ed2ec334"/><file name="DES.php" hash="f038974cc0cf453373a52e6d4770ffdb"/><file name="Data.php" hash="ce8f291eec3277eb01b1f00225e5cbd8"/><file name="Rijndael.php" hash="be7c805f21086f7c26f785d0c0e73afd"/></dir><dir name="Model"><file name="Abstract.php" hash="4800d10f05ccb9e0aff5a3acf7985498"/><file name="Cart.php" hash="40b2c19efb8dd4422c0ad6da6d3ef7ad"/><file name="Category.php" hash="4993c1f1b5c03dccd5b50a8159f4880a"/><file name="Checkout.php" hash="
|
17 |
<compatible/>
|
18 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
19 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>KANCART_MobileAPI</name>
|
4 |
+
<version>2.1.0</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL v3.0</license>
|
7 |
<channel>community</channel>
|
9 |
<summary>Kancart Mobile API Service</summary>
|
10 |
<description>Kancart.com provides a fast on boarding iOS, Android native app and mobile web site solution.&amp;
|
11 |
This is the Magento server side extension to provide API service for all Kancart mobile clients.</description>
|
12 |
+
<notes>Kancart supports guest checkout now;
|
13 |
+
We developed a promotion mechanism, you can add promotion rules for mobile user;
|
14 |
+
More details of improvements can be found on www.kancart.com
|
15 |
+
</notes>
|
16 |
<authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
|
17 |
+
<date>2013-12-12</date>
|
18 |
+
<time>10:03:13</time>
|
19 |
+
<contents><target name="magecommunity"><dir name="Kancart"><dir name="MobileApi"><dir name="Helper"><file name="CryptoUtil.php" hash="2db9a53cbaed6e8bc5f2dae4ed2ec334"/><file name="DES.php" hash="f038974cc0cf453373a52e6d4770ffdb"/><file name="Data.php" hash="ce8f291eec3277eb01b1f00225e5cbd8"/><file name="Rijndael.php" hash="be7c805f21086f7c26f785d0c0e73afd"/></dir><dir name="Model"><file name="Abstract.php" hash="4800d10f05ccb9e0aff5a3acf7985498"/><file name="Cart.php" hash="40b2c19efb8dd4422c0ad6da6d3ef7ad"/><file name="Category.php" hash="4993c1f1b5c03dccd5b50a8159f4880a"/><file name="Checkout.php" hash="924861570bbbea9d1515e1f2a59fd265"/><file name="Discount.php" hash="b3f29b73768931a041703a0c7df3db53"/><file name="ErrorHandler.php" hash="6d62e02c4ce592a41b242e781fe2c28a"/><file name="Invoice.php" hash="cf16e5e8429b438d6e929d36e205f60b"/><file name="Item.php" hash="3e86e97d4cd6de823752637393f1b7f8"/><file name="Items.php" hash="1468b2fa60afe0476b0d10b9b12be182"/><file name="Order.php" hash="86812cb60a9d9b02751d6a2a8ff315f7"/><file name="PayPalEC.php" hash="936af8c18938954caf8a196f48b9fc5a"/><file name="PayPalWPS.php" hash="50e29c8a8f405cff32267de91adc1e5a"/><file name="Payment.php" hash="337b55ba40a0dbf3214c1b9461cce882"/><file name="Result.php" hash="64759b5dcb022186f12c0cb043877af0"/><file name="Review.php" hash="cd3b705fb6894c36824094f562acc869"/><file name="Store.php" hash="2115e661f8a2c702383a89725aa2b2ed"/><file name="User.php" hash="05200f849e09346bf662ac1157217406"/></dir><dir name="controllers"><file name="IndexController.php" hash="2d6b053ca4a1212b5c4c81f617afc5bb"/></dir><dir name="etc"><file name="adminhtml.xml" hash="3364317d05e33ac33f067aed7a9f6a58"/><file name="config.xml" hash="2f9d3466e651ac2b2b1f387b1a2356ad"/><file name="system.xml" hash="fb9576db14026d81cf2cd89cecd30d0e"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Kancart_MobileApi.xml" hash="17ceeb976f959fc6365da95b532dd616"/></dir></target></contents>
|
20 |
<compatible/>
|
21 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
22 |
</package>
|