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.2 |
Comparing to | |
See all releases |
Code changes from version 2.1.1 to 2.1.2
- app/code/community/Kancart/MobileApi/Helper/Data.php +66 -20
- app/code/community/Kancart/MobileApi/Model/Abstract.php +10 -1
- app/code/community/Kancart/MobileApi/Model/Category.php +32 -0
- app/code/community/Kancart/MobileApi/Model/Checkout.php +40 -33
- app/code/community/Kancart/MobileApi/Model/Discount.php +0 -79
- app/code/community/Kancart/MobileApi/Model/Invoice/Total/Discount.php +46 -0
- app/code/community/Kancart/MobileApi/Model/Item.php +45 -12
- app/code/community/Kancart/MobileApi/Model/Items.php +31 -20
- app/code/community/Kancart/MobileApi/Model/Order.php +1 -1
- app/code/community/Kancart/MobileApi/Model/PayPalWPS.php +2 -1
- app/code/community/Kancart/MobileApi/Model/Quote/Total/Discount.php +84 -0
- app/code/community/Kancart/MobileApi/Model/Store.php +12 -7
- app/code/community/Kancart/MobileApi/Model/System/Config/Source/Allspecificstore.php +40 -0
- app/code/community/Kancart/MobileApi/Model/{Invoice.php → System/Config/Source/Store.php} +43 -48
- app/code/community/Kancart/MobileApi/Model/User.php +49 -39
- app/code/community/Kancart/MobileApi/controllers/IndexController.php +20 -20
- app/code/community/Kancart/MobileApi/etc/config.xml +46 -2
- app/code/community/Kancart/MobileApi/etc/system.xml +101 -7
- app/etc/modules/Kancart_MobileApi.xml +4 -4
- package.xml +5 -7
app/code/community/Kancart/MobileApi/Helper/Data.php
CHANGED
@@ -27,27 +27,73 @@
|
|
27 |
*/
|
28 |
class Kancart_MobileApi_Helper_Data extends Mage_Core_Helper_Abstract {
|
29 |
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
}
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
*
|
46 |
-
* @param float $price
|
47 |
-
* @return string
|
48 |
-
*/
|
49 |
-
public function formatPriceForXml($price) {
|
50 |
-
return sprintf('%01.2F', $price);
|
51 |
}
|
52 |
|
53 |
-
}
|
27 |
*/
|
28 |
class Kancart_MobileApi_Helper_Data extends Mage_Core_Helper_Abstract {
|
29 |
|
30 |
+
public function redirectMobile() {//controller_action_predispatch
|
31 |
+
if (Mage::getStoreConfig('Kancart/redirect/active') < 1) {
|
32 |
+
return;
|
33 |
+
} elseif (preg_match('/(admin|downloader|MobileApi)/i', $_SERVER['REQUEST_URI'])) {
|
34 |
+
return;
|
35 |
+
} elseif (isset($_REQUEST['view_full_site'])) {
|
36 |
+
Mage::getSingleton('customer/session')->setViewFullSite(true);
|
37 |
+
return;
|
38 |
+
} elseif (Mage::getSingleton('customer/session')->getViewFullSite()) {
|
39 |
+
return;
|
40 |
+
}
|
41 |
+
|
42 |
+
if ($this->isMobile()) {
|
43 |
+
$url = Mage::getStoreConfig('Kancart/redirect/url');
|
44 |
+
if (!strlen($url)) {
|
45 |
+
$parts = explode('.', $_SERVER['SERVER_NAME']);
|
46 |
+
if (checkdnsrr('m.' . $parts[1] . '.com')) {
|
47 |
+
$url = 'm.' . $parts[1] . '.com';
|
48 |
+
} else {
|
49 |
+
$url = $parts[1] . '.kancart.com';
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
if (strpos($url, 'http') === false) {
|
54 |
+
$url = 'http://' . $url;
|
55 |
+
}
|
56 |
+
$url = rtrim($url, '/');
|
57 |
+
|
58 |
+
$path = trim(Mage::app()->getRequest()->getPathInfo(), '/');
|
59 |
+
$parts = explode('/', $path);
|
60 |
+
if ($parts) {
|
61 |
+
if ($parts[0] == 'catalog') {
|
62 |
+
if ($parts[1] == 'category') {
|
63 |
+
$url .= '/categories/' . end($parts);
|
64 |
+
} elseif ($parts[1] == 'product') {
|
65 |
+
$url .= '/item_detail/' . $parts[4];
|
66 |
+
}
|
67 |
+
} elseif ($parts[0] == 'catalogsearch') {
|
68 |
+
$url .= '/item_search/?query=' . Mage::app()->getRequest()->getParam('q');
|
69 |
+
}
|
70 |
+
}
|
71 |
+
|
72 |
+
header('Location: ' . $url);
|
73 |
+
exit();
|
74 |
+
}
|
75 |
+
}
|
76 |
+
|
77 |
+
private function isMobile() {
|
78 |
+
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
|
79 |
+
return true;
|
80 |
+
} else if (isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']) {
|
81 |
+
if (preg_match('/(iphone|android|ipad|ipod).+mobile/i', $_SERVER['HTTP_USER_AGENT'])) {//ignore tablet
|
82 |
+
return true;
|
83 |
+
} else if (preg_match('/IEMobile|blackberry|mini|windows\sce|palm/i', $_SERVER['HTTP_USER_AGENT'])) {
|
84 |
+
return true;
|
85 |
+
}
|
86 |
+
}
|
87 |
+
|
88 |
+
return false;
|
89 |
+
}
|
90 |
+
|
91 |
+
public function isDiscountEnabled() {
|
92 |
+
return defined('KANCART_APP_KEY');
|
93 |
}
|
94 |
|
95 |
+
public function getFrontConfig($name) {
|
96 |
+
return Mage::getStoreConfig('Kancart/general/' . $name, Mage::app()->getStore());
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
}
|
98 |
|
99 |
+
}
|
app/code/community/Kancart/MobileApi/Model/Abstract.php
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
*/
|
25 |
abstract class Kancart_MobileApi_Model_Abstract {
|
26 |
|
27 |
-
public function
|
28 |
|
29 |
}
|
30 |
|
@@ -112,6 +112,12 @@ abstract class Kancart_MobileApi_Model_Abstract {
|
|
112 |
}
|
113 |
|
114 |
protected function getAvailablePayment() {
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
$block = Mage::getBlockSingleton('Checkout/Onepage_Payment_Methods');
|
116 |
if ($block) {
|
117 |
return $block->getMethods();
|
@@ -127,6 +133,9 @@ abstract class Kancart_MobileApi_Model_Abstract {
|
|
127 |
$block = Mage::getBlockSingleton('Checkout/Cart_Totals');
|
128 |
method_exists($block, 'canApplyMsrp') && $block->canApplyMsrp();
|
129 |
foreach ($block->getTotals() as $item) {
|
|
|
|
|
|
|
130 |
if ($item->getAs()) {
|
131 |
$type = $item->getAs();
|
132 |
} else {
|
24 |
*/
|
25 |
abstract class Kancart_MobileApi_Model_Abstract {
|
26 |
|
27 |
+
public function __construct() {
|
28 |
|
29 |
}
|
30 |
|
112 |
}
|
113 |
|
114 |
protected function getAvailablePayment() {
|
115 |
+
if (Mage::getStoreConfig('payment/paypal_standard/active') < 1 && Kancart::helper('Data')->getFrontConfig('paypal_standard') > 0) {
|
116 |
+
Mage::app()->getStore()->setConfig('payment/paypal_standard/active', true);
|
117 |
+
}
|
118 |
+
if (Mage::getStoreConfig('payment/paypal_express/active') < 1 && Kancart::helper('Data')->getFrontConfig('paypal_express') > 0) {
|
119 |
+
Mage::app()->getStore()->setConfig('payment/paypal_express/active', true);
|
120 |
+
}
|
121 |
$block = Mage::getBlockSingleton('Checkout/Onepage_Payment_Methods');
|
122 |
if ($block) {
|
123 |
return $block->getMethods();
|
133 |
$block = Mage::getBlockSingleton('Checkout/Cart_Totals');
|
134 |
method_exists($block, 'canApplyMsrp') && $block->canApplyMsrp();
|
135 |
foreach ($block->getTotals() as $item) {
|
136 |
+
if (strlen($item->getTitle()) < 1) {
|
137 |
+
continue;
|
138 |
+
}
|
139 |
if ($item->getAs()) {
|
140 |
$type = $item->getAs();
|
141 |
} else {
|
app/code/community/Kancart/MobileApi/Model/Category.php
CHANGED
@@ -38,6 +38,7 @@ class Kancart_MobileApi_Model_Category extends Kancart_MobileApi_Model_Abstract
|
|
38 |
'parent_cid' => $parent_cid == $rootCategoryId ? -1 : $parent_cid,
|
39 |
'name' => $category->getName(),
|
40 |
'is_parent' => $category->hasChildren(),
|
|
|
41 |
'count' => $category->getProductCount(),
|
42 |
'position' => $category->getPosition()
|
43 |
);
|
@@ -86,6 +87,37 @@ class Kancart_MobileApi_Model_Category extends Kancart_MobileApi_Model_Abstract
|
|
86 |
return $categories;
|
87 |
}
|
88 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
|
91 |
?>
|
38 |
'parent_cid' => $parent_cid == $rootCategoryId ? -1 : $parent_cid,
|
39 |
'name' => $category->getName(),
|
40 |
'is_parent' => $category->hasChildren(),
|
41 |
+
'filter_options' => $this->getFilterOptions($category),
|
42 |
'count' => $category->getProductCount(),
|
43 |
'position' => $category->getPosition()
|
44 |
);
|
87 |
return $categories;
|
88 |
}
|
89 |
|
90 |
+
private function getFilterOptions($category) {
|
91 |
+
Mage::getSingleton('catalog/layer')->setCurrentCategory($category);
|
92 |
+
$block = Mage::getBlockSingleton('catalog/layer_view');
|
93 |
+
|
94 |
+
$filters = array();
|
95 |
+
if ($block->canShowBlock() && $block->canShowOptions()) {
|
96 |
+
$_filters = $block->getFilters();
|
97 |
+
foreach ($_filters as $_filter) {
|
98 |
+
$options = array();
|
99 |
+
if ($_filter->getItemsCount()) {
|
100 |
+
foreach ($_filter->getItems() as $_item) {
|
101 |
+
$options[] = array(
|
102 |
+
'option_id' => $_item->getValue(),
|
103 |
+
'title' => strip_tags($_item->getLabel()),
|
104 |
+
'count' => $_item->getCount()
|
105 |
+
);
|
106 |
+
}
|
107 |
+
if ($_filter->getAttributeModel()) {
|
108 |
+
$filters[] = array(
|
109 |
+
'title' => $block->__($_filter->getName()),
|
110 |
+
'filter_id' => $_filter->getAttributeModel()->getAttributeCode(),
|
111 |
+
'options' => $options
|
112 |
+
);
|
113 |
+
}
|
114 |
+
}
|
115 |
+
}
|
116 |
+
}
|
117 |
+
|
118 |
+
return $filters;
|
119 |
+
}
|
120 |
+
|
121 |
}
|
122 |
|
123 |
?>
|
app/code/community/Kancart/MobileApi/Model/Checkout.php
CHANGED
@@ -192,6 +192,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
192 |
$params = $this->getRequest()->getParams();
|
193 |
$ShippingRateCode = $params['shipping_method_id'];
|
194 |
$shippingMethodResult = $this->getOnepage()->saveShippingMethod($ShippingRateCode);
|
|
|
195 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
196 |
if (isset($shippingMethodResult['error'])) {
|
197 |
$_SESSION['checkout_messages'][] = $shippingMethodResult['message'];
|
@@ -229,6 +230,7 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
229 |
}
|
230 |
if (!$this->getQuote()->getShippingAddress()->getShippingMethod()) {
|
231 |
$this->getOnepage()->saveShippingMethod($shippingMethods[0]['sm_id']);
|
|
|
232 |
}
|
233 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
234 |
$this->getQuote()->setTotalsCollectedFlag(false)->collectTotals()->save();
|
@@ -309,15 +311,16 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
309 |
} else {
|
310 |
$real_payment_id = $this->getRealKancartPaymentId($payment_id); //money order
|
311 |
}
|
312 |
-
$
|
313 |
-
$
|
|
|
314 |
|
315 |
if ($payment_id === 'paypal') {
|
316 |
return Kancart::getModel('PayPalWPS')->buildPaypalWPSParams();
|
317 |
} else if ($payment_id === 'paypalwpp') {
|
318 |
return Kancart::getModel('PayPalEC')->kancart_shoppingcart_paypalec_start('commit');
|
319 |
} else {
|
320 |
-
return Kancart::getModel('Payment')->placeOrder($
|
321 |
}
|
322 |
} catch (Mage_Core_Exception $e) {
|
323 |
return array(false, '0x9000', $e->getMessage());
|
@@ -327,41 +330,39 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
327 |
}
|
328 |
|
329 |
private function getRealKancartPaymentId($payment_id) {
|
330 |
-
|
331 |
-
|
332 |
-
|
333 |
-
|
334 |
-
|
335 |
-
|
336 |
-
|
337 |
-
|
338 |
-
|
339 |
-
|
340 |
-
|
341 |
-
|
342 |
-
|
343 |
-
|
344 |
-
|
345 |
-
|
346 |
-
|
347 |
-
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
$payments[$priorsPayments[$code]] = $code;
|
352 |
-
}
|
353 |
}
|
354 |
}
|
|
|
355 |
|
356 |
-
|
357 |
-
|
358 |
-
|
359 |
|
360 |
-
|
361 |
-
|
362 |
|
363 |
-
|
364 |
-
}
|
365 |
}
|
366 |
|
367 |
/**
|
@@ -370,6 +371,12 @@ class Kancart_MobileApi_Model_Checkout extends Kancart_MobileApi_Model_Abstract
|
|
370 |
public function kancart_checkout_start() {
|
371 |
$payment_id = $this->getRequest()->getParam('payment_method_id', null);
|
372 |
$checkout_type = $this->getRequest()->getParam('checkout_type');
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
switch ($checkout_type) {
|
374 |
case 'cart':
|
375 |
if ($payment_id == 'paypalec') {
|
192 |
$params = $this->getRequest()->getParams();
|
193 |
$ShippingRateCode = $params['shipping_method_id'];
|
194 |
$shippingMethodResult = $this->getOnepage()->saveShippingMethod($ShippingRateCode);
|
195 |
+
Mage::dispatchEvent('checkout_controller_onepage_save_shipping_method', array('request' => $this->getRequest(), 'quote' => $this->getOnepage()->getQuote()));
|
196 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
197 |
if (isset($shippingMethodResult['error'])) {
|
198 |
$_SESSION['checkout_messages'][] = $shippingMethodResult['message'];
|
230 |
}
|
231 |
if (!$this->getQuote()->getShippingAddress()->getShippingMethod()) {
|
232 |
$this->getOnepage()->saveShippingMethod($shippingMethods[0]['sm_id']);
|
233 |
+
Mage::dispatchEvent('checkout_controller_onepage_save_shipping_method', array('request' => $this->getRequest(), 'quote' => $this->getOnepage()->getQuote()));
|
234 |
}
|
235 |
$this->getOnepage()->getQuote()->collectTotals()->save();
|
236 |
$this->getQuote()->setTotalsCollectedFlag(false)->collectTotals()->save();
|
311 |
} else {
|
312 |
$real_payment_id = $this->getRealKancartPaymentId($payment_id); //money order
|
313 |
}
|
314 |
+
$data = $this->getRequest()->getPost('payment', array());
|
315 |
+
$data['method'] = $real_payment_id;
|
316 |
+
$this->getOnepage()->savePayment($data);
|
317 |
|
318 |
if ($payment_id === 'paypal') {
|
319 |
return Kancart::getModel('PayPalWPS')->buildPaypalWPSParams();
|
320 |
} else if ($payment_id === 'paypalwpp') {
|
321 |
return Kancart::getModel('PayPalEC')->kancart_shoppingcart_paypalec_start('commit');
|
322 |
} else {
|
323 |
+
return Kancart::getModel('Payment')->placeOrder($data, $payment_id);
|
324 |
}
|
325 |
} catch (Mage_Core_Exception $e) {
|
326 |
return array(false, '0x9000', $e->getMessage());
|
330 |
}
|
331 |
|
332 |
private function getRealKancartPaymentId($payment_id) {
|
333 |
+
$priorsPayments = array(
|
334 |
+
'banktransfer' => 0,
|
335 |
+
'cashondelivery' => 1,
|
336 |
+
'checkmo' => 2,
|
337 |
+
'purchaseorder' => 3
|
338 |
+
);
|
339 |
+
|
340 |
+
$kcode = str_replace('kancart_', '', $payment_id);
|
341 |
+
$kcode = str_replace('magePay-', '', $kcode);
|
342 |
+
Mage::app()->getStore()->setConfig('payment/' . $kcode . '/active', true);
|
343 |
+
Mage::app()->getStore()->setConfig('payment/checkmo/active', true); //Activation checkout Money payment
|
344 |
+
$payments = array();
|
345 |
+
$methods = $this->getAvailablePayment();
|
346 |
+
if ($methods) {
|
347 |
+
foreach ($methods as $method) {
|
348 |
+
$code = $method->getCode();
|
349 |
+
if ($kcode == $code) {
|
350 |
+
return $code;
|
351 |
+
}
|
352 |
+
if (isset($priorsPayments[$code])) {
|
353 |
+
$payments[$priorsPayments[$code]] = $code;
|
|
|
|
|
354 |
}
|
355 |
}
|
356 |
+
}
|
357 |
|
358 |
+
if (sizeof($payments) < 1) {
|
359 |
+
Mage::throwException('No available offline payment method configured on Magento backend.');
|
360 |
+
}
|
361 |
|
362 |
+
ksort($payments);
|
363 |
+
reset($payments);
|
364 |
|
365 |
+
return current($payments);
|
|
|
366 |
}
|
367 |
|
368 |
/**
|
371 |
public function kancart_checkout_start() {
|
372 |
$payment_id = $this->getRequest()->getParam('payment_method_id', null);
|
373 |
$checkout_type = $this->getRequest()->getParam('checkout_type');
|
374 |
+
if (Mage::getStoreConfig('payment/paypal_standard/active') < 1 && Kancart::helper('Data')->getFrontConfig('paypal_standard') > 0) {
|
375 |
+
Mage::app()->getStore()->setConfig('payment/paypal_standard/active', true);
|
376 |
+
}
|
377 |
+
if (Mage::getStoreConfig('payment/paypal_express/active') < 1 && Kancart::helper('Data')->getFrontConfig('paypal_express') > 0) {
|
378 |
+
Mage::app()->getStore()->setConfig('payment/paypal_express/active', true);
|
379 |
+
}
|
380 |
switch ($checkout_type) {
|
381 |
case 'cart':
|
382 |
if ($payment_id == 'paypalec') {
|
app/code/community/Kancart/MobileApi/Model/Discount.php
DELETED
@@ -1,79 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
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 |
-
* DISCLAIMER
|
17 |
-
*
|
18 |
-
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
-
* versions in the future. If you wish to customize Magento for your
|
20 |
-
* needs please refer to http://www.magentocommerce.com for more information.
|
21 |
-
*
|
22 |
-
* @category Mage
|
23 |
-
* @package Mage_Sales
|
24 |
-
* @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
|
25 |
-
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
-
*/
|
27 |
-
class Kancart_MobileApi_Model_Discount extends Mage_SalesRule_Model_Quote_Discount {
|
28 |
-
|
29 |
-
public function collect(Mage_Sales_Model_Quote_Address $address) {
|
30 |
-
$address->setDiscountAmount(0);
|
31 |
-
$address->setSubtotalWithDiscount(0);
|
32 |
-
$address->setBaseDiscountAmount(0);
|
33 |
-
$address->setBaseSubtotalWithDiscount(0);
|
34 |
-
|
35 |
-
parent::collect($address);
|
36 |
-
if ($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_BILLING) {
|
37 |
-
return $this;
|
38 |
-
}
|
39 |
-
|
40 |
-
$totalDiscountAmount = $this->getRequest()->getParam('discount_amount');
|
41 |
-
if ($totalDiscountAmount && !is_numeric($totalDiscountAmount)) {
|
42 |
-
$totalDiscountAmount = $address->getBaseSubtotal() * floatval($totalDiscountAmount) / 100;
|
43 |
-
}
|
44 |
-
|
45 |
-
$freeShipping = $this->getRequest()->getParam('coupon_free_ship');
|
46 |
-
if ($freeShipping && $freeShipping > 0 && $address->getShippingAmount()) {
|
47 |
-
$totalDiscountAmount+=$address->getShippingAmount();
|
48 |
-
}
|
49 |
-
|
50 |
-
if ($totalDiscountAmount <= 0) {
|
51 |
-
return $this;
|
52 |
-
}
|
53 |
-
|
54 |
-
$totalDiscountAmount += $address->getDiscountAmount();
|
55 |
-
$subtotalWithDiscount = $totalDiscountAmount + $address->getSubtotalWithDiscount();
|
56 |
-
$baseTotalDiscountAmount = $totalDiscountAmount + $address->getBaseDiscountAmount();
|
57 |
-
$baseSubtotalWithDiscount = $totalDiscountAmount + $address->getBaseSubtotalWithDiscount();
|
58 |
-
|
59 |
-
$address->setDiscountAmount($totalDiscountAmount);
|
60 |
-
$address->setSubtotalWithDiscount($subtotalWithDiscount);
|
61 |
-
$address->setBaseDiscountAmount($baseTotalDiscountAmount);
|
62 |
-
$address->setBaseSubtotalWithDiscount($baseSubtotalWithDiscount);
|
63 |
-
|
64 |
-
$address->setGrandTotal($address->getGrandTotal() - $totalDiscountAmount);
|
65 |
-
$address->setBaseGrandTotal($address->getBaseGrandTotal() - $totalDiscountAmount);
|
66 |
-
return $this;
|
67 |
-
}
|
68 |
-
|
69 |
-
/**
|
70 |
-
* Retrieve request object
|
71 |
-
*
|
72 |
-
* @return Mage_Core_Controller_Request_Http
|
73 |
-
*/
|
74 |
-
public function getRequest() {
|
75 |
-
return Mage::app()->getRequest();
|
76 |
-
}
|
77 |
-
|
78 |
-
}
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app/code/community/Kancart/MobileApi/Model/Invoice/Total/Discount.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Kancart MobileApi extension
|
5 |
+
*
|
6 |
+
* @category kancart
|
7 |
+
* @package Kancart_MobileApi
|
8 |
+
* @author kancart <support@kancart.com>
|
9 |
+
*/
|
10 |
+
class Kancart_MobileApi_Model_Invoice_Total_Discount extends Mage_Sales_Model_Order_Invoice_Total_Abstract {
|
11 |
+
|
12 |
+
public function collect(Mage_Sales_Model_Order_Invoice $invoice) {
|
13 |
+
if (!Mage::helper('mobileapi')->isDiscountEnabled()) {
|
14 |
+
return $this;
|
15 |
+
}
|
16 |
+
$order = $invoice->getOrder();
|
17 |
+
if (!$order->getBaseMobileDiscount()) {
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
$invoiceBaseRemainder = $order->getBaseMobileDiscount() - $order->getBaseMobileInvoiced();
|
22 |
+
$invoiceRemainder = $order->getMobileDiscount() - $order->getMobileInvoiced();
|
23 |
+
$used = $baseUsed = 0;
|
24 |
+
if ($invoiceBaseRemainder < $invoice->getBaseGrandTotal()) {
|
25 |
+
$used = $invoiceRemainder;
|
26 |
+
$baseUsed = $invoiceBaseRemainder;
|
27 |
+
$invoice->setGrandTotal($invoice->getGrandTotal() - $used);
|
28 |
+
$invoice->setBaseGrandTotal($invoice->getBaseGrandTotal() - $baseUsed);
|
29 |
+
} else {
|
30 |
+
$used = $invoice->getGrandTotal();
|
31 |
+
$baseUsed = $invoice->getBaseGrandTotal();
|
32 |
+
|
33 |
+
$invoice->setBaseGrandTotal(0);
|
34 |
+
$invoice->setGrandTotal(0);
|
35 |
+
}
|
36 |
+
|
37 |
+
$order->setBaseDiscountAmount($order->getBaseDiscountAmount() + $baseUsed);
|
38 |
+
$order->setDiscountAmount($order->getDiscountAmount() + $used);
|
39 |
+
|
40 |
+
$invoice->setMobileDiscount($used);
|
41 |
+
$invoice->setBaseMobileDiscount($baseUsed);
|
42 |
+
|
43 |
+
return $this;
|
44 |
+
}
|
45 |
+
|
46 |
+
}
|
app/code/community/Kancart/MobileApi/Model/Item.php
CHANGED
@@ -29,6 +29,12 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
29 |
* @var Mage_Catalog_Model_Product
|
30 |
*/
|
31 |
protected $product;
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
|
33 |
/**
|
34 |
* the item converted by the current product
|
@@ -38,13 +44,36 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
38 |
private $detail = false;
|
39 |
|
40 |
const OPTION_TYPE_SELECT = 'select';
|
41 |
-
const OPTION_TYPE_CHECKBOX = '
|
42 |
const OPTION_TYPE_MULTIPLE_SELECT = 'multiselect';
|
43 |
const OPTION_TYPE_TEXT = 'text';
|
44 |
const OPTION_TYPE_DATE = 'date';
|
45 |
const OPTION_TYPE_TIME = 'time';
|
46 |
const OPTION_TYPE_DATE_TIME = 'datetime';
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
/**
|
49 |
* the API interface function
|
50 |
* @param type $apidata
|
@@ -68,19 +97,19 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
68 |
|
69 |
public function getItemBaseInfo() {
|
70 |
$helper = Mage::helper('catalog/image');
|
71 |
-
$helper->init($this->product, $this->getProductImageType())
|
|
|
72 |
$this->item['item_id'] = $this->product->getId();
|
73 |
$this->item['item_title'] = $this->product->getName();
|
74 |
$this->item['item_url'] = $this->product->getProductUrl();
|
75 |
$this->item['cid'] = $this->product->getCategoryIds();
|
76 |
$this->item['qty'] = $this->product->getStockItem()->getQty();
|
77 |
-
$this->item['thumbnail_pic_url'] = (string) $helper->resize(
|
78 |
-
$this->item['main_pic_url'] = (string) $helper->resize(
|
79 |
$this->item['is_virtual'] = $this->product->isVirtual();
|
80 |
$this->item['item_status'] = $this->product->isSaleable() ? 'instock' : 'outofstock';
|
81 |
if (!$this->product->getRatingSummary()) {
|
82 |
-
Mage::getModel('review/review')
|
83 |
-
->getEntitySummary($this->product, Mage::app()->getStore()->getId());
|
84 |
}
|
85 |
$this->item['allow_add_to_cart'] = !$this->HasOptions();
|
86 |
$this->item['rating_score'] = round((int) $this->product->getRatingSummary()->getRatingSummary() / 20);
|
@@ -209,11 +238,12 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
209 |
public function getProductDescription() {
|
210 |
$_helper = Mage::helper('catalog/output');
|
211 |
$this->item['short_description'] = $_helper->productAttribute($this->product, nl2br($this->product->getShortDescription()), 'short_description');
|
|
|
212 |
$this->item['detail_description'] = $_helper->productAttribute($this->product, $this->product->getDescription(), 'description');
|
213 |
if (preg_match('/{{(.+)}}/i', $this->item['detail_description'])) {
|
214 |
-
$this->item['detail_description'] = preg_replace('/(\<img[
|
215 |
}
|
216 |
-
$this->item['detail_description'] = preg_replace('/(<img[
|
217 |
$this->item['specifications'] = $this->getProductFeature();
|
218 |
}
|
219 |
|
@@ -249,7 +279,10 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
249 |
private function getItemImageUrl($imageFile = null) {
|
250 |
$imageType = $this->getProductImageType();
|
251 |
$helper = Mage::helper('catalog/image');
|
252 |
-
return (string) $helper->init($this->product, $imageType, $imageFile)
|
|
|
|
|
|
|
253 |
}
|
254 |
|
255 |
public function getItemImages() {
|
@@ -421,7 +454,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
421 |
$attribute['input'] = $this->_getOptionTypeForKanCartByRealType($_option->getType());
|
422 |
$attribute['title'] = $_option->getTitle();
|
423 |
$attribute['options'] = array();
|
424 |
-
if (!$attribute['required'] && $attribute['input']
|
425 |
$none = array(
|
426 |
'attribute_id' => 'none',
|
427 |
'option_id' => '',
|
@@ -575,7 +608,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
575 |
$optionObj['price'] = null;
|
576 |
}
|
577 |
$optionObj['options'] = array();
|
578 |
-
if (!$optionObj['required'] && $optionObj['input']
|
579 |
$none = array(
|
580 |
'attribute_id' => 'none',
|
581 |
'option_id' => '',
|
@@ -716,7 +749,7 @@ class Kancart_MobileApi_Model_Item extends Kancart_MobileApi_Model_Abstract {
|
|
716 |
$DisplayMinimalPrice = true;
|
717 |
$UseLinkForAsLowAs = false;
|
718 |
$prices = array();
|
719 |
-
$prices['currency'] = Mage::
|
720 |
$display_prices = array();
|
721 |
$prices['tier_prices'] = $this->getItemTierPrice($product);
|
722 |
|
29 |
* @var Mage_Catalog_Model_Product
|
30 |
*/
|
31 |
protected $product;
|
32 |
+
protected $_keepFrame = true;
|
33 |
+
protected $_keepAspectRatio = true; //false stretch the image
|
34 |
+
protected $thumbnail_with = 320;
|
35 |
+
protected $thumbnail_height = null;
|
36 |
+
protected $main_with = 640;
|
37 |
+
protected $main_height = null;
|
38 |
|
39 |
/**
|
40 |
* the item converted by the current product
|
44 |
private $detail = false;
|
45 |
|
46 |
const OPTION_TYPE_SELECT = 'select';
|
47 |
+
const OPTION_TYPE_CHECKBOX = 'multiselect';
|
48 |
const OPTION_TYPE_MULTIPLE_SELECT = 'multiselect';
|
49 |
const OPTION_TYPE_TEXT = 'text';
|
50 |
const OPTION_TYPE_DATE = 'date';
|
51 |
const OPTION_TYPE_TIME = 'time';
|
52 |
const OPTION_TYPE_DATE_TIME = 'datetime';
|
53 |
|
54 |
+
public function __construct() {
|
55 |
+
parent::__construct();
|
56 |
+
$this->_keepFrame = Kancart::helper('Data')->getFrontConfig('image_frame') < 1;
|
57 |
+
$thumbnailSize = Kancart::helper('Data')->getFrontConfig('thumbnail_image');
|
58 |
+
$mainSize = Kancart::helper('Data')->getFrontConfig('main_image');
|
59 |
+
if (intval($thumbnailSize) > 80) {
|
60 |
+
$this->thumbnail_with = intval($thumbnailSize);
|
61 |
+
if (($index = stripos($thumbnailSize, 'x'))) {
|
62 |
+
$height = intval(trim(substr($thumbnailSize, $index + 1)));
|
63 |
+
$this->thumbnail_height = $height > 80 ? $height : null;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
if (intval($mainSize) > 160) {
|
67 |
+
$this->main_with = intval($mainSize);
|
68 |
+
if (($index = stripos($mainSize, 'x'))) {
|
69 |
+
$height = intval(trim(substr($mainSize, $index + 1)));
|
70 |
+
$this->main_height = $height > 160 ? $height : null;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
|
74 |
+
$this->_keepAspectRatio = $this->main_height < 1;
|
75 |
+
}
|
76 |
+
|
77 |
/**
|
78 |
* the API interface function
|
79 |
* @param type $apidata
|
97 |
|
98 |
public function getItemBaseInfo() {
|
99 |
$helper = Mage::helper('catalog/image');
|
100 |
+
$helper->init($this->product, $this->getProductImageType())
|
101 |
+
->keepAspectRatio($this->_keepAspectRatio)->keepFrame($this->_keepFrame);
|
102 |
$this->item['item_id'] = $this->product->getId();
|
103 |
$this->item['item_title'] = $this->product->getName();
|
104 |
$this->item['item_url'] = $this->product->getProductUrl();
|
105 |
$this->item['cid'] = $this->product->getCategoryIds();
|
106 |
$this->item['qty'] = $this->product->getStockItem()->getQty();
|
107 |
+
$this->item['thumbnail_pic_url'] = (string) $helper->resize($this->thumbnail_with, $this->thumbnail_height);
|
108 |
+
$this->item['main_pic_url'] = (string) $helper->resize($this->main_with, $this->main_height);
|
109 |
$this->item['is_virtual'] = $this->product->isVirtual();
|
110 |
$this->item['item_status'] = $this->product->isSaleable() ? 'instock' : 'outofstock';
|
111 |
if (!$this->product->getRatingSummary()) {
|
112 |
+
Mage::getModel('review/review')->getEntitySummary($this->product, Mage::app()->getStore()->getId());
|
|
|
113 |
}
|
114 |
$this->item['allow_add_to_cart'] = !$this->HasOptions();
|
115 |
$this->item['rating_score'] = round((int) $this->product->getRatingSummary()->getRatingSummary() / 20);
|
238 |
public function getProductDescription() {
|
239 |
$_helper = Mage::helper('catalog/output');
|
240 |
$this->item['short_description'] = $_helper->productAttribute($this->product, nl2br($this->product->getShortDescription()), 'short_description');
|
241 |
+
$this->item['short_description'] = preg_replace('/(<img[^<>]+?src\s*=\s*\")([^:\"]+\")/i', '$1' . Mage::getBaseUrl() . '$2', $this->item['short_description']);
|
242 |
$this->item['detail_description'] = $_helper->productAttribute($this->product, $this->product->getDescription(), 'description');
|
243 |
if (preg_match('/{{(.+)}}/i', $this->item['detail_description'])) {
|
244 |
+
$this->item['detail_description'] = preg_replace('/(\<img[^<>]+src\s*=\s*"){{(\w+)\s*url="(.+)}}/i', '$1' . Mage::getBaseUrl() . '/$2/$3', $this->item['detail_description']);
|
245 |
}
|
246 |
+
$this->item['detail_description'] = preg_replace('/(<img[^<>]+?src\s*=\s*\")([^:\"]+\")/i', '$1' . Mage::getBaseUrl() . '$2', $this->item['detail_description']);
|
247 |
$this->item['specifications'] = $this->getProductFeature();
|
248 |
}
|
249 |
|
279 |
private function getItemImageUrl($imageFile = null) {
|
280 |
$imageType = $this->getProductImageType();
|
281 |
$helper = Mage::helper('catalog/image');
|
282 |
+
return (string) $helper->init($this->product, $imageType, $imageFile)
|
283 |
+
->keepAspectRatio($this->_keepAspectRatio)
|
284 |
+
->keepFrame($this->_keepFrame)
|
285 |
+
->resize($this->main_with, $this->main_height);
|
286 |
}
|
287 |
|
288 |
public function getItemImages() {
|
454 |
$attribute['input'] = $this->_getOptionTypeForKanCartByRealType($_option->getType());
|
455 |
$attribute['title'] = $_option->getTitle();
|
456 |
$attribute['options'] = array();
|
457 |
+
if (!$attribute['required'] && $attribute['input'] == self::OPTION_TYPE_SELECT) {
|
458 |
$none = array(
|
459 |
'attribute_id' => 'none',
|
460 |
'option_id' => '',
|
608 |
$optionObj['price'] = null;
|
609 |
}
|
610 |
$optionObj['options'] = array();
|
611 |
+
if (!$optionObj['required'] && $optionObj['input'] == self::OPTION_TYPE_SELECT) {
|
612 |
$none = array(
|
613 |
'attribute_id' => 'none',
|
614 |
'option_id' => '',
|
749 |
$DisplayMinimalPrice = true;
|
750 |
$UseLinkForAsLowAs = false;
|
751 |
$prices = array();
|
752 |
+
$prices['currency'] = Mage::app()->getStore()->getCurrentCurrencyCode();
|
753 |
$display_prices = array();
|
754 |
$prices['tier_prices'] = $this->getItemTierPrice($product);
|
755 |
|
app/code/community/Kancart/MobileApi/Model/Items.php
CHANGED
@@ -30,24 +30,22 @@ class Kancart_MobileApi_Model_Items extends Kancart_MobileApi_Model_Abstract {
|
|
30 |
* @return type
|
31 |
*/
|
32 |
public function kancart_items_get() {
|
33 |
-
if (isset($_REQUEST['query']) && $_REQUEST['query']) {
|
34 |
-
$_REQUEST['query'] = str_replace('%20', ' ', $_REQUEST['query']);
|
35 |
-
}
|
36 |
-
$params = $this->getRequest()->getParams();
|
37 |
try {
|
38 |
-
$cid = $
|
39 |
-
$query =
|
40 |
-
$pageNo =
|
41 |
-
$pageSize =
|
42 |
-
$
|
|
|
|
|
43 |
list($order, $direction) = explode(':', $orderBy, 2);
|
44 |
-
if (
|
45 |
// get by item ids
|
46 |
-
$products = $this->getSpecifiedProducts($
|
47 |
-
} else if (
|
48 |
// get Special Products
|
49 |
$products = $this->getSpecialProducts($pageNo, $pageSize, $order, $direction);
|
50 |
-
} else if (strlen($query)) {
|
51 |
// get by query
|
52 |
$products = $this->getProductsByQuery($query, $pageNo, $pageSize, $order, $direction);
|
53 |
} else if ($cid == -1) {
|
@@ -111,20 +109,24 @@ class Kancart_MobileApi_Model_Items extends Kancart_MobileApi_Model_Abstract {
|
|
111 |
}
|
112 |
|
113 |
private function getAllProducts($pageNo, $pageSize, $order, $direction, $specials = false) {
|
114 |
-
$
|
115 |
-
->setCurrentCategory(Mage::app()->getStore()->getRootCategoryId())
|
116 |
-
|
117 |
-
|
118 |
-
$collection->setCurPage($pageNo)
|
119 |
->setPageSize($pageSize)
|
120 |
->setOrder($order, $direction);
|
|
|
|
|
|
|
|
|
|
|
121 |
|
122 |
if ($specials) {
|
123 |
$collection->getSelect()->where('`price` > `final_price`');
|
124 |
}
|
125 |
-
|
126 |
-
$collection->load();
|
127 |
$size = $collection->getSize();
|
|
|
|
|
128 |
$productList = $collection->getItems();
|
129 |
|
130 |
$items = array();
|
@@ -206,6 +208,15 @@ class Kancart_MobileApi_Model_Items extends Kancart_MobileApi_Model_Abstract {
|
|
206 |
|
207 |
private function getProductsByCategory($cid = false, $pageNo = 1, $pageSize = 20, $order = 'entity_id', $direction = 'desc') {
|
208 |
$layer = Mage::getSingleton('catalog/layer')->setCurrentCategory($cid);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
$collection = $layer->getProductCollection()
|
210 |
->setCurPage($pageNo)
|
211 |
->setPageSize($pageSize)
|
30 |
* @return type
|
31 |
*/
|
32 |
public function kancart_items_get() {
|
|
|
|
|
|
|
|
|
33 |
try {
|
34 |
+
$cid = $this->getRequest()->getParam('cid', false);
|
35 |
+
$query = str_replace('%20', ' ', $this->getRequest()->getParam('query', ''));
|
36 |
+
$pageNo = $this->getRequest()->getParam('page_no', 1);
|
37 |
+
$pageSize = $this->getRequest()->getParam('page_size', 20);
|
38 |
+
$itemIds = $this->getRequest()->getParam('item_ids', false);
|
39 |
+
$orderBy = $this->getRequest()->getParam('order_by', false);
|
40 |
+
$orderBy = $orderBy && strpos($orderBy, ':') > 0 ? $orderBy : 'postion:desc';
|
41 |
list($order, $direction) = explode(':', $orderBy, 2);
|
42 |
+
if ($itemIds && trim($itemIds)) {
|
43 |
// get by item ids
|
44 |
+
$products = $this->getSpecifiedProducts($itemIds, $pageNo, $pageSize, $order, $direction);
|
45 |
+
} else if ((int) $this->getRequest()->getParam('is_specials', 0)) {
|
46 |
// get Special Products
|
47 |
$products = $this->getSpecialProducts($pageNo, $pageSize, $order, $direction);
|
48 |
+
} else if (strlen($query) || (isset($_POST['query']) && !$cid)) {
|
49 |
// get by query
|
50 |
$products = $this->getProductsByQuery($query, $pageNo, $pageSize, $order, $direction);
|
51 |
} else if ($cid == -1) {
|
109 |
}
|
110 |
|
111 |
private function getAllProducts($pageNo, $pageSize, $order, $direction, $specials = false) {
|
112 |
+
$collection = Mage::getSingleton('catalog/layer')
|
113 |
+
->setCurrentCategory(Mage::app()->getStore()->getRootCategoryId())
|
114 |
+
->getProductCollection()
|
115 |
+
->setCurPage($pageNo)
|
|
|
116 |
->setPageSize($pageSize)
|
117 |
->setOrder($order, $direction);
|
118 |
+
$fromPart = $collection->getSelect()->getPart(Zend_Db_Select::FROM);
|
119 |
+
if (isset($fromPart['cat_index'])) {
|
120 |
+
$fromPart['cat_index']['joinCondition'] = preg_replace('/category_id\s*=\s*\'\d+\'/', 'category_id > \'0\'', $fromPart['cat_index']['joinCondition']);
|
121 |
+
$collection->getSelect()->setPart(Zend_Db_Select::FROM, $fromPart);
|
122 |
+
}
|
123 |
|
124 |
if ($specials) {
|
125 |
$collection->getSelect()->where('`price` > `final_price`');
|
126 |
}
|
|
|
|
|
127 |
$size = $collection->getSize();
|
128 |
+
$collection->getSelect()->group('e.entity_id');
|
129 |
+
$collection->load();
|
130 |
$productList = $collection->getItems();
|
131 |
|
132 |
$items = array();
|
208 |
|
209 |
private function getProductsByCategory($cid = false, $pageNo = 1, $pageSize = 20, $order = 'entity_id', $direction = 'desc') {
|
210 |
$layer = Mage::getSingleton('catalog/layer')->setCurrentCategory($cid);
|
211 |
+
|
212 |
+
$filter = $this->getRequest()->getParam('filter', array());
|
213 |
+
if ($filter && is_array($filter)) {
|
214 |
+
foreach ($filter as $key => $value) {
|
215 |
+
$this->getRequest()->setParam($key, $value);
|
216 |
+
}
|
217 |
+
Mage::getBlockSingleton('catalog/layer_view');
|
218 |
+
}
|
219 |
+
|
220 |
$collection = $layer->getProductCollection()
|
221 |
->setCurPage($pageNo)
|
222 |
->setPageSize($pageSize)
|
app/code/community/Kancart/MobileApi/Model/Order.php
CHANGED
@@ -126,7 +126,7 @@ class Kancart_MobileApi_Model_Order extends Kancart_MobileApi_Model_Abstract {
|
|
126 |
$ordersCounts = array(
|
127 |
'order_counts' => array(
|
128 |
array('status_ids' => 'all',
|
129 |
-
'status_name' =>Mage::helper('Sales')->__('My Orders'),
|
130 |
'count' => $collection->getSize())
|
131 |
)
|
132 |
);
|
126 |
$ordersCounts = array(
|
127 |
'order_counts' => array(
|
128 |
array('status_ids' => 'all',
|
129 |
+
'status_name' => Mage::helper('Sales')->__('My Orders'),
|
130 |
'count' => $collection->getSize())
|
131 |
)
|
132 |
);
|
app/code/community/Kancart/MobileApi/Model/PayPalWPS.php
CHANGED
@@ -79,10 +79,11 @@ class Kancart_MobileApi_Model_PayPalWPS extends Kancart_MobileApi_Model_Abstract
|
|
79 |
* @return bool
|
80 |
*/
|
81 |
public function placeOrder($payment, $comment = 'from mobile') {
|
|
|
82 |
$request = $this->getRequest()
|
83 |
->setPost('payment', $payment)
|
84 |
->setActionName('index')
|
85 |
-
->setPost('agreement',
|
86 |
|
87 |
if (($formKey = Mage::getSingleton('core/session')->getFormKey())) {
|
88 |
$this->getRequest()->setParam('form_key', $formKey);
|
79 |
* @return bool
|
80 |
*/
|
81 |
public function placeOrder($payment, $comment = 'from mobile') {
|
82 |
+
$agreements = Mage::helper('checkout')->getRequiredAgreementIds();
|
83 |
$request = $this->getRequest()
|
84 |
->setPost('payment', $payment)
|
85 |
->setActionName('index')
|
86 |
+
->setPost('agreement', array_fill_keys($agreements, true)); //skip agreements
|
87 |
|
88 |
if (($formKey = Mage::getSingleton('core/session')->getFormKey())) {
|
89 |
$this->getRequest()->setParam('form_key', $formKey);
|
app/code/community/Kancart/MobileApi/Model/Quote/Total/Discount.php
ADDED
@@ -0,0 +1,84 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Kancart MobileApi extension
|
5 |
+
*
|
6 |
+
* @category kancart
|
7 |
+
* @package Kancart_MobileApi
|
8 |
+
* @author kancart <support@kancart.com>
|
9 |
+
*/
|
10 |
+
class Kancart_MobileApi_Model_Quote_Total_Discount extends Mage_Sales_Model_Quote_Address_Total_Abstract {
|
11 |
+
|
12 |
+
public function __construct() {
|
13 |
+
$this->setCode('mobileapi');
|
14 |
+
}
|
15 |
+
|
16 |
+
public function collect(Mage_Sales_Model_Quote_Address $address) {
|
17 |
+
if (!Mage::helper('mobileapi')->isDiscountEnabled()) {
|
18 |
+
return $this;
|
19 |
+
}
|
20 |
+
|
21 |
+
$address->setMobileDiscount(0);
|
22 |
+
$address->setBaseMobileDiscount(0);
|
23 |
+
|
24 |
+
if (Mage::helper('checkout/cart')->getIsVirtualQuote()) {
|
25 |
+
$addressType = Mage_Sales_Model_Quote_Address::TYPE_BILLING;
|
26 |
+
} else {
|
27 |
+
$addressType = Mage_Sales_Model_Quote_Address::TYPE_SHIPPING;
|
28 |
+
}
|
29 |
+
if ($address->getAddressType() != $addressType) {
|
30 |
+
return $this;
|
31 |
+
}
|
32 |
+
|
33 |
+
$totalDiscountAmount = $this->getRequest()->getParam('discount_amount');
|
34 |
+
if ($totalDiscountAmount && !is_numeric($totalDiscountAmount)) {
|
35 |
+
$totalDiscountAmount = $address->getBaseSubtotal() * floatval($totalDiscountAmount) / 100;
|
36 |
+
}
|
37 |
+
|
38 |
+
$freeShipping = $this->getRequest()->getParam('coupon_free_ship');
|
39 |
+
if ($freeShipping && $freeShipping > 0 && $address->getShippingAmount()) {
|
40 |
+
$totalDiscountAmount+=$address->getShippingAmount();
|
41 |
+
}
|
42 |
+
|
43 |
+
if ($totalDiscountAmount <= 0) {
|
44 |
+
return $this;
|
45 |
+
}
|
46 |
+
|
47 |
+
$address->setMobileDiscount($totalDiscountAmount);
|
48 |
+
$address->setBaseMobileDiscount($totalDiscountAmount);
|
49 |
+
|
50 |
+
if (!strcasecmp($this->getRequest()->getParam('method'), 'Kancart.Checkout.Start')) {
|
51 |
+
$address->setBaseDiscountAmount($address->getBaseDiscountAmount() + $totalDiscountAmount);
|
52 |
+
$address->setDiscountAmount($address->getDiscountAmount() + $totalDiscountAmount);
|
53 |
+
}
|
54 |
+
|
55 |
+
$address->setGrandTotal($address->getGrandTotal() - $totalDiscountAmount);
|
56 |
+
$address->setBaseGrandTotal($address->getBaseGrandTotal() - $totalDiscountAmount);
|
57 |
+
|
58 |
+
return $this;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Retrieve request object
|
63 |
+
*
|
64 |
+
* @return Mage_Core_Controller_Request_Http
|
65 |
+
*/
|
66 |
+
public function getRequest() {
|
67 |
+
return Mage::app()->getRequest();
|
68 |
+
}
|
69 |
+
|
70 |
+
public function fetch(Mage_Sales_Model_Quote_Address $address) {
|
71 |
+
if (!Mage::helper('mobileapi')->isDiscountEnabled())
|
72 |
+
return $this;
|
73 |
+
|
74 |
+
if ($address->getMobileDiscount() > 0) {
|
75 |
+
$address->addTotal(array(
|
76 |
+
'code' => $this->getCode(),
|
77 |
+
'title' => Mage::helper('sales')->__('Discount'),
|
78 |
+
'value' => -$address->getMobileDiscount(),
|
79 |
+
));
|
80 |
+
}
|
81 |
+
return $this;
|
82 |
+
}
|
83 |
+
|
84 |
+
}
|
app/code/community/Kancart/MobileApi/Model/Store.php
CHANGED
@@ -119,8 +119,9 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
119 |
*/
|
120 |
public function getCurrencies() {
|
121 |
$Curencies = array();
|
122 |
-
$
|
123 |
-
$
|
|
|
124 |
if (empty($allowedCurrencies)) {
|
125 |
$allowedCurrencies[$defaultCurrencyCode] = 'default';
|
126 |
}
|
@@ -146,15 +147,18 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
146 |
public function getLanguages() {
|
147 |
$languages = array();
|
148 |
$stores = Mage::app()->getStores(false, true);
|
|
|
|
|
149 |
foreach ($stores as $store) {
|
150 |
-
if ($store->getIsActive()
|
151 |
-
|
152 |
-
|
153 |
$languages[] = array(
|
154 |
'language_id' => $store->getCode(),
|
155 |
-
'language_code' =>
|
156 |
'language_name' => $store->getName(),
|
157 |
-
'position' => $store->getSortOrder()
|
|
|
158 |
}
|
159 |
}
|
160 |
}
|
@@ -272,6 +276,7 @@ class Kancart_MobileApi_Model_Store extends Kancart_MobileApi_Model_Abstract {
|
|
272 |
'cart_version' => Mage::getVersion(),
|
273 |
'plugin_version' => KANCART_PLUGIN_VERSION,
|
274 |
'support_kancart_payment' => true,
|
|
|
275 |
'support_promotion' => true,
|
276 |
'login_by_mail' => true
|
277 |
);
|
119 |
*/
|
120 |
public function getCurrencies() {
|
121 |
$Curencies = array();
|
122 |
+
$block = Mage::getBlockSingleton('Directory/Currency');
|
123 |
+
$defaultCurrencyCode = $block->getCurrentCurrencyCode();
|
124 |
+
$allowedCurrencies = $block->getCurrencies();
|
125 |
if (empty($allowedCurrencies)) {
|
126 |
$allowedCurrencies[$defaultCurrencyCode] = 'default';
|
127 |
}
|
147 |
public function getLanguages() {
|
148 |
$languages = array();
|
149 |
$stores = Mage::app()->getStores(false, true);
|
150 |
+
$allowspecific = Kancart::helper('Data')->getFrontConfig('allowspecific') > 0;
|
151 |
+
$annlowStores = explode(',', Kancart::helper('Data')->getFrontConfig('stores'));
|
152 |
foreach ($stores as $store) {
|
153 |
+
if ($store->getIsActive()) {
|
154 |
+
$allow = !$allowspecific && $store->getWebsite()->getIsDefault() && $store->getGroup()->getId() == $store->getWebsite()->getDefaultGroupId();
|
155 |
+
if ($allow || ($allowspecific && in_array($store->getCode(), $annlowStores))) {
|
156 |
$languages[] = array(
|
157 |
'language_id' => $store->getCode(),
|
158 |
+
'language_code' => Mage::getStoreConfig('general/locale/code', $store->getCode()),
|
159 |
'language_name' => $store->getName(),
|
160 |
+
'position' => $store->getSortOrder()
|
161 |
+
);
|
162 |
}
|
163 |
}
|
164 |
}
|
276 |
'cart_version' => Mage::getVersion(),
|
277 |
'plugin_version' => KANCART_PLUGIN_VERSION,
|
278 |
'support_kancart_payment' => true,
|
279 |
+
'support_facebook_login' => true,
|
280 |
'support_promotion' => true,
|
281 |
'login_by_mail' => true
|
282 |
);
|
app/code/community/Kancart/MobileApi/Model/System/Config/Source/Allspecificstore.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
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 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Paypal
|
24 |
+
* @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Source model for merchant countries supported by PayPal
|
30 |
+
*/
|
31 |
+
class Kancart_MobileApi_Model_System_Config_Source_Allspecificstore {
|
32 |
+
|
33 |
+
public function toOptionArray() {
|
34 |
+
return array(
|
35 |
+
array('value' => 0, 'label' => Mage::helper('adminhtml')->__('Default')),
|
36 |
+
array('value' => 1, 'label' => Mage::helper('adminhtml')->__('Specific Stores')),
|
37 |
+
);
|
38 |
+
}
|
39 |
+
|
40 |
+
}
|
app/code/community/Kancart/MobileApi/Model/{Invoice.php → System/Config/Source/Store.php}
RENAMED
@@ -1,48 +1,43 @@
|
|
1 |
-
<?php
|
2 |
-
|
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 |
-
* DISCLAIMER
|
17 |
-
*
|
18 |
-
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
-
* versions in the future. If you wish to customize Magento for your
|
20 |
-
* needs please refer to http://www.magentocommerce.com for more information.
|
21 |
-
*
|
22 |
-
* @category Mage
|
23 |
-
* @package
|
24 |
-
* @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
|
25 |
-
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
-
*/
|
27 |
-
class
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
$
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
return $this;
|
45 |
-
}
|
46 |
-
|
47 |
-
}
|
48 |
-
|
1 |
+
<?php
|
2 |
+
|
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 |
+
* DISCLAIMER
|
17 |
+
*
|
18 |
+
* Do not edit or add to this file if you wish to upgrade Magento to newer
|
19 |
+
* versions in the future. If you wish to customize Magento for your
|
20 |
+
* needs please refer to http://www.magentocommerce.com for more information.
|
21 |
+
*
|
22 |
+
* @category Mage
|
23 |
+
* @package Mage_Adminhtml
|
24 |
+
* @copyright Copyright (c) 2011 Magento Inc. (http://www.magentocommerce.com)
|
25 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
26 |
+
*/
|
27 |
+
class Kancart_MobileApi_Model_System_Config_Source_Store {
|
28 |
+
|
29 |
+
protected $_options;
|
30 |
+
|
31 |
+
public function toOptionArray() {
|
32 |
+
if (!$this->_options) {
|
33 |
+
$stores = Mage::app()->getStores(false, true);
|
34 |
+
foreach ($stores as $store) {
|
35 |
+
if ($store->getIsActive()) {
|
36 |
+
$this->_options[] = array('value' => $store->getCode(), 'label' => $store->getName());
|
37 |
+
}
|
38 |
+
}
|
39 |
+
}
|
40 |
+
return $this->_options;
|
41 |
+
}
|
42 |
+
|
43 |
+
}
|
|
|
|
|
|
|
|
|
|
app/code/community/Kancart/MobileApi/Model/User.php
CHANGED
@@ -38,7 +38,7 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
38 |
}
|
39 |
$customer->getGroupId();
|
40 |
try {
|
41 |
-
$desPassword = Kancart::helper('CryptoUtil')->Crypto($userData['pwd'], 'AES-256',
|
42 |
$customer->setPassword($desPassword);
|
43 |
$customer->setConfirmation($this->getRequest()->getPost('confirmation', $desPassword));
|
44 |
$customer->setData('email', $userData['email']);
|
@@ -116,15 +116,15 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
116 |
}
|
117 |
|
118 |
public function kancart_user_login() {
|
119 |
-
$
|
120 |
-
$
|
121 |
-
$
|
|
|
122 |
$session = $this->_getSession();
|
123 |
$defaultGroupId = $session->getCustomer()->getGroupId();
|
124 |
-
$
|
125 |
-
if ($uname != null && $pwd != null) {
|
126 |
try {
|
127 |
-
if ($
|
128 |
if ($session->getCustomer()->getIsJustConfirmed()) {
|
129 |
$session->getCustomer()->sendNewAccountEmail('confirmed');
|
130 |
}
|
@@ -167,30 +167,52 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
167 |
}
|
168 |
}
|
169 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
170 |
public function kancart_user_get() {
|
171 |
-
$userData = $this->getRequest()->getParams();
|
172 |
if (!$this->isLoggedIn()) {
|
173 |
return array(false, '0x0002', 'You need login first.');
|
174 |
}
|
175 |
-
$fields = $userData['fields'];
|
176 |
$session = $this->_getSession();
|
177 |
-
return array(true, '0x0000',
|
178 |
}
|
179 |
|
180 |
public function kancart_user_isexists() {
|
181 |
-
$
|
182 |
-
$
|
183 |
-
|
184 |
-
|
185 |
-
$
|
186 |
-
$customer->setStoreId(1);
|
187 |
-
$customer->setWebsiteId(1);
|
188 |
-
$customer->loadByEmail($userData['email']);
|
189 |
-
if ($customer->getData('entity_id')) {
|
190 |
-
$info['uname_is_exist'] = true;
|
191 |
-
} else {
|
192 |
-
$info['uname_is_exist'] = false;
|
193 |
-
}
|
194 |
return array(true, '0x0000', $info);
|
195 |
}
|
196 |
|
@@ -320,25 +342,13 @@ class Kancart_MobileApi_Model_User extends Kancart_MobileApi_Model_Abstract {
|
|
320 |
}
|
321 |
}
|
322 |
|
|
|
|
|
|
|
|
|
323 |
protected function _getSession() {
|
324 |
return Mage::getSingleton('customer/session');
|
325 |
}
|
326 |
|
327 |
-
protected function _toUserData($customerData) {
|
328 |
-
$userData = array(
|
329 |
-
'uname' => $customerData->email,
|
330 |
-
'nick' => $customerData->firstname . $customerData->lastname,
|
331 |
-
'email' => $customerData->email,
|
332 |
-
'fax' => null,
|
333 |
-
'telephone' => null,
|
334 |
-
'default_address_id' => null,
|
335 |
-
'dob' => null,
|
336 |
-
'lastname' => $customerData->lastname,
|
337 |
-
'firstname' => $customerData->firstname,
|
338 |
-
'gender' => null,
|
339 |
-
'mobile' => null
|
340 |
-
);
|
341 |
-
return $userData;
|
342 |
-
}
|
343 |
|
344 |
}
|
38 |
}
|
39 |
$customer->getGroupId();
|
40 |
try {
|
41 |
+
$desPassword = Kancart::helper('CryptoUtil')->Crypto($userData['pwd'], 'AES-256', KANCART_APP_SECRET, false);
|
42 |
$customer->setPassword($desPassword);
|
43 |
$customer->setConfirmation($this->getRequest()->getPost('confirmation', $desPassword));
|
44 |
$customer->setData('email', $userData['email']);
|
116 |
}
|
117 |
|
118 |
public function kancart_user_login() {
|
119 |
+
$uname = $this->getRequest()->getParam('uname');
|
120 |
+
$pwd = $this->getRequest()->getParam('pwd');
|
121 |
+
$type = $this->getRequest()->getParam('type', 'normal');
|
122 |
+
|
123 |
$session = $this->_getSession();
|
124 |
$defaultGroupId = $session->getCustomer()->getGroupId();
|
125 |
+
if ($uname != null && ($pwd != null || $type != 'normal')) {
|
|
|
126 |
try {
|
127 |
+
if ($this->login($uname, $pwd)) {
|
128 |
if ($session->getCustomer()->getIsJustConfirmed()) {
|
129 |
$session->getCustomer()->sendNewAccountEmail('confirmed');
|
130 |
}
|
167 |
}
|
168 |
}
|
169 |
|
170 |
+
public function login($uname, $pwd) {
|
171 |
+
$session = $this->_getSession();
|
172 |
+
$type = $this->getRequest()->getParam('type', 'normal');
|
173 |
+
if ($type == 'normal') {
|
174 |
+
$desPassword = Kancart::helper('CryptoUtil')->Crypto($pwd, 'AES-256', KANCART_APP_SECRET, false);
|
175 |
+
return $session->login($uname, $desPassword);
|
176 |
+
} elseif ($type == 'oauth') {
|
177 |
+
if (!preg_match('/^.+@\w+\.\w+$/', $uname)) {
|
178 |
+
Mage::throwException('Invalid E-mail.');
|
179 |
+
}
|
180 |
+
$customer = Mage::getModel('customer/customer')
|
181 |
+
->setWebsiteId(Mage::app()->getStore()->getWebsiteId());
|
182 |
+
$customer->loadByEmail($uname);
|
183 |
+
if (!$customer->getId()) {
|
184 |
+
Mage::register('current_customer', $customer);
|
185 |
+
$password = strtoupper(dechex(crc32(KANCART_APP_KEY . $uname)));
|
186 |
+
$password = Kancart::helper('CryptoUtil')->Crypto($password, 'AES-256', KANCART_APP_SECRET, true);
|
187 |
+
$this->getRequest()->setPost('pwd', $password);
|
188 |
+
$this->getRequest()->setPost('email', $uname);
|
189 |
+
list($result, $code, $message) = $this->kancart_user_register();
|
190 |
+
if (!$result) {
|
191 |
+
Mage::throwException(is_array($message) ? join(PHP_EOL, $message) : $message);
|
192 |
+
}
|
193 |
+
}
|
194 |
+
$session->setCustomerAsLoggedIn($customer);
|
195 |
+
$session->renewSession();
|
196 |
+
return true;
|
197 |
+
}
|
198 |
+
|
199 |
+
return false;
|
200 |
+
}
|
201 |
+
|
202 |
public function kancart_user_get() {
|
|
|
203 |
if (!$this->isLoggedIn()) {
|
204 |
return array(false, '0x0002', 'You need login first.');
|
205 |
}
|
|
|
206 |
$session = $this->_getSession();
|
207 |
+
return array(true, '0x0000', array());
|
208 |
}
|
209 |
|
210 |
public function kancart_user_isexists() {
|
211 |
+
$info = array();
|
212 |
+
$customer = Mage::getModel('customer/customer')
|
213 |
+
->setWebsiteId(Mage::app()->getStore()->getWebsiteId())
|
214 |
+
->loadByEmail($this->getRequest()->getParam('email'));
|
215 |
+
$info['uname_is_exist'] = $customer->getId() > 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
return array(true, '0x0000', $info);
|
217 |
}
|
218 |
|
342 |
}
|
343 |
}
|
344 |
|
345 |
+
/**
|
346 |
+
*
|
347 |
+
* @return Mage_Customer_Model_Session
|
348 |
+
*/
|
349 |
protected function _getSession() {
|
350 |
return Mage::getSingleton('customer/session');
|
351 |
}
|
352 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
353 |
|
354 |
}
|
app/code/community/Kancart/MobileApi/controllers/IndexController.php
CHANGED
@@ -1,10 +1,10 @@
|
|
1 |
<?php
|
2 |
|
3 |
error_reporting(E_ALL ^ E_NOTICE);
|
4 |
-
define('KANCART_PLUGIN_VERSION', '2.1.
|
5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
6 |
-
define('
|
7 |
-
define('PRICE_INCLUDE_TAX', (boolean) Mage::getStoreConfig('Kancart/
|
8 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
9 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'ErrorHandler.php');
|
10 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'Abstract.php');
|
@@ -40,7 +40,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
40 |
try {
|
41 |
if ($this->validate()) {
|
42 |
$this->init();
|
43 |
-
list($result, $code, $response) = $this->
|
44 |
if ($result === true) {
|
45 |
$this->response->setSuccess($response);
|
46 |
} else {
|
@@ -54,7 +54,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
54 |
}
|
55 |
}
|
56 |
|
57 |
-
public function init() {
|
58 |
$currentStoreCode = Mage::app()->getStore()->getCode();
|
59 |
$switchTo = (string) $this->getRequest()->getParam('language');
|
60 |
if (isset($switchTo) && !empty($switchTo)) {
|
@@ -65,16 +65,10 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
65 |
}
|
66 |
}
|
67 |
}
|
68 |
-
|
69 |
if (($curency = (string) $this->getRequest()->getParam('currency'))) {
|
70 |
Mage::app()->getStore()->setCurrentCurrencyCode($curency);
|
71 |
}
|
72 |
|
73 |
-
if ($this->getRequest()->getParam('discount_amount') || $this->getRequest()->getParam('coupon_free_ship', 0) > 0) {
|
74 |
-
Mage::app()->getConfig()->setNode('global/sales/quote/totals/discount/class', 'mobileapi/discount');
|
75 |
-
Mage::app()->getConfig()->setNode('global/sales/order_invoice/totals/discount/class', 'mobileapi/invoice');
|
76 |
-
}
|
77 |
-
|
78 |
$this->compilerPlugin(); //To prevent user backstage collapse after compiled
|
79 |
}
|
80 |
|
@@ -90,7 +84,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
90 |
date_default_timezone_set($timezone);
|
91 |
}
|
92 |
|
93 |
-
$appkey = isset($_REQUEST['app_key']) ? Kancart::helper('CryptoUtil')->Crypto($_REQUEST['app_key'], 'AES-256',
|
94 |
$_POST['app_key'] = $appkey;
|
95 |
if ($_POST['app_key'] != KANCART_APP_KEY) {
|
96 |
die('KanCart OpenAPI v1.1 is installed on Magento v' . Mage::getVersion() . '. Magento Plugin v' . KANCART_PLUGIN_VERSION);
|
@@ -114,7 +108,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
114 |
return true;
|
115 |
}
|
116 |
|
117 |
-
public function
|
118 |
$arr = explode('.', strtolower($_REQUEST['method']));
|
119 |
$map = array('orders' => 'Order', 'reviews' => 'Review');
|
120 |
if ($arr[1] == 'shoppingcart') {
|
@@ -146,9 +140,15 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
146 |
reset($requestParams);
|
147 |
$tempStr = "";
|
148 |
foreach ($requestParams as $key => $value) {
|
149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
}
|
151 |
-
$tempStr = $tempStr .
|
152 |
return strtoupper(md5($tempStr)) === $sign;
|
153 |
}
|
154 |
|
@@ -158,12 +158,12 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
158 |
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . 'Kancart_MobileApi_Helper_Data.php';
|
159 |
file_exists($fileName) && copy($fileName, $dest);
|
160 |
|
161 |
-
$fileName = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . '
|
162 |
-
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . '
|
163 |
file_exists($fileName) && copy($fileName, $dest);
|
164 |
|
165 |
-
$fileName = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . '
|
166 |
-
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . '
|
167 |
file_exists($fileName) && copy($fileName, $dest);
|
168 |
}
|
169 |
}
|
@@ -173,7 +173,7 @@ class Kancart_MobileApi_IndexController extends Mage_Core_Controller_Front_Actio
|
|
173 |
class Kancart {
|
174 |
|
175 |
public static function getModel($fileName) {
|
176 |
-
$path = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR .
|
177 |
if (file_exists($path)) {
|
178 |
include_once($path);
|
179 |
$className = 'Kancart_MobileApi_Model_' . uc_words($fileName);
|
1 |
<?php
|
2 |
|
3 |
error_reporting(E_ALL ^ E_NOTICE);
|
4 |
+
define('KANCART_PLUGIN_VERSION', '2.1.2');
|
5 |
define('KANCART_APP_KEY', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appkey', Mage::app()->getStore()));
|
6 |
+
define('KANCART_APP_SECRET', Mage::getStoreConfig('Kancart/Kancart_group/Kancart_appsecret', Mage::app()->getStore()));
|
7 |
+
define('PRICE_INCLUDE_TAX', (boolean) Mage::getStoreConfig('Kancart/general/price_tax', Mage::app()->getStore()));
|
8 |
define('MOBILE_API_ROOT', dirname(dirname(__FILE__)));
|
9 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'ErrorHandler.php');
|
10 |
include(MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . 'Abstract.php');
|
40 |
try {
|
41 |
if ($this->validate()) {
|
42 |
$this->init();
|
43 |
+
list($result, $code, $response) = $this->getMobileResponse();
|
44 |
if ($result === true) {
|
45 |
$this->response->setSuccess($response);
|
46 |
} else {
|
54 |
}
|
55 |
}
|
56 |
|
57 |
+
public function init() {
|
58 |
$currentStoreCode = Mage::app()->getStore()->getCode();
|
59 |
$switchTo = (string) $this->getRequest()->getParam('language');
|
60 |
if (isset($switchTo) && !empty($switchTo)) {
|
65 |
}
|
66 |
}
|
67 |
}
|
|
|
68 |
if (($curency = (string) $this->getRequest()->getParam('currency'))) {
|
69 |
Mage::app()->getStore()->setCurrentCurrencyCode($curency);
|
70 |
}
|
71 |
|
|
|
|
|
|
|
|
|
|
|
72 |
$this->compilerPlugin(); //To prevent user backstage collapse after compiled
|
73 |
}
|
74 |
|
84 |
date_default_timezone_set($timezone);
|
85 |
}
|
86 |
|
87 |
+
$appkey = isset($_REQUEST['app_key']) ? Kancart::helper('CryptoUtil')->Crypto($_REQUEST['app_key'], 'AES-256', KANCART_APP_SECRET, false) : false;
|
88 |
$_POST['app_key'] = $appkey;
|
89 |
if ($_POST['app_key'] != KANCART_APP_KEY) {
|
90 |
die('KanCart OpenAPI v1.1 is installed on Magento v' . Mage::getVersion() . '. Magento Plugin v' . KANCART_PLUGIN_VERSION);
|
108 |
return true;
|
109 |
}
|
110 |
|
111 |
+
public function getMobileResponse() {
|
112 |
$arr = explode('.', strtolower($_REQUEST['method']));
|
113 |
$map = array('orders' => 'Order', 'reviews' => 'Review');
|
114 |
if ($arr[1] == 'shoppingcart') {
|
140 |
reset($requestParams);
|
141 |
$tempStr = "";
|
142 |
foreach ($requestParams as $key => $value) {
|
143 |
+
if (is_array($value)) {
|
144 |
+
foreach ($value as $k => $v) {
|
145 |
+
$tempStr = $tempStr . $key . '[' . $k . ']' . $v;
|
146 |
+
}
|
147 |
+
} else {
|
148 |
+
$tempStr = $tempStr . $key . $value;
|
149 |
+
}
|
150 |
}
|
151 |
+
$tempStr = $tempStr . KANCART_APP_SECRET;
|
152 |
return strtoupper(md5($tempStr)) === $sign;
|
153 |
}
|
154 |
|
158 |
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . 'Kancart_MobileApi_Helper_Data.php';
|
159 |
file_exists($fileName) && copy($fileName, $dest);
|
160 |
|
161 |
+
$fileName = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . uc_words('Model_Quote_Total_Discount', DIRECTORY_SEPARATOR) . '.php';
|
162 |
+
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . 'Kancart_MobileApi_Model_Quote_Total_Discount.php';
|
163 |
file_exists($fileName) && copy($fileName, $dest);
|
164 |
|
165 |
+
$fileName = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . uc_words('Model_Invoice_Total_Discount', DIRECTORY_SEPARATOR) . '.php';
|
166 |
+
$dest = COMPILER_INCLUDE_PATH . DIRECTORY_SEPARATOR . 'Kancart_MobileApi_Model_Invoice_Total_Discount.php';
|
167 |
file_exists($fileName) && copy($fileName, $dest);
|
168 |
}
|
169 |
}
|
173 |
class Kancart {
|
174 |
|
175 |
public static function getModel($fileName) {
|
176 |
+
$path = MOBILE_API_ROOT . DIRECTORY_SEPARATOR . 'Model' . DIRECTORY_SEPARATOR . uc_words($fileName, DIRECTORY_SEPARATOR) . '.php';
|
177 |
if (file_exists($path)) {
|
178 |
include_once($path);
|
179 |
$className = 'Kancart_MobileApi_Model_' . uc_words($fileName);
|
app/code/community/Kancart/MobileApi/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Kancart_MobileApi>
|
5 |
-
<version>0.
|
6 |
</Kancart_MobileApi>
|
7 |
</modules>
|
8 |
<frontend>
|
@@ -27,13 +27,57 @@
|
|
27 |
<class>Kancart_MobileApi_Helper</class>
|
28 |
</mobileapi>
|
29 |
</helpers>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
</global>
|
31 |
<default>
|
32 |
<Kancart>
|
33 |
<Kancart_group>
|
34 |
<Kancart_appkey>KANCART_APP_KEY</Kancart_appkey>
|
35 |
-
<
|
36 |
</Kancart_group>
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
</Kancart>
|
38 |
</default>
|
39 |
</config>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Kancart_MobileApi>
|
5 |
+
<version>0.2.0</version>
|
6 |
</Kancart_MobileApi>
|
7 |
</modules>
|
8 |
<frontend>
|
27 |
<class>Kancart_MobileApi_Helper</class>
|
28 |
</mobileapi>
|
29 |
</helpers>
|
30 |
+
<events>
|
31 |
+
<controller_action_predispatch>
|
32 |
+
<observers>
|
33 |
+
<mobile_observer>
|
34 |
+
<class>Kancart_MobileApi_Helper_Data</class>
|
35 |
+
<method>redirectMobile</method>
|
36 |
+
</mobile_observer>
|
37 |
+
</observers>
|
38 |
+
</controller_action_predispatch>
|
39 |
+
</events>
|
40 |
+
<sales>
|
41 |
+
<quote>
|
42 |
+
<totals>
|
43 |
+
<mobileapi>
|
44 |
+
<class>mobileapi/quote_total_discount</class>
|
45 |
+
<after>grand_total</after>
|
46 |
+
</mobileapi>
|
47 |
+
</totals>
|
48 |
+
</quote>
|
49 |
+
<order_invoice>
|
50 |
+
<totals>
|
51 |
+
<mobileapi>
|
52 |
+
<class>mobileapi/invoice_total_discount</class>
|
53 |
+
<after>grand_total</after>
|
54 |
+
</mobileapi>
|
55 |
+
</totals>
|
56 |
+
</order_invoice>
|
57 |
+
</sales>
|
58 |
+
<fieldsets>
|
59 |
+
<sales_convert_quote_address>
|
60 |
+
<mobile_discount>
|
61 |
+
<to_order>*</to_order>
|
62 |
+
</mobile_discount>
|
63 |
+
<base_mobile_discount>
|
64 |
+
<to_order>*</to_order>
|
65 |
+
</base_mobile_discount>
|
66 |
+
</sales_convert_quote_address>
|
67 |
+
</fieldsets>
|
68 |
</global>
|
69 |
<default>
|
70 |
<Kancart>
|
71 |
<Kancart_group>
|
72 |
<Kancart_appkey>KANCART_APP_KEY</Kancart_appkey>
|
73 |
+
<Kancart_appsecret>KANCART_APP_SECRET</Kancart_appsecret>
|
74 |
</Kancart_group>
|
75 |
+
<general>
|
76 |
+
<price_tax>1</price_tax>
|
77 |
+
<thumbnail_image>320</thumbnail_image>
|
78 |
+
<main_image>640</main_image>
|
79 |
+
<allowspecific>0</allowspecific>
|
80 |
+
</general>
|
81 |
</Kancart>
|
82 |
</default>
|
83 |
</config>
|
app/code/community/Kancart/MobileApi/etc/system.xml
CHANGED
@@ -18,14 +18,13 @@
|
|
18 |
<Kancart_group translate="label">
|
19 |
<label>Authorization</label>
|
20 |
<frontend_type>text</frontend_type>
|
21 |
-
<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>
|
@@ -46,10 +45,10 @@
|
|
46 |
</Kancart_appsecret>
|
47 |
</fields>
|
48 |
</Kancart_group>
|
49 |
-
<
|
50 |
<label>Frontend</label>
|
51 |
<frontend_type>text</frontend_type>
|
52 |
-
<sort_order>
|
53 |
<show_in_default>1</show_in_default>
|
54 |
<show_in_website>1</show_in_website>
|
55 |
<show_in_store>1</show_in_store>
|
@@ -59,12 +58,107 @@
|
|
59 |
<comment>Choose Yes if all price listed on mobile client should include tax.</comment>
|
60 |
<frontend_type>select</frontend_type>
|
61 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
62 |
-
<sort_order>
|
63 |
<show_in_default>1</show_in_default>
|
64 |
<show_in_website>1</show_in_website>
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
</fields>
|
67 |
-
</
|
68 |
</groups>
|
69 |
</Kancart>
|
70 |
</sections>
|
18 |
<Kancart_group translate="label">
|
19 |
<label>Authorization</label>
|
20 |
<frontend_type>text</frontend_type>
|
21 |
+
<sort_order>10</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 |
<Kancart_appkey translate="label">
|
29 |
<label>Kancart APP Key</label>
|
30 |
<comment>This is the Key Kancart.com assigned to you to identify yourself.</comment>
|
45 |
</Kancart_appsecret>
|
46 |
</fields>
|
47 |
</Kancart_group>
|
48 |
+
<general translate="label">
|
49 |
<label>Frontend</label>
|
50 |
<frontend_type>text</frontend_type>
|
51 |
+
<sort_order>50</sort_order>
|
52 |
<show_in_default>1</show_in_default>
|
53 |
<show_in_website>1</show_in_website>
|
54 |
<show_in_store>1</show_in_store>
|
58 |
<comment>Choose Yes if all price listed on mobile client should include tax.</comment>
|
59 |
<frontend_type>select</frontend_type>
|
60 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
61 |
+
<sort_order>5</sort_order>
|
62 |
<show_in_default>1</show_in_default>
|
63 |
<show_in_website>1</show_in_website>
|
64 |
+
<show_in_store>1</show_in_store>
|
65 |
+
</price_tax>
|
66 |
+
<image_frame translate="label">
|
67 |
+
<label>Image Keep Frame</label>
|
68 |
+
<comment>Choose Yes keep the original image proportions, otherwise stretch the image.</comment>
|
69 |
+
<frontend_type>select</frontend_type>
|
70 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
71 |
+
<sort_order>10</sort_order>
|
72 |
+
<show_in_default>1</show_in_default>
|
73 |
+
<show_in_website>1</show_in_website>
|
74 |
+
<show_in_store>1</show_in_store>
|
75 |
+
</image_frame>
|
76 |
+
<thumbnail_image translate="label">
|
77 |
+
<label>Thumbnail Image Size</label>
|
78 |
+
<comment>Set the product list thumbnail image size, example 320 x 320 or 320.</comment>
|
79 |
+
<frontend_type>text</frontend_type>
|
80 |
+
<sort_order>12</sort_order>
|
81 |
+
<show_in_default>1</show_in_default>
|
82 |
+
<show_in_website>1</show_in_website>
|
83 |
+
<show_in_store>1</show_in_store>
|
84 |
+
</thumbnail_image>
|
85 |
+
<main_image translate="label">
|
86 |
+
<label>Main Image Size</label>
|
87 |
+
<comment>Set the Main image size, example 640 x 640 or 640.</comment>
|
88 |
+
<frontend_type>text</frontend_type>
|
89 |
+
<sort_order>14</sort_order>
|
90 |
+
<show_in_default>1</show_in_default>
|
91 |
+
<show_in_website>1</show_in_website>
|
92 |
+
<show_in_store>1</show_in_store>
|
93 |
+
</main_image>
|
94 |
+
<allowspecific translate="label">
|
95 |
+
<label>Display Store Views</label>
|
96 |
+
<comment>Choose store views display on mobile site.</comment>
|
97 |
+
<frontend_type>select</frontend_type>
|
98 |
+
<source_model>mobileapi/system_config_source_allspecificstore</source_model>
|
99 |
+
<sort_order>20</sort_order>
|
100 |
+
<show_in_default>1</show_in_default>
|
101 |
+
<show_in_website>1</show_in_website>
|
102 |
+
</allowspecific>
|
103 |
+
<stores translate="label">
|
104 |
+
<label>Available stores From</label>
|
105 |
+
<frontend_type>multiselect</frontend_type>
|
106 |
+
<source_model>mobileapi/system_config_source_store</source_model>
|
107 |
+
<sort_order>25</sort_order>
|
108 |
+
<show_in_default>1</show_in_default>
|
109 |
+
<show_in_website>1</show_in_website>
|
110 |
+
<depends>
|
111 |
+
<allowspecific>1</allowspecific>
|
112 |
+
</depends>
|
113 |
+
</stores>
|
114 |
+
<paypal_standard translate="label">
|
115 |
+
<label>PayPal Payments Standard</label>
|
116 |
+
<comment>If you just want to mobile site to use paypal standard you can enable this.</comment>
|
117 |
+
<frontend_type>select</frontend_type>
|
118 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
119 |
+
<sort_order>35</sort_order>
|
120 |
+
<show_in_default>1</show_in_default>
|
121 |
+
<show_in_website>1</show_in_website>
|
122 |
+
<show_in_store>1</show_in_store>
|
123 |
+
</paypal_standard>
|
124 |
+
<paypal_express translate="label">
|
125 |
+
<label>PayPal Express Checkout</label>
|
126 |
+
<comment>If you just want to mobile site to use paypal express checkout you can enable this.</comment>
|
127 |
+
<frontend_type>select</frontend_type>
|
128 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
129 |
+
<sort_order>60</sort_order>
|
130 |
+
<show_in_default>1</show_in_default>
|
131 |
+
<show_in_website>1</show_in_website>
|
132 |
+
<show_in_store>1</show_in_store>
|
133 |
+
</paypal_express>
|
134 |
+
</fields>
|
135 |
+
</general>
|
136 |
+
<redirect translate="label">
|
137 |
+
<label>Redirect Options</label>
|
138 |
+
<frontend_type>text</frontend_type>
|
139 |
+
<comment>Here you can configure your web site redirect options.</comment>
|
140 |
+
<sort_order>80</sort_order>
|
141 |
+
<show_in_default>1</show_in_default>
|
142 |
+
<show_in_website>1</show_in_website>
|
143 |
+
<fields>
|
144 |
+
<active translate="label">
|
145 |
+
<label>Enabled</label>
|
146 |
+
<frontend_type>select</frontend_type>
|
147 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
148 |
+
<sort_order>10</sort_order>
|
149 |
+
<show_in_default>1</show_in_default>
|
150 |
+
<show_in_website>1</show_in_website>
|
151 |
+
</active>
|
152 |
+
<url translate="label">
|
153 |
+
<label>Mobile Url</label>
|
154 |
+
<comment>Please configure your mobile site url that registered in kancart.</comment>
|
155 |
+
<frontend_type>text</frontend_type>
|
156 |
+
<sort_order>20</sort_order>
|
157 |
+
<show_in_default>1</show_in_default>
|
158 |
+
<show_in_website>1</show_in_website>
|
159 |
+
</url>
|
160 |
</fields>
|
161 |
+
</redirect>
|
162 |
</groups>
|
163 |
</Kancart>
|
164 |
</sections>
|
app/etc/modules/Kancart_MobileApi.xml
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<config>
|
3 |
<modules>
|
4 |
-
<Kancart_MobileApi>
|
5 |
-
<active>true</active>
|
6 |
-
<codePool>community</codePool>
|
7 |
-
</Kancart_MobileApi>
|
8 |
</modules>
|
9 |
</config>
|
1 |
<?xml version="1.0"?>
|
2 |
<config>
|
3 |
<modules>
|
4 |
+
<Kancart_MobileApi>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
</Kancart_MobileApi>
|
8 |
</modules>
|
9 |
</config>
|
package.xml
CHANGED
@@ -1,24 +1,22 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>KANCART_MobileAPI</name>
|
4 |
-
<version>2.1.
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Kancart Mobile API Service</summary>
|
10 |
-
<description>
|
11 |
-
2)Fix some text were not well localized issue.
|
12 |
-
3)Add switch to plugin configure page to control if the price on mobile site should includes tax.
|
13 |
</description>
|
14 |
<notes>Kancart supports guest checkout now;
|
15 |
We developed a promotion mechanism, you can add promotion rules for mobile user;
|
16 |
More details of improvements can be found on www.kancart.com
|
17 |
</notes>
|
18 |
<authors><author><name>Kancart.com</name><user>Kancarter</user><email>support@kancart.com</email></author></authors>
|
19 |
-
<date>
|
20 |
-
<time>09:
|
21 |
-
<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="
|
22 |
<compatible/>
|
23 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
24 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>KANCART_MobileAPI</name>
|
4 |
+
<version>2.1.2</version>
|
5 |
<stability>stable</stability>
|
6 |
<license>OSL v3.0</license>
|
7 |
<channel>community</channel>
|
8 |
<extends/>
|
9 |
<summary>Kancart Mobile API Service</summary>
|
10 |
+
<description>support facebook login.
|
|
|
|
|
11 |
</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>2014-02-19</date>
|
18 |
+
<time>09:34: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="1b254135bbfbcfdfd9f7ff826c1dd196"/><file name="Rijndael.php" hash="be7c805f21086f7c26f785d0c0e73afd"/></dir><dir name="Model"><file name="Abstract.php" hash="d459ecc3f3e6c6bda1a3deb988f94bc3"/><file name="Cart.php" hash="9fc7f8a3c4f28703b565fee710250b68"/><file name="Category.php" hash="f58947db89b3244411da36052836029a"/><file name="Checkout.php" hash="7f7bffd91eeff343f7aab04a97d7467d"/><file name="ErrorHandler.php" hash="6d62e02c4ce592a41b242e781fe2c28a"/><dir name="Invoice"><dir name="Total"><file name="Discount.php" hash="d6f8d914e6447a8b4af54aea212c9551"/></dir></dir><file name="Item.php" hash="d34bfc4b6ed06f9a848799f522f39d2a"/><file name="Items.php" hash="48271a42517906d3a33bc6339c97b7dd"/><file name="Order.php" hash="ab793baf5fd85110730e90c7363f0e9a"/><file name="PayPalEC.php" hash="936af8c18938954caf8a196f48b9fc5a"/><file name="PayPalWPS.php" hash="0e87844cf4bee5db1e9c885de21372ba"/><file name="Payment.php" hash="337b55ba40a0dbf3214c1b9461cce882"/><dir name="Quote"><dir name="Total"><file name="Discount.php" hash="790326803517c509a752aae54622f469"/></dir></dir><file name="Result.php" hash="64759b5dcb022186f12c0cb043877af0"/><file name="Review.php" hash="cd3b705fb6894c36824094f562acc869"/><file name="Store.php" hash="ec9f6b9a4eb6b4c7d6c3b5beb82c40cf"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Allspecificstore.php" hash="3b3b39fd653f6c6600762ec9ca373e03"/><file name="Store.php" hash="31bde96aaa434639e90d760e1b847907"/></dir></dir></dir><file name="User.php" hash="9c41438cc779e83b57b17d28e6a90e77"/></dir><dir name="controllers"><file name="IndexController.php" hash="7c31859c673d65b90154112d9397f19f"/></dir><dir name="etc"><file name="adminhtml.xml" hash="3364317d05e33ac33f067aed7a9f6a58"/><file name="config.xml" hash="6d0cca0578ec73b497fb91a75031537d"/><file name="system.xml" hash="2495a7d0b94595163993791aeddf0ea7"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Kancart_MobileApi.xml" hash="efdda31d392fe3c30f461bb2a86e8b14"/></dir></target></contents>
|
20 |
<compatible/>
|
21 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
22 |
</package>
|