shopgate_module - Version 2.9.21

Version Notes

Shopgate Modul

Download this release

Release Info

Developer Stephan Recknagel
Extension shopgate_module
Version 2.9.21
Comparing to
See all releases


Code changes from version 2.9.20 to 2.9.21

Files changed (34) hide show
  1. app/code/community/Shopgate/Framework/Helper/Data.php +36 -21
  2. app/code/community/Shopgate/Framework/Helper/Payment/Abstract.php +22 -5
  3. app/code/community/Shopgate/Framework/Helper/Payment/Wspp.php +162 -21
  4. app/code/community/Shopgate/Framework/Model/Export/Product/Xml.php +39 -30
  5. app/code/community/Shopgate/Framework/Model/Payment/Abstract/AbstractPayol.php +4 -4
  6. app/code/community/Shopgate/Framework/Model/Payment/Cc/Abstract.php +0 -22
  7. app/code/community/Shopgate/Framework/Model/Payment/Cc/Authn.php +100 -93
  8. app/code/community/Shopgate/Framework/Model/Payment/Cc/AuthnAbstract.php +97 -1
  9. app/code/community/Shopgate/Framework/Model/Payment/Cc/Authncim.php +11 -91
  10. app/code/community/Shopgate/Framework/Model/Payment/Cc/Usaepay.php +1 -1
  11. app/code/community/Shopgate/Framework/Model/Payment/Payone/Abstract.php +6 -1
  12. app/code/community/Shopgate/Framework/Model/Payment/Pp/Abstract.php +4 -57
  13. app/code/community/Shopgate/Framework/Model/Payment/Pp/Wspp.php +5 -14
  14. app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal.php +5 -1
  15. app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal/Express.php +5 -4
  16. app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal/Standard1400.php +50 -0
  17. app/code/community/Shopgate/Framework/Model/Sales/Quote/Address/Total/ShopgatePaymentFee.php +5 -1
  18. app/code/community/Shopgate/Framework/Model/Shopgate/Plugin.php +7 -0
  19. app/code/community/Shopgate/Framework/changelog.txt +11 -0
  20. app/code/community/Shopgate/Framework/controllers/FrameworkController.php +7 -4
  21. app/code/community/Shopgate/Framework/etc/config.xml +1 -1
  22. app/design/adminhtml/default/default/layout/shopgate.xml +75 -59
  23. app/design/frontend/base/default/layout/shopgate.xml +15 -15
  24. lib/Shopgate/changelog.txt +8 -422
  25. lib/Shopgate/classes/apis.php +6 -4
  26. lib/Shopgate/classes/configuration.php +10 -11
  27. lib/Shopgate/classes/core.php +39 -13
  28. lib/Shopgate/classes/customers.php +1 -0
  29. lib/Shopgate/classes/items.php +1 -1
  30. lib/Shopgate/classes/models/catalog/Input.php +5 -0
  31. lib/Shopgate/classes/models/catalog/Manufacturer.php +3 -0
  32. lib/Shopgate/classes/models/catalog/Option.php +13 -8
  33. lib/Shopgate/classes/orders.php +32 -7
  34. package.xml +4 -4
app/code/community/Shopgate/Framework/Helper/Data.php CHANGED
@@ -46,7 +46,6 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
46
  protected $_mage14xStates = array(
47
  Mage_Sales_Model_Order::STATE_NEW => "pending",
48
  Mage_Sales_Model_Order::STATE_PENDING_PAYMENT => "pending",
49
- Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW => "payment_review",
50
  Mage_Sales_Model_Order::STATE_PROCESSING => "processing",
51
  Mage_Sales_Model_Order::STATE_COMPLETE => "complete",
52
  Mage_Sales_Model_Order::STATE_CLOSED => "closed",
@@ -54,6 +53,19 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
54
  Mage_Sales_Model_Order::STATE_HOLDED => "holded",
55
  );
56
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  /**
58
  * get QR Code directory
59
  *
@@ -357,7 +369,7 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
357
  "VMR" => "Valmiera",
358
  "VEN" => "LV-VEN",
359
  // Unknown
360
- // "" => "LV-LE", "" => "LV-RI", "" => "LV-VM",
361
  ),
362
  );
363
 
@@ -423,7 +435,7 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
423
  if (!$result) {
424
  $result = $db->fetchOne("SELECT state FROM {$table} WHERE state = '{$state}'");
425
  }
426
- if(!$result) {
427
  $result = $this->_getStatusFromStateMagento14x($state);
428
  }
429
  return $result;
@@ -447,7 +459,7 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
447
  * Mage 1.4 non DB support for all states
448
  *
449
  * @param $state - status returned
450
- *
451
  * @return string
452
  */
453
  protected function _getStatusFromStateMagento14x($state)
@@ -488,9 +500,9 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
488
  $totalMagento = $oMageOrder->getTotalDue() + $oMageOrder->getTotalPaid();
489
 
490
  ShopgateLogger::getInstance()->log(
491
- "Total Shopgate: {$totalShopgate} {$order->getCurrency()}
492
  Total Magento: {$totalMagento} {$order->getCurrency()}",
493
- ShopgateLogger::LOGTYPE_DEBUG
494
  );
495
 
496
  if (abs($totalShopgate - $totalMagento) > 0.02) {
@@ -519,9 +531,11 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
519
  if (!$order->getShippingGroup()) {
520
  ShopgateLogger::getInstance()
521
  ->log(
522
- "# setShippingMethod skipped, no Shipping information in " . get_class($order) . " available",
523
- ShopgateLogger::LOGTYPE_DEBUG
524
- );
 
 
525
  return;
526
  }
527
 
@@ -530,8 +544,8 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
530
  $shippingAddress->setShippingMethod($mapper->getCarrier() . '_' . $mapper->getMethod());
531
 
532
  ShopgateLogger::getInstance()->log(
533
- " Shipping method set: '" . $shippingAddress->getShippingMethod() . "'",
534
- ShopgateLogger::LOGTYPE_DEBUG
535
  );
536
  ShopgateLogger::getInstance()->log("# End of setShippingMethod process", ShopgateLogger::LOGTYPE_DEBUG);
537
  }
@@ -754,7 +768,7 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
754
  ->addAttributeToFilter('visibility', array('nin' => $productNotVisible))
755
  ->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
756
  ->getSize();
757
- $reviewCount = 0;
758
  if (Mage::getConfig()->getModuleConfig("Mage_Review")->is('active', 'true')) {
759
  $reviewCount = (int)Mage::getModel('review/review')
760
  ->getCollection()
@@ -825,17 +839,17 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
825
  if ($qtyIncrements && (Mage::helper('core')->getExactDivision($qty, $qtyIncrements) != 0)) {
826
  $result->setHasError(true)
827
  ->setQuoteMessage(
828
- Mage::helper('cataloginventory')->__(
829
- 'Some of the products cannot be ordered in the requested quantity.'
 
830
  )
831
- )
832
  ->setErrorCode('qty_increments')
833
  ->setQuoteMessageIndex('qty');
834
  $result->setMessage(
835
- Mage::helper('cataloginventory')->__(
836
- 'This product is available for purchase in increments of %s only.',
837
- $qtyIncrements * 1
838
- )
839
  );
840
  }
841
 
@@ -886,8 +900,9 @@ class Shopgate_Framework_Helper_Data extends Mage_Core_Helper_Abstract
886
  if ($connection->getScope() == 'websites') {
887
  $collection = Mage::getModel('core/config_data')->getCollection()
888
  ->addFieldToFilter(
889
- 'path', Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_DEFAULT_STORE
890
- )
 
891
  ->addFieldToFilter('scope', $connection->getScope())
892
  ->addFieldToFilter('scope_id', $connection->getScopeId());
893
 
46
  protected $_mage14xStates = array(
47
  Mage_Sales_Model_Order::STATE_NEW => "pending",
48
  Mage_Sales_Model_Order::STATE_PENDING_PAYMENT => "pending",
 
49
  Mage_Sales_Model_Order::STATE_PROCESSING => "processing",
50
  Mage_Sales_Model_Order::STATE_COMPLETE => "complete",
51
  Mage_Sales_Model_Order::STATE_CLOSED => "closed",
53
  Mage_Sales_Model_Order::STATE_HOLDED => "holded",
54
  );
55
 
56
+ /**
57
+ * Helps with status for lower versions
58
+ */
59
+ public function __construct()
60
+ {
61
+ if (Mage::helper("shopgate/config")->getIsMagentoVersionLower1410()) {
62
+ $this->_mage14xStates['payment_review'] = Mage_Sales_Model_Order::STATE_HOLDED;
63
+ $this->_mage14xStates['fraud'] = Mage_Sales_Model_Order::STATE_HOLDED;
64
+ } else {
65
+ $this->_mage14xStates[Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW] = "payment_review";
66
+ }
67
+ }
68
+
69
  /**
70
  * get QR Code directory
71
  *
369
  "VMR" => "Valmiera",
370
  "VEN" => "LV-VEN",
371
  // Unknown
372
+ // "" => "LV-LE", "" => "LV-RI", "" => "LV-VM",
373
  ),
374
  );
375
 
435
  if (!$result) {
436
  $result = $db->fetchOne("SELECT state FROM {$table} WHERE state = '{$state}'");
437
  }
438
+ if (!$result) {
439
  $result = $this->_getStatusFromStateMagento14x($state);
440
  }
441
  return $result;
459
  * Mage 1.4 non DB support for all states
460
  *
461
  * @param $state - status returned
462
+ *
463
  * @return string
464
  */
465
  protected function _getStatusFromStateMagento14x($state)
500
  $totalMagento = $oMageOrder->getTotalDue() + $oMageOrder->getTotalPaid();
501
 
502
  ShopgateLogger::getInstance()->log(
503
+ "Total Shopgate: {$totalShopgate} {$order->getCurrency()}
504
  Total Magento: {$totalMagento} {$order->getCurrency()}",
505
+ ShopgateLogger::LOGTYPE_DEBUG
506
  );
507
 
508
  if (abs($totalShopgate - $totalMagento) > 0.02) {
531
  if (!$order->getShippingGroup()) {
532
  ShopgateLogger::getInstance()
533
  ->log(
534
+ "# setShippingMethod skipped, no Shipping information in " . get_class(
535
+ $order
536
+ ) . " available",
537
+ ShopgateLogger::LOGTYPE_DEBUG
538
+ );
539
  return;
540
  }
541
 
544
  $shippingAddress->setShippingMethod($mapper->getCarrier() . '_' . $mapper->getMethod());
545
 
546
  ShopgateLogger::getInstance()->log(
547
+ " Shipping method set: '" . $shippingAddress->getShippingMethod() . "'",
548
+ ShopgateLogger::LOGTYPE_DEBUG
549
  );
550
  ShopgateLogger::getInstance()->log("# End of setShippingMethod process", ShopgateLogger::LOGTYPE_DEBUG);
551
  }
768
  ->addAttributeToFilter('visibility', array('nin' => $productNotVisible))
769
  ->addAttributeToFilter('status', Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
770
  ->getSize();
771
+ $reviewCount = 0;
772
  if (Mage::getConfig()->getModuleConfig("Mage_Review")->is('active', 'true')) {
773
  $reviewCount = (int)Mage::getModel('review/review')
774
  ->getCollection()
839
  if ($qtyIncrements && (Mage::helper('core')->getExactDivision($qty, $qtyIncrements) != 0)) {
840
  $result->setHasError(true)
841
  ->setQuoteMessage(
842
+ Mage::helper('cataloginventory')->__(
843
+ 'Some of the products cannot be ordered in the requested quantity.'
844
+ )
845
  )
 
846
  ->setErrorCode('qty_increments')
847
  ->setQuoteMessageIndex('qty');
848
  $result->setMessage(
849
+ Mage::helper('cataloginventory')->__(
850
+ 'This product is available for purchase in increments of %s only.',
851
+ $qtyIncrements * 1
852
+ )
853
  );
854
  }
855
 
900
  if ($connection->getScope() == 'websites') {
901
  $collection = Mage::getModel('core/config_data')->getCollection()
902
  ->addFieldToFilter(
903
+ 'path',
904
+ Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_SHOP_DEFAULT_STORE
905
+ )
906
  ->addFieldToFilter('scope', $connection->getScope())
907
  ->addFieldToFilter('scope_id', $connection->getScopeId());
908
 
app/code/community/Shopgate/Framework/Helper/Payment/Abstract.php CHANGED
@@ -1,5 +1,5 @@
1
  <?php
2
- /**
3
  * Shopgate GmbH
4
  *
5
  * URHEBERRECHTSHINWEIS
@@ -18,16 +18,15 @@
18
  * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
19
  * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
20
  *
21
- * @author Shopgate GmbH <interfaces@shopgate.com>
22
  */
23
 
24
- /**
25
  * payment helper abstract
26
  *
27
  * @package Shopgate_Framework_Helper_Payment_Abstract
28
  * @author Peter Liebig <p.liebig@me.com, peter.liebig@magcorp.de>
29
- */
30
-
31
  class Shopgate_Framework_Helper_Payment_Abstract extends Mage_Core_Helper_Abstract
32
  {
33
  /**
@@ -45,6 +44,12 @@ class Shopgate_Framework_Helper_Payment_Abstract extends Mage_Core_Helper_Abstra
45
  */
46
  const SHOPGATE_CC_HOLDER_STRING = 'holder';
47
 
 
 
 
 
 
 
48
  /**
49
  * Create new invoice with maximum qty for invoice for each item
50
  * register this invoice and capture
@@ -58,4 +63,16 @@ class Shopgate_Framework_Helper_Payment_Abstract extends Mage_Core_Helper_Abstra
58
  $invoice->register();
59
  return $invoice;
60
  }
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
1
  <?php
2
+ /**
3
  * Shopgate GmbH
4
  *
5
  * URHEBERRECHTSHINWEIS
18
  * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
19
  * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
20
  *
21
+ * @author Shopgate GmbH <interfaces@shopgate.com>
22
  */
23
 
24
+ /**
25
  * payment helper abstract
26
  *
27
  * @package Shopgate_Framework_Helper_Payment_Abstract
28
  * @author Peter Liebig <p.liebig@me.com, peter.liebig@magcorp.de>
29
+ */
 
30
  class Shopgate_Framework_Helper_Payment_Abstract extends Mage_Core_Helper_Abstract
31
  {
32
  /**
44
  */
45
  const SHOPGATE_CC_HOLDER_STRING = 'holder';
46
 
47
+ /**
48
+ * Raw details key in additional info
49
+ *
50
+ */
51
+ const RAW_DETAILS = 'raw_details_info';
52
+
53
  /**
54
  * Create new invoice with maximum qty for invoice for each item
55
  * register this invoice and capture
63
  $invoice->register();
64
  return $invoice;
65
  }
66
+
67
+ /**
68
+ * Gets raw detail key
69
+ *
70
+ * @return string
71
+ */
72
+ public function getTransactionRawDetails()
73
+ {
74
+ return defined(
75
+ 'Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS'
76
+ ) ? Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS : self::RAW_DETAILS;
77
+ }
78
  }
app/code/community/Shopgate/Framework/Helper/Payment/Wspp.php CHANGED
@@ -18,7 +18,7 @@
18
  * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
19
  * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
20
  *
21
- * @author Shopgate GmbH <interfaces@shopgate.com>
22
  */
23
 
24
  /**
@@ -91,20 +91,33 @@ class Shopgate_Framework_Helper_Payment_Wspp extends Shopgate_Framework_Helper_P
91
  const PAYMENTSTATUS_PROCESSED = 'processed';
92
  const PAYMENTSTATUS_VOIDED = 'voided';
93
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /**
95
  * @var null
96
  */
97
  protected $_request = null;
98
-
99
  /**
100
  * History message action map
 
101
  * @var array
102
  */
103
  protected $_messageStatusAction = array(
104
- Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED => 'Captur',
105
- Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING => 'Authoriz'
106
  );
107
-
108
  /**
109
  * IPN request data getter
110
  *
@@ -198,15 +211,15 @@ class Shopgate_Framework_Helper_Payment_Wspp extends Shopgate_Framework_Helper_P
198
  *
199
  * @see Mage_Paypal_Model_Pro::importPaymentInfo()
200
  */
201
- if ($info->isPaymentReviewRequired($paymentInfoInstance)) {
202
  $paymentInfoInstance->setIsTransactionPending(true);
203
  if ($fraudFilters) {
204
  $paymentInfoInstance->setIsFraudDetected(true);
205
  }
206
  }
207
- if ($info->isPaymentSuccessful($paymentInfoInstance)) {
208
  $paymentInfoInstance->setIsTransactionApproved(true);
209
- } elseif ($info->isPaymentFailed($paymentInfoInstance)) {
210
  $paymentInfoInstance->setIsTransactionDenied(true);
211
  }
212
 
@@ -270,35 +283,35 @@ class Shopgate_Framework_Helper_Payment_Wspp extends Shopgate_Framework_Helper_P
270
  self::SHOPGATE_CC_HOLDER_STRING
271
  );
272
  }
273
-
274
  /**
275
  * Depends on Shopgate paymentInfos() to be passed
276
  * into the TransactionAdditionalInfo of $order.
277
- *
278
  * @param $paymentStatus String
279
  * @param $order Mage_Sales_Model_Order
280
  * @return Mage_Sales_Model_Order
281
  */
282
  public function orderStatusManager(Mage_Sales_Model_Order $order, $paymentStatus = null)
283
  {
284
- if(!$paymentStatus){
285
- $rawData = $order->getPayment()->getTransactionAdditionalInfo(
286
- Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS
287
  );
288
  $paymentStatus = strtolower($rawData['payment_status']);
289
  }
290
-
291
  $formattedPrice = $order->getBaseCurrency()->formatTxt($order->getGrandTotal());
292
  $state = $status = Mage_Sales_Model_Order::STATE_PROCESSING;
293
  $action = $this->getActionByStatus($paymentStatus);
294
-
295
  if ($order->getPayment()->getIsTransactionPending()) {
296
  $message = Mage::helper('paypal')->__(
297
  '%sing amount of %s is pending approval on gateway.',
298
  $action,
299
  $formattedPrice
300
  );
301
- $state = $status = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
302
  } else {
303
  $message = Mage::helper('paypal')->__(
304
  '%sed amount of %s online.',
@@ -308,22 +321,150 @@ class Shopgate_Framework_Helper_Payment_Wspp extends Shopgate_Framework_Helper_P
308
  }
309
  //test for fraud
310
  if ($order->getPayment()->getIsFraudDetected()) {
311
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
312
- $status = Mage_Sales_Model_Order::STATUS_FRAUD;
313
  }
314
-
315
  return $order->setState($state, $status, $message);
316
  }
317
-
318
  /**
319
  * Maps correct message action based on order status.
320
  * E.g. authorize if pending, capture on complete
 
321
  * @param $paymentStatus
322
  * @return string
323
  */
324
  public function getActionByStatus($paymentStatus)
325
  {
326
- return isset($this->_messageStatusAction[$paymentStatus]) ?
327
  $this->_messageStatusAction[$paymentStatus] : 'Authoriz';
328
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
329
  }
18
  * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
19
  * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
20
  *
21
+ * @author Shopgate GmbH <interfaces@shopgate.com>
22
  */
23
 
24
  /**
91
  const PAYMENTSTATUS_PROCESSED = 'processed';
92
  const PAYMENTSTATUS_VOIDED = 'voided';
93
 
94
+ /**
95
+ * Order states
96
+ */
97
+ const STATE_NEW = 'new';
98
+ const STATE_PENDING_PAYMENT = 'pending_payment';
99
+ const STATE_PROCESSING = 'processing';
100
+ const STATE_COMPLETE = 'complete';
101
+ const STATE_CLOSED = 'closed';
102
+ const STATE_CANCELED = 'canceled';
103
+ const STATE_HOLDED = 'holded';
104
+ const STATE_PAYMENT_REVIEW = 'payment_review';
105
+
106
  /**
107
  * @var null
108
  */
109
  protected $_request = null;
110
+
111
  /**
112
  * History message action map
113
+ *
114
  * @var array
115
  */
116
  protected $_messageStatusAction = array(
117
+ self::PAYMENTSTATUS_COMPLETED => 'Captur',
118
+ self::PAYMENTSTATUS_PENDING => 'Authoriz'
119
  );
120
+
121
  /**
122
  * IPN request data getter
123
  *
211
  *
212
  * @see Mage_Paypal_Model_Pro::importPaymentInfo()
213
  */
214
+ if ($this->_isPaymentReviewRequired($paymentInfoInstance)) {
215
  $paymentInfoInstance->setIsTransactionPending(true);
216
  if ($fraudFilters) {
217
  $paymentInfoInstance->setIsFraudDetected(true);
218
  }
219
  }
220
+ if ($this->_isPaymentSuccessful($paymentInfoInstance)) {
221
  $paymentInfoInstance->setIsTransactionApproved(true);
222
+ } elseif ($this->_isPaymentFailed($paymentInfoInstance)) {
223
  $paymentInfoInstance->setIsTransactionDenied(true);
224
  }
225
 
283
  self::SHOPGATE_CC_HOLDER_STRING
284
  );
285
  }
286
+
287
  /**
288
  * Depends on Shopgate paymentInfos() to be passed
289
  * into the TransactionAdditionalInfo of $order.
290
+ *
291
  * @param $paymentStatus String
292
  * @param $order Mage_Sales_Model_Order
293
  * @return Mage_Sales_Model_Order
294
  */
295
  public function orderStatusManager(Mage_Sales_Model_Order $order, $paymentStatus = null)
296
  {
297
+ if (!$paymentStatus) {
298
+ $rawData = $order->getPayment()->getTransactionAdditionalInfo(
299
+ self::RAW_DETAILS
300
  );
301
  $paymentStatus = strtolower($rawData['payment_status']);
302
  }
303
+
304
  $formattedPrice = $order->getBaseCurrency()->formatTxt($order->getGrandTotal());
305
  $state = $status = Mage_Sales_Model_Order::STATE_PROCESSING;
306
  $action = $this->getActionByStatus($paymentStatus);
307
+
308
  if ($order->getPayment()->getIsTransactionPending()) {
309
  $message = Mage::helper('paypal')->__(
310
  '%sing amount of %s is pending approval on gateway.',
311
  $action,
312
  $formattedPrice
313
  );
314
+ $state = $status = Mage::helper('shopgate')->getStateForStatus(self::STATE_PAYMENT_REVIEW);
315
  } else {
316
  $message = Mage::helper('paypal')->__(
317
  '%sed amount of %s online.',
321
  }
322
  //test for fraud
323
  if ($order->getPayment()->getIsFraudDetected()) {
324
+ $state = Mage::helper('shopgate')->getStateForStatus(self::STATE_PAYMENT_REVIEW);
325
+ $status = Mage::helper('shopgate')->getStatusFromState($state);
326
  }
327
+
328
  return $order->setState($state, $status, $message);
329
  }
330
+
331
  /**
332
  * Maps correct message action based on order status.
333
  * E.g. authorize if pending, capture on complete
334
+ *
335
  * @param $paymentStatus
336
  * @return string
337
  */
338
  public function getActionByStatus($paymentStatus)
339
  {
340
+ return isset($this->_messageStatusAction[$paymentStatus]) ?
341
  $this->_messageStatusAction[$paymentStatus] : 'Authoriz';
342
  }
343
+
344
+ /**
345
+ * Get proper action status for order.
346
+ * This is when the order was paid.
347
+ *
348
+ * @return string
349
+ */
350
+ public function getPaypalCompletedStatus()
351
+ {
352
+ return defined(
353
+ 'Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED'
354
+ ) ? Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED : self::PAYMENTSTATUS_COMPLETED;
355
+ }
356
+
357
+ /**
358
+ * Get proper action status for order.
359
+ * This is when the order was refunded
360
+ * on PayPal's side.
361
+ *
362
+ * @return string
363
+ */
364
+ public function getPaypalRefundedStatus()
365
+ {
366
+ return defined(
367
+ 'Mage_Paypal_Model_Info::PAYMENTSTATUS_REFUNDED'
368
+ ) ? Mage_Paypal_Model_Info::PAYMENTSTATUS_REFUNDED : self::PAYMENTSTATUS_REFUNDED;
369
+ }
370
+
371
+ /**
372
+ * Get proper status action for order.
373
+ * Payment was obtained, but money were
374
+ * not captured yet
375
+ *
376
+ * @return string
377
+ */
378
+ public function getPaypalPendingStatus()
379
+ {
380
+ return defined(
381
+ 'Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING'
382
+ ) ? Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING : self::PAYMENTSTATUS_PENDING;
383
+ }
384
+
385
+ /**
386
+ * Check whether the payment is in review state
387
+ * Support for version 1.4.0.0 added
388
+ *
389
+ * @param Mage_Payment_Model_Info $payment
390
+ * @return bool
391
+ */
392
+ protected function _isPaymentReviewRequired(Mage_Payment_Model_Info $payment)
393
+ {
394
+ if (!$this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
395
+ return Mage::getSingleton('paypal/info')->isPaymentReviewRequired($payment);
396
+ }
397
+
398
+ $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL);
399
+ if (self::PAYMENTSTATUS_PENDING === $paymentStatus) {
400
+ $pendingReason = $payment->getAdditionalInformation(self::PENDING_REASON_GLOBAL);
401
+ return !in_array($pendingReason, array('authorization', 'order'));
402
+ }
403
+ return false;
404
+ }
405
+
406
+ /**
407
+ * Check whether the payment was processed successfully
408
+ * Support for version 1.4.0.0 added
409
+ *
410
+ * @param Mage_Payment_Model_Info $payment
411
+ * @return bool
412
+ */
413
+ protected function _isPaymentSuccessful(Mage_Payment_Model_Info $payment)
414
+ {
415
+ if (!$this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
416
+ return Mage::getSingleton('paypal/info')->isPaymentSuccessful($payment);
417
+ }
418
+
419
+ $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL);
420
+ if (in_array(
421
+ $paymentStatus,
422
+ array(
423
+ self::PAYMENTSTATUS_COMPLETED,
424
+ self::PAYMENTSTATUS_INPROGRESS,
425
+ self::PAYMENTSTATUS_REFUNDED,
426
+ self::PAYMENTSTATUS_REFUNDEDPART,
427
+ self::PAYMENTSTATUS_UNREVERSED,
428
+ self::PAYMENTSTATUS_PROCESSED,
429
+ )
430
+ )) {
431
+ return true;
432
+ }
433
+ $pendingReason = $payment->getAdditionalInformation(self::PENDING_REASON_GLOBAL);
434
+ return self::PAYMENTSTATUS_PENDING === $paymentStatus
435
+ && in_array($pendingReason, array('authorization', 'order'));
436
+ }
437
+
438
+ /**
439
+ * Check whether the payment was processed unsuccessfully or failed
440
+ *
441
+ * @param Mage_Payment_Model_Info $payment
442
+ * @return bool
443
+ */
444
+ protected function _isPaymentFailed(Mage_Payment_Model_Info $payment)
445
+ {
446
+ if (!$this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
447
+ return Mage::getSingleton('paypal/info')->isPaymentFailed($payment);
448
+ }
449
+
450
+ $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL);
451
+ return in_array(
452
+ $paymentStatus,
453
+ array(
454
+ self::PAYMENTSTATUS_DENIED,
455
+ self::PAYMENTSTATUS_EXPIRED,
456
+ self::PAYMENTSTATUS_FAILED,
457
+ self::PAYMENTSTATUS_REVERSED,
458
+ self::PAYMENTSTATUS_VOIDED,
459
+ )
460
+ );
461
+ }
462
+
463
+ /**
464
+ * @return Shopgate_Framework_Helper_Config
465
+ */
466
+ protected function _getConfigHelper()
467
+ {
468
+ return Mage::helper('shopgate/config');
469
+ }
470
  }
