KANCART_MobileAPI - Version 2.1.0

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 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() || (isset($_POST['guestcheckout']) && $_POST['guestcheckout'] > 0 &&
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 = end(explode('_', $payment_id));
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::getModel('core/store')->load(Mage::app()->getStore()->getId())->getCurrentCurrencyCode();
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($items, SORT_ASC, $itemIds);
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' => $order->getPayment()->getMethod(),
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::getModel('core/store')->load(Mage::app()->getStore()->getId())->getCurrentCurrencyCode();
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
- $comments = 'From mobile payment ' . $paymentId;
 
 
 
 
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
- $state = strtolower($state) == 'succeed' ? Mage_Sales_Model_Order::STATE_PROCESSING : Mage_Sales_Model_Order::STATE_PENDING_PAYMENT;
36
- if ($state != $order->getState()) {
37
- $order->setState($state, TRUE, $comments);
38
- $order->save();
39
- $order->sendOrderUpdateEmail(TRUE, 'Your order has been paid on our mobile payment service ' . $_REQUEST['payment_method_id']);
40
- $data = Kancart::getModel('Order')->getPaymentOrderInfo($order, $orderId);
41
- return array(true, '0x0000', $data);
 
42
  } else {
43
- return array(true, '0xFFFF', 'Bad request, the order status will not be changed.');
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->getWebsite()->getIsDefault() && $store->getGroup()->getId() == $store->getWebsite()->getDefaultGroupId()) {
151
- $locale = Mage::getStoreConfig('general/locale/code', $store->getCode());
152
- $languages[] = array(
153
- 'language_id' => $store->getCode(),
154
- 'language_code' => $locale,
155
- 'language_name' => $store->getName(),
156
- 'position' => $store->getSortOrder());
 
 
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
- for ($i = 0; $i < count($result); $i++) {
171
- $countries[$i]['country_id'] = $result[$i]['country_id'];
172
- $countries[$i]['country_name'] = $result[$i]['name'];
173
- $countries[$i]['country_iso_code_2'] = $result[$i]['iso2_code'];
174
- $countries[$i]['country_iso_code_3'] = $result[$i]['iso3_code'];
 
 
175
  }
176
  return $countries;
177
  }
178
 
179
  public function getZones() {
180
- $collection = Mage::getModel('directory/country')->getCollection();
181
- $result = array();
182
  $zones = array();
183
- $i = 0;
184
  foreach ($collection as $country) {
185
  foreach ($country->getRegions() as $region) {
186
- $region->getName();
187
- $result[] = $region->toArray(array('region_id', 'code', 'default_name'));
188
- $zones[$i]['country_id'] = $country['country_id'];
189
- $zones[$i]['zone_id'] = $result[$i]['region_id'];
190
- $zones[$i]['zone_code'] = $result[$i]['code'];
191
- $zones[$i]['zone_name'] = $result[$i]['default_name'];
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.9');
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_appsecrect', 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,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
- <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
- <fields>
26
- <!-- New fields go here -->
27
- <Kancart_appkey translate="label">
 
 
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
- <Kancart_appsecrect translate="label">
37
- <label>Kancart APP Secrect</label>
38
- <comment>This is the Secrect Kancart.com assigned to you to protect your data.</comment>
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
- </Kancart_appsecrect>
45
- </fields>
46
- </Kancart_group>
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.9</version>
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;amp;&#xD;
11
  This is the Magento server side extension to provide API service for all Kancart mobile clients.</description>
12
- <notes>Fix a bug blocks payment on 1.8.0.0</notes>
 
 
 
13
  <authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
14
- <date>2013-11-29</date>
15
- <time>11:49:46</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="7779673bd1c96c426d9d10be7fee54af"/><file name="Discount.php" hash="b3f29b73768931a041703a0c7df3db53"/><file name="ErrorHandler.php" hash="6d62e02c4ce592a41b242e781fe2c28a"/><file name="Invoice.php" hash="cf16e5e8429b438d6e929d36e205f60b"/><file name="Item.php" hash="041757ba6cf6c2d6225478305dfdc6b6"/><file name="Items.php" hash="2d551bf7d80a0d7fe186cb3180ce8da6"/><file name="Order.php" hash="cf42edc1c4eb4df67b1740f58b080278"/><file name="PayPalEC.php" hash="936af8c18938954caf8a196f48b9fc5a"/><file name="PayPalWPS.php" hash="50e29c8a8f405cff32267de91adc1e5a"/><file name="Payment.php" hash="258e8c42fb2ee84fa0619dcc2db54eee"/><file name="Result.php" hash="64759b5dcb022186f12c0cb043877af0"/><file name="Review.php" hash="cd3b705fb6894c36824094f562acc869"/><file name="Store.php" hash="51cff0df2113a0cd7080ccbcdcb9ea75"/><file name="User.php" hash="05200f849e09346bf662ac1157217406"/></dir><dir name="controllers"><file name="IndexController.php" hash="26b59cff7fb05b19dfbff911631cab11"/></dir><dir name="etc"><file name="adminhtml.xml" hash="3364317d05e33ac33f067aed7a9f6a58"/><file name="config.xml" hash="2f9d3466e651ac2b2b1f387b1a2356ad"/><file name="system.xml" hash="79209320204981af35bdb4bdcba8fe76"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Kancart_MobileApi.xml" hash="17ceeb976f959fc6365da95b532dd616"/></dir></target></contents>
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;amp;&#xD;
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;&#xD;
13
+ We developed a promotion mechanism, you can add promotion rules for mobile user;&#xD;
14
+ More details of improvements can be found on www.kancart.com&#xD;
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>