app/code/community/Shopgate/Framework/Model/Export/Product/Xml.php CHANGED
@@ -435,14 +435,16 @@ class Shopgate_Framework_Model_Export_Product_Xml
435
  ->getConfigurableAttributes($this->_parent);
436
 
437
  foreach ($superAttributes as $superAttribute) {
438
- $code = $superAttribute->getProductAttribute()->getAttributeCode();
439
- $index = $this->item->getData($code);
 
440
 
441
  if ($superAttribute->hasData('prices')) {
442
  foreach ($superAttribute->getPrices() as $saPrice) {
443
  if ($index == $saPrice["value_index"]) {
444
  if ($saPrice["is_percent"]) {
445
  $totalPercentage += $saPrice["pricing_value"];
 
446
  } else {
447
  $totalOffset += $saPrice["pricing_value"];
448
  }
@@ -454,11 +456,19 @@ class Shopgate_Framework_Model_Export_Product_Xml
454
 
455
  if ($price == $this->_parent->getPrice()) {
456
 
457
- $additionaPrice = $price * $totalPercentage / 100;
458
- $additionaPrice += $totalOffset;
459
 
460
- $price += $additionaPrice;
461
- $finalPrice += $additionaPrice;
 
 
 
 
 
 
 
 
462
  }
463
  }
464
 
@@ -509,7 +519,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
509
  /**
510
  * @param $price Shopgate_Model_Catalog_Price
511
  */
512
- protected function _createTierPriceNode(&$price)
513
  {
514
  foreach ($this->item->getData('tier_price') as $tier) {
515
  if (
@@ -552,7 +562,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
552
  if ($this->item->isSuper() && Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_EXPORT_USE_ROOT_PRICES)) {
553
  $tierPrice->setAggregateChildren(true);
554
  }
555
-
556
  $price->addTierPriceGroup($tierPrice);
557
  }
558
  }
@@ -677,7 +687,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
677
  }
678
  parent::setImages($result);
679
  }
680
-
681
  /**
682
  * getting images as array
683
  * @return array
@@ -718,7 +728,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
718
  if ($parent) {
719
  $product = $this->_parent;
720
  }
721
-
722
  $mediaGallery = $this->_getExportHelper()->getMediaImages($product);
723
  if (!empty($mediaGallery)) {
724
  foreach ($mediaGallery as $image) {
@@ -755,11 +765,11 @@ class Shopgate_Framework_Model_Export_Product_Xml
755
 
756
  /**
757
  * compare images
758
- *
759
  * @param $images array
760
  * @return array
761
  */
762
- protected function _compareImageObject($images)
763
  {
764
  $imageUrls = array();
765
  foreach ($images as $_imageObject) {
@@ -770,7 +780,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
770
  return array_values($imageUrls);
771
  }
772
 
773
-
774
  /**
775
  * set category path
776
  */
@@ -788,7 +798,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
788
  $categoryItemObject = new Shopgate_Model_Catalog_CategoryPath();
789
  $categoryItemObject->setUid($link['category_id']);
790
 
791
- switch ($itemsOrderOption) {
792
  case Shopgate_Framework_Model_System_Config_Source_Item_Sort::SORT_TYPE_LAST_UPDATED:
793
  $sortIndex = Mage::getModel('core/date')->timestamp(strtotime($this->item->getUpdatedAt()));
794
  $categoryItemObject->setSortOrder($sortIndex);
@@ -1030,6 +1040,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1030
  $inputItem->setLabel($option->getTitle());
1031
  $inputItem->setRequired($option->getIsRequire());
1032
  $inputItem->setValidation($this->_buildInputValidation($inputType, $option));
 
1033
 
1034
  /**
1035
  * add additional price for types without options
@@ -1067,7 +1078,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1067
  protected function _buildInputValidation($inputType, $option)
1068
  {
1069
  $validation = new Shopgate_Model_Catalog_Validation();
1070
-
1071
  switch ($inputType) {
1072
  case Shopgate_Model_Catalog_Input::DEFAULT_INPUT_TYPE_TEXT:
1073
  case Shopgate_Model_Catalog_Input::DEFAULT_INPUT_TYPE_AREA:
@@ -1116,6 +1127,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1116
  $inputOption = new Shopgate_Model_Catalog_Option();
1117
  $inputOption->setUid($id);
1118
  $inputOption->setLabel($value->getTitle());
 
1119
  $inputOption->setAdditionalPrice($this->_getOptionValuePrice($value));
1120
  $optionValues[] = $inputOption;
1121
  }
@@ -1125,7 +1137,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1125
 
1126
  /**
1127
  * @param $value Mage_Core_Model_Abstract
1128
- *
1129
  * @return float
1130
  */
1131
  protected function _getOptionValuePrice($value)
@@ -1210,24 +1222,19 @@ class Shopgate_Framework_Model_Export_Product_Xml
1210
  $childProductIds = $this->item->getTypeInstance()->getUsedProductIds();
1211
  foreach ($childProductIds as $child) {
1212
  $configChild = Mage::getModel('catalog/product')
1213
- ->setStoreId($this->_getConfig()->getStoreViewId())
1214
- ->load($child);
1215
- $childProducts[] = $configChild;
1216
  }
1217
  }
1218
 
1219
  if ($this->item->isGrouped()) {
1220
- $childIds = $this->item->getTypeInstance()->getChildrenIds($this->item->getId());
1221
  $childProducts = array();
1222
- foreach ($childIds as $childOption) {
1223
- foreach ($childOption as $childId) {
1224
- /** @var Mage_Catalog_Model_Product $groupedChild */
1225
- $groupedChild = Mage::getModel('catalog/product')
1226
- ->setStoreId($this->_getConfig()->getStoreViewId())
1227
- ->load($childId);
1228
- if ($groupedChild->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
1229
- $childProducts[] = $groupedChild;
1230
- }
1231
  }
1232
  }
1233
  }
@@ -1249,7 +1256,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1249
 
1250
  $children[] = $child;
1251
  if (!$oldVersion) {
1252
- $childProduct->clearInstance();
1253
  }
1254
  }
1255
  }
@@ -1427,6 +1434,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1427
 
1428
  $option->setUid($selection->getSelectionId());
1429
  $option->setLabel($selectionName);
 
1430
 
1431
  // reset selection price, in this case the bundle parent is already configured
1432
  // with the price of the cheapest bundle configuration
@@ -1451,6 +1459,7 @@ class Shopgate_Framework_Model_Export_Product_Xml
1451
  $inputItem->setLabel($title);
1452
  $inputItem->setValidation($this->_buildInputValidation($inputItem->getType(), null));
1453
  $inputItem->setRequired($bundleOption->getRequired());
 
1454
  $inputItem->setOptions($optionValues);
1455
  $inputs[] = $inputItem;
1456
  }
435
  ->getConfigurableAttributes($this->_parent);
436
 
437
  foreach ($superAttributes as $superAttribute) {
438
+ $code = $superAttribute->getProductAttribute()->getAttributeCode();
439
+ $index = $this->item->getData($code);
440
+ $isPercent = false;
441
 
442
  if ($superAttribute->hasData('prices')) {
443
  foreach ($superAttribute->getPrices() as $saPrice) {
444
  if ($index == $saPrice["value_index"]) {
445
  if ($saPrice["is_percent"]) {
446
  $totalPercentage += $saPrice["pricing_value"];
447
+ $isPercent = true;
448
  } else {
449
  $totalOffset += $saPrice["pricing_value"];
450
  }
456
 
457
  if ($price == $this->_parent->getPrice()) {
458
 
459
+ $additionalPrice = $price * $totalPercentage / 100;
460
+ $additionalPrice += $totalOffset;
461
 
462
+ $this->_parent->setConfigurablePrice($additionalPrice, $isPercent);
463
+ $this->_parent->setParentId(true);
464
+ Mage::dispatchEvent(
465
+ 'catalog_product_type_configurable_price',
466
+ array('product' => $this->_parent)
467
+ );
468
+ $calculatedPrices = $this->_parent->getConfigurablePrice();
469
+
470
+ $price += $calculatedPrices;
471
+ $finalPrice += $calculatedPrices;
472
  }
473
  }
474
 
519
  /**
520
  * @param $price Shopgate_Model_Catalog_Price
521
  */
522
+ protected function _createTierPriceNode(&$price)
523
  {
524
  foreach ($this->item->getData('tier_price') as $tier) {
525
  if (
562
  if ($this->item->isSuper() && Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_EXPORT_USE_ROOT_PRICES)) {
563
  $tierPrice->setAggregateChildren(true);
564
  }
565
+
566
  $price->addTierPriceGroup($tierPrice);
567
  }
568
  }
687
  }
688
  parent::setImages($result);
689
  }
690
+
691
  /**
692
  * getting images as array
693
  * @return array
728
  if ($parent) {
729
  $product = $this->_parent;
730
  }
731
+
732
  $mediaGallery = $this->_getExportHelper()->getMediaImages($product);
733
  if (!empty($mediaGallery)) {
734
  foreach ($mediaGallery as $image) {
765
 
766
  /**
767
  * compare images
768
+ *
769
  * @param $images array
770
  * @return array
771
  */
772
+ protected function _compareImageObject($images)
773
  {
774
  $imageUrls = array();
775
  foreach ($images as $_imageObject) {
780
  return array_values($imageUrls);
781
  }
782
 
783
+
784
  /**
785
  * set category path
786
  */
798
  $categoryItemObject = new Shopgate_Model_Catalog_CategoryPath();
799
  $categoryItemObject->setUid($link['category_id']);
800
 
801
+ switch ($itemsOrderOption) {
802
  case Shopgate_Framework_Model_System_Config_Source_Item_Sort::SORT_TYPE_LAST_UPDATED:
803
  $sortIndex = Mage::getModel('core/date')->timestamp(strtotime($this->item->getUpdatedAt()));
804
  $categoryItemObject->setSortOrder($sortIndex);
1040
  $inputItem->setLabel($option->getTitle());
1041
  $inputItem->setRequired($option->getIsRequire());
1042
  $inputItem->setValidation($this->_buildInputValidation($inputType, $option));
1043
+ $inputItem->setSortOrder($option->getSortOrder());
1044
 
1045
  /**
1046
  * add additional price for types without options
1078
  protected function _buildInputValidation($inputType, $option)
1079
  {
1080
  $validation = new Shopgate_Model_Catalog_Validation();
1081
+
1082
  switch ($inputType) {
1083
  case Shopgate_Model_Catalog_Input::DEFAULT_INPUT_TYPE_TEXT:
1084
  case Shopgate_Model_Catalog_Input::DEFAULT_INPUT_TYPE_AREA:
1127
  $inputOption = new Shopgate_Model_Catalog_Option();
1128
  $inputOption->setUid($id);
1129
  $inputOption->setLabel($value->getTitle());
1130
+ $inputOption->setSortOrder($value->getSortOrder());
1131
  $inputOption->setAdditionalPrice($this->_getOptionValuePrice($value));
1132
  $optionValues[] = $inputOption;
1133
  }
1137
 
1138
  /**
1139
  * @param $value Mage_Core_Model_Abstract
1140
+ *
1141
  * @return float
1142
  */
1143
  protected function _getOptionValuePrice($value)
1222
  $childProductIds = $this->item->getTypeInstance()->getUsedProductIds();
1223
  foreach ($childProductIds as $child) {
1224
  $configChild = Mage::getModel('catalog/product')
1225
+ ->setStoreId($this->_getConfig()->getStoreViewId())
1226
+ ->load($child);
1227
+ $childProducts[] = $configChild;
1228
  }
1229
  }
1230
 
1231
  if ($this->item->isGrouped()) {
1232
+ $groupChildren = $this->item->getTypeInstance()->getAssociatedProducts($this->item);
1233
  $childProducts = array();
1234
+ foreach ($groupChildren as $groupChild) {
1235
+ /** @var Mage_Catalog_Model_Product $groupChild */
1236
+ if ($groupChild->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
1237
+ $childProducts[] = $groupChild;
 
 
 
 
 
1238
  }
1239
  }
1240
  }
1256
 
1257
  $children[] = $child;
1258
  if (!$oldVersion) {
1259
+ $childProduct->clearInstance();
1260
  }
1261
  }
1262
  }
1434
 
1435
  $option->setUid($selection->getSelectionId());
1436
  $option->setLabel($selectionName);
1437
+ $option->setSortOrder($selection->getPosition());
1438
 
1439
  // reset selection price, in this case the bundle parent is already configured
1440
  // with the price of the cheapest bundle configuration
1459
  $inputItem->setLabel($title);
1460
  $inputItem->setValidation($this->_buildInputValidation($inputItem->getType(), null));
1461
  $inputItem->setRequired($bundleOption->getRequired());
1462
+ $inputItem->setSortOrder($bundleOption->getPosition());
1463
  $inputItem->setOptions($optionValues);
1464
  $inputs[] = $inputItem;
1465
  }
app/code/community/Shopgate/Framework/Model/Payment/Abstract/AbstractPayol.php CHANGED
@@ -109,9 +109,9 @@ class Shopgate_Framework_Model_Payment_Abstract_AbstractPayol extends Shopgate_F
109
  $this->_getTransactionAction(),
110
  $this->getOrder()->getBaseCurrency()->formatTxt($amountToCapture)
111
  );
112
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
113
  if ($payment->getIsFraudDetected()) {
114
- $status = Mage_Sales_Model_Order::STATUS_FRAUD;
115
  }
116
  } else {
117
  $status = Mage::getStoreConfig($this::XML_CONFIG_STATUS_PAID);
@@ -140,7 +140,7 @@ class Shopgate_Framework_Model_Payment_Abstract_AbstractPayol extends Shopgate_F
140
  $info = $this->getShopgateOrder()->getPaymentInfos();
141
 
142
  if (!isset($info['unique_id'])) {
143
- $error = mage::helper('shopgate')->__('Unique ID was missing in paymentInfo of add_order');
144
  ShopgateLogger::getInstance()->log($error, ShopgateLogger::LOGTYPE_ERROR);
145
  return false;
146
  }
@@ -252,7 +252,7 @@ class Shopgate_Framework_Model_Payment_Abstract_AbstractPayol extends Shopgate_F
252
 
253
  $trans->save();
254
  $this->getOrder()->getPayment()->setTransactionAdditionalInfo(
255
- Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS,
256
  $info
257
  );
258
  $this->getOrder()->getPayment()->setTransactionId($transId)->setIsTransactionClosed(0);
109
  $this->_getTransactionAction(),
110
  $this->getOrder()->getBaseCurrency()->formatTxt($amountToCapture)
111
  );
112
+ $state = $this->_getHelper()->getStateForStatus('payment_review');
113
  if ($payment->getIsFraudDetected()) {
114
+ $status = Mage_Sales_Model_Order::STATE_HOLDED;
115
  }
116
  } else {
117
  $status = Mage::getStoreConfig($this::XML_CONFIG_STATUS_PAID);
140
  $info = $this->getShopgateOrder()->getPaymentInfos();
141
 
142
  if (!isset($info['unique_id'])) {
143
+ $error = $this->_getHelper()->__('Unique ID was missing in paymentInfo of add_order');
144
  ShopgateLogger::getInstance()->log($error, ShopgateLogger::LOGTYPE_ERROR);
145
  return false;
146
  }
252
 
253
  $trans->save();
254
  $this->getOrder()->getPayment()->setTransactionAdditionalInfo(
255
+ $this->_getPaymentHelper()->getTransactionRawDetails(),
256
  $info
257
  );
258
  $this->getOrder()->getPayment()->setTransactionId($transId)->setIsTransactionClosed(0);
app/code/community/Shopgate/Framework/Model/Payment/Cc/Abstract.php CHANGED
@@ -37,21 +37,6 @@ class Shopgate_Framework_Model_Payment_Cc_Abstract
37
  */
38
  protected $_order;
39
 
40
- /**
41
- * Simple setter
42
- *
43
- * @param $order Mage_Sales_Model_Order
44
- * @return Mage_Sales_Model_Order
45
- */
46
- public function setOrder($order)
47
- {
48
- if ($this->_order) {
49
- return $this->_order;
50
- }
51
-
52
- return $this->_order = $order;
53
- }
54
-
55
  /**
56
  * Retrieve credit card type by mapping
57
  *
@@ -86,11 +71,4 @@ class Shopgate_Framework_Model_Payment_Cc_Abstract
86
  return $ccType;
87
  }
88
 
89
- /**
90
- * @return Shopgate_Framework_Helper_Data
91
- */
92
- protected function _getHelper()
93
- {
94
- return Mage::helper('shopgate');
95
- }
96
  }
37
  */
38
  protected $_order;
39
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
  /**
41
  * Retrieve credit card type by mapping
42
  *
71
  return $ccType;
72
  }
73
 
 
 
 
 
 
 
 
74
  }
app/code/community/Shopgate/Framework/Model/Payment/Cc/Authn.php CHANGED
@@ -34,11 +34,19 @@ class Shopgate_Framework_Model_Payment_Cc_Authn
34
  {
35
  const XML_CONFIG_ENABLED = 'payment/authorizenet/active';
36
  const MODULE_CONFIG = 'Mage_Paygate';
37
-
 
 
 
 
 
 
 
 
 
 
38
  /**
39
  * Use AuthnCIM as guide to refactor this class
40
- * todo: refactor status setting
41
- * todo: move invoice setting out
42
  *
43
  * @param $order Mage_Sales_Model_Order
44
  *
@@ -46,36 +54,16 @@ class Shopgate_Framework_Model_Payment_Cc_Authn
46
  */
47
  public function manipulateOrderWithPaymentData($order)
48
  {
49
- $shopgateOrder = $this->getShopgateOrder();
50
- $paymentInfos = $shopgateOrder->getPaymentInfos();
51
- $paymentAuthorize = Mage::getModel('paygate/authorizenet');
52
- $order->getPayment()->setMethod($paymentAuthorize->getCode());
53
- $paymentAuthorize->setInfoInstance($order->getPayment());
54
- $order->getPayment()->setMethodInstance($paymentAuthorize);
55
- $order->save();
56
-
57
- $lastFour = substr($paymentInfos['credit_card']['masked_number'], -4);
58
- $order->getPayment()->setCcTransId($paymentInfos['transaction_id']);
59
- $order->getPayment()->setCcApproval($paymentInfos['authorization_number']);
60
- $order->getPayment()->setLastTransId($paymentInfos['transaction_id']);
61
- $cardStorage = $paymentAuthorize->getCardsStorage($order->getPayment());
62
- $card = $cardStorage->registerCard();
63
- $card->setRequestedAmount($shopgateOrder->getAmountComplete())
64
- ->setBalanceOnCard("")
65
- ->setLastTransId($paymentInfos['transaction_id'])
66
- ->setProcessedAmount($shopgateOrder->getAmountComplete())
67
- ->setCcType($this->_getCcTypeName($paymentInfos['credit_card']['type']))
68
- ->setCcOwner($paymentInfos['credit_card']['holder'])
69
- ->setCcLast4($lastFour)
70
- ->setCcExpMonth("")
71
- ->setCcExpYear("")
72
- ->setCcSsIssue("")
73
- ->setCcSsStartMonth("")
74
- ->setCcSsStartYear("");
75
-
76
- $transactionType = $paymentInfos['transaction_type'];
77
- $responseCode = $paymentInfos['response_code'];
78
- switch ($transactionType) {
79
  case self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE:
80
  $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE;
81
  $defaultExceptionMessage = Mage::helper('paygate')->__('Payment capturing error.');
@@ -86,61 +74,23 @@ class Shopgate_Framework_Model_Payment_Cc_Authn
86
  $defaultExceptionMessage = Mage::helper('paygate')->__('Payment authorization error.');
87
  break;
88
  }
89
-
90
  try {
91
- switch ($responseCode) {
92
  case self::RESPONSE_CODE_APPROVED:
93
- $formattedPrice = $order->getBaseCurrency()->formatTxt($order->getTotalDue());
94
- $order->getPayment()->setAmountAuthorized($order->getGrandTotal());
95
- $order->getPayment()->setBaseAmountAuthorized($order->getBaseGrandTotal());
96
- $order->getPayment()->setIsTransactionPending(true);
97
- $this->_createTransaction($order->getPayment(), $card, $newTransactionType);
98
- $message = Mage::helper('paypal')->__('Authorized amount of %s.', $formattedPrice);
99
- $state = Mage_Sales_Model_Order::STATE_PROCESSING;
100
- if ($transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
101
- $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
102
- $invoice->setTransactionId(1);
103
- $order->getPayment()->setIsTransactionPending(false);
104
- $amountToCapture = $order->getBaseCurrency()->formatTxt($invoice->getBaseGrandTotal());
105
- $order->getPayment()->setBaseAmountPaidOnline($invoice->getBaseGrandTotal());
106
- $card->setCapturedAmount($card->getProcessedAmount());
107
- $message = Mage::helper('sales')->__('Captured amount of %s online.', $amountToCapture);
108
- $invoice->setIsPaid(true);
109
- $invoice->pay();
110
- $invoice->save();
111
- $order->addRelatedObject($invoice);
112
  }
113
- $cardStorage->updateCard($card);
114
- $order->setState($state, $this->_getHelper()->getStatusFromState($state), $message);
115
  break;
116
  case self::RESPONSE_CODE_HELD:
117
- if (array_key_exists('response_reason_code', $paymentInfos) && (
118
- $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW_AUTHORIZED
119
- || $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW
120
- )
121
- ) {
122
- $this->_createTransaction(
123
- $order->getPayment(),
124
- $card,
125
- $newTransactionType,
126
- array('is_transaction_fraud' => true)
127
- );
128
- $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
129
- $invoice->setTransactionId(1);
130
- $invoice->setIsPaid(false);
131
- $invoice->save();
132
- $order->addRelatedObject($invoice);
133
- $amountToCapture = $order->getBaseCurrency()->formatTxt($invoice->getBaseGrandTotal());
134
- $message = Mage::helper('sales')->__(
135
- 'Capturing amount of %s is pending approval on gateway.',
136
- $amountToCapture
137
- );
138
- if ($transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
139
- $card->setCapturedAmount($card->getProcessedAmount());
140
- $cardStorage->updateCard($card);
141
- }
142
- $order->getPayment()->setIsTransactionPending(true)->setIsFraudDetected(true);
143
- $order->setState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, $message);
144
  }
145
  break;
146
  case self::RESPONSE_CODE_DECLINED:
@@ -150,31 +100,88 @@ class Shopgate_Framework_Model_Payment_Cc_Authn
150
  Mage::throwException($defaultExceptionMessage);
151
  }
152
  } catch (Exception $x) {
153
- $order->addStatusHistoryComment(Mage::helper('sales')->__('Note: %s', $x->getMessage()));
154
  Mage::logException($x);
155
  }
156
- $order->setShopgateStatusSet(true);
157
- return $order;
 
 
158
  }
159
-
160
  /**
161
- * @param $orderPayment
162
- * @param $card
163
  * @param $type
164
  * @param $additionalInformation
165
  */
166
- protected function _createTransaction($orderPayment, $card, $type, $additionalInformation = array())
167
  {
168
- $transaction = Mage::getModel('sales/order_payment_transaction');
 
169
  $transaction->setOrderPaymentObject($orderPayment);
170
- $transaction->setTxnId($card->getLastTransId());
171
  $transaction->setIsClosed(false);
172
  $transaction->setTxnType($type);
173
  $transaction->setData('is_transaciton_closed', '0');
174
- $transaction->setAdditionalInformation('real_transaction_id', $card->getLastTransId());
175
  foreach ($additionalInformation as $key => $value) {
176
  $transaction->setAdditionalInformation($key, $value);
177
  }
178
  $transaction->save();
179
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
180
  }
34
  {
35
  const XML_CONFIG_ENABLED = 'payment/authorizenet/active';
36
  const MODULE_CONFIG = 'Mage_Paygate';
37
+
38
+ /**
39
+ * Init variables
40
+ */
41
+ private function _initVariables()
42
+ {
43
+ $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
44
+ $this->_transactionType = $paymentInfos['transaction_type'];
45
+ $this->_responseCode = $paymentInfos['response_code'];
46
+ }
47
+
48
  /**
49
  * Use AuthnCIM as guide to refactor this class
 
 
50
  *
51
  * @param $order Mage_Sales_Model_Order
52
  *
54
  */
55
  public function manipulateOrderWithPaymentData($order)
56
  {
57
+ $this->_initVariables();
58
+ $shopgateOrder = $this->getShopgateOrder();
59
+ $paymentInfos = $shopgateOrder->getPaymentInfos();
60
+
61
+ $this->_saveToCardStorage();
62
+ $this->getOrder()->getPayment()->setCcTransId($paymentInfos['transaction_id']);
63
+ $this->getOrder()->getPayment()->setCcApproval($paymentInfos['authorization_number']);
64
+ $this->getOrder()->getPayment()->setLastTransId($paymentInfos['transaction_id']);
65
+
66
+ switch ($this->_transactionType) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  case self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE:
68
  $newTransactionType = Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE;
69
  $defaultExceptionMessage = Mage::helper('paygate')->__('Payment capturing error.');
74
  $defaultExceptionMessage = Mage::helper('paygate')->__('Payment authorization error.');
75
  break;
76
  }
77
+
78
  try {
79
+ switch ($this->_responseCode) {
80
  case self::RESPONSE_CODE_APPROVED:
81
+ $this->getOrder()->getPayment()->setAmountAuthorized($this->getOrder()->getGrandTotal());
82
+ $this->getOrder()->getPayment()->setBaseAmountAuthorized($this->getOrder()->getBaseGrandTotal());
83
+ $this->getOrder()->getPayment()->setIsTransactionPending(true);
84
+ $this->_createTransaction($newTransactionType);
85
+
86
+ if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
87
+ $this->getOrder()->getPayment()->setIsTransactionPending(false);
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
 
 
89
  break;
90
  case self::RESPONSE_CODE_HELD:
91
+ if ($this->_isOrderPendingReview()) {
92
+ $this->_createTransaction($newTransactionType, array('is_transaction_fraud' => true));
93
+ $this->getOrder()->getPayment()->setIsTransactionPending(true)->setIsFraudDetected(true);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  }
95
  break;
96
  case self::RESPONSE_CODE_DECLINED:
100
  Mage::throwException($defaultExceptionMessage);
101
  }
102
  } catch (Exception $x) {
103
+ $this->getOrder()->addStatusHistoryComment(Mage::helper('sales')->__('Note: %s', $x->getMessage()));
104
  Mage::logException($x);
105
  }
106
+
107
+ $this->_createInvoice();
108
+
109
+ return $this->getOrder();
110
  }
111
+
112
  /**
 
 
113
  * @param $type
114
  * @param $additionalInformation
115
  */
116
+ protected function _createTransaction($type, $additionalInformation = array())
117
  {
118
+ $orderPayment = $this->_order->getPayment();
119
+ $transaction = Mage::getModel('sales/order_payment_transaction');
120
  $transaction->setOrderPaymentObject($orderPayment);
121
+ $transaction->setTxnId($orderPayment->getCcTransId());
122
  $transaction->setIsClosed(false);
123
  $transaction->setTxnType($type);
124
  $transaction->setData('is_transaciton_closed', '0');
125
+ $transaction->setAdditionalInformation('real_transaction_id', $orderPayment->getCcTransId());
126
  foreach ($additionalInformation as $key => $value) {
127
  $transaction->setAdditionalInformation($key, $value);
128
  }
129
  $transaction->save();
130
  }
131
+
132
+ /**
133
+ * Utilize card storage if it exists
134
+ * It does not in mage 1.4.0.0
135
+ *
136
+ * @throws Exception
137
+ */
138
+ protected function _saveToCardStorage()
139
+ {
140
+ $paymentAuthorize = Mage::getModel('paygate/authorizenet');
141
+
142
+ $this->getOrder()->getPayment()->setMethod($paymentAuthorize->getCode());
143
+ $paymentAuthorize->setInfoInstance($this->getOrder()->getPayment());
144
+ $this->getOrder()->getPayment()->setMethodInstance($paymentAuthorize);
145
+ $this->getOrder()->save();
146
+
147
+ if (!method_exists($paymentAuthorize, 'getCardsStorage')) {
148
+ return $this;
149
+ }
150
+
151
+ $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
152
+ $lastFour = substr($paymentInfos['credit_card']['masked_number'], -4);
153
+ $cardStorage = $paymentAuthorize->getCardsStorage($this->getOrder()->getPayment());
154
+ $card = $cardStorage->registerCard();
155
+ $card->setRequestedAmount($this->getShopgateOrder()->getAmountComplete())
156
+ ->setBalanceOnCard("")
157
+ ->setLastTransId($paymentInfos['transaction_id'])
158
+ ->setProcessedAmount($this->getShopgateOrder()->getAmountComplete())
159
+ ->setCcType($this->_getCcTypeName($paymentInfos['credit_card']['type']))
160
+ ->setCcOwner($paymentInfos['credit_card']['holder'])
161
+ ->setCcLast4($lastFour)
162
+ ->setCcExpMonth("")
163
+ ->setCcExpYear("")
164
+ ->setCcSsIssue("")
165
+ ->setCcSsStartMonth("")
166
+ ->setCcSsStartYear("")
167
+ ;
168
+
169
+ switch ($this->_responseCode) {
170
+ case self::RESPONSE_CODE_APPROVED:
171
+ if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
172
+ $card->setCapturedAmount($card->getProcessedAmount());
173
+ }
174
+ $cardStorage->updateCard($card);
175
+ break;
176
+ case self::RESPONSE_CODE_HELD:
177
+ if ($this->_isOrderPendingReview()) {
178
+ if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
179
+ $card->setCapturedAmount($card->getProcessedAmount());
180
+ $cardStorage->updateCard($card);
181
+ }
182
+ }
183
+ break;
184
+ }
185
+ return $this;
186
+ }
187
  }
app/code/community/Shopgate/Framework/Model/Payment/Cc/AuthnAbstract.php CHANGED
@@ -50,5 +50,101 @@ class Shopgate_Framework_Model_Payment_Cc_AuthnAbstract extends Shopgate_Framewo
50
  const RESPONSE_REASON_CODE_PENDING_REVIEW_AUTHORIZED = 252;
51
  const RESPONSE_REASON_CODE_PENDING_REVIEW = 253;
52
  const RESPONSE_REASON_CODE_PENDING_REVIEW_DECLINED = 254;
53
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
50
  const RESPONSE_REASON_CODE_PENDING_REVIEW_AUTHORIZED = 252;
51
  const RESPONSE_REASON_CODE_PENDING_REVIEW = 253;
52
  const RESPONSE_REASON_CODE_PENDING_REVIEW_DECLINED = 254;
53
+
54
+ protected $_transactionType = '';
55
+ protected $_responseCode = '';
56
+
57
+ /**
58
+ * Checks if the order response is pending review
59
+ *
60
+ * @return bool
61
+ */
62
+ protected function _isOrderPendingReview()
63
+ {
64
+ $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
65
+
66
+ return array_key_exists('response_reason_code', $paymentInfos)
67
+ && (
68
+ $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW_AUTHORIZED
69
+ || $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW
70
+ );
71
+ }
72
+
73
+ /**
74
+ * Sets order status
75
+ *
76
+ * @param Mage_Sales_Model_Order $order
77
+ *
78
+ * @return Mage_Sales_Model_Order
79
+ */
80
+ public function setOrderStatus($order = null)
81
+ {
82
+ $captured = $this->_order->getBaseCurrency()->formatTxt($this->_order->getBaseTotalInvoiced());
83
+ $state = $this->_getHelper()->getStateForStatus('payment_review');
84
+ $status = $this->_getHelper()->getStatusFromState($state);
85
+ $message = '';
86
+
87
+ switch ($this->_responseCode) {
88
+ case self::RESPONSE_CODE_APPROVED:
89
+ $duePrice = $this->_order->getBaseCurrency()->formatTxt($this->_order->getTotalDue());
90
+ $message = Mage::helper('paypal')->__('Authorized amount of %s.', $duePrice);
91
+
92
+ if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
93
+ $message = Mage::helper('sales')->__('Captured amount of %s online.', $captured);
94
+ $state = Mage_Sales_Model_Order::STATE_PROCESSING;
95
+ $status = $this->_getHelper()->getStatusFromState($state);
96
+ }
97
+ break;
98
+ case self::RESPONSE_CODE_HELD:
99
+ if ($this->_isOrderPendingReview()) {
100
+ $message = Mage::helper('sales')->__(
101
+ 'Capturing amount of %s is pending approval on gateway.',
102
+ $captured
103
+ )
104
+ ;
105
+ $this->_order->setState($state, $status, $message);
106
+ }
107
+ break;
108
+ }
109
+ $this->_order->setState($state, $status, $message);
110
+ $order->setShopgateStatusSet(true);
111
+
112
+ return $order;
113
+ }
114
+
115
+ /**
116
+ * Handles invoice creation
117
+ *
118
+ * @return $this
119
+ * @throws Exception
120
+ */
121
+ protected function _createInvoice()
122
+ {
123
+ $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
124
+
125
+ switch ($this->_responseCode) {
126
+ case self::RESPONSE_CODE_APPROVED:
127
+ if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
128
+ $invoice = $this->_getPaymentHelper()->createOrderInvoice($this->_order);
129
+ $invoice->setTransactionId($paymentInfos['transaction_id']); //needed for refund
130
+ $this->_order->getPayment()->setBaseAmountPaidOnline($invoice->getBaseGrandTotal());
131
+ $invoice->setIsPaid(true);
132
+ $invoice->pay();
133
+ $invoice->save();
134
+ $this->_order->addRelatedObject($invoice);
135
+ }
136
+ break;
137
+ case self::RESPONSE_CODE_HELD:
138
+ if ($this->_isOrderPendingReview()) {
139
+ $invoice = $this->_getPaymentHelper()->createOrderInvoice($this->_order);
140
+ $invoice->setTransactionId($paymentInfos['transaction_id']);
141
+ $invoice->setIsPaid(false);
142
+ $invoice->save();
143
+ $this->_order->addRelatedObject($invoice);
144
+ }
145
+ break;
146
+ }
147
+
148
+ return $this;
149
+ }
150
  }
app/code/community/Shopgate/Framework/Model/Payment/Cc/Authncim.php CHANGED
@@ -35,8 +35,6 @@ class Shopgate_Framework_Model_Payment_Cc_Authncim extends Shopgate_Framework_Mo
35
  * Order initialization values
36
  */
37
  protected $_orderInitialized = false;
38
- protected $_transactionType = '';
39
- protected $_responseCode = '';
40
 
41
  /**
42
  * Initialize public method
@@ -148,88 +146,24 @@ class Shopgate_Framework_Model_Payment_Cc_Authncim extends Shopgate_Framework_Mo
148
  }
149
  $transaction->save();
150
  }
151
-
152
- /**
153
- * Handles invoice creation
154
- *
155
- * @return $this
156
- * @throws Exception
157
- */
158
- protected function _createInvoice()
159
- {
160
- $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
161
-
162
- switch ($this->_responseCode) {
163
- case self::RESPONSE_CODE_APPROVED:
164
- if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
165
- $invoice = $this->_getPaymentHelper()->createOrderInvoice($this->_order);
166
- $invoice->setTransactionId($paymentInfos['transaction_id']); //needed for refund
167
- $this->_order->getPayment()->setBaseAmountPaidOnline($invoice->getBaseGrandTotal());
168
- $invoice->setIsPaid(true);
169
- $invoice->pay();
170
- $invoice->save();
171
- $this->_order->addRelatedObject($invoice);
172
- }
173
- break;
174
- case self::RESPONSE_CODE_HELD:
175
- if ($this->_isOrderPendingReview()) {
176
- $invoice = $this->_getPaymentHelper()->createOrderInvoice($this->_order);
177
- $invoice->setTransactionId($paymentInfos['transaction_id']);
178
- $invoice->setIsPaid(false);
179
- $invoice->save();
180
- $this->_order->addRelatedObject($invoice);
181
- }
182
- break;
183
- }
184
-
185
- return $this;
186
- }
187
-
188
  /**
189
- * Sets order status
190
  *
191
- * @param Mage_Sales_Model_Order $order
192
  * @return Mage_Sales_Model_Order
193
  */
194
- public function setOrderStatus($order = null)
195
  {
196
- $this->_initOrder($order);
197
- $captured = $this->_order->getBaseCurrency()->formatTxt($this->_order->getBaseTotalInvoiced());
198
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
199
- $status = $this->_getHelper()->getStatusFromState($state);
200
- $message = '';
201
-
202
- switch ($this->_responseCode) {
203
- case self::RESPONSE_CODE_APPROVED:
204
- $duePrice = $this->_order->getBaseCurrency()->formatTxt($this->_order->getTotalDue());
205
- $message = Mage::helper('paypal')->__('Authorized amount of %s.', $duePrice);
206
-
207
- if ($this->_transactionType == self::SHOPGATE_PAYMENT_STATUS_AUTH_CAPTURE) {
208
- $message = Mage::helper('sales')->__('Captured amount of %s online.', $captured);
209
- $status = Mage::getModel('authnetcim/method')->getConfigData('order_status');
210
-
211
- if (!$status) {
212
- $state = Mage_Sales_Model_Order::STATE_PROCESSING;
213
- $status = $this->_getHelper()->getStatusFromState($state);
214
- }
215
- $state = $this->_getHelper()->getStateForStatus($status);
216
- }
217
- break;
218
- case self::RESPONSE_CODE_HELD:
219
- if ($this->_isOrderPendingReview()) {
220
- $message = Mage::helper('sales')->__(
221
- 'Capturing amount of %s is pending approval on gateway.',
222
- $captured
223
- );
224
- $this->_order->setState($state, $status, $message);
225
- }
226
- break;
227
  }
228
- $this->_order->setState($state, $status, $message);
229
- $order->setShopgateStatusSet(true);
230
- return $order;
231
  }
232
-
233
  /**
234
  * Handles the creation of AuthnCIM card & profile
235
  *
@@ -285,20 +219,6 @@ class Shopgate_Framework_Model_Payment_Cc_Authncim extends Shopgate_Framework_Mo
285
  return $customer;
286
  }
287
 
288
- /**
289
- * Checks if the order response is pending review
290
- *
291
- * @return bool
292
- */
293
- private function _isOrderPendingReview()
294
- {
295
- $paymentInfos = $this->getShopgateOrder()->getPaymentInfos();
296
- return array_key_exists('response_reason_code', $paymentInfos) && (
297
- $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW_AUTHORIZED
298
- || $paymentInfos['response_reason_code'] == self::RESPONSE_REASON_CODE_PENDING_REVIEW
299
- );
300
- }
301
-
302
  /**
303
  * Needs to be the right customer, active and last four match
304
  *
35
  * Order initialization values
36
  */
37
  protected $_orderInitialized = false;
 
 
38
 
39
  /**
40
  * Initialize public method
146
  }
147
  $transaction->save();
148
  }
149
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  /**
151
+ * @param Mage_Sales_Model_Order|null $magentoOrder
152
  *
 
153
  * @return Mage_Sales_Model_Order
154
  */
155
+ public function setOrderStatus($magentoOrder)
156
  {
157
+ $status = Mage::getModel('authnetcim/method')->getConfigData('order_status');
158
+ if ($status) {
159
+ $state = $this->_getHelper()->getStateForStatus($status);
160
+ $magentoOrder->setShopgateStatusSet(true);
161
+ return $magentoOrder->setState($state, $status);
162
+ } else {
163
+ return parent::setOrderStatus($magentoOrder);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
164
  }
 
 
 
165
  }
166
+
167
  /**
168
  * Handles the creation of AuthnCIM card & profile
169
  *
219
  return $customer;
220
  }
221
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
  /**
223
  * Needs to be the right customer, active and last four match
224
  *
app/code/community/Shopgate/Framework/Model/Payment/Cc/Usaepay.php CHANGED
@@ -111,7 +111,7 @@ class Shopgate_Framework_Model_Payment_Cc_Usaepay extends Shopgate_Framework_Mod
111
  }
112
  $message = Mage::helper('sales')->__('Captured amount of %s online.', $total);
113
  } else {
114
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
115
  $status = Mage::helper('shopgate')->getStatusFromState($state);
116
  $due = $magentoOrder->getBaseCurrency()->formatTxt($magentoOrder->getTotalDue());
117
  $message = Mage::helper('paypal')->__('Authorized amount of %s.', $due);
111
  }
112
  $message = Mage::helper('sales')->__('Captured amount of %s online.', $total);
113
  } else {
114
+ $state = Mage::helper("shopgate")->getStateForStatus("payment_review");
115
  $status = Mage::helper('shopgate')->getStatusFromState($state);
116
  $due = $magentoOrder->getBaseCurrency()->formatTxt($magentoOrder->getTotalDue());
117
  $message = Mage::helper('paypal')->__('Authorized amount of %s.', $due);
app/code/community/Shopgate/Framework/Model/Payment/Payone/Abstract.php CHANGED
@@ -296,7 +296,6 @@ class Shopgate_Framework_Model_Payment_Payone_Abstract extends Shopgate_Framewor
296
  /**
297
  * Faking a response from gateway
298
  */
299
- $this->getOrder()->getPayment()->setMethodInstance($this->getPaymentModel());
300
  $request = $this->_createFakeRequest();
301
  $response = $this->_createFakeResponse();
302
 
@@ -419,6 +418,12 @@ class Shopgate_Framework_Model_Payment_Payone_Abstract extends Shopgate_Framewor
419
  return false;
420
  }
421
 
 
 
 
 
 
 
422
  public function isEnabled()
423
  {
424
  if (version_compare($this->_getVersion(), '3.3.0', '>=')) {
296
  /**
297
  * Faking a response from gateway
298
  */
 
299
  $request = $this->_createFakeRequest();
300
  $response = $this->_createFakeResponse();
301
 
418
  return false;
419
  }
420
 
421
+ /**
422
+ * Different versions have
423
+ * different config options
424
+ *
425
+ * @return bool
426
+ */
427
  public function isEnabled()
428
  {
429
  if (version_compare($this->_getVersion(), '3.3.0', '>=')) {
app/code/community/Shopgate/Framework/Model/Payment/Pp/Abstract.php CHANGED
@@ -33,16 +33,6 @@ class Shopgate_Framework_Model_Payment_Pp_Abstract
33
  const PAYMENT_IDENTIFIER = 'PP';
34
  const MODULE_CONFIG = 'Mage_Paypal';
35
 
36
- /**
37
- * History message action map
38
- *
39
- * @var array
40
- */
41
- protected $_messageStatusAction = array(
42
- Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED => 'Captur',
43
- Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING => 'Authoriz'
44
- );
45
-
46
  /**
47
  * Depends on Shopgate paymentInfos() to be passed
48
  * into the TransactionAdditionalInfo of $order.
@@ -53,59 +43,16 @@ class Shopgate_Framework_Model_Payment_Pp_Abstract
53
  */
54
  public function orderStatusManager(Mage_Sales_Model_Order $order, $paymentStatus = null)
55
  {
56
- if (!$paymentStatus) {
57
- $rawData = $order->getPayment()->getTransactionAdditionalInfo(
58
- Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS
59
- );
60
- $paymentStatus = $rawData['payment_status'];
61
- }
62
-
63
- $total = $order->getBaseCurrency()->formatTxt($order->getGrandTotal());
64
- $state = Mage_Sales_Model_Order::STATE_PROCESSING;
65
- $action = $this->getActionByStatus(strtolower($paymentStatus));
66
-
67
- if ($order->getPayment()->getIsTransactionPending()) {
68
- $message = Mage::helper('paypal')->__(
69
- '%sing amount of %s is pending approval on gateway.',
70
- $action,
71
- $total
72
- );
73
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
74
- } else {
75
- $message = Mage::helper('paypal')->__(
76
- '%sed amount of %s online.',
77
- $action,
78
- $total
79
- );
80
- }
81
-
82
- //test for fraud
83
- if ($order->getPayment()->getIsFraudDetected()) {
84
- $status = Mage_Sales_Model_Order::STATUS_FRAUD;
85
- $state = Mage::helper('shopgate')->getStateForStatus($status);
86
- if (!$state) {
87
- $state = Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW;
88
- }
89
- }
90
-
91
- if (!isset($status)) {
92
- $status = Mage::helper('shopgate')->getStatusFromState($state);
93
- }
94
- $order->setState($state, $status, $message);
95
  $order->setShopgateStatusSet(true);
96
  return $order;
97
  }
98
 
99
  /**
100
- * Maps correct message action based on order status.
101
- * E.g. authorize if pending, capture on complete
102
- *
103
- * @param $paymentStatus
104
- * @return string
105
  */
106
- public function getActionByStatus($paymentStatus)
107
  {
108
- return isset($this->_messageStatusAction[$paymentStatus]) ?
109
- $this->_messageStatusAction[$paymentStatus] : 'Authoriz';
110
  }
111
  }
33
  const PAYMENT_IDENTIFIER = 'PP';
34
  const MODULE_CONFIG = 'Mage_Paypal';
35
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * Depends on Shopgate paymentInfos() to be passed
38
  * into the TransactionAdditionalInfo of $order.
43
  */
44
  public function orderStatusManager(Mage_Sales_Model_Order $order, $paymentStatus = null)
45
  {
46
+ $this->_getPaymentHelper()->orderStatusManager($order, $paymentStatus);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
47
  $order->setShopgateStatusSet(true);
48
  return $order;
49
  }
50
 
51
  /**
52
+ * @return Shopgate_Framework_Helper_Payment_Wspp
 
 
 
 
53
  */
54
+ protected function _getPaymentHelper()
55
  {
56
+ return Mage::helper('shopgate/payment_wspp');
 
57
  }
58
  }
app/code/community/Shopgate/Framework/Model/Payment/Pp/Wspp.php CHANGED
@@ -126,7 +126,7 @@ class Shopgate_Framework_Model_Payment_Pp_Wspp
126
  $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
127
  switch ($paymentStatus) {
128
  // paid
129
- case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
130
  $trans->setTxnType(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE);
131
  if ($order->getPayment()->getIsTransactionPending()) {
132
  $invoice->setIsPaid(false);
@@ -135,12 +135,10 @@ class Shopgate_Framework_Model_Payment_Pp_Wspp
135
  $invoice->pay();
136
  }
137
  break;
138
- // refund by merchant on PayPal side
139
- case Mage_Paypal_Model_Info::PAYMENTSTATUS_REFUNDED:
140
  //$this->_getPaymentHelper()->registerPaymentRefund($additionalData, $order);
141
  break;
142
- // payment was obtained, but money were not captured yet
143
- case Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING:
144
  foreach ($paypalIpnData as $key => $value) {
145
  if (strpos($key, 'fraud_management_pending_filters_') !== false) {
146
  $order->getPayment()->setIsTransactionPending(true);
@@ -161,7 +159,7 @@ class Shopgate_Framework_Model_Payment_Pp_Wspp
161
  $order->addRelatedObject($invoice);
162
  $this->_getPaymentHelper()->importPaymentInformation($order->getPayment(), $paypalIpnData);
163
  $order->getPayment()->setTransactionAdditionalInfo(
164
- Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS,
165
  $paypalIpnData
166
  );
167
  $order->getPayment()->setCcOwner($paypalIpnData['holder']);
@@ -234,7 +232,7 @@ class Shopgate_Framework_Model_Payment_Pp_Wspp
234
  $wpp = Mage::getStoreConfig('payment/paypal_direct/active');
235
  $wppp = Mage::getStoreConfig('payment/paypaluk_direct/active');
236
  $result = !empty($wpp) || !empty($wppp);
237
-
238
  if (!$result) {
239
  $debug = $this->_getHelper()->__('Neither WSPP or WSPP Payflow are enabled');
240
  ShopgateLogger::getInstance()->log($debug, ShopgateLogger::LOGTYPE_DEBUG);
@@ -242,11 +240,4 @@ class Shopgate_Framework_Model_Payment_Pp_Wspp
242
  return $result;
243
  }
244
 
245
- /**
246
- * @return Shopgate_Framework_Helper_Payment_Wspp
247
- */
248
- protected function _getPaymentHelper()
249
- {
250
- return Mage::helper('shopgate/payment_wspp');
251
- }
252
  }
126
  $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
127
  switch ($paymentStatus) {
128
  // paid
129
+ case $this->_getPaymentHelper()->getPaypalCompletedStatus():
130
  $trans->setTxnType(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE);
131
  if ($order->getPayment()->getIsTransactionPending()) {
132
  $invoice->setIsPaid(false);
135
  $invoice->pay();
136
  }
137
  break;
138
+ case $this->_getPaymentHelper()->getPaypalRefundedStatus():
 
139
  //$this->_getPaymentHelper()->registerPaymentRefund($additionalData, $order);
140
  break;
141
+ case $this->_getPaymentHelper()->getPaypalPendingStatus():
 
142
  foreach ($paypalIpnData as $key => $value) {
143
  if (strpos($key, 'fraud_management_pending_filters_') !== false) {
144
  $order->getPayment()->setIsTransactionPending(true);
159
  $order->addRelatedObject($invoice);
160
  $this->_getPaymentHelper()->importPaymentInformation($order->getPayment(), $paypalIpnData);
161
  $order->getPayment()->setTransactionAdditionalInfo(
162
+ $this->_getPaymentHelper()->getTransactionRawDetails(),
163
  $paypalIpnData
164
  );
165
  $order->getPayment()->setCcOwner($paypalIpnData['holder']);
232
  $wpp = Mage::getStoreConfig('payment/paypal_direct/active');
233
  $wppp = Mage::getStoreConfig('payment/paypaluk_direct/active');
234
  $result = !empty($wpp) || !empty($wppp);
235
+
236
  if (!$result) {
237
  $debug = $this->_getHelper()->__('Neither WSPP or WSPP Payflow are enabled');
238
  ShopgateLogger::getInstance()->log($debug, ShopgateLogger::LOGTYPE_DEBUG);
240
  return $result;
241
  }
242
 
 
 
 
 
 
 
 
243
  }
app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal.php CHANGED
@@ -40,7 +40,11 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal extends Shopgate_Framework_
40
  $standard = Mage::getModel('shopgate/payment_simple_paypal_standard', $this->getShopgateOrder());
41
 
42
  if ($standard instanceof Shopgate_Framework_Model_Payment_Interface && $standard->isValid()) {
43
- $this->setPaymentMethod('STANDARD');
 
 
 
 
44
  } else {
45
  $this->setPaymentMethod('EXPRESS');
46
  }
40
  $standard = Mage::getModel('shopgate/payment_simple_paypal_standard', $this->getShopgateOrder());
41
 
42
  if ($standard instanceof Shopgate_Framework_Model_Payment_Interface && $standard->isValid()) {
43
+ if ($this->_getConfigHelper()->getIsMagentoVersionLower1410()) {
44
+ $this->setPaymentMethod('STANDARD1400');
45
+ } else {
46
+ $this->setPaymentMethod('STANDARD');
47
+ }
48
  } else {
49
  $this->setPaymentMethod('EXPRESS');
50
  }
app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal/Express.php CHANGED
@@ -35,6 +35,7 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal_Express
35
  {
36
  const PAYMENT_IDENTIFIER = ShopgateOrder::PAYPAL;
37
  const XML_CONFIG_ENABLED = 'payment/paypal_express/active';
 
38
 
39
  /**
40
  * create new order for paypal express (type wspp)
@@ -135,7 +136,7 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal_Express
135
  try {
136
  switch ($paymentStatus) {
137
  // paid
138
- case Mage_Paypal_Model_Info::PAYMENTSTATUS_COMPLETED:
139
  $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
140
  $trans->setTxnType(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE);
141
 
@@ -149,7 +150,7 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal_Express
149
  $invoice->save();
150
  $order->addRelatedObject($invoice);
151
  break;
152
- case Mage_Paypal_Model_Info::PAYMENTSTATUS_PENDING:
153
  if (isset($paymentInfos['reason_code'])) {
154
  $order->getPayment()->setIsTransactionPending(true);
155
  $order->getPayment()->setIsFraudDetected(true);
@@ -163,7 +164,7 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal_Express
163
  $trans->save();
164
  $this->_getPaymentHelper()->importPaymentInformation($order->getPayment(), $paymentInfos);
165
  $order->getPayment()->setTransactionAdditionalInfo(
166
- Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS,
167
  $paymentInfos
168
  );
169
 
@@ -235,5 +236,5 @@ class Shopgate_Framework_Model_Payment_Simple_Paypal_Express
235
  {
236
  return Mage::helper('shopgate/payment_wspp');
237
  }
238
-
239
  }
35
  {
36
  const PAYMENT_IDENTIFIER = ShopgateOrder::PAYPAL;
37
  const XML_CONFIG_ENABLED = 'payment/paypal_express/active';
38
+ const PAYMENT_MODEL = 'paypal/express';
39
 
40
  /**
41
  * create new order for paypal express (type wspp)
136
  try {
137
  switch ($paymentStatus) {
138
  // paid
139
+ case $this->_getPaymentHelper()->getPaypalCompletedStatus():
140
  $invoice = $this->_getPaymentHelper()->createOrderInvoice($order);
141
  $trans->setTxnType(Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE);
142
 
150
  $invoice->save();
151
  $order->addRelatedObject($invoice);
152
  break;
153
+ case $this->_getPaymentHelper()->getPaypalPendingStatus():
154
  if (isset($paymentInfos['reason_code'])) {
155
  $order->getPayment()->setIsTransactionPending(true);
156
  $order->getPayment()->setIsFraudDetected(true);
164
  $trans->save();
165
  $this->_getPaymentHelper()->importPaymentInformation($order->getPayment(), $paymentInfos);
166
  $order->getPayment()->setTransactionAdditionalInfo(
167
+ $this->_getPaymentHelper()->getTransactionRawDetails(),
168
  $paymentInfos
169
  );
170
 
236
  {
237
  return Mage::helper('shopgate/payment_wspp');
238
  }
239
+
240
  }
app/code/community/Shopgate/Framework/Model/Payment/Simple/Paypal/Standard1400.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Shopgate GmbH
4
+ *
5
+ * URHEBERRECHTSHINWEIS
6
+ *
7
+ * Dieses Plugin ist urheberrechtlich geschützt. Es darf ausschließlich von Kunden der Shopgate GmbH
8
+ * zum Zwecke der eigenen Kommunikation zwischen dem IT-System des Kunden mit dem IT-System der
9
+ * Shopgate GmbH über www.shopgate.com verwendet werden. Eine darüber hinausgehende Vervielfältigung, Verbreitung,
10
+ * öffentliche Zugänglichmachung, Bearbeitung oder Weitergabe an Dritte ist nur mit unserer vorherigen
11
+ * schriftlichen Zustimmung zulässig. Die Regelungen der §§ 69 d Abs. 2, 3 und 69 e UrhG bleiben hiervon unberührt.
12
+ *
13
+ * COPYRIGHT NOTICE
14
+ *
15
+ * This plugin is the subject of copyright protection. It is only for the use of Shopgate GmbH customers,
16
+ * for the purpose of facilitating communication between the IT system of the customer and the IT system
17
+ * of Shopgate GmbH via www.shopgate.com. Any reproduction, dissemination, public propagation, processing or
18
+ * transfer to third parties is only permitted where we previously consented thereto in writing. The provisions
19
+ * of paragraph 69 d, sub-paragraphs 2, 3 and paragraph 69, sub-paragraph e of the German Copyright Act shall remain unaffected.
20
+ *
21
+ * @author Shopgate GmbH <interfaces@shopgate.com>
22
+ */
23
+
24
+ /**
25
+ * PayPal Standard handler for mage v.1.4.0.0
26
+ *
27
+ * @author Konstantin Kiritsenko <konstantin@kiritsenko.com>
28
+ */
29
+ class Shopgate_Framework_Model_Payment_Simple_Paypal_Standard1400
30
+ extends Shopgate_Framework_Model_Payment_Pp_Abstract
31
+ implements Shopgate_Framework_Model_Payment_Interface
32
+ {
33
+ const PAYMENT_IDENTIFIER = ShopgateOrder::PAYPAL;
34
+ const XML_CONFIG_ENABLED = 'payment/paypal_standard/active';
35
+ const PAYMENT_MODEL = 'paypal/standard';
36
+
37
+ /**
38
+ * Partial, online refund not supported
39
+ *
40
+ * @param Mage_Sales_Model_Order $magentoOrder
41
+ * @return Mage_Sales_Model_Order
42
+ */
43
+ public function manipulateOrderWithPaymentData($magentoOrder)
44
+ {
45
+ $info = $this->getShopgateOrder()->getPaymentInfos();
46
+ $magentoOrder = parent::manipulateOrderWithPaymentData($magentoOrder);
47
+ $magentoOrder->getPayment()->setLastTransId($info['transaction_id']);
48
+ return $magentoOrder;
49
+ }
50
+ }
app/code/community/Shopgate/Framework/Model/Sales/Quote/Address/Total/ShopgatePaymentFee.php CHANGED
@@ -46,7 +46,11 @@ class Shopgate_Framework_Model_Sales_Quote_Address_Total_ShopgatePaymentFee exte
46
  {
47
  parent::collect($address);
48
 
49
- $items = $this->_getAddressItems($address);
 
 
 
 
50
  $shopgateOrder = Mage::getSingleton("core/session")->getData("shopgate_order");
51
  if (!count($items)
52
  || is_null($shopgateOrder)
46
  {
47
  parent::collect($address);
48
 
49
+ if (Mage::helper("shopgate/config")->getIsMagentoVersionLower1410()) {
50
+ $items = $address->getAllItems();
51
+ } else {
52
+ $items = $this->_getAddressItems($address);
53
+ }
54
  $shopgateOrder = Mage::getSingleton("core/session")->getData("shopgate_order");
55
  if (!count($items)
56
  || is_null($shopgateOrder)
app/code/community/Shopgate/Framework/Model/Shopgate/Plugin.php CHANGED
@@ -925,6 +925,13 @@ class Shopgate_Framework_Model_Shopgate_Plugin extends ShopgatePlugin
925
  );
926
  } else {
927
  $quote->setCustomer($customer);
 
 
 
 
 
 
 
928
  $this->log('external customer loaded', ShopgateLogger::LOGTYPE_DEBUG);
929
  }
930
  }
925
  );
926
  } else {
927
  $quote->setCustomer($customer);
928
+
929
+ // also set customer in session some 3rd party plugins rely on it
930
+ Mage::getSingleton('customer/session')
931
+ ->setCustomer($customer)
932
+ ->setCustomerId($customer->getId())
933
+ ->setCustomerGroupId($customer->getGroupId());
934
+
935
  $this->log('external customer loaded', ShopgateLogger::LOGTYPE_DEBUG);
936
  }
937
  }
app/code/community/Shopgate/Framework/changelog.txt CHANGED
@@ -1,5 +1,16 @@
1
  '''English'''
2
 
 
 
 
 
 
 
 
 
 
 
 
3
  '''Version 2.9.20'''
4
  * Added a quote to getpaymentmethods
5
  * Import of order /w coupon bug fixed
1
  '''English'''
2
 
3
+ '''Version 2.9.21'''
4
+ * Fixed compatibility problem with Magento 1.4.0
5
+ * fixed plugin not active error during oAuth registration
6
+ * Totals collector Invalid Block Type exception fix
7
+ * Fixed problem with payment mapping for paypal_express
8
+ * implement sort order for bundle products
9
+ * Surcharges for child products will now take care of catalog price rueles
10
+ * Payone_Core new order email bug fix
11
+ * Group product associated children are sorted by position number
12
+ * Fixed missing payment methods in check_cart response
13
+
14
  '''Version 2.9.20'''
15
  * Added a quote to getpaymentmethods
16
  * Import of order /w coupon bug fixed
app/code/community/Shopgate/Framework/controllers/FrameworkController.php CHANGED
@@ -38,14 +38,15 @@ include_once Mage::getBaseDir("lib") . '/Shopgate/shopgate.php';
38
 
39
  class Shopgate_Framework_FrameworkController extends Mage_Core_Controller_Front_Action
40
  {
 
 
41
  /**
42
  * load the module and do api-request
43
  */
44
  public function preDispatch()
45
  {
46
- if (Mage::app()->getRequest()->getActionName() == 'receive_authorization') {
47
- Mage::app()->getRequest()->setParam('action', 'receive_authorization');
48
- Mage::app()->getStore()->setConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE, 1);
49
  }
50
 
51
  $this->_run();
@@ -78,7 +79,9 @@ class Shopgate_Framework_FrameworkController extends Mage_Core_Controller_Front_
78
 
79
  try {
80
  $config = Mage::helper("shopgate/config")->getConfig();
81
- if (!Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE)) {
 
 
82
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_PLUGIN_NOT_ACTIVE, 'plugin not active', true);
83
  }
84
  Mage::app()->loadArea("adminhtml");
38
 
39
  class Shopgate_Framework_FrameworkController extends Mage_Core_Controller_Front_Action
40
  {
41
+ const RECEIVE_AUTH_ACTION = 'receive_authorization';
42
+
43
  /**
44
  * load the module and do api-request
45
  */
46
  public function preDispatch()
47
  {
48
+ if (Mage::app()->getRequest()->getActionName() == self::RECEIVE_AUTH_ACTION) {
49
+ Mage::app()->getRequest()->setParam('action', self::RECEIVE_AUTH_ACTION);
 
50
  }
51
 
52
  $this->_run();
79
 
80
  try {
81
  $config = Mage::helper("shopgate/config")->getConfig();
82
+ if (!Mage::getStoreConfig(Shopgate_Framework_Model_Config::XML_PATH_SHOPGATE_ACTIVE)
83
+ && Mage::app()->getRequest()->getParam("action") != self::RECEIVE_AUTH_ACTION
84
+ ) {
85
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_PLUGIN_NOT_ACTIVE, 'plugin not active', true);
86
  }
87
  Mage::app()->loadArea("adminhtml");
app/code/community/Shopgate/Framework/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
- <version>2.9.20</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <global>
2
  <config>
3
  <modules>
4
  <Shopgate_Framework>
5
+ <version>2.9.21</version>
6
  </Shopgate_Framework>
7
  </modules>
8
  <global>
app/design/adminhtml/default/default/layout/shopgate.xml CHANGED
@@ -10,74 +10,90 @@
10
  </default>
11
  <adminhtml_system_config_edit>
12
  <reference name="head">
13
- <action method="addCss"><name>shopgate/shopgate_admin.css</name></action>
 
 
14
  </reference>
15
  </adminhtml_system_config_edit>
16
  <adminhtml_shopgate_connect>
17
- <reference name="content">
18
- <block type="shopgate/adminhtml_oAuth_connect" after="-" name="shopgate.connect">
19
- <action method="removeButton"><alias>reset</alias></action>
20
- <action method="removeButton"><alias>delete</alias></action>
21
- <action method="removeButton"><alias>save</alias></action>
22
- </block>
23
- <block type="shopgate/adminhtml_oAuth_data" after="-" name="shopgate.data" />
24
- <block type="shopgate/adminhtml_oAuth_connect_overlay" after="-" name="shopgate.overlay" />
25
- </reference>
26
- <reference name="head">
27
- <action method="addCss"><name>shopgate/shopgate_admin.css</name></action>
28
- <action method="addItem">
29
- <type>skin_js</type>
30
- <name>shopgate/oauth_connect.js</name>
31
- <params />
32
- <if />
33
- </action>
34
- </reference>
35
- </adminhtml_shopgate_connect>
 
 
 
 
 
 
 
 
36
  <adminhtml_shopgate_manage>
37
- <reference name="content">
38
- <block type="shopgate/adminhtml_oAuth_manage" after="-" name="shopgate.manage">
39
- <action method="unsetChild"><alias>export_button</alias></action>
40
- <action method="unsetChild"><alias>reset_filter_button</alias></action>
41
- <action method="unsetChild"><alias>search_button</alias></action>
42
- </block>
43
- </reference>
44
- </adminhtml_shopgate_manage>
 
 
 
 
 
 
45
  <adminhtml_shopgate_disconnect>
46
- <reference name="content">
47
- <block type="shopgate/adminhtml_oAuth_disconnect" after="-" name="shopgate.disconnect" />
48
- </reference>
49
- </adminhtml_shopgate_disconnect>
50
 
51
- <adminhtml_sales_order_view>
52
  <reference name="order_totals">
53
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
54
  </reference>
55
  </adminhtml_sales_order_view>
56
 
57
- <adminhtml_sales_order_invoice_new>
58
- <reference name="invoice_totals">
59
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
60
- </reference>
61
- </adminhtml_sales_order_invoice_new>
62
- <adminhtml_sales_order_invoice_view>
63
- <reference name="invoice_totals">
64
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
65
- </reference>
66
- </adminhtml_sales_order_invoice_view>
67
 
68
- <adminhtml_sales_order_creditmemo_new>
69
- <reference name="creditmemo_totals">
70
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
71
- </reference>
72
- </adminhtml_sales_order_creditmemo_new>
73
- <adminhtml_sales_order_creditmemo_view>
74
- <reference name="creditmemo_totals">
75
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
76
- </reference>
77
- </adminhtml_sales_order_creditmemo_view>
78
- <adminhtml_sales_order_creditmemo_updateqty>
79
- <reference name="creditmemo_totals">
80
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
81
- </reference>
82
- </adminhtml_sales_order_creditmemo_updateqty>
83
  </layout>
10
  </default>
11
  <adminhtml_system_config_edit>
12
  <reference name="head">
13
+ <action method="addCss">
14
+ <name>shopgate/shopgate_admin.css</name>
15
+ </action>
16
  </reference>
17
  </adminhtml_system_config_edit>
18
  <adminhtml_shopgate_connect>
19
+ <reference name="content">
20
+ <block type="shopgate/adminhtml_oAuth_connect" after="-" name="shopgate.connect">
21
+ <action method="removeButton">
22
+ <alias>reset</alias>
23
+ </action>
24
+ <action method="removeButton">
25
+ <alias>delete</alias>
26
+ </action>
27
+ <action method="removeButton">
28
+ <alias>save</alias>
29
+ </action>
30
+ </block>
31
+ <block type="shopgate/adminhtml_oAuth_data" after="-" name="shopgate.data"/>
32
+ <block type="shopgate/adminhtml_oAuth_connect_overlay" after="-" name="shopgate.overlay"/>
33
+ </reference>
34
+ <reference name="head">
35
+ <action method="addCss">
36
+ <name>shopgate/shopgate_admin.css</name>
37
+ </action>
38
+ <action method="addItem">
39
+ <type>skin_js</type>
40
+ <name>shopgate/oauth_connect.js</name>
41
+ <params/>
42
+ <if/>
43
+ </action>
44
+ </reference>
45
+ </adminhtml_shopgate_connect>
46
  <adminhtml_shopgate_manage>
47
+ <reference name="content">
48
+ <block type="shopgate/adminhtml_oAuth_manage" after="-" name="shopgate.manage">
49
+ <action method="unsetChild">
50
+ <alias>export_button</alias>
51
+ </action>
52
+ <action method="unsetChild">
53
+ <alias>reset_filter_button</alias>
54
+ </action>
55
+ <action method="unsetChild">
56
+ <alias>search_button</alias>
57
+ </action>
58
+ </block>
59
+ </reference>
60
+ </adminhtml_shopgate_manage>
61
  <adminhtml_shopgate_disconnect>
62
+ <reference name="content">
63
+ <block type="shopgate/adminhtml_oAuth_disconnect" after="-" name="shopgate.disconnect"/>
64
+ </reference>
65
+ </adminhtml_shopgate_disconnect>
66
 
67
+ <adminhtml_sales_order_view>
68
  <reference name="order_totals">
69
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
70
  </reference>
71
  </adminhtml_sales_order_view>
72
 
73
+ <adminhtml_sales_order_invoice_new>
74
+ <reference name="invoice_totals">
75
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
76
+ </reference>
77
+ </adminhtml_sales_order_invoice_new>
78
+ <adminhtml_sales_order_invoice_view>
79
+ <reference name="invoice_totals">
80
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
81
+ </reference>
82
+ </adminhtml_sales_order_invoice_view>
83
 
84
+ <adminhtml_sales_order_creditmemo_new>
85
+ <reference name="creditmemo_totals">
86
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
87
+ </reference>
88
+ </adminhtml_sales_order_creditmemo_new>
89
+ <adminhtml_sales_order_creditmemo_view>
90
+ <reference name="creditmemo_totals">
91
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
92
+ </reference>
93
+ </adminhtml_sales_order_creditmemo_view>
94
+ <adminhtml_sales_order_creditmemo_updateqty>
95
+ <reference name="creditmemo_totals">
96
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
97
+ </reference>
98
+ </adminhtml_sales_order_creditmemo_updateqty>
99
  </layout>
app/design/frontend/base/default/layout/shopgate.xml CHANGED
@@ -9,91 +9,91 @@
9
 
10
  <sales_order_print>
11
  <reference name="order_totals">
12
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
13
  </reference>
14
  </sales_order_print>
15
 
16
  <sales_order_view>
17
  <reference name="order_totals">
18
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
19
  </reference>
20
  </sales_order_view>
21
 
22
  <sales_order_invoice>
23
  <reference name="invoice_totals">
24
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
25
  </reference>
26
  </sales_order_invoice>
27
 
28
  <sales_order_printinvoice>
29
  <reference name="invoice_totals">
30
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
31
  </reference>
32
  </sales_order_printinvoice>
33
 
34
  <sales_email_order_items>
35
  <reference name="order_totals">
36
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
37
  </reference>
38
  </sales_email_order_items>
39
 
40
  <sales_email_order_invoice_items>
41
  <reference name="invoice_totals">
42
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
43
  </reference>
44
  </sales_email_order_invoice_items>
45
 
46
  <sales_order_creditmemo>
47
  <reference name="creditmemo_totals">
48
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
49
  </reference>
50
  </sales_order_creditmemo>
51
 
52
  <sales_order_printcreditmemo>
53
  <reference name="creditmemo_totals">
54
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
55
  </reference>
56
  </sales_order_printcreditmemo>
57
 
58
  <sales_email_order_creditmemo_items>
59
  <reference name="creditmemo_totals">
60
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
61
  </reference>
62
  </sales_email_order_creditmemo_items>
63
 
64
  <sales_guest_view>
65
  <reference name="order_totals">
66
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
67
  </reference>
68
  </sales_guest_view>
69
 
70
  <sales_guest_print>
71
  <reference name="order_totals">
72
- <block name="shopgate_payment_fee" type="shopgate/totals_orderpaymentfee" before="tax"/>
73
  </reference>
74
  </sales_guest_print>
75
 
76
  <sales_guest_invoice>
77
  <reference name="invoice_totals">
78
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
79
  </reference>
80
  </sales_guest_invoice>
81
 
82
  <sales_guest_printinvoice>
83
  <reference name="invoice_totals">
84
- <block name="shopgate_payment_fee" type="shopgate/totals_invoicepaymentfee" before="tax"/>
85
  </reference>
86
  </sales_guest_printinvoice>
87
 
88
  <sales_guest_creditmemo>
89
  <reference name="creditmemo_totals">
90
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
91
  </reference>
92
  </sales_guest_creditmemo>
93
 
94
  <sales_guest_printcreditmemo>
95
  <reference name="creditmemo_totals">
96
- <block name="shopgate_payment_fee" type="shopgate/totals_creditmemopaymentfee" before="tax"/>
97
  </reference>
98
  </sales_guest_printcreditmemo>
99
 
9
 
10
  <sales_order_print>
11
  <reference name="order_totals">
12
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
13
  </reference>
14
  </sales_order_print>
15
 
16
  <sales_order_view>
17
  <reference name="order_totals">
18
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
19
  </reference>
20
  </sales_order_view>
21
 
22
  <sales_order_invoice>
23
  <reference name="invoice_totals">
24
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
25
  </reference>
26
  </sales_order_invoice>
27
 
28
  <sales_order_printinvoice>
29
  <reference name="invoice_totals">
30
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
31
  </reference>
32
  </sales_order_printinvoice>
33
 
34
  <sales_email_order_items>
35
  <reference name="order_totals">
36
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
37
  </reference>
38
  </sales_email_order_items>
39
 
40
  <sales_email_order_invoice_items>
41
  <reference name="invoice_totals">
42
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
43
  </reference>
44
  </sales_email_order_invoice_items>
45
 
46
  <sales_order_creditmemo>
47
  <reference name="creditmemo_totals">
48
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
49
  </reference>
50
  </sales_order_creditmemo>
51
 
52
  <sales_order_printcreditmemo>
53
  <reference name="creditmemo_totals">
54
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
55
  </reference>
56
  </sales_order_printcreditmemo>
57
 
58
  <sales_email_order_creditmemo_items>
59
  <reference name="creditmemo_totals">
60
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
61
  </reference>
62
  </sales_email_order_creditmemo_items>
63
 
64
  <sales_guest_view>
65
  <reference name="order_totals">
66
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
67
  </reference>
68
  </sales_guest_view>
69
 
70
  <sales_guest_print>
71
  <reference name="order_totals">
72
+ <block name="shopgate_payment_fee" type="shopgate/totals_orderPaymentFee" before="tax"/>
73
  </reference>
74
  </sales_guest_print>
75
 
76
  <sales_guest_invoice>
77
  <reference name="invoice_totals">
78
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
79
  </reference>
80
  </sales_guest_invoice>
81
 
82
  <sales_guest_printinvoice>
83
  <reference name="invoice_totals">
84
+ <block name="shopgate_payment_fee" type="shopgate/totals_invoicePaymentFee" before="tax"/>
85
  </reference>
86
  </sales_guest_printinvoice>
87
 
88
  <sales_guest_creditmemo>
89
  <reference name="creditmemo_totals">
90
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
91
  </reference>
92
  </sales_guest_creditmemo>
93
 
94
  <sales_guest_printcreditmemo>
95
  <reference name="creditmemo_totals">
96
+ <block name="shopgate_payment_fee" type="shopgate/totals_creditmemoPaymentFee" before="tax"/>
97
  </reference>
98
  </sales_guest_printcreditmemo>
99
 
lib/Shopgate/changelog.txt CHANGED
@@ -1,427 +1,13 @@
1
- '''Deutsch'''
2
-
3
- '''Version 2.9.21'''
4
- * Konstanten für weitere Zahlungsarten in Klasse ShopgateCartBase hinzugefügt
5
-
6
- '''Version 2.9.20'''
7
- * XML-Export: Es werden nun keine XML-Tags mehr leer hinzugefügt, wenn diese eigentlich entfernt werden sollten
8
-
9
- '''Version 2.9.19'''
10
- * Produkt-XML-Export: manche XML-Knoten wurden fälschlicherweise mit "forceEmpty"-Attribute exportiert
11
-
12
- '''Version 2.9.18'''
13
- * Einen Bug behoben, der die Kompatibilität mit PHP < 5.3 gebrochen hat
14
-
15
- '''Version 2.9.17'''
16
- * Problem beim XML Export mit Validierung von boolschen Werten behoben
17
-
18
- '''Version 2.9.16'''
19
- * Shopgate Konfiguration um Parameter force_source_encoding erweitert
20
-
21
- '''Version 2.9.15'''
22
- * Review-XML-Export: Falschen Type-Hint auf Shopgate_Model_Review korrigiert
23
-
24
- '''Version 2.9.14'''
25
- * Exporte: Fehler beim Setzen des Speicher- und Zeitlimits für Export-Funktionen behoben
26
-
27
- '''Version 2.9.13'''
28
- * ShopgateLibraryException: neuer Konstruktor-Parameter für vorherige Exception; verbessertes Logging von Stacktraces
29
- * Produkt-XML-Export: Bei <category> die Subnode <paths> entfernt
30
- * Produkt-XML-Export: Nodes <tax_percent> + <tax_class> wird nur noch exportiert, wenn explizit ein Wert gesetzt wurde
31
- * XML-Export: alle ungültigen Zeichen werden nun herausgefiltert (entsprechend den Regeln von www.w3.org)
32
- * neue Konstante für die Sichtbarkeit von Produkten hinzugefügt
33
-
34
- '''Version 2.9.12'''
35
- * ShopgateCustomer::getRegistrationDate() liefert jetzt das Registrierungsdatum bei Aufrufen von ShopgatePlugin::registerCustomer()
36
- * ShopgateExternalOrder::setStatusName() und ::setStatusColor() erlaubt das Setzen eines individuellen Bestellstatus bei Aufrufen von ShopgatePlugin::getOrders()
37
-
38
- '''Version 2.9.11'''
39
- * Produkt-XML-Export: leere Knoten in Kindprodukten sind jetzt möglich
40
- * Nicht unterstütze Zeichen aus CDATA entfernt
41
- * Bugfix: nicht existente Funktion ShopgateContainerVisitor::visitCoupon() wurde aufgerufen
42
-
43
- '''Version 2.9.10'''
44
- * Fehlerhafte Benamung der Konstante behoben
45
-
46
- '''Version 2.9.9'''
47
- * Es ist nun möglich, Instanzen von Shopgate-Hilfsklassen über einen Funktionsaufruf zu bekommen, um zu garantieren, dass die Hilfsfunktionen in jeder Ebene des Shopgate-Plugins zur Verfügung stehen
48
-
49
- '''Version 2.9.8'''
50
- * Setter und Getter für external_customer_group_id hinzugefügt
51
- * beim Default-Redirect (d.h. wenn die zugehörige mobile Seite unbekannt ist) wird kein <link>-Tag mehr ausgegeben
52
- * PHPDoc für einige Methoden und Klassen korrigiert
53
-
54
- '''Version 2.9.7'''
55
- * Unterstützung für Tracking-Parameter beim Bestellungsimport hinzugefügt
56
-
57
- '''Version 2.9.6'''
58
- * Zugriffe auf Request-Parameter überarbeitet
59
-
60
- '''Version 2.9.5'''
61
- * Fehler bei der Verarbeitung der Request-Parameter behoben
62
- * Fehler im XML-Export-Encoding behoben
63
-
64
- '''Version 2.9.4'''
65
- * PHPDoc überarbeitet
66
- * Konstanten für Fehlercodes der Shopgate Merchant API hinzugefügt
67
- * direkte Zugriffe auf $_REQUEST und $_GET entfernt
68
-
69
- '''Version 2.9.3'''
70
- * Preis Model um den Grundpreis erweitert
71
-
72
- '''Version 2.9.1'''
73
- * CDATA für den Author der Rezensionen in der XML hinzugefügt
74
-
75
- '''Version 2.9.0'''
76
- * Export der Kundenrezensionen als XML hinzugefügt
77
-
78
- '''Version 2.8.10'''
79
- * Linkexport für Produkte und Kategorien um CDATA erweitert (XML)
80
- * CNAME Validierung erweitert
81
- * Ungenutzte Code Teile entfernt
82
-
83
- '''Version 2.8.9'''
84
- * Maximalwert des Speichers kann gesetzt werden
85
- * Maximale Ausführungszeit kann gesetzt werden
86
- * Der ShopgateErrorHandler gibt nun by default keinen stacktrace mehr aus
87
-
88
- '''Version 2.8.8'''
89
- * XML - Images neuer Flag für isCover
90
-
91
- '''Version 2.8.7'''
92
- * Integration für Amazon Payments
93
-
94
- '''Version 2.8.6'''
95
- * Optimierte Funktion für leere XML Knoten entfernen
96
- * Optimierte Funktion für Aufbereitung der XML Children
97
-
98
- '''Version 2.8.5'''
99
- * Entfernen von git Konflikt markup
100
- * Ersetzen von json_encode Aufrufen durch die interne Methode jsonEncode
101
-
102
- '''Version 2.8.4'''
103
- * Regex Anpassung für cname Validierung
104
- * Neuer Kindknoten zur Unterstützung von Gruppenprodukten und Darstellungstypen für XML hinzugefügt
105
-
106
- '''Version 2.8.3'''
107
- * ungültige UTF-8-Sequenzen für XML werden jetzt beim Export entfernt
108
- * Einstellung 'supported_methods_cron' hinzugefügt, mit der ein Plugin mitteilen kann, welche Methoden bei der cron-Action unterstützt werden
109
-
110
- '''Version 2.8.2'''
111
- * Fehler beim Konvertieren eines Encodings in UTF-8 behoben
112
-
113
- '''Version 2.8.1'''
114
- * neues Attribut ShopgateExternalOrderExtraCost::$label mit Getter und Setter hinzugefügt
115
- * bei check_cart wird jetzt die 'currency' des Warenkorbs in der API-Response mit dem Wert des Warenkorbs vom Request vorinitialisiert
116
-
117
- '''Version 2.8.0'''
118
- * Unterstützung für das Synchronisieren einer Favoritenliste über die Shopgate Plugin API hinzugefügt
119
- * Unterstützung für den Abruf von Bestellungen aus dem Shopsystem über die Shopgate Plugin API hinzugefügt
120
- * Shopgate-Bestellungen enthalten jetzt das Feld "shipping_tax_percent" mit dem Steuersatz der Versandkosten
121
- * der Parameter $trackingNumber der Methode ShopgateMerchantApi::addOrderDeliveryNote() ist jetzt optional (Standard: leerer String)
122
- * 'related_shop_items' zur Standard-Produkt-CSV-Zeile hinzugefügt
123
-
124
- '''Version 2.7.2'''
125
- * Bugfix für Inkonsistenz während Methodenumbenennung
126
- * Verschleiern des oauth_access_token bei der Ausgabe der Ping-Methode
127
-
128
- '''Version 2.7.1'''
129
- * Bugfix in der receive_authorization PluginAPI-Action
130
- * Shops mit bereits eingerichtetem Shopgate-Plugin bekommen nun automatisch ein Oauth-Access-Token zugewiesen
131
-
132
- '''Version 2.7.0'''
133
- * neues Attribute für XML Export tierprices (AggregateChildren) eingefügt
134
- * Einführung von OAuth als zusätzlicher Authentifizierungs-Service zur Shopgate MerchantAPI.
135
- * Unterstützung für Streaming-Ausgabe der Exporte via php://out
136
-
137
- '''Version 2.6.10'''
138
- * Verschwundene Konstante PLUGIN_API_NO_ITEMS wieder hinzugefügt.
139
-
140
- '''Version 2.6.9'''
141
- * Bugfix für das Encoding von Get Parameter beim mobilen Redirect
142
- * Bugfix für das Filtern von Get Parametern beim mobilen Redirect
143
- * Bugfix für das Encoding von unicode
144
- * Neue Fehler-Code-Konstante PLUGIN_MISSING_ACCOUNT_PERMISSIONS
145
- * Neue Fehler-Code-Konstante CART_ITEM_REQUESTED_QUANTITY_UNDER_MINIMUM_QUANTITY
146
- * Neue Fehler-Code-Konstante CART_ITEM_REQUESTED_QUANTITY_OVER_MAXIMUM_QUANTITY
147
-
148
- '''Version 2.6.8'''
149
- * Durchreichen von Get Parametern für den mobilen Redirect bezüglich tracking
150
- * Methode ping um XML Pfade erweitert
151
-
152
- '''Version 2.6.7'''
153
- * verbessertes Exception Handling in "loader" Methoden
154
- * Funktionalität nachgereicht um den mobilen redirect via javascript zu unterbinden
155
-
156
- '''Version 2.6.6'''
157
- * Performance Steigerung bei Nutzung der mobilen Weiterleitung rückgängig
158
-
159
- '''Version 2.6.5'''
160
- * Fehler in der mobilen Weiterleitung behoben
161
-
162
- '''Version 2.6.4'''
163
- * Performance Steigerung bei Nutzung der mobilen Weiterleitung
164
-
165
- '''Version 2.6.3'''
166
- * Konstruktor refaktoriert
167
-
168
- '''Version 2.6.2'''
169
- * neuen default Datentype "datetime" hinzugefügt
170
-
171
- '''Version 2.6.1'''
172
- * Kategorien können nun in Chunks abgerufen werden
173
-
174
- '''Version 2.6.0'''
175
- * XML Export für Produkte und Kategorien hinzugefügt.
176
-
177
- '''Version 2.5.7'''
178
- * Feld display_name zu ShopgateShippingInfo hinzugefügt
179
- * Felder supported_fields_get_settings und supported_fields_check_cart in ShopgateConfig hinzugefügt
180
-
181
- '''Version 2.5.6'''
182
- * Standardwert für "enable_default_redirect" in der ShopgateConfig Klasse geändert
183
- * Einbinden von Vary Header für Seiten die auf mobile Endgeräte weitergeleitet werden können
184
- * Implementierung von ShopgateCartCustomer und ShopgateCartCustomerGroup für checkCart
185
-
186
- '''Version 2.5.5'''
187
- * Encoding-Funktionen um Parameter zur Nutzung von iconv() anstatt mb_convert_encoding() erweitert
188
-
189
- '''Version 2.5.4'''
190
- * Die Methode Ping um einen zusätzlichen Informationskontainer erweitert ('shop_info')
191
-
192
- '''Version 2.5.3'''
193
- * Klasse ShopgateOrderItem um ein Feld namens "parent_item_number" erweitert
194
-
195
- '''Version 2.5.2'''
196
- * ShopgateOrderItem::$order_item_id inkl. Getter und Setter eingefügt
197
- * Funktion getErrorType() im globalen Kontext umbenannt in shopgateGetErrorType()
198
-
199
- '''Version 2.5.1'''
200
- * Fehler in den Setter-Methoden mancher von ShopgateContainer abgeleiteten Klassen behoben
201
-
202
- '''Version 2.5.0'''
203
- * Medienexport zu Produkten implementiert
204
- * Die Methode check_stock eingeführt und den Bestand der übermittelten Produkte zu prüfen
205
- * Validierung der Individualisierungsoption(text), falls eingegebener Text zu lang ist
206
-
207
- '''Version 2.4.16'''
208
- * ShopgateCart::$internal_cart_info inkl. Getter und Setter eingefügt
209
- * in der Rückgabe von ShopgatePlugin::checkCart() wird jetzt der Index "internal_cart_info" zurückgegeben
210
- * ShopgateShippingInfo::$internal_shipping_info inkl. Getter und Setter eingefügt
211
- * "s" am Ende von ShopgateShippingMethod::$internal_shipping_infos und den Gettern und Settern entfernt
212
-
213
- '''Version 2.4.15'''
214
- * Schalter für Steuerklassen implementiert
215
-
216
- '''Version 2.4.14'''
217
- * Korrektur für custom_fields
218
- * Eine neue Hilfsmethode wurde hinzugefügt, mit welcher ein Kreuzprodukt über mehrere Arrays durchgeführt wird, die in einem übergeordneten Array angeordnet sind.
219
-
220
- '''Version 2.4.13'''
221
- * Die Währung wird bei check_cart nun global für den kompletten Warenkorb gültig übergeben
222
-
223
- '''Version 2.4.12'''
224
- * Füge Visitor Methoden für Shipping, Payment und CartItem Klassen ein (array visitor)
225
-
226
- '''Version 2.4.11'''
227
- * Fehler im Logging behoben
228
-
229
- '''Version 2.4.10'''
230
- * Füge Visitor Methoden für Shipping, Payment und CartItem Klassen ein (utf8 visitor)
231
-
232
- '''Version 2.4.9'''
233
- * Die Methode check_cart gibt nun neben den Coupons auch Warenkorbprodukte mit Lagerinformationen sowie Versand- und Zahlmethoden zurück, welche für gegebene Adresse verfügbar sind
234
-
235
- '''Version 2.4.8'''
236
- * Error codes für get_customer hinzugefügt
237
-
238
- '''Version 2.4.7'''
239
- * Error code für register_customer implementiert
240
-
241
- '''Version 2.4.6'''
242
- * Konstanten für weitere Zahlungsarten in Klasse ShopgateCartBase hinzugefügt
243
-
244
- '''Version 2.4.5'''
245
- * Verbessertes Logging zur Analyse von schweren Fehlern
246
-
247
- '''Version 2.4.4'''
248
- * Funktionalität implementiert um den Inhalt eines ShopgateContainers auf Gleichheit zu prüfen
249
-
250
- '''Version 2.4.3'''
251
- * Kompatibilität mit PHP-Versionen unter 5.3 wiederhergestellt
252
-
253
- '''Version 2.4.2'''
254
- * zusätzliche Benutzerangaben für Bestellungen und Adressen eingefügt (ShopgateCartBase::$custom_fields, ShopgateAddress::$custom_fields)
255
- * Optimierung des Speicherverbrauchs und der CPU-Nutzung durch die Behebung eines Fehlers
256
-
257
- '''Version 2.4.1'''
258
- * neuen Fehlercode hinzugefügt (90 - error sending mail)
259
-
260
- '''Version 2.4.0'''
261
- * Die Actions register_customer, get_debug_info und set_settings wurden hinzugefügt
262
- * Der <link>-Tag wird nur noch bei einem freigeschalteten Shop in den <head>-Tag ausgegeben
263
-
264
- '''Version 2.3.10'''
265
- * Beim Item Export besteht die Möglichkeit beliebig viele Optionen, Inputs und Attribute zu exportieren
266
-
267
- '''Version 2.3.9'''
268
- * Die ShopgateObject Klasse enthält nun eine Methode zur Ausgabe von Objekten mit interner Rekursion (u_print_r).
269
- * Die ShopgatePlugin Klasse beinhaltet nun eine Hilfsmethode zur Ermittlung des verbrauchten Arbeitsspeichers inkl. Umrechnung auf die benötigte Einheit.
270
- * Bei der Ausführung von "executeLoaders" kann nun das Logging des verbrauchten Arbeitsspeichers vor und nach jeder ausgeführten Methode aktiviert werden.
271
- * Funktion splitStreetData() in Klasse ShopgateAddress verbessert, da diese Straße und Hausnr. in manchen Fällen falsch aufgeteilt hat.
272
-
273
- '''Version 2.3.8'''
274
- * Unterstützung für erweiterte Informationen zum Versand, die jetzt durch check_cart und redeem_coupon zur Verfügung gestellt werden
275
- * Konstanten zur Umrechnung von Gewichten
276
-
277
- '''Version 2.3.7'''
278
- * das in der ShopgateConfig hinterlegte Encoding wird jetzt auch beim Export berücksichtigt
279
-
280
- '''Version 2.3.6'''
281
- * shopgate_license.txt hinzugefügt
282
-
283
- '''Version 2.3.5'''
284
- * je eine index.php zu jedem Verzeichnis hinzugefügt
285
-
286
- '''Version 2.3.4'''
287
- * Bugfix in der ShopgateOrder Klasse - delivery_notes wird nun mit einem Leerarray initialisiert
288
- * Beim Ausführen von Loader-Methoden werden detailliertere Exception-Meldungen erzeugt
289
-
290
- '''Version 2.3.3'''
291
- * Lizenz Header hinzugefügt
292
-
293
- '''Version 2.3.2'''
294
- * Logging verbessert, wenn Datei nicht geöffnet werden konnte
295
- * neue payment method ids hinzugefügt
296
- * Logger erlaubt jetzt, Feldnamen, die in den Logs verschleiert oder entfernt werden sollen, dynamisch hinzuzufügen
297
-
298
- '''Version 2.3.1'''
299
- * Wenn keine Shopnumber gesetzt ist, wird der Redirect Script nicht in die Seite gerendert
300
- * bei einem Ping wird die Dateigröße und der Besitzer ausgelesen
301
-
302
- '''Version 2.3.0'''
303
- * Neue Funktion get_settings() zum Exportieren der Steuersätze, -klassen, und -regeln des Shops (und zukünftig weiterer Einstellungen)
304
- * Standard-Wert für send_customer_email für Methode add_order_delifery_note auf false geändert
305
- * Bei API-calls kann nun ein Feld "handle_errors" übergeben werden. Der übergebene Wert wird an error_reporting() weitergereicht
306
-
307
- '''Version 2.2.2'''
308
- * die Header für die Authentifizierung werden jetzt bei jedem Request per ShopgateMerchantApi-Klasse neu generiert
309
- * die Einstellung "enable_get_redirect_keywords" wird jetzt konsequent als Boolean genutzt, die Nutzung als Zeitangabe für die Cache-Lifetime entfällt
310
- * es gibt einen neuen Weiterleitungstyp "default", der für Seiten eingesetzt wird, die nicht zugeordnet werden können
311
- * es gibt eine neue Einstellung "enable_default_redirect", mit denen die "default"-Weiterleitung (de-)aktiviert werden kann
312
- * die Einstellung "server" wurde um den Wert "sl" erweitert, mit dem der Shopgate Spotlight-Server angesprochen werden kann (API, Mobile Header, Weiterleitung)
313
- * der Paramter "cart" wird bei Aufrufen der Shopgate Plugin API jetzt entfernt, um zu große Logdateien zu vermeiden
314
-
315
- '''Version 2.2.1'''
316
- * Neuen Schalter für die Standard-Weiterleitung von Contentseiten zur mobilen Startseite in der Klasse ShopgateConfig hinzugefügt
317
- * Paramater send_customer_mail zu Merchant API Methode addOrderDeliveryNote() hinzugefügt
318
- * Neues Shopgate Versandsystem wird jetzt unterstützt
319
-
320
- '''Version 2.2.0'''
321
- * Es sind zwei neue Methoden hinzugekommen, die implementiert werden müssen: ShopgatePlugin::redeemCoupons() und ::checkCart(). Dadurch werden durch das Shopsystem angebotene Gutscheine auch im Mobilshop verwendbar
322
- * Der Parameter "keep_debug_log" verhindert das Überschreiben der Debug-Log bei eingehenden API-Requests
323
-
324
- '''Version 2.1.26'''
325
- * die Konvertierung der Zeichensätze wird jetzt optional mit iconv durchgeführt, wenn die mb_string-Erweiterung für PHP nicht installiert ist
326
- * Logik zur dateibasierten Verarbeitung einer globalen Konfiguration und mehreren sprachabhängigen Konfigurationen implementiert
327
-
328
- '''Version 2.1.25'''
329
- * Problem mit einer Ausgabe während dem Laden der Konfigurationsdatei behoben
330
- * Implementierung der neuen Shopgate-Merchant-API-Felder "item_number_public" und "attributes", welche in "get_orders" zurückgeliefert werden
331
- * Fehler behoben, durch den das Umbenennen von CSV-Dateien unter Windows-Server-Systemen fehlschlug
332
-
333
- '''Version 2.1.24'''
334
- * Problem beim Laden der Konfiguration per ob_start() und ob_end_clean() behoben
335
-
336
- '''Version 2.1.23'''
337
- * bei Requests an die Shopgate Plugin API wird jetzt die Shopnummer überprüft
338
- * bei der Alias-Weiterleitung wird kein https:// mehr verwendet
339
- * beim Weiterleitung-CNAME ist nur noch http:// erlaubt
340
- * Fehler beim mehrfachen Laden der Konfiguration behoben
341
-
342
- '''Version 2.1.22'''
343
- * Problem beim Abruf der Redirect-Keywords behoben
344
-
345
- '''Version 2.1.21'''
346
- * Problem beim Laden der Shopgate Konfigurationsdatei behoben
347
-
348
- '''Version 2.1.20'''
349
- * Problem mit der Einstellung "enable_clear_log_file" behoben
350
-
351
- '''Version 2.1.19'''
352
- * Javascript Header hinzugefügt, um den Onlineshop mit dem mobilen Shop zu "verlinken"
353
- * HTTP Weiterleitungscode von 302 auf 301 geändert
354
- * neue Methode "clear_cache" hinzugefügt
355
-
356
- '''Version 2.1.18'''
357
- * neue Methode ShopgateMerchantApi::batchAddItem() hinzugefügt
358
- * neue Methode ShopgateMerchantApi::batchUpdateItem() hinzugefügt
359
- * Aktualisierung und Korrektur der PHPDocs für die API-Klassen
360
- * Schrägstriche am Ende des CNAME-Eintrags werden jetzt entfernt
361
- * Methoden getCreateItemsCsvLoaders(), getCreateCategoriesCsvLoaders() und getCreateReviewsCsvLoaders() der Klasse ShopgatePlugin sind nicht mehr "final"
362
- * Problem mit der Funktion ini_get_all() behoben
363
-
364
- '''Version 2.1.17'''
365
- * der Mobile Header wird jetzt per JavaScript eingehangen, um mehr Flexibilität bei komplizierten Layouts zu ermöglichen
366
- * neue Einstellungen "mobile_header_parent" und "mobile_header_prepend" in ShopgateConfig
367
- * neue Methode ShopgateRedirect::setParentElement()
368
- * Fehler behoben, bei dem auf "http://" weitergeleitet wurde, wenn kein CNAME eingetragen war
369
- * Log-, Export- und Cache-Dateien erhalten jetzt das Präfix "shopgate_"
370
-
371
- '''Version 2.1.16'''
372
- * Funktionen ShopgateAddress::getStreetNumber und ShopgateAddress::getStreetName hinzugefügt
373
- * Der CNAME wird um http:// ergeänzt, wenn es nicht angegeben wurde
374
- * Entfernen von <script>-, <style>- und <link>-Tags aus der Produktbeschreibung verbessert
375
- * "ping" liest jetzt die Ordnerberechtigungen der konfigurierten Ordner für Export, Logs und Cache aus
376
-
377
- '''Version 2.1.15'''
378
- * Anpassung der Klasse ShopgateConfig zur Nutzung sprach- oder Shop-abhängiger Konfigurationsdateien
379
-
380
- '''Version 2.1.14'''
381
- * ShopgateMerchantApi::getMobileRedirectKeywords() ist jetzt deprecated
382
- * ShopgateMerchantApi::getMobileRedirectUserAgents() eingefügt
383
-
384
- '''Version 2.1.13'''
385
- * der updateOrder()-Callback erhält jetzt mit der Bestellung auch die Bestellungsposten
386
- * die Filterung von <script>-Tags im Export wurde verbessert
387
- * die Getter-Methoden eines ShopgateOrderItem-Objekts ohne Optionen oder Eingabefelder geben jetzt leere Arrays anstelle von null zurück
388
- * die Einstellungen "country" und "language" wurden zur Klasse ShopgateConfig hinzugefügt
389
- * allgemeine Methode zur Erzeugung von Weiterleitungslinks über Produktnummer, Kategorienummer und zur Startseite hinzugefügt
390
- * Kompatibilitätsprobleme zwischen verschiedenen PHP-Versionen behoben
391
-
392
- '''Version 2.1.12'''
393
- * möglicher timestamp-fehler behoben
394
- * Standard Timeout für der ShopgateMerachantApi auf 30 sekunden
395
- * Timeout bei getMobileRedirectKeywords auf 1 sekunde gesetzt
396
- * Kompatibilitätsproblem mit PHP < 5.3 behoben
397
-
398
- '''Version 2.1.11'''
399
- * Script-Tags werden beim Export jetzt inklusive Inhalt entfernt.
400
-
401
- '''Version 2.1.10'''
402
- * timestamp-fehler behoben
403
-
404
- '''Version 2.1.9'''
405
- * Authentifizierung erweitert
406
- * Das Schreiben von Log-Einträgen wird jetzt unterbunden, wenn der cache keine Schreibrechte hat
407
-
408
- '''Version 2.1.8'''
409
- * Notice-Meldungen der ping-action entfernt
410
-
411
- '''Version 2.1.7'''
412
- * Return by reference benötigt das &-Zeichen bei der Zuweisung UND am Funktions-/Methodennamen
413
-
414
- '''Version 2.1.6'''
415
- * Neues CSV-Feld "active_status"
416
- * Bei Plugin-API-Anfragen wird jetzt auch die Plugin-Version zurückgegeben, falls gesetzt.
417
-
418
- '''Version 2.1.5'''
419
- * Fehler in der Verwendung der alten Konfiguration behoben
420
- * changelog.txt hinzugefügt
421
-
422
 
 
 
423
 
424
- '''English'''
 
 
 
425
 
426
  '''Version 2.9.21'''
427
  * added constants for more payment types in class ShopgateCartBase
1
+ '''Version 2.9.24'''
2
+ * added constants for some payment methods
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ '''Version 2.9.23'''
5
+ * added sort order for options and option values
6
 
7
+ '''Version 2.9.22'''
8
+ * CSV exports: the methods ShopgatePlugin::createCategoriesCsv(), ::createItemsCsv() und ::createReviewsCsv() are now deprecated and not abstract anymore
9
+ * removed German changelog
10
+ * ShopgateMerchantApi::cancelOrder(): changed default value of parameter "$cancelCompleteOrder" from false to true
11
 
12
  '''Version 2.9.21'''
13
  * added constants for more payment types in class ShopgateCartBase
lib/Shopgate/classes/apis.php CHANGED
@@ -750,8 +750,8 @@ class ShopgatePluginApi extends ShopgateObject implements ShopgatePluginApiInter
750
 
751
  $this->config->load($shopgateSettingsNew);
752
  $this->config->save(array_keys($shopgateSettingsNew), true);
753
-
754
- $shopgateSettingsDiff = array();
755
  foreach ($shopgateSettingsNew as $setting => $value) {
756
  $diff[] = array('name' => $setting, 'old' => $shopgateSettingsOld[$setting], 'new' => $value);
757
  }
@@ -1614,7 +1614,7 @@ class ShopgateMerchantApi extends ShopgateObject implements ShopgateMerchantApiI
1614
  return $this->sendRequest($request);
1615
  }
1616
 
1617
- public function cancelOrder($orderNumber, $cancelCompleteOrder = false, $cancellationItems = array(), $cancelShipping = false, $cancellationNote = '') {
1618
  $request = array(
1619
  'action' => 'cancel_order',
1620
  'order_number' => $orderNumber,
@@ -2150,9 +2150,11 @@ abstract class ShopgatePluginApiResponse extends ShopgateObject {
2150
  $this->version = $version;
2151
  $this->pluginVersion = (empty($pluginVersion) && defined('SHOPGATE_PLUGIN_VERSION')) ? SHOPGATE_PLUGIN_VERSION : $pluginVersion;
2152
  }
2153
-
2154
  /**
2155
  * Marks the response as error.
 
 
2156
  */
2157
  public function markError($code, $message) {
2158
  $this->error = $code;
750
 
751
  $this->config->load($shopgateSettingsNew);
752
  $this->config->save(array_keys($shopgateSettingsNew), true);
753
+
754
+ $diff = array();
755
  foreach ($shopgateSettingsNew as $setting => $value) {
756
  $diff[] = array('name' => $setting, 'old' => $shopgateSettingsOld[$setting], 'new' => $value);
757
  }
1614
  return $this->sendRequest($request);
1615
  }
1616
 
1617
+ public function cancelOrder($orderNumber, $cancelCompleteOrder = true, $cancellationItems = array(), $cancelShipping = false, $cancellationNote = '') {
1618
  $request = array(
1619
  'action' => 'cancel_order',
1620
  'order_number' => $orderNumber,
2150
  $this->version = $version;
2151
  $this->pluginVersion = (empty($pluginVersion) && defined('SHOPGATE_PLUGIN_VERSION')) ? SHOPGATE_PLUGIN_VERSION : $pluginVersion;
2152
  }
2153
+
2154
  /**
2155
  * Marks the response as error.
2156
+ * @param $code
2157
+ * @param $message
2158
  */
2159
  public function markError($code, $message) {
2160
  $this->error = $code;
lib/Shopgate/classes/configuration.php CHANGED
@@ -1981,7 +1981,7 @@ class ShopgateConfig extends ShopgateContainer implements ShopgateConfigInterfac
1981
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
1982
  */
1983
  public static function setConfig(array $newConfig, $validate = true) {
1984
- return ShopgateConfigOld::setConfig($newConfig, $validate);
1985
  }
1986
 
1987
  /**
@@ -2021,7 +2021,7 @@ class ShopgateConfig extends ShopgateContainer implements ShopgateConfigInterfac
2021
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
2022
  */
2023
  public static function getLogFilePath($type = ShopgateLogger::LOGTYPE_ERROR) {
2024
- return ShopgateConfigOld::getLogFilePath($type = ShopgateLogger::LOGTYPE_ERROR);
2025
  }
2026
 
2027
  /**
@@ -2091,7 +2091,7 @@ class ShopgateConfig extends ShopgateContainer implements ShopgateConfigInterfac
2091
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
2092
  */
2093
  public static function saveConfig() {
2094
- return ShopgateConfigOld::saveConfig();
2095
  }
2096
  }
2097
 
@@ -2169,6 +2169,8 @@ class ShopgateConfigOld extends ShopgateObject {
2169
  * @deprecated
2170
  *
2171
  * @param array $newConfig
 
 
2172
  */
2173
  public static final function setConfig(array $newConfig, $validate = true) {
2174
  self::deprecated(__METHOD__);
@@ -2239,7 +2241,6 @@ class ShopgateConfigOld extends ShopgateObject {
2239
  $type = 'error';
2240
  case "access":
2241
  case "request":
2242
- case "request":
2243
  case "debug":
2244
  }
2245
 
@@ -2312,7 +2313,7 @@ class ShopgateConfigOld extends ShopgateObject {
2312
  }
2313
 
2314
  /**
2315
- * @return the absolute Path for the Redirect-Keywords-Caching-File
2316
  * @deprecated
2317
  */
2318
  public static final function getRedirectKeywordsFilePath() {
@@ -2326,7 +2327,7 @@ class ShopgateConfigOld extends ShopgateObject {
2326
  }
2327
 
2328
  /**
2329
- * @return the absolute Path for the Skip-Redirect-Keywords-Caching-File
2330
  * @deprecated
2331
  */
2332
  public static final function getSkipRedirectKeywordsFilePath() {
@@ -2414,11 +2415,9 @@ class ShopgateConfigOld extends ShopgateObject {
2414
  }
2415
  }
2416
 
2417
- $message = "";
2418
  $handle = @fopen(dirname(__FILE__).'/../config/myconfig.php', 'w+');
2419
  if ($handle == false) {
2420
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_READ_WRITE_ERROR);
2421
- fclose($handle);
2422
  } else {
2423
  if (!fwrite($handle, $returnString)) {
2424
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_READ_WRITE_ERROR);
@@ -3065,12 +3064,12 @@ interface ShopgateConfigInterface {
3065
  public function setForceSourceEncoding($value);
3066
 
3067
  /**
3068
- * @param array the list of fields supported by the plugin method check_cart
3069
  */
3070
  public function setSupportedFieldsCheckCart($value);
3071
 
3072
  /**
3073
- * @param array the list of fields supported by the plugin method get_settings
3074
  */
3075
  public function setSupportedFieldsGetSettings($value);
3076
 
@@ -3215,7 +3214,7 @@ interface ShopgateConfigInterface {
3215
  public function setEnableReceiveAuthorization($value);
3216
 
3217
  /**
3218
- * @param string The ISO 3166 ALPHA-2 code of the country the plugin uses for export.
3219
  */
3220
  public function setCountry($value);
3221
 
1981
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
1982
  */
1983
  public static function setConfig(array $newConfig, $validate = true) {
1984
+ ShopgateConfigOld::setConfig($newConfig, $validate);
1985
  }
1986
 
1987
  /**
2021
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
2022
  */
2023
  public static function getLogFilePath($type = ShopgateLogger::LOGTYPE_ERROR) {
2024
+ return ShopgateConfigOld::getLogFilePath($type);
2025
  }
2026
 
2027
  /**
2091
  * @throws ShopgateLibraryException whenever a ShopgateLibraryException is thrown by ShopgateConfigOld's method.
2092
  */
2093
  public static function saveConfig() {
2094
+ ShopgateConfigOld::saveConfig();
2095
  }
2096
  }
2097
 
2169
  * @deprecated
2170
  *
2171
  * @param array $newConfig
2172
+ * @param bool $validate
2173
+ * @throws ShopgateLibraryException
2174
  */
2175
  public static final function setConfig(array $newConfig, $validate = true) {
2176
  self::deprecated(__METHOD__);
2241
  $type = 'error';
2242
  case "access":
2243
  case "request":
 
2244
  case "debug":
2245
  }
2246
 
2313
  }
2314
 
2315
  /**
2316
+ * @return string the absolute Path for the Redirect-Keywords-Caching-File
2317
  * @deprecated
2318
  */
2319
  public static final function getRedirectKeywordsFilePath() {
2327
  }
2328
 
2329
  /**
2330
+ * @return string the absolute Path for the Skip-Redirect-Keywords-Caching-File
2331
  * @deprecated
2332
  */
2333
  public static final function getSkipRedirectKeywordsFilePath() {
2415
  }
2416
  }
2417
 
 
2418
  $handle = @fopen(dirname(__FILE__).'/../config/myconfig.php', 'w+');
2419
  if ($handle == false) {
2420
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_READ_WRITE_ERROR);
 
2421
  } else {
2422
  if (!fwrite($handle, $returnString)) {
2423
  throw new ShopgateLibraryException(ShopgateLibraryException::CONFIG_READ_WRITE_ERROR);
3064
  public function setForceSourceEncoding($value);
3065
 
3066
  /**
3067
+ * @param array $value the list of fields supported by the plugin method check_cart
3068
  */
3069
  public function setSupportedFieldsCheckCart($value);
3070
 
3071
  /**
3072
+ * @param array $value the list of fields supported by the plugin method get_settings
3073
  */
3074
  public function setSupportedFieldsGetSettings($value);
3075
 
3214
  public function setEnableReceiveAuthorization($value);
3215
 
3216
  /**
3217
+ * @param string $value The ISO 3166 ALPHA-2 code of the country the plugin uses for export.
3218
  */
3219
  public function setCountry($value);
3220
 
lib/Shopgate/classes/core.php CHANGED
@@ -24,7 +24,7 @@
24
  ###################################################################################
25
  # define constants
26
  ###################################################################################
27
- define('SHOPGATE_LIBRARY_VERSION', '2.9.21');
28
  define('SHOPGATE_LIBRARY_ENCODING' , 'UTF-8');
29
  define('SHOPGATE_BASE_DIR', realpath(dirname(__FILE__).'/../'));
30
 
@@ -361,6 +361,7 @@ class ShopgateLibraryException extends Exception {
361
  * @param string $additionalInformation More detailed information on what exactly went wrong.
362
  * @param bool $appendAdditionalInformationToMessage Set true to output the additional information to the response. Set false to log it silently.
363
  * @param bool $writeLog true to create a log entry in the error log, false otherwise.
 
364
  */
365
  public function __construct($code, $additionalInformation = null, $appendAdditionalInformationToMessage = false, $writeLog = true, Exception $previous = null) {
366
  // Set code and message
@@ -993,8 +994,7 @@ class ShopgateBuilder {
993
  break;
994
  default:
995
  // undefined auth service
996
- trigger_error('Invalid SMA-Auth-Service defined - this should not happen with valid plugin code', E_USER_ERROR);
997
- break;
998
  }
999
  // -> PluginAPI auth service (currently the plugin API supports only one auth service)
1000
  $spaAuthService = new ShopgateAuthenticationServiceShopgate($this->config->getCustomerNumber(), $this->config->getApikey());
@@ -1125,7 +1125,7 @@ abstract class ShopgateObject {
1125
 
1126
  /**
1127
  * Save the already instantiated Helper Object to guarantee the only one instance is allocated
1128
- *
1129
  * @var array of Shopgate_Helper_DataStructure|Shopgate_Helper_Pricing|Shopgate_Helper_String
1130
  */
1131
  private $helperClassInstances = array(
@@ -1903,7 +1903,6 @@ abstract class ShopgatePlugin extends ShopgateObject {
1903
 
1904
  /**
1905
  *
1906
- * @param boolean tax classes will be used
1907
  * @see http://wiki.shopgate.com/CSV_File_Items/
1908
  */
1909
  protected function useTaxClasses(){
@@ -2089,7 +2088,7 @@ abstract class ShopgatePlugin extends ShopgateObject {
2089
  protected function removeTagsFromString($string, $removeTags = array(), $additionalAllowedTags = array())
2090
  {
2091
  $helper = $this->getHelper(self::HELPER_STRING);
2092
- return $helper->removeTagsFromString($string, $removeTags, $additionalAllowedTags);
2093
  }
2094
 
2095
  /**
@@ -2419,8 +2418,8 @@ abstract class ShopgatePlugin extends ShopgateObject {
2419
 
2420
  /**
2421
  * Returns an array of certain settings of the shop. (Currently mainly tax settings.)
2422
- *
2423
- *
2424
  * @see http://developer.shopgate.com/plugin_api/system_information/get_settings
2425
  *
2426
  * @return array(
@@ -2450,8 +2449,17 @@ abstract class ShopgatePlugin extends ShopgateObject {
2450
  * @see http://developer.shopgate.com/plugin_api/export/get_items_csv
2451
  *
2452
  * @throws ShopgateLibraryException
 
 
2453
  */
2454
- protected abstract function createItemsCsv();
 
 
 
 
 
 
 
2455
 
2456
  /**
2457
  * Loads the Media file information to the products of the shop system's database and passes them to the buffer.
@@ -2476,9 +2484,18 @@ abstract class ShopgatePlugin extends ShopgateObject {
2476
  * @see http://developer.shopgate.com/plugin_api/export/get_categories_csv
2477
  *
2478
  * @throws ShopgateLibraryException
 
 
2479
  */
2480
- protected abstract function createCategoriesCsv();
2481
-
 
 
 
 
 
 
 
2482
  /**
2483
  * Loads the product reviews of the shop system's database and passes them to the buffer.
2484
  *
@@ -2489,9 +2506,18 @@ abstract class ShopgatePlugin extends ShopgateObject {
2489
  * @see http://developer.shopgate.com/plugin_api/export/get_reviews_csv
2490
  *
2491
  * @throws ShopgateLibraryException
 
 
2492
  */
2493
- protected abstract function createReviewsCsv();
2494
-
 
 
 
 
 
 
 
2495
  /**
2496
  * Exports orders from the shop system's database to Shopgate.
2497
  *
24
  ###################################################################################
25
  # define constants
26
  ###################################################################################
27
+ define('SHOPGATE_LIBRARY_VERSION', '2.9.24');
28
  define('SHOPGATE_LIBRARY_ENCODING' , 'UTF-8');
29
  define('SHOPGATE_BASE_DIR', realpath(dirname(__FILE__).'/../'));
30
 
361
  * @param string $additionalInformation More detailed information on what exactly went wrong.
362
  * @param bool $appendAdditionalInformationToMessage Set true to output the additional information to the response. Set false to log it silently.
363
  * @param bool $writeLog true to create a log entry in the error log, false otherwise.
364
+ * @param Exception $previous
365
  */
366
  public function __construct($code, $additionalInformation = null, $appendAdditionalInformationToMessage = false, $writeLog = true, Exception $previous = null) {
367
  // Set code and message
994
  break;
995
  default:
996
  // undefined auth service
997
+ return trigger_error('Invalid SMA-Auth-Service defined - this should not happen with valid plugin code', E_USER_ERROR);
 
998
  }
999
  // -> PluginAPI auth service (currently the plugin API supports only one auth service)
1000
  $spaAuthService = new ShopgateAuthenticationServiceShopgate($this->config->getCustomerNumber(), $this->config->getApikey());
1125
 
1126
  /**
1127
  * Save the already instantiated Helper Object to guarantee the only one instance is allocated
1128
+ *
1129
  * @var array of Shopgate_Helper_DataStructure|Shopgate_Helper_Pricing|Shopgate_Helper_String
1130
  */
1131
  private $helperClassInstances = array(
1903
 
1904
  /**
1905
  *
 
1906
  * @see http://wiki.shopgate.com/CSV_File_Items/
1907
  */
1908
  protected function useTaxClasses(){
2088
  protected function removeTagsFromString($string, $removeTags = array(), $additionalAllowedTags = array())
2089
  {
2090
  $helper = $this->getHelper(self::HELPER_STRING);
2091
+ return $helper->removeTagsFromString($string, $removeTags, $additionalAllowedTags);
2092
  }
2093
 
2094
  /**
2418
 
2419
  /**
2420
  * Returns an array of certain settings of the shop. (Currently mainly tax settings.)
2421
+ *
2422
+ *
2423
  * @see http://developer.shopgate.com/plugin_api/system_information/get_settings
2424
  *
2425
  * @return array(
2449
  * @see http://developer.shopgate.com/plugin_api/export/get_items_csv
2450
  *
2451
  * @throws ShopgateLibraryException
2452
+ *
2453
+ * @deprecated Use createItems().
2454
  */
2455
+ protected function createItemsCsv(){
2456
+ throw new ShopgateLibraryException(
2457
+ ShopgateLibraryException::PLUGIN_API_DISABLED_ACTION,
2458
+ 'The requested action is not disabled but has not been implemented in this plugin.',
2459
+ true,
2460
+ false
2461
+ );
2462
+ }
2463
 
2464
  /**
2465
  * Loads the Media file information to the products of the shop system's database and passes them to the buffer.
2484
  * @see http://developer.shopgate.com/plugin_api/export/get_categories_csv
2485
  *
2486
  * @throws ShopgateLibraryException
2487
+ *
2488
+ * @deprecated Use createCategories().
2489
  */
2490
+ protected function createCategoriesCsv() {
2491
+ throw new ShopgateLibraryException(
2492
+ ShopgateLibraryException::PLUGIN_API_DISABLED_ACTION,
2493
+ 'The requested action is not disabled but has not been implemented in this plugin.',
2494
+ true,
2495
+ false
2496
+ );
2497
+ }
2498
+
2499
  /**
2500
  * Loads the product reviews of the shop system's database and passes them to the buffer.
2501
  *
2506
  * @see http://developer.shopgate.com/plugin_api/export/get_reviews_csv
2507
  *
2508
  * @throws ShopgateLibraryException
2509
+ *
2510
+ * @deprecated Use createReviews().
2511
  */
2512
+ protected function createReviewsCsv() {
2513
+ throw new ShopgateLibraryException(
2514
+ ShopgateLibraryException::PLUGIN_API_DISABLED_ACTION,
2515
+ 'The requested action is not disabled but has not been implemented in this plugin.',
2516
+ true,
2517
+ false
2518
+ );
2519
+ }
2520
+
2521
  /**
2522
  * Exports orders from the shop system's database to Shopgate.
2523
  *
lib/Shopgate/classes/customers.php CHANGED
@@ -50,6 +50,7 @@ class ShopgateCustomer extends ShopgateContainer {
50
 
51
  protected $newsletter_subscription;
52
 
 
53
  protected $addresses;
54
 
55
  /**
50
 
51
  protected $newsletter_subscription;
52
 
53
+ /** @var ShopgateAddress[] */
54
  protected $addresses;
55
 
56
  /**
lib/Shopgate/classes/items.php CHANGED
@@ -541,7 +541,7 @@ class ShopgateItem extends ShopgateContainer {
541
  }
542
 
543
  /**
544
- * @param string[] $related_item_numbers
545
  */
546
  public function setRelatedItemNumbers($value) {
547
  $this->related_item_numbers = $value;
541
  }
542
 
543
  /**
544
+ * @param string[] $value
545
  */
546
  public function setRelatedItemNumbers($value) {
547
  $this->related_item_numbers = $value;
lib/Shopgate/classes/models/catalog/Input.php CHANGED
@@ -44,6 +44,9 @@
44
  * @method setAdditionalPrice(string $value)
45
  * @method string getAdditionalPrice()
46
  *
 
 
 
47
  * @method setLabel(string $value)
48
  * @method string getLabel()
49
  *
@@ -76,6 +79,7 @@ class Shopgate_Model_Catalog_Input extends Shopgate_Model_AbstractExport {
76
  'Validation',
77
  'Required',
78
  'AdditionalPrice',
 
79
  'Label',
80
  'InfoText');
81
 
@@ -104,6 +108,7 @@ class Shopgate_Model_Catalog_Input extends Shopgate_Model_AbstractExport {
104
  $inputNode->addAttribute('type', $this->getType());
105
  $inputNode->addAttribute('required', (int)$this->getRequired());
106
  $inputNode->addAttribute('additional_price', $this->getAdditionalPrice());
 
107
  $inputNode->addChildWithCDATA('label', $this->getLabel());
108
  $inputNode->addChildWithCDATA('info_text', $this->getInfoText());
109
  $optionsNode = $inputNode->addChild('options');
44
  * @method setAdditionalPrice(string $value)
45
  * @method string getAdditionalPrice()
46
  *
47
+ * @method setSortOrder(int $value)
48
+ * @method int getSortOrder()
49
+ *
50
  * @method setLabel(string $value)
51
  * @method string getLabel()
52
  *
79
  'Validation',
80
  'Required',
81
  'AdditionalPrice',
82
+ 'SortOrder',
83
  'Label',
84
  'InfoText');
85
 
108
  $inputNode->addAttribute('type', $this->getType());
109
  $inputNode->addAttribute('required', (int)$this->getRequired());
110
  $inputNode->addAttribute('additional_price', $this->getAdditionalPrice());
111
+ $inputNode->addAttribute('sort_order', $this->getSortOrder());
112
  $inputNode->addChildWithCDATA('label', $this->getLabel());
113
  $inputNode->addChildWithCDATA('info_text', $this->getInfoText());
114
  $optionsNode = $inputNode->addChild('options');
lib/Shopgate/classes/models/catalog/Manufacturer.php CHANGED
@@ -26,6 +26,9 @@
26
  * @class Shopgate_Model_Catalog_Manufacturer
27
  * @see http://developer.shopgate.com/file_formats/xml/products
28
  *
 
 
 
29
  * @method setItemNumber(string $value)
30
  * @method string getItemNumber()
31
  *
26
  * @class Shopgate_Model_Catalog_Manufacturer
27
  * @see http://developer.shopgate.com/file_formats/xml/products
28
  *
29
+ * @method setUid(int $value)
30
+ * @method int getUid()
31
+ *
32
  * @method setItemNumber(string $value)
33
  * @method string getItemNumber()
34
  *
lib/Shopgate/classes/models/catalog/Option.php CHANGED
@@ -26,17 +26,20 @@
26
  * @class Shopgate_Model_Catalog_Option
27
  * @see http://developer.shopgate.com/file_formats/xml/products
28
  *
29
- * @method setUid(int $value)
30
- * @method int getUid()
31
  *
32
- * @method setLabel(string $value)
33
- * @method string getLabel()
34
  *
35
- * @method setValue(string $value)
36
- * @method string getValue()
37
  *
38
- * @method setAdditionalPrice(float $value)
39
- * @method float getAdditionalPrice()
 
 
 
40
  *
41
  */
42
  class Shopgate_Model_Catalog_Option extends Shopgate_Model_AbstractExport {
@@ -50,6 +53,7 @@ class Shopgate_Model_Catalog_Option extends Shopgate_Model_AbstractExport {
50
  'Uid',
51
  'Label',
52
  'Value',
 
53
  'AdditionalPrice');
54
 
55
  /**
@@ -64,6 +68,7 @@ class Shopgate_Model_Catalog_Option extends Shopgate_Model_AbstractExport {
64
  $optionNode = $itemNode->addChild('option');
65
  $optionNode->addAttribute('additional_price', $this->getAdditionalPrice());
66
  $optionNode->addAttribute('uid', $this->getUid());
 
67
  $optionNode->addChildWithCDATA('label', $this->getLabel());
68
  $optionNode->addChildWithCDATA('value', $this->getValue());
69
 
26
  * @class Shopgate_Model_Catalog_Option
27
  * @see http://developer.shopgate.com/file_formats/xml/products
28
  *
29
+ * @method setUid(int $value)
30
+ * @method int getUid()
31
  *
32
+ * @method setLabel(string $value)
33
+ * @method string getLabel()
34
  *
35
+ * @method setValue(string $value)
36
+ * @method string getValue()
37
  *
38
+ * @method setAdditionalPrice(float $value)
39
+ * @method float getAdditionalPrice()
40
+ *
41
+ * @method setSortOrder(int $value)
42
+ * @method int getSortOrder()
43
  *
44
  */
45
  class Shopgate_Model_Catalog_Option extends Shopgate_Model_AbstractExport {
53
  'Uid',
54
  'Label',
55
  'Value',
56
+ 'SortOrder',
57
  'AdditionalPrice');
58
 
59
  /**
68
  $optionNode = $itemNode->addChild('option');
69
  $optionNode->addAttribute('additional_price', $this->getAdditionalPrice());
70
  $optionNode->addAttribute('uid', $this->getUid());
71
+ $optionNode->addAttribute('sort_order', $this->getSortOrder());
72
  $optionNode->addChildWithCDATA('label', $this->getLabel());
73
  $optionNode->addChildWithCDATA('value', $this->getValue());
74
 
lib/Shopgate/classes/orders.php CHANGED
@@ -25,18 +25,27 @@ abstract class ShopgateCartBase extends ShopgateContainer {
25
 
26
  const SHOPGATE = "SHOPGATE";
27
 
 
28
  const PREPAY = "PREPAY";
29
  const PAYONE_PRP = "PAYONE_PRP";
30
  const SG_PREPAY = "SG_PREPAY";
31
 
 
32
  const DEBIT = "DEBIT";
33
  const PAYMRW_DBT = "PAYMRW_DBT";
34
  const PAYONE_DBT = "PAYONE_DBT";
35
 
 
36
  const COD = "COD";
37
  const COLL_STORE = "COLL_STORE";
38
 
 
 
 
 
 
39
  const INVOICE = "INVOICE";
 
40
  const KLARNA_INV = "KLARNA_INV";
41
  const BILLSAFE = "BILLSAFE";
42
  const MSTPAY_INV = "MSTPAY_INV";
@@ -44,8 +53,10 @@ abstract class ShopgateCartBase extends ShopgateContainer {
44
  const PAYONE_INV = "PAYONE_INV";
45
  const SG_INVOICE = "SG_INVOICE";
46
  const WCARD_INV = "WCARD_INV";
47
- const PAYONE_KLV = 'PAYONE_KLV';
 
48
 
 
49
  const PAYPAL = "PAYPAL";
50
  const CMPTOP_PP = "CMPTOP_PP";
51
  const MASTPAY_PP = "MASTPAY_PP";
@@ -55,6 +66,7 @@ abstract class ShopgateCartBase extends ShopgateContainer {
55
  const SIX_PP = "SIX_PP";
56
  const WCARD_PP = "WCARD_PP";
57
 
 
58
  const CC = "CC";
59
  const AUTHN_CC = "AUTHN_CC";
60
  const BCLEPDQ_CC = "BCLEPDQ_CC";
@@ -62,6 +74,7 @@ abstract class ShopgateCartBase extends ShopgateContainer {
62
  const BRAINTR_CC = "BRAINTR_CC";
63
  const CHASE_CC = "CHASE_CC";
64
  const CMPTOP_CC = "CMPTOP_CC";
 
65
  const CRDSTRM_CC = "CRDSTRM_CC";
66
  const CREDITCARD = "CREDITCARD";
67
  const CYBRSRC_CC = "CYBRSRC_CC";
@@ -77,6 +90,7 @@ abstract class ShopgateCartBase extends ShopgateContainer {
77
  const GAMEDAY_CC = "GAMEDAY_CC";
78
  const GARANTI_CC = "GARANTI_CC";
79
  const GESTPAY_CC = "GESTPAY_CC";
 
80
  const HIPAY = "HIPAY";
81
  const HITRUST_CC = "HITRUST_CC";
82
  const INSPIRE_CC = "INSPIRE_CC";
@@ -96,12 +110,14 @@ abstract class ShopgateCartBase extends ShopgateContainer {
96
  const NOCHEX_CC = "NOCHEX_CC";
97
  const OGONE_CC = "OGONE_CC";
98
  const OPTIMAL_CC = "OPTIMAL_CC";
 
99
  const PAYBOX_CC = "PAYBOX_CC";
100
  const PAYEXPR_CC = "PAYEXPR_CC";
101
  const PAYFAST_CC = "PAYFAST_CC";
102
  const PAYFLOW_CC = "PAYFLOW_CC";
103
  const PAYJUNC_CC = "PAYJUNC_CC";
104
  const PAYONE_CC = "PAYONE_CC";
 
105
  const PLUGNPL_CC = "PLUGNPL_CC";
106
  const PP_WSPP_CC = "PP_WSPP_CC";
107
  const PSIGATE_CC = "PSIGATE_CC";
@@ -127,10 +143,12 @@ abstract class ShopgateCartBase extends ShopgateContainer {
127
  const VALITOR_CC = "VALITOR_CC";
128
  const VERIFI_CC = "VERIFI_CC";
129
  const VIAKLIX_CC = "VIAKLIX_CC";
 
130
  const WIRECRD_CC = "WIRECRD_CC";
131
  const WLDPDIR_CC = "WLDPDIR_CC";
132
  const WLDPOFF_CC = "WLDPOFF_CC";
133
 
 
134
  const CNB = "CNB";
135
  const SG_CNB = "SG_CNB";
136
 
@@ -142,15 +160,22 @@ abstract class ShopgateCartBase extends ShopgateContainer {
142
  const REDIRECTCC = "REDIRECTCC";
143
  const WORLDLINE = "WORLDLINE";
144
 
 
145
  const SUE = "SUE";
 
146
  const MSTPAY_SUE = "MSTPAY_SUE";
 
147
  const SG_SUE = "SG_SUE";
 
148
  const WCARD_SUE = "WCARD_SUE";
149
- const PAYONE_GP = "PAYONE_GP";
150
- const PAYONE_SUE = "PAYONE_SUE";
151
 
152
- const SIX_IDEAL = "SIX_IDEAL";
 
 
 
153
  const PAYONE_IDL = "PAYONE_IDL";
 
 
154
 
155
  const AMAZON_PAYMENT = "MWS";
156
 
@@ -964,7 +989,7 @@ class ShopgateOrder extends ShopgateCartBase {
964
  * @see http://www.php.net/manual/de/function.date.php
965
  * @see http://en.wikipedia.org/wiki/ISO_8601
966
  *
967
- * @param string format
968
  *
969
  * @return string
970
  */
@@ -1010,7 +1035,7 @@ class ShopgateOrder extends ShopgateCartBase {
1010
  * @see http://www.php.net/manual/de/function.date.php
1011
  * @see http://en.wikipedia.org/wiki/ISO_8601
1012
  *
1013
- * @param string format
1014
  *
1015
  * @return string
1016
  */
@@ -2768,7 +2793,7 @@ class ShopgateCartCustomerGroup extends ShopgateContainer {
2768
  ##########
2769
 
2770
  /**
2771
- * @param string $value
2772
  */
2773
  public function getId() {
2774
  return $this->id;
25
 
26
  const SHOPGATE = "SHOPGATE";
27
 
28
+ // Prepayment
29
  const PREPAY = "PREPAY";
30
  const PAYONE_PRP = "PAYONE_PRP";
31
  const SG_PREPAY = "SG_PREPAY";
32
 
33
+ // Debit
34
  const DEBIT = "DEBIT";
35
  const PAYMRW_DBT = "PAYMRW_DBT";
36
  const PAYONE_DBT = "PAYONE_DBT";
37
 
38
+ // Cash On Delivery
39
  const COD = "COD";
40
  const COLL_STORE = "COLL_STORE";
41
 
42
+ // Installment
43
+ const ACCRD_INS = "ACCRD_INS";
44
+ const PAYOL_INS = "PAYOL_INS";
45
+
46
+ // Invoice
47
  const INVOICE = "INVOICE";
48
+ const ACCRD_INV = "ACCRD_INV";
49
  const KLARNA_INV = "KLARNA_INV";
50
  const BILLSAFE = "BILLSAFE";
51
  const MSTPAY_INV = "MSTPAY_INV";
53
  const PAYONE_INV = "PAYONE_INV";
54
  const SG_INVOICE = "SG_INVOICE";
55
  const WCARD_INV = "WCARD_INV";
56
+ const PAYONE_KLV = "PAYONE_KLV";
57
+ const PAYOL_INV = "PAYOL_INV";
58
 
59
+ // Paypal
60
  const PAYPAL = "PAYPAL";
61
  const CMPTOP_PP = "CMPTOP_PP";
62
  const MASTPAY_PP = "MASTPAY_PP";
66
  const SIX_PP = "SIX_PP";
67
  const WCARD_PP = "WCARD_PP";
68
 
69
+ // Credit Card
70
  const CC = "CC";
71
  const AUTHN_CC = "AUTHN_CC";
72
  const BCLEPDQ_CC = "BCLEPDQ_CC";
74
  const BRAINTR_CC = "BRAINTR_CC";
75
  const CHASE_CC = "CHASE_CC";
76
  const CMPTOP_CC = "CMPTOP_CC";
77
+ const CONCAR_CC = "CONCAR_CC";
78
  const CRDSTRM_CC = "CRDSTRM_CC";
79
  const CREDITCARD = "CREDITCARD";
80
  const CYBRSRC_CC = "CYBRSRC_CC";
90
  const GAMEDAY_CC = "GAMEDAY_CC";
91
  const GARANTI_CC = "GARANTI_CC";
92
  const GESTPAY_CC = "GESTPAY_CC";
93
+ const HDLPAY_CC = "HDLPAY_CC";
94
  const HIPAY = "HIPAY";
95
  const HITRUST_CC = "HITRUST_CC";
96
  const INSPIRE_CC = "INSPIRE_CC";
110
  const NOCHEX_CC = "NOCHEX_CC";
111
  const OGONE_CC = "OGONE_CC";
112
  const OPTIMAL_CC = "OPTIMAL_CC";
113
+ const PAY4ONE_CC = "PAY4ONE_CC";
114
  const PAYBOX_CC = "PAYBOX_CC";
115
  const PAYEXPR_CC = "PAYEXPR_CC";
116
  const PAYFAST_CC = "PAYFAST_CC";
117
  const PAYFLOW_CC = "PAYFLOW_CC";
118
  const PAYJUNC_CC = "PAYJUNC_CC";
119
  const PAYONE_CC = "PAYONE_CC";
120
+ const PAYZEN_CC = "PAYZEN_CC";
121
  const PLUGNPL_CC = "PLUGNPL_CC";
122
  const PP_WSPP_CC = "PP_WSPP_CC";
123
  const PSIGATE_CC = "PSIGATE_CC";
143
  const VALITOR_CC = "VALITOR_CC";
144
  const VERIFI_CC = "VERIFI_CC";
145
  const VIAKLIX_CC = "VIAKLIX_CC";
146
+ const WCARDS_CC = "WCARDS_CC";
147
  const WIRECRD_CC = "WIRECRD_CC";
148
  const WLDPDIR_CC = "WLDPDIR_CC";
149
  const WLDPOFF_CC = "WLDPOFF_CC";
150
 
151
+ // ClickandBuy
152
  const CNB = "CNB";
153
  const SG_CNB = "SG_CNB";
154
 
160
  const REDIRECTCC = "REDIRECTCC";
161
  const WORLDLINE = "WORLDLINE";
162
 
163
+ // SOFORT Überweisung
164
  const SUE = "SUE";
165
+ const HDLPAY_SUE = "HDLPAY_SUE";
166
  const MSTPAY_SUE = "MSTPAY_SUE";
167
+ const PAYONE_SUE = "PAYONE_SUE";
168
  const SG_SUE = "SG_SUE";
169
+ const SKRILL_SUE = "SKRILL_SUE";
170
  const WCARD_SUE = "WCARD_SUE";
 
 
171
 
172
+ // Giropay
173
+ const PAYONE_GP = "PAYONE_GP";
174
+
175
+ // iDEAL
176
  const PAYONE_IDL = "PAYONE_IDL";
177
+ const SIX_IDEAL = "SIX_IDEAL";
178
+ const SKRILL_IDL = "SKRILL_IDL";
179
 
180
  const AMAZON_PAYMENT = "MWS";
181
 
989
  * @see http://www.php.net/manual/de/function.date.php
990
  * @see http://en.wikipedia.org/wiki/ISO_8601
991
  *
992
+ * @param string $format
993
  *
994
  * @return string
995
  */
1035
  * @see http://www.php.net/manual/de/function.date.php
1036
  * @see http://en.wikipedia.org/wiki/ISO_8601
1037
  *
1038
+ * @param string $format
1039
  *
1040
  * @return string
1041
  */
2793
  ##########
2794
 
2795
  /**
2796
+ * @return string
2797
  */
2798
  public function getId() {
2799
  return $this->id;
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>shopgate_module</name>
4
- <version>2.9.20</version>
5
  <stability>stable</stability>
6
  <license uri="http://wiki.shopgate.com/Magento/de">Shopgate Plugin</license>
7
  <channel>community</channel>
@@ -10,9 +10,9 @@
10
  <description>Shopgate Plugin</description>
11
  <notes>Shopgate Modul</notes>
12
  <authors><author><name>Peter Liebig</name><user>Shopgate</user><email>p.liebig@me.com</email></author><author><name>Stephan Recknagel</name><user>Shopgate</user><email>mail@recknagel.io</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus83@googlemail.com</email></author></authors>
13
- <date>2015-09-02</date>
14
- <time>07:52:03</time>
15
- <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="3fb114204bd038da711122083876f161"/></dir></target><target name="magecommunity"><dir name="Shopgate"><dir name="Framework"><dir name="Block"><dir name="Adminhtml"><dir name="OAuth"><dir name="Config"><file name="Connector.php" hash="890d04b08bf692c12b02f29abf813f83"/></dir><dir name="Connect"><dir name="Add"><file name="Form.php" hash="45685099b41a46919a9900d22c30b711"/></dir><file name="Info.php" hash="ee7bbc837bf3f298791b8496f2d6d565"/><file name="Overlay.php" hash="a6496896dccb5898b36e3e65585650f4"/></dir><file name="Connect.php" hash="cc7e43ba447b6338f6c50ccaa5fd073a"/><file name="Data.php" hash="1903e819d5d16abba4c37d7823909260"/><file name="Disconnect.php" hash="2545e56bca73577ba5f73fce0501624a"/><dir name="Manage"><file name="Grid.php" hash="78357b78fed0e8b3535a7e505c8f6425"/></dir><file name="Manage.php" hash="a99e12333f7c27771ca42a0764108639"/></dir></dir><file name="Info.php" hash="3dd73900370546289a6033942a0c0528"/><dir name="Payment"><file name="MobilePayment.php" hash="7de8af7ec46e107c46a73efaf2a02034"/><file name="Shopgate.php" hash="67af406fa04da70461b3580b8adea89d"/></dir><dir name="Totals"><file name="AbstractPaymentFee.php" hash="5e36647f536d1c6daba33cd6e0a5e302"/><file name="CreditmemoPaymentFee.php" hash="4a287f54554d8d45772db386f54a45e7"/><file name="InvoicePaymentFee.php" hash="818164536fe249016af3046aef73f181"/><file name="OrderPaymentFee.php" hash="55c8f62c4da8014c99414ece9cd125c4"/></dir><file name="Version.php" hash="2f45712bb20635ac17d8bdee213819e5"/></dir><dir name="Helper"><dir name="Billsafe"><file name="Order.php" hash="474c2aa15f352224c11c8ab17e921c9d"/></dir><file name="Config.php" hash="2c736f067f5d69855e1523504a7afe36"/><file name="Coupon.php" hash="519697b13040ddfbc8f460b6034c8779"/><file name="Customer.php" hash="9317086e730aedc99c7c187ebf898a7b"/><file name="Data.php" hash="0f8adfe6c80eefc85537c79b19731235"/><file name="Debug.php" hash="82c85038046fc9b2f994df18b7f202a6"/><file name="Export.php" hash="205dee2b07a96990efdc7ecca08cf075"/><dir name="Import"><file name="Order.php" hash="bf2e1bbee6fb46ec22e5c6a1ed0a0404"/></dir><file name="Install.php" hash="57f42693c9a6ddb18b8a25a2a5da7cf8"/><dir name="Payment"><file name="Abstract.php" hash="484289d68e09f591f59d50b3905a895e"/><file name="Payone.php" hash="ddced5955ff55105d8b3c91e0fcb0778"/><file name="Wspp.php" hash="53ed3f72fc8d5bcde6a6a7ab78d6323f"/></dir><file name="Sales.php" hash="d6c50ee8b07947680a7ef6202de526a3"/></dir><dir name="Model"><dir name="Carrier"><file name="Fix.php" hash="b29aaf2603b9bb18bb4452f4a8f94ef4"/></dir><dir name="Cataloginventory"><file name="Stock.php" hash="42ffccc3d644f8b04358a3e76bda32dd"/></dir><dir name="Compiler"><file name="Process.php" hash="740452b7bc234417788db1f1ee892ef5"/></dir><file name="Config.php" hash="30c638d50ff53e16bff9cfeb8285d170"/><file name="Customer.php" hash="97ed53ca3f69c7a24fb40cce11f58721"/><dir name="DreamRobot"><file name="Observer.php" hash="7b4e8922a46f5974b8edf359c632a9d3"/></dir><dir name="Export"><file name="Abstract.php" hash="9e86667845e8cebd8e0ccb8879b70b6d"/><dir name="Category"><file name="Csv.php" hash="72f4f58345d95f8f621783bedf2a092e"/><file name="Xml.php" hash="12ab046b9a000636ed4ed5eefb770af2"/></dir><file name="Category.php" hash="5a41141ecec85669674ec818c4661cdc"/><dir name="Customer"><file name="Orders.php" hash="98f11380fdc5d83bd8d04fbc8a00041d"/></dir><file name="Customer.php" hash="2711476c9538a22242d1511649ec77f1"/><dir name="Product"><file name="Csv.php" hash="579821eee1466a94b6aa1daf8fdc83c7"/><file name="Xml.php" hash="3c723154bfaf0114b537995b945b59a5"/></dir><file name="Product.php" hash="d9c807df57af3f1cced2d9bb433338ec"/><dir name="Review"><file name="Csv.php" hash="5c72f802a2de256ca1ec8dab1b75b291"/><file name="Xml.php" hash="bc16f60d9ed20705422921955a5071fe"/></dir><file name="Review.php" hash="ad6f548035a30da642d2459354acbb40"/><file name="Settings.php" hash="0bb22a0cbf0d89392a73af161e9c6c3a"/></dir><file name="Feed.php" hash="fb99cd7b2b3d94908848b722df666b67"/><dir name="Mobile"><file name="Redirect.php" hash="637ba202475a901806d3ba822d9cdc1e"/></dir><dir name="Mysql4"><dir name="Core"><file name="Core.php" hash="fc129d4d929f83e8389367b9c5d6d5e1"/></dir><dir name="Customer"><file name="Collection.php" hash="89d31997abc3c2145f74e02dd5456a7c"/></dir><file name="Customer.php" hash="d5f460b2d5bfa87b8368a8a6c6b51115"/><file name="Product.php" hash="6a99b3d0de44dfbd132ce9caca19034e"/><dir name="Shopgate"><dir name="Order"><file name="Collection.php" hash="e180ba816be47239828bea65cd5f8445"/></dir><file name="Order.php" hash="c297847e39ad01307dba4a69c13445f2"/></dir></dir><file name="Observer.php" hash="da10a5dddba99720bea687ec4fa94c57"/><dir name="Payment"><dir name="Abstract"><file name="AbstractPayol.php" hash="df981453b9a4b195331fc16cd67feec0"/></dir><file name="Abstract.php" hash="b824e58f30ffce15e74a6e8e331ab46f"/><file name="Amazon.php" hash="c90003246111cf066270015b41cb7ff9"/><file name="Authorize.php" hash="6f747fb258e59137cc5dadc179664246"/><file name="Billsafe.php" hash="1c97ec04356ae4ed25c1492a317eaaff"/><dir name="Cc"><file name="Abstract.php" hash="9da8b136b64e684d434b5c7d1749a0d6"/><file name="Authn.php" hash="cb7c64d874af752b5e42b84f730d3b70"/><file name="AuthnAbstract.php" hash="14f800ab7f1eef9cb156ede972f03cc3"/><dir name="Authncim"><file name="Gateway.php" hash="1f8df3fe0e50f4729bebfc1d4763b015"/><file name="Method.php" hash="aa6916548a71848ad7c83e4f053bc27e"/></dir><file name="Authncim.php" hash="1790d5366857344bb78ec76e1e1ccf53"/><file name="Usaepay.php" hash="e26b2317146174b6da8e6f189df84bfe"/></dir><file name="Cc.php" hash="7fe7850acbe549859442ec9facb9b550"/><file name="Express.php" hash="e90c6eb120a0aec969f63496b4fb1063"/><file name="Factory.php" hash="18e6a9df111781de310fc72b339f0292"/><file name="Generic.php" hash="666f06186d1bb96b94af287d221e27c5"/><dir name="Ins"><file name="Payol.php" hash="b6961c4ab1fb9a95ab2d470aeaad8d29"/></dir><file name="Interface.php" hash="151002297bcce208b85bd260c7a25b47"/><dir name="Inv"><file name="Payol.php" hash="6d1c28b2ea2fb2fd63e09712f4533c77"/></dir><file name="MobilePayment.php" hash="59554c65e778831f6add450e0f846f42"/><dir name="Payone"><file name="Abstract.php" hash="3465493a3cfce507ab194522b71cf59e"/><file name="BankAbstract.php" hash="fa4ef2c918868001c5f1df97cb4bc400"/><file name="Cc.php" hash="11e68f50ea43bf73b31c53efea0cbc4d"/><file name="Dbt.php" hash="7f098887ba6f12669a18f62d7885de6d"/><file name="Gp.php" hash="7686149aedae93b0d5eef0b06fc08d7e"/><file name="Idl.php" hash="57d144744565ff644db917cab7ef689e"/><file name="Inv.php" hash="91d893ee5eacdc00ff8fbb3f1b750894"/><file name="Klv.php" hash="f82fb0cc874ea8f1121f282372e4e404"/><file name="Pp.php" hash="93004cedd66ab4bf31e5bb8747b4a606"/><file name="Prp.php" hash="76079d7e154c3a982b1d117793942c3a"/><file name="Sue.php" hash="31280f2c8abf21f0a582b656fb0d38ad"/></dir><dir name="Pp"><file name="Abstract.php" hash="392a41d83b10150d7a39043c1bf923af"/><file name="Wspp.php" hash="ffef93e6dd51c4edefe3fbd228d1d33f"/></dir><file name="Pp.php" hash="c521bbb32aed313c0170dd6e8361f934"/><file name="Router.php" hash="1df693718ebb4b71d2ae790678927194"/><file name="Shopgate.php" hash="f0d59e2a4369f7a22e47cf9c3bb9c44a"/><dir name="Simple"><file name="Billsafe.php" hash="939f38d1f3938be6f43c338a3204310f"/><dir name="Cod"><file name="Abstract.php" hash="7bcb77e2906200f8a7576a24d782d541"/><file name="Msp.php" hash="da63e630e339f73b1047f9be2fc13a80"/><file name="Native.php" hash="a18abef66d98a08e988bafa1564dfaa2"/><file name="Phoenix107.php" hash="958990a7ec99a4c102b335e68db4f563"/><file name="Phoenix108.php" hash="912cb903da51a2056f03d75c566dbc7b"/></dir><file name="Cod.php" hash="0688749cd9110544d01e5c1130be3005"/><file name="Invoice.php" hash="a86d8500a0dee3056e56b0ccfb1fae3d"/><file name="Mws.php" hash="66b68310d396e83423aefbd6e266c7ff"/><dir name="Paypal"><file name="Express.php" hash="41f515971e019e5f29db0ef6832733c5"/><file name="Standard.php" hash="5281ddc90f8f560b6cffa2e97fe08304"/></dir><file name="Paypal.php" hash="4f0ea53a37ebced5be389d85f800a960"/><dir name="Prepay"><file name="Abstract.php" hash="89767868690e40bc3d96f8bee4484880"/><file name="Checkmo.php" hash="781dd32522f7bc97c62313cb76429633"/><file name="Native.php" hash="48542e3e9ad2bafb504a200a6529eccc"/><file name="Phoenix.php" hash="7118e404d6f1755cdab35dbc2c8f058d"/></dir><file name="Prepay.php" hash="eb79f9f8469652e91b11fd5d714db84f"/><file name="Shopgate.php" hash="f21b1608add7e193bed0ccf0004de3a8"/><dir name="Sue"><file name="Abstract.php" hash="d07d6b3a5702b458ed4e5f4574e3ced9"/><file name="Sue118.php" hash="759f4a7e103f9f9f4457aa1d0694c26d"/><file name="Sue300.php" hash="c804244222e5fe67ead8916c5c1ffef1"/></dir><file name="Sue.php" hash="6802dc052e2088957329689b003a16f8"/></dir><file name="Simple.php" hash="e4f0b3cd8282c2661cb19eabdb77d075"/><file name="Usaepay.php" hash="50e049e1cae29abbd7027cf842878540"/><file name="Wspp.php" hash="23b0420ff59dc0bfa7940bf0f07562fc"/></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="0ee7969070ab0dddfdd3bb2cc404cd3c"/></dir><dir name="Customer"><file name="Collection.php" hash="2ddb7db1355100bc9e86f966f1d4612c"/></dir><file name="Customer.php" hash="69848842d4be07be4d66d700a7b6695b"/><file name="Product.php" hash="5c62ef4cfc3f0ebbbe5a9a46d1c25dfa"/><file name="Setup.php" hash="7b5cc0f99c857e9292638c1fbeb43969"/><dir name="Shopgate"><dir name="Connection"><file name="Collection.php" hash="f294d4239cee276b7e3c5e6e2109de66"/><dir name="Grid"><file name="Collection.php" hash="d499139d50dffbfe1b1e868b5aeeee0f"/></dir></dir><dir name="Order"><file name="Collection.php" hash="2c18a4ca248ca8719e7ead85f0c57619"/></dir><file name="Order.php" hash="1942eeb8268781c499f8cad384081b02"/></dir></dir><dir name="Sales"><dir name="Creditmemo"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="614d1e96cd2c97e0fcd7db86ee3aad89"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="c4400832de32367067fd5396bcf7bfc8"/></dir></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="28b097ab68b92268248b19a4ff20121b"/></dir></dir></dir></dir><dir name="Search"><dir name="Shopgate"><file name="Order.php" hash="94dcf366528641687b89ab0c9f973ef5"/></dir></dir><dir name="Shopgate"><dir name="Cart"><dir name="Validation"><dir name="Stock"><file name="Bundle.php" hash="7cc03239fbefe3a8e71755a178299944"/><file name="Simple.php" hash="9da9891d52c89e0772af5bcea7581ae8"/></dir><file name="Stock.php" hash="03d8139aa9840d707c8e4cb991bca20f"/></dir></dir><file name="Connection.php" hash="ff0da764d444103f5892ef21e23ba353"/><file name="Order.php" hash="89e0e425fc48282c1b46d3078b294be1"/><file name="Plugin.php" hash="8ae29e630ab2b7c149c94ec56eba5d25"/><dir name="Shipping"><dir name="Mapper"><file name="Carrier.php" hash="ef57904070fdf7921e51e88c3991c029"/><dir name="Method"><file name="Abstract.php" hash="bb402c49f3da66f7bd4baf5b215f989e"/><file name="Interface.php" hash="1bab00e6e0356184c3f213acfce601da"/><file name="Shopgate.php" hash="af8e1ade067d1b9fb0e5b493ad814576"/><file name="Usps.php" hash="14969ce8762a7fa5e5e5d6bc64285f52"/></dir></dir><file name="Mapper.php" hash="b93ac160c4c176c77887a23593ab058c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Attribute.php" hash="8dfc3964b750aebac8db5f584559d5c3"/><dir name="Description"><file name="List.php" hash="c83f37019461ab7adc86a57400f63761"/></dir><file name="Description.php" hash="d0dcebc9d75fdb0bb80f3c3faba6397c"/><file name="Enabledisable.php" hash="7f189c26cd1c2c7f1cd6dc56379798b5"/><dir name="Item"><file name="Sort.php" hash="2dc75f9c1e8baaddbf895945acd2ff19"/></dir><dir name="Product"><file name="Image.php" hash="e9d0e7c5769446290094d2b67e5c468b"/><file name="Names.php" hash="98de8ee7ae9b3c504eb087f5e09d3afd"/><file name="Types.php" hash="007b54c2e095691380c21a5ab62846fc"/></dir><dir name="Redirect"><file name="Types.php" hash="c5d3c44ab1f5ba74224b41836b14afff"/></dir><file name="Server.php" hash="b569e24076ca68c4063729fb708b666a"/><file name="Store.php" hash="cb2998beb43ba8afeeaa5b64a5b5e946"/><dir name="Validation"><file name="Config.php" hash="77382cb829f4b3b50120d7e1359e0051"/></dir><dir name="Variation"><dir name="Export"><file name="Type.php" hash="bb19358c2c2fbee3cb9776f3540faa20"/></dir></dir><dir name="Weight"><file name="Units.php" hash="10af44d670bcfdb559f4196c7006e893"/></dir></dir></dir></dir></dir><file name="changelog.txt" hash="67f39836bbe7a9a327591c480bdae3b5"/><dir name="controllers"><dir name="Adminhtml"><file name="ShopgateController.php" hash="cd2305edb0348a15f956d20d39433778"/></dir><file name="FrameworkController.php" hash="f901e83f2033e6a1604b389e217d4127"/></dir><dir name="etc"><file name="adminhtml.xml" hash="d1f345ca5fc8b0619234f9c270fb84a7"/><file name="config.xml" hash="6727161582aa5c4f2f7818b153bca346"/><file name="system.xml" hash="eae99f8132b6316c0abdc0ec7440ddb6"/></dir><file name="licence.txt" hash="dec6ca25c420b36a2e400caf1541c923"/><dir name="sql"><dir name="shopgate_setup"><file name="mysql4-install-0.1.0.php" hash="069abba038757da43b2ca6c5a0c82aba"/><file name="mysql4-install-2.1.45.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-install-2.2.0.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="cc637fc1bc511e745f02a56d0b36e3be"/><file name="mysql4-upgrade-1.0.5-1.0.7.php" hash="1e800d9d235b817bf5be698288bc0129"/><file name="mysql4-upgrade-2.1.44-2.1.45.php" hash="134d0b665746c61d364f6fd93d83f46c"/><file name="mysql4-upgrade-2.1.49-2.1.50.php" hash="e0fd395bb9c25c0e544c455186cfe7c9"/><file name="mysql4-upgrade-2.4.28-2.4.29.php" hash="9c8c868ce90e42b56182b23b78d6fbe7"/><file name="mysql4-upgrade-2.4.29-2.4.30.php" hash="ca3ee1e2f337bcea26264a17f603548e"/><file name="mysql4-upgrade-2.7.5-2.8.0.php" hash="34393a58a0b4ec90b4e618d3ff4cc565"/><file name="mysql4-upgrade-2.9.15-2.9.16.php" hash="980e7cc83f912ef4f630ef8d1cb964d1"/><file name="mysql4-upgrade-2.9.4-2.9.5.php" hash="89a34b7b9ad2eec492055e52e7e75049"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir><dir name="de_CH"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir><dir name="de_AT"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="shopgate"><file name="logo.png" hash="b7139047ecc90b15a5710ab0fe77fc81"/><file name="logo_big.png" hash="b98bfcf09766589506a1cca24ca47972"/><file name="logo_small.png" hash="7abf7f774c592eb582c2856e027af798"/><file name="oauth_connect.js" hash="8e5c77d9ad1354f826445f03c91008f4"/><file name="shopgate_admin.css" hash="0fbc07171267b9fb5dba7004a0858f66"/><file name="target.js" hash="80484a4dae515f708c97545d9959673a"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Shopgate"><dir name="assets"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="js_header.html" hash="f9865eae13ed93fd41788aa27b0391ee"/><file name="link_tag.html" hash="4798d67e30ef4a76dd8435326421673d"/><file name="mobile_header.html" hash="17616650e160eaccd24e25729396c5a9"/></dir><file name="changelog.txt" hash="bbbfde8d30b9ec1bca95ecfd929a8ee8"/><dir name="classes"><file name="apis.php" hash="309c70f84eaeebc7a873cc1b2ccaf144"/><file name="configuration.php" hash="a4bd69f9e18dd2d0ebd704468e8a8ffc"/><file name="core.php" hash="864b6373749c596b5fde9b29233baa5e"/><file name="customers.php" hash="c6806e5296caa93709f300030f224188"/><file name="external_orders.php" hash="faa434d0a099f5d415d0aec2e3788f46"/><dir name="helper"><file name="DataStructure.php" hash="ece9e9f855756777f543d090f5ecc710"/><file name="Pricing.php" hash="fd4c74999abc3bfa05fd74994a2ce78f"/><file name="String.php" hash="10c9396b2975bf0bde86f171932c3074"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="items.php" hash="93d57ff12a362b52b53daa8ef67949e9"/><dir name="models"><file name="Abstract.php" hash="a32633283eb403a55a166bbad70b3e2f"/><file name="AbstractExport.php" hash="f265f9e906208e1799994d117582be20"/><file name="XmlEmptyObject.php" hash="d6cfdae3bdd858d4f10fcebdb542f533"/><file name="XmlResultObject.php" hash="e104dedb2b8fa4579b7a93da2cb58dc0"/><dir name="catalog"><file name="Attribute.php" hash="28d8f3bc6c416661d1eaa77726ba7009"/><file name="AttributeGroup.php" hash="0270086ec8006ee8231c6b0baa8d6034"/><file name="Category.php" hash="fcba83c074f7559f44bc62154f7063e0"/><file name="CategoryPath.php" hash="475869aef74c567c8569ee9953210faa"/><file name="Identifier.php" hash="d9a3b16d1fcdec641ca2b0fd77fbd625"/><file name="Input.php" hash="5ac87958a42f38122fba6e472c2d643e"/><file name="Manufacturer.php" hash="cbfd53577f0f8dfccfb70dc801fc9e15"/><file name="Option.php" hash="7cb3f72a8c1fb4505cde70d1b3d72013"/><file name="Price.php" hash="63587038abdac8fbe74428da7c433e28"/><file name="Product.php" hash="13ab692ab92566f3ed1dcebe8ef612a5"/><file name="Property.php" hash="5967f0403a606a27ea4fec71a8402327"/><file name="Relation.php" hash="263cde539af500af911baec4e354079e"/><file name="Review.php" hash="72c94cb1f2a54bafffdb5672d87ecd4d"/><file name="Shipping.php" hash="e4cabbc096e8aed1ffa98a23abb47b2d"/><file name="Stock.php" hash="f157bc07057803b571018df2db0fefa6"/><file name="Tag.php" hash="39e7b845ab157d2f707707576e868d64"/><file name="TierPrice.php" hash="9dd757c9c3d193944a5727fbe5cf4704"/><file name="Validation.php" hash="0be71640c1df60ab809347194ec66457"/><file name="Visibility.php" hash="d60c6b8ec486da4afdc46a00d65ad172"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="media"><file name="Attachment.php" hash="c074ef3426c2506350cbf5ff0133c89d"/><file name="Image.php" hash="3640490564b897d069c9c4180fb23649"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir></dir><file name="orders.php" hash="2b4cccde29c5a4ee2395625540a16f88"/><file name="redirect.php" hash="568c682f66c4434188c604158029db57"/></dir><dir name="config"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="de19abc78063ea9a4112964c79946f1c"/><file name="shopgate.php" hash="f0482cc4027105bb5d423ddde01e7ac7"/><file name="shopgate_license.txt" hash="21fbb2f00b832416916b27c5e3f5d6d1"/><dir name="temp"><dir name="cache"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/><dir name="logs"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir></dir><dir name="vendors"><file name="2d_is.php" hash="087decaca87ee85d548d8caaa43f1212"/><file name="BSD_license.txt" hash="2df4dd93533ca2c19f6f2d601bc3e0d5"/><file name="JSON.php" hash="c8398aeb5c3c71aeb1813389d9a030af"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name=".htaccess" hash="34479bc8d9df775c38a980ecaf6f3f4b"/></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="26e50f9810daeb36b45f850272a86c91"/></dir><dir name="template"><dir name="shopgate"><file name="mobile_website.phtml" hash="229cbefd12ea77676f8af9c7159528ea"/><dir name="payment"><file name="mobile_payment.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/><file name="shopgate.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="a38cee3696126b6bb43df33a0d3f5271"/></dir><dir name="template"><dir name="shopgate"><dir name="oauth"><dir name="config"><file name="connector.phtml" hash="478c309bdde7834bf20a48b65a4699fb"/></dir><dir name="connect"><file name="info.phtml" hash="4f75dc4311616081873a7d416b96c1c2"/><file name="overlay.phtml" hash="2a17d5b6ff8023568437b194f8a9d482"/></dir><file name="connect.phtml" hash="6956aa22eedf549c4565304b4e4a4ab9"/><file name="data.phtml" hash="09b4c5d83863f104db7a018510cdb315"/><file name="disconnect.phtml" hash="2858cebe9004c9fb5764f79faee46f87"/><file name="manage.phtml" hash="1f99255efbce4dbdc1ee781820d455b8"/></dir><dir name="payment"><file name="mobile_payment.phtml" hash="2892e0dd200db6c0ffa5fa83f87d838c"/><file name="shopgate.phtml" hash="5457030290f8aa08c2711a8bd27c3dee"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>shopgate_module</name>
4
+ <version>2.9.21</version>
5
  <stability>stable</stability>
6
  <license uri="http://wiki.shopgate.com/Magento/de">Shopgate Plugin</license>
7
  <channel>community</channel>
10
  <description>Shopgate Plugin</description>
11
  <notes>Shopgate Modul</notes>
12
  <authors><author><name>Peter Liebig</name><user>Shopgate</user><email>p.liebig@me.com</email></author><author><name>Stephan Recknagel</name><user>Shopgate</user><email>mail@recknagel.io</email></author><author><name>Andr&#xE9; Kraus</name><user>Shopgate</user><email>andre.kraus83@googlemail.com</email></author></authors>
13
+ <date>2015-09-17</date>
14
+ <time>14:35:01</time>
15
+ <contents><target name="mageetc"><dir name="modules"><file name="Shopgate_Framework.xml" hash="3fb114204bd038da711122083876f161"/></dir></target><target name="magecommunity"><dir name="Shopgate"><dir name="Framework"><dir name="Block"><dir name="Adminhtml"><dir name="OAuth"><dir name="Config"><file name="Connector.php" hash="890d04b08bf692c12b02f29abf813f83"/></dir><dir name="Connect"><dir name="Add"><file name="Form.php" hash="45685099b41a46919a9900d22c30b711"/></dir><file name="Info.php" hash="ee7bbc837bf3f298791b8496f2d6d565"/><file name="Overlay.php" hash="a6496896dccb5898b36e3e65585650f4"/></dir><file name="Connect.php" hash="cc7e43ba447b6338f6c50ccaa5fd073a"/><file name="Data.php" hash="1903e819d5d16abba4c37d7823909260"/><file name="Disconnect.php" hash="2545e56bca73577ba5f73fce0501624a"/><dir name="Manage"><file name="Grid.php" hash="78357b78fed0e8b3535a7e505c8f6425"/></dir><file name="Manage.php" hash="a99e12333f7c27771ca42a0764108639"/></dir></dir><file name="Info.php" hash="3dd73900370546289a6033942a0c0528"/><dir name="Payment"><file name="MobilePayment.php" hash="7de8af7ec46e107c46a73efaf2a02034"/><file name="Shopgate.php" hash="67af406fa04da70461b3580b8adea89d"/></dir><dir name="Totals"><file name="AbstractPaymentFee.php" hash="5e36647f536d1c6daba33cd6e0a5e302"/><file name="CreditmemoPaymentFee.php" hash="4a287f54554d8d45772db386f54a45e7"/><file name="InvoicePaymentFee.php" hash="818164536fe249016af3046aef73f181"/><file name="OrderPaymentFee.php" hash="55c8f62c4da8014c99414ece9cd125c4"/></dir><file name="Version.php" hash="2f45712bb20635ac17d8bdee213819e5"/></dir><dir name="Helper"><dir name="Billsafe"><file name="Order.php" hash="474c2aa15f352224c11c8ab17e921c9d"/></dir><file name="Config.php" hash="2c736f067f5d69855e1523504a7afe36"/><file name="Coupon.php" hash="519697b13040ddfbc8f460b6034c8779"/><file name="Customer.php" hash="9317086e730aedc99c7c187ebf898a7b"/><file name="Data.php" hash="fee342e3b3c84fe574f2335a800386f2"/><file name="Debug.php" hash="82c85038046fc9b2f994df18b7f202a6"/><file name="Export.php" hash="205dee2b07a96990efdc7ecca08cf075"/><dir name="Import"><file name="Order.php" hash="bf2e1bbee6fb46ec22e5c6a1ed0a0404"/></dir><file name="Install.php" hash="57f42693c9a6ddb18b8a25a2a5da7cf8"/><dir name="Payment"><file name="Abstract.php" hash="207f16aab8224761b7d91802b9fb10ee"/><file name="Payone.php" hash="ddced5955ff55105d8b3c91e0fcb0778"/><file name="Wspp.php" hash="4214f1d3332cd189cee3df48108ebd8d"/></dir><file name="Sales.php" hash="d6c50ee8b07947680a7ef6202de526a3"/></dir><dir name="Model"><dir name="Carrier"><file name="Fix.php" hash="b29aaf2603b9bb18bb4452f4a8f94ef4"/></dir><dir name="Cataloginventory"><file name="Stock.php" hash="42ffccc3d644f8b04358a3e76bda32dd"/></dir><dir name="Compiler"><file name="Process.php" hash="740452b7bc234417788db1f1ee892ef5"/></dir><file name="Config.php" hash="30c638d50ff53e16bff9cfeb8285d170"/><file name="Customer.php" hash="97ed53ca3f69c7a24fb40cce11f58721"/><dir name="DreamRobot"><file name="Observer.php" hash="7b4e8922a46f5974b8edf359c632a9d3"/></dir><dir name="Export"><file name="Abstract.php" hash="9e86667845e8cebd8e0ccb8879b70b6d"/><dir name="Category"><file name="Csv.php" hash="72f4f58345d95f8f621783bedf2a092e"/><file name="Xml.php" hash="12ab046b9a000636ed4ed5eefb770af2"/></dir><file name="Category.php" hash="5a41141ecec85669674ec818c4661cdc"/><dir name="Customer"><file name="Orders.php" hash="98f11380fdc5d83bd8d04fbc8a00041d"/></dir><file name="Customer.php" hash="2711476c9538a22242d1511649ec77f1"/><dir name="Product"><file name="Csv.php" hash="579821eee1466a94b6aa1daf8fdc83c7"/><file name="Xml.php" hash="841aa15d8e195bc1ded566290caa8dd9"/></dir><file name="Product.php" hash="d9c807df57af3f1cced2d9bb433338ec"/><dir name="Review"><file name="Csv.php" hash="5c72f802a2de256ca1ec8dab1b75b291"/><file name="Xml.php" hash="bc16f60d9ed20705422921955a5071fe"/></dir><file name="Review.php" hash="ad6f548035a30da642d2459354acbb40"/><file name="Settings.php" hash="0bb22a0cbf0d89392a73af161e9c6c3a"/></dir><file name="Feed.php" hash="fb99cd7b2b3d94908848b722df666b67"/><dir name="Mobile"><file name="Redirect.php" hash="637ba202475a901806d3ba822d9cdc1e"/></dir><dir name="Mysql4"><dir name="Core"><file name="Core.php" hash="fc129d4d929f83e8389367b9c5d6d5e1"/></dir><dir name="Customer"><file name="Collection.php" hash="89d31997abc3c2145f74e02dd5456a7c"/></dir><file name="Customer.php" hash="d5f460b2d5bfa87b8368a8a6c6b51115"/><file name="Product.php" hash="6a99b3d0de44dfbd132ce9caca19034e"/><dir name="Shopgate"><dir name="Order"><file name="Collection.php" hash="e180ba816be47239828bea65cd5f8445"/></dir><file name="Order.php" hash="c297847e39ad01307dba4a69c13445f2"/></dir></dir><file name="Observer.php" hash="da10a5dddba99720bea687ec4fa94c57"/><dir name="Payment"><dir name="Abstract"><file name="AbstractPayol.php" hash="cd01113947410cfc54be61e2daa60aeb"/></dir><file name="Abstract.php" hash="b824e58f30ffce15e74a6e8e331ab46f"/><file name="Amazon.php" hash="c90003246111cf066270015b41cb7ff9"/><file name="Authorize.php" hash="6f747fb258e59137cc5dadc179664246"/><file name="Billsafe.php" hash="1c97ec04356ae4ed25c1492a317eaaff"/><dir name="Cc"><file name="Abstract.php" hash="2b291ac14d9e1e3120416d6aeb4c3487"/><file name="Authn.php" hash="c38935ef46ad1ca1a9c475e23bf2a3fa"/><file name="AuthnAbstract.php" hash="191c01a96778b45c5128812f66049b07"/><dir name="Authncim"><file name="Gateway.php" hash="1f8df3fe0e50f4729bebfc1d4763b015"/><file name="Method.php" hash="aa6916548a71848ad7c83e4f053bc27e"/></dir><file name="Authncim.php" hash="89f1c2a0bb59d08c895da84c14c325ff"/><file name="Usaepay.php" hash="53297c43d694f4bfb5296a29ad10c4cb"/></dir><file name="Cc.php" hash="7fe7850acbe549859442ec9facb9b550"/><file name="Express.php" hash="e90c6eb120a0aec969f63496b4fb1063"/><file name="Factory.php" hash="18e6a9df111781de310fc72b339f0292"/><file name="Generic.php" hash="666f06186d1bb96b94af287d221e27c5"/><dir name="Ins"><file name="Payol.php" hash="b6961c4ab1fb9a95ab2d470aeaad8d29"/></dir><file name="Interface.php" hash="151002297bcce208b85bd260c7a25b47"/><dir name="Inv"><file name="Payol.php" hash="6d1c28b2ea2fb2fd63e09712f4533c77"/></dir><file name="MobilePayment.php" hash="59554c65e778831f6add450e0f846f42"/><dir name="Payone"><file name="Abstract.php" hash="d38bac40669498b6d3eb1f89de7a70f8"/><file name="BankAbstract.php" hash="fa4ef2c918868001c5f1df97cb4bc400"/><file name="Cc.php" hash="11e68f50ea43bf73b31c53efea0cbc4d"/><file name="Dbt.php" hash="7f098887ba6f12669a18f62d7885de6d"/><file name="Gp.php" hash="7686149aedae93b0d5eef0b06fc08d7e"/><file name="Idl.php" hash="57d144744565ff644db917cab7ef689e"/><file name="Inv.php" hash="91d893ee5eacdc00ff8fbb3f1b750894"/><file name="Klv.php" hash="f82fb0cc874ea8f1121f282372e4e404"/><file name="Pp.php" hash="93004cedd66ab4bf31e5bb8747b4a606"/><file name="Prp.php" hash="76079d7e154c3a982b1d117793942c3a"/><file name="Sue.php" hash="31280f2c8abf21f0a582b656fb0d38ad"/></dir><dir name="Pp"><file name="Abstract.php" hash="e6c5afcb0653d2ec3de3bd5d1442b355"/><file name="Wspp.php" hash="5c4d194c7814416491892f4cbe272d9f"/></dir><file name="Pp.php" hash="c521bbb32aed313c0170dd6e8361f934"/><file name="Router.php" hash="1df693718ebb4b71d2ae790678927194"/><file name="Shopgate.php" hash="f0d59e2a4369f7a22e47cf9c3bb9c44a"/><dir name="Simple"><file name="Billsafe.php" hash="939f38d1f3938be6f43c338a3204310f"/><dir name="Cod"><file name="Abstract.php" hash="7bcb77e2906200f8a7576a24d782d541"/><file name="Msp.php" hash="da63e630e339f73b1047f9be2fc13a80"/><file name="Native.php" hash="a18abef66d98a08e988bafa1564dfaa2"/><file name="Phoenix107.php" hash="958990a7ec99a4c102b335e68db4f563"/><file name="Phoenix108.php" hash="912cb903da51a2056f03d75c566dbc7b"/></dir><file name="Cod.php" hash="0688749cd9110544d01e5c1130be3005"/><file name="Invoice.php" hash="a86d8500a0dee3056e56b0ccfb1fae3d"/><file name="Mws.php" hash="66b68310d396e83423aefbd6e266c7ff"/><dir name="Paypal"><file name="Express.php" hash="e2d33dbc600503d9a7541ab53df60662"/><file name="Standard.php" hash="5281ddc90f8f560b6cffa2e97fe08304"/><file name="Standard1400.php" hash="d80d26e8189b12c9796929dfad77f6c8"/></dir><file name="Paypal.php" hash="03a7c4b8e193d262aa2dbd51cdac3ab8"/><dir name="Prepay"><file name="Abstract.php" hash="89767868690e40bc3d96f8bee4484880"/><file name="Checkmo.php" hash="781dd32522f7bc97c62313cb76429633"/><file name="Native.php" hash="48542e3e9ad2bafb504a200a6529eccc"/><file name="Phoenix.php" hash="7118e404d6f1755cdab35dbc2c8f058d"/></dir><file name="Prepay.php" hash="eb79f9f8469652e91b11fd5d714db84f"/><file name="Shopgate.php" hash="f21b1608add7e193bed0ccf0004de3a8"/><dir name="Sue"><file name="Abstract.php" hash="d07d6b3a5702b458ed4e5f4574e3ced9"/><file name="Sue118.php" hash="759f4a7e103f9f9f4457aa1d0694c26d"/><file name="Sue300.php" hash="c804244222e5fe67ead8916c5c1ffef1"/></dir><file name="Sue.php" hash="6802dc052e2088957329689b003a16f8"/></dir><file name="Simple.php" hash="e4f0b3cd8282c2661cb19eabdb77d075"/><file name="Usaepay.php" hash="50e049e1cae29abbd7027cf842878540"/><file name="Wspp.php" hash="23b0420ff59dc0bfa7940bf0f07562fc"/></dir><dir name="Resource"><dir name="Core"><file name="Config.php" hash="0ee7969070ab0dddfdd3bb2cc404cd3c"/></dir><dir name="Customer"><file name="Collection.php" hash="2ddb7db1355100bc9e86f966f1d4612c"/></dir><file name="Customer.php" hash="69848842d4be07be4d66d700a7b6695b"/><file name="Product.php" hash="5c62ef4cfc3f0ebbbe5a9a46d1c25dfa"/><file name="Setup.php" hash="7b5cc0f99c857e9292638c1fbeb43969"/><dir name="Shopgate"><dir name="Connection"><file name="Collection.php" hash="f294d4239cee276b7e3c5e6e2109de66"/><dir name="Grid"><file name="Collection.php" hash="d499139d50dffbfe1b1e868b5aeeee0f"/></dir></dir><dir name="Order"><file name="Collection.php" hash="2c18a4ca248ca8719e7ead85f0c57619"/></dir><file name="Order.php" hash="1942eeb8268781c499f8cad384081b02"/></dir></dir><dir name="Sales"><dir name="Creditmemo"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="614d1e96cd2c97e0fcd7db86ee3aad89"/></dir></dir><dir name="Invoice"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="c4400832de32367067fd5396bcf7bfc8"/></dir></dir><dir name="Quote"><dir name="Address"><dir name="Total"><file name="ShopgatePaymentFee.php" hash="7a309b69fb20fb6fcae5f3b77f5b7ba9"/></dir></dir></dir></dir><dir name="Search"><dir name="Shopgate"><file name="Order.php" hash="94dcf366528641687b89ab0c9f973ef5"/></dir></dir><dir name="Shopgate"><dir name="Cart"><dir name="Validation"><dir name="Stock"><file name="Bundle.php" hash="7cc03239fbefe3a8e71755a178299944"/><file name="Simple.php" hash="9da9891d52c89e0772af5bcea7581ae8"/></dir><file name="Stock.php" hash="03d8139aa9840d707c8e4cb991bca20f"/></dir></dir><file name="Connection.php" hash="ff0da764d444103f5892ef21e23ba353"/><file name="Order.php" hash="89e0e425fc48282c1b46d3078b294be1"/><file name="Plugin.php" hash="4008f0c05f243c356f7b7b6132737d46"/><dir name="Shipping"><dir name="Mapper"><file name="Carrier.php" hash="ef57904070fdf7921e51e88c3991c029"/><dir name="Method"><file name="Abstract.php" hash="bb402c49f3da66f7bd4baf5b215f989e"/><file name="Interface.php" hash="1bab00e6e0356184c3f213acfce601da"/><file name="Shopgate.php" hash="af8e1ade067d1b9fb0e5b493ad814576"/><file name="Usps.php" hash="14969ce8762a7fa5e5e5d6bc64285f52"/></dir></dir><file name="Mapper.php" hash="b93ac160c4c176c77887a23593ab058c"/></dir></dir><dir name="System"><dir name="Config"><dir name="Source"><file name="Attribute.php" hash="8dfc3964b750aebac8db5f584559d5c3"/><dir name="Description"><file name="List.php" hash="c83f37019461ab7adc86a57400f63761"/></dir><file name="Description.php" hash="d0dcebc9d75fdb0bb80f3c3faba6397c"/><file name="Enabledisable.php" hash="7f189c26cd1c2c7f1cd6dc56379798b5"/><dir name="Item"><file name="Sort.php" hash="2dc75f9c1e8baaddbf895945acd2ff19"/></dir><dir name="Product"><file name="Image.php" hash="e9d0e7c5769446290094d2b67e5c468b"/><file name="Names.php" hash="98de8ee7ae9b3c504eb087f5e09d3afd"/><file name="Types.php" hash="007b54c2e095691380c21a5ab62846fc"/></dir><dir name="Redirect"><file name="Types.php" hash="c5d3c44ab1f5ba74224b41836b14afff"/></dir><file name="Server.php" hash="b569e24076ca68c4063729fb708b666a"/><file name="Store.php" hash="cb2998beb43ba8afeeaa5b64a5b5e946"/><dir name="Validation"><file name="Config.php" hash="77382cb829f4b3b50120d7e1359e0051"/></dir><dir name="Variation"><dir name="Export"><file name="Type.php" hash="bb19358c2c2fbee3cb9776f3540faa20"/></dir></dir><dir name="Weight"><file name="Units.php" hash="10af44d670bcfdb559f4196c7006e893"/></dir></dir></dir></dir></dir><file name="changelog.txt" hash="768550ab07de9ad19647620a71bf59e2"/><dir name="controllers"><dir name="Adminhtml"><file name="ShopgateController.php" hash="cd2305edb0348a15f956d20d39433778"/></dir><file name="FrameworkController.php" hash="2aec53db3cedaf901ef6199dc000cda2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="d1f345ca5fc8b0619234f9c270fb84a7"/><file name="config.xml" hash="2bb1e98271d3ed3cd8368d23572548ec"/><file name="system.xml" hash="eae99f8132b6316c0abdc0ec7440ddb6"/></dir><file name="licence.txt" hash="dec6ca25c420b36a2e400caf1541c923"/><dir name="sql"><dir name="shopgate_setup"><file name="mysql4-install-0.1.0.php" hash="069abba038757da43b2ca6c5a0c82aba"/><file name="mysql4-install-2.1.45.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-install-2.2.0.php" hash="eddddf157e55a87edc77361dde564463"/><file name="mysql4-upgrade-0.1.0-0.1.1.php" hash="cc637fc1bc511e745f02a56d0b36e3be"/><file name="mysql4-upgrade-1.0.5-1.0.7.php" hash="1e800d9d235b817bf5be698288bc0129"/><file name="mysql4-upgrade-2.1.44-2.1.45.php" hash="134d0b665746c61d364f6fd93d83f46c"/><file name="mysql4-upgrade-2.1.49-2.1.50.php" hash="e0fd395bb9c25c0e544c455186cfe7c9"/><file name="mysql4-upgrade-2.4.28-2.4.29.php" hash="9c8c868ce90e42b56182b23b78d6fbe7"/><file name="mysql4-upgrade-2.4.29-2.4.30.php" hash="ca3ee1e2f337bcea26264a17f603548e"/><file name="mysql4-upgrade-2.7.5-2.8.0.php" hash="34393a58a0b4ec90b4e618d3ff4cc565"/><file name="mysql4-upgrade-2.9.15-2.9.16.php" hash="980e7cc83f912ef4f630ef8d1cb964d1"/><file name="mysql4-upgrade-2.9.4-2.9.5.php" hash="89a34b7b9ad2eec492055e52e7e75049"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="de_DE"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir><dir name="de_CH"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir><dir name="de_AT"><file name="Shopgate_Framework.csv" hash="bdf9f8ed6d5127744440bfd72bb09e06"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="shopgate"><file name="logo.png" hash="b7139047ecc90b15a5710ab0fe77fc81"/><file name="logo_big.png" hash="b98bfcf09766589506a1cca24ca47972"/><file name="logo_small.png" hash="7abf7f774c592eb582c2856e027af798"/><file name="oauth_connect.js" hash="8e5c77d9ad1354f826445f03c91008f4"/><file name="shopgate_admin.css" hash="0fbc07171267b9fb5dba7004a0858f66"/><file name="target.js" hash="80484a4dae515f708c97545d9959673a"/></dir></dir></dir></dir></target><target name="magelib"><dir name="Shopgate"><dir name="assets"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="js_header.html" hash="f9865eae13ed93fd41788aa27b0391ee"/><file name="link_tag.html" hash="4798d67e30ef4a76dd8435326421673d"/><file name="mobile_header.html" hash="17616650e160eaccd24e25729396c5a9"/></dir><file name="changelog.txt" hash="c125d7df1909c3adc1edc944e8bce8be"/><dir name="classes"><file name="apis.php" hash="61ceeade474c9dffa98c9c15691cae7f"/><file name="configuration.php" hash="66de7aa2f3e01418c1e070057ac9a028"/><file name="core.php" hash="bb140813e98ccd8714f6c88cececba4e"/><file name="customers.php" hash="3bc00737d0cfd788c24f52b303babd8a"/><file name="external_orders.php" hash="faa434d0a099f5d415d0aec2e3788f46"/><dir name="helper"><file name="DataStructure.php" hash="ece9e9f855756777f543d090f5ecc710"/><file name="Pricing.php" hash="fd4c74999abc3bfa05fd74994a2ce78f"/><file name="String.php" hash="10c9396b2975bf0bde86f171932c3074"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><file name="items.php" hash="7a361efd0a5327c0ad0f0745c1b74cc0"/><dir name="models"><file name="Abstract.php" hash="a32633283eb403a55a166bbad70b3e2f"/><file name="AbstractExport.php" hash="f265f9e906208e1799994d117582be20"/><file name="XmlEmptyObject.php" hash="d6cfdae3bdd858d4f10fcebdb542f533"/><file name="XmlResultObject.php" hash="e104dedb2b8fa4579b7a93da2cb58dc0"/><dir name="catalog"><file name="Attribute.php" hash="28d8f3bc6c416661d1eaa77726ba7009"/><file name="AttributeGroup.php" hash="0270086ec8006ee8231c6b0baa8d6034"/><file name="Category.php" hash="fcba83c074f7559f44bc62154f7063e0"/><file name="CategoryPath.php" hash="475869aef74c567c8569ee9953210faa"/><file name="Identifier.php" hash="d9a3b16d1fcdec641ca2b0fd77fbd625"/><file name="Input.php" hash="77df45fd89aec19565a5fae7178205bb"/><file name="Manufacturer.php" hash="0e9463bf758f921d4f31d429e12996b2"/><file name="Option.php" hash="fd95fe72bff985ae0b2861da115e2468"/><file name="Price.php" hash="63587038abdac8fbe74428da7c433e28"/><file name="Product.php" hash="13ab692ab92566f3ed1dcebe8ef612a5"/><file name="Property.php" hash="5967f0403a606a27ea4fec71a8402327"/><file name="Relation.php" hash="263cde539af500af911baec4e354079e"/><file name="Review.php" hash="72c94cb1f2a54bafffdb5672d87ecd4d"/><file name="Shipping.php" hash="e4cabbc096e8aed1ffa98a23abb47b2d"/><file name="Stock.php" hash="f157bc07057803b571018df2db0fefa6"/><file name="Tag.php" hash="39e7b845ab157d2f707707576e868d64"/><file name="TierPrice.php" hash="9dd757c9c3d193944a5727fbe5cf4704"/><file name="Validation.php" hash="0be71640c1df60ab809347194ec66457"/><file name="Visibility.php" hash="d60c6b8ec486da4afdc46a00d65ad172"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/><dir name="media"><file name="Attachment.php" hash="c074ef3426c2506350cbf5ff0133c89d"/><file name="Image.php" hash="3640490564b897d069c9c4180fb23649"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir></dir><file name="orders.php" hash="e70ccf1c0c0b1a7073c54fa67d961b3c"/><file name="redirect.php" hash="568c682f66c4434188c604158029db57"/></dir><dir name="config"><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name="index.php" hash="de19abc78063ea9a4112964c79946f1c"/><file name="shopgate.php" hash="f0482cc4027105bb5d423ddde01e7ac7"/><file name="shopgate_license.txt" hash="21fbb2f00b832416916b27c5e3f5d6d1"/><dir name="temp"><dir name="cache"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/><dir name="logs"><file name="index.php" hash="7573387748996e2dd9e02a237056f158"/></dir></dir><dir name="vendors"><file name="2d_is.php" hash="087decaca87ee85d548d8caaa43f1212"/><file name="BSD_license.txt" hash="2df4dd93533ca2c19f6f2d601bc3e0d5"/><file name="JSON.php" hash="c8398aeb5c3c71aeb1813389d9a030af"/><file name="index.php" hash="bfc5021f1ee9b67f78a0fc9fdab6c558"/></dir><file name=".htaccess" hash="34479bc8d9df775c38a980ecaf6f3f4b"/></dir></target><target name="mage"><dir name="app"><dir name="design"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="608ba89093ef89e1c182cd6085dbf3b1"/></dir><dir name="template"><dir name="shopgate"><file name="mobile_website.phtml" hash="229cbefd12ea77676f8af9c7159528ea"/><dir name="payment"><file name="mobile_payment.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/><file name="shopgate.phtml" hash="1e18979028fb13e99af7c595c75a5d27"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="shopgate.xml" hash="8bab300fb25a48cd2c8119ae1942ed54"/></dir><dir name="template"><dir name="shopgate"><dir name="oauth"><dir name="config"><file name="connector.phtml" hash="478c309bdde7834bf20a48b65a4699fb"/></dir><dir name="connect"><file name="info.phtml" hash="4f75dc4311616081873a7d416b96c1c2"/><file name="overlay.phtml" hash="2a17d5b6ff8023568437b194f8a9d482"/></dir><file name="connect.phtml" hash="6956aa22eedf549c4565304b4e4a4ab9"/><file name="data.phtml" hash="09b4c5d83863f104db7a018510cdb315"/><file name="disconnect.phtml" hash="2858cebe9004c9fb5764f79faee46f87"/><file name="manage.phtml" hash="1f99255efbce4dbdc1ee781820d455b8"/></dir><dir name="payment"><file name="mobile_payment.phtml" hash="2892e0dd200db6c0ffa5fa83f87d838c"/><file name="shopgate.phtml" hash="5457030290f8aa08c2711a8bd27c3dee"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>