mPAY24 - Version 1.4.0

Version Notes

The whole extension was updated:

1. The communication is realised with the help of the mPAY24 PHP API and not with Zend Soap Client.

2. The newest mPAY24 SOAP (v. 1.5) is used

3. Zhe backend updates the payment systems and all the configurations everytime the mPAY24 configurations are saved

4. There is a new possibility to choose the status for the orders that were paid (mPAY24 status - BILLED)

5. A new debug possibility was implmented

6. The function 'auto clearing' for credit card payments can and should be set directly in the extension.

7. A bug in the billing address mode functionallity was solved.

8. There was implemnted a possibility to choose whether the free (of charge) products should be shown in the mPAY24 pay page or not.

9. The HIGHLIGHT: the customers can choose the payment system (VISA, MasterCard, eps, etc.) directly by the checkout process. There are two different templates you can choose from in your backend: an area with all the payment methods or a drop-down list!

Download this release

Release Info

Developer Magento Core Team
Extension mPAY24
Version 1.4.0
Comparing to
See all releases


Code changes from version 1.2.2 to 1.4.0

Files changed (137) hide show
  1. app/code/community/Mpay24/Mpay24/Block/Adminhtml/System/Config/Fieldset/Fieldset.php +95 -59
  2. app/code/community/Mpay24/Mpay24/Block/Adminhtml/System/Config/Fieldset/Global.php +0 -195
  3. app/code/community/Mpay24/Mpay24/Block/Form.php +3 -6
  4. app/code/community/Mpay24/Mpay24/Block/Form/Cc.php +0 -103
  5. app/code/community/Mpay24/Mpay24/Block/Form/Elv.php +0 -58
  6. app/code/community/Mpay24/Mpay24/Block/Form/Paybox.php +0 -57
  7. app/code/community/Mpay24/Mpay24/Block/Form/Selectpayment.php +66 -7
  8. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCashTicket.php +0 -36
  9. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCb.php +0 -36
  10. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCc.php +0 -158
  11. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentElv.php +0 -36
  12. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentEps.php +0 -43
  13. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentGiropay.php +0 -36
  14. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMaestro.php +0 -36
  15. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMia.php +0 -44
  16. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMpass.php +0 -36
  17. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPaybox.php +0 -36
  18. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPaypal.php +0 -36
  19. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPsc.php +0 -36
  20. app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentQuick.php +0 -36
  21. app/code/community/Mpay24/Mpay24/Block/Info/Cc.php +0 -86
  22. app/code/community/Mpay24/Mpay24/Block/Info/Elv.php +0 -57
  23. app/code/community/Mpay24/Mpay24/Block/Info/Paybox.php +0 -61
  24. app/code/community/Mpay24/Mpay24/Block/Info/Selectpayment.php +3 -13
  25. app/code/community/Mpay24/Mpay24/Block/Mpay24.php +4 -5
  26. app/code/community/Mpay24/Mpay24/Block/ParentRedirect.php +3 -4
  27. app/code/community/Mpay24/Mpay24/Block/Redirect.php +0 -41
  28. app/code/community/Mpay24/Mpay24/Block/Update.php +0 -65
  29. app/code/community/Mpay24/Mpay24/Helper/Data.php +3 -3
  30. app/code/community/Mpay24/Mpay24/Model/Api/MDXI.xsd +406 -0
  31. app/code/community/Mpay24/Mpay24/Model/Api/MPay24Api.php +954 -0
  32. app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php +534 -0
  33. app/code/community/Mpay24/Mpay24/Model/Api/MPay24Shop.php +721 -0
  34. app/code/community/Mpay24/Mpay24/Model/Api/Mpay24.php +0 -732
  35. app/code/community/Mpay24/Mpay24/Model/Api/cacert.pem +3721 -0
  36. app/code/community/Mpay24/Mpay24/Model/Api/logs/curllog.log +0 -0
  37. app/code/community/Mpay24/Mpay24/Model/Api/logs/mPAY24log.log +0 -0
  38. app/code/community/Mpay24/Mpay24/Model/Api/orderXML.php +219 -0
  39. app/code/community/Mpay24/Mpay24/Model/Api/xmls/Example_MDXI.xml +46 -0
  40. app/code/community/Mpay24/Mpay24/Model/Cc.php +0 -206
  41. app/code/community/Mpay24/Mpay24/Model/Config.php +12 -54
  42. app/code/community/Mpay24/Mpay24/Model/Convert/Order.php +0 -39
  43. app/code/community/Mpay24/Mpay24/Model/Convert/Quote.php +0 -40
  44. app/code/community/Mpay24/Mpay24/Model/Elv.php +0 -162
  45. app/code/community/Mpay24/Mpay24/Model/Entity/Setup.php +14 -23
  46. app/code/community/Mpay24/Mpay24/Model/Method/Abstract.php +14 -30
  47. app/code/community/Mpay24/Mpay24/Model/Method/Cc.php +0 -198
  48. app/code/community/Mpay24/Mpay24/Model/Method/Selectpayment.php +36 -462
  49. app/code/community/Mpay24/Mpay24/Model/Method/Selectpayment.php.new~ +0 -493
  50. app/code/community/Mpay24/Mpay24/Model/Mpay24/Debug.php +3 -3
  51. app/code/community/Mpay24/Mpay24/Model/Mysql4/Mpay24/Debug.php +3 -3
  52. app/code/community/Mpay24/Mpay24/Model/Mysql4/Mpay24/Debug/Collection.php +3 -3
  53. app/code/community/Mpay24/Mpay24/Model/Mysql4/Setup.php +4 -4
  54. app/code/community/Mpay24/Mpay24/Model/Observer.php +79 -0
  55. app/code/community/Mpay24/Mpay24/Model/Paybox.php +0 -152
  56. app/code/community/Mpay24/Mpay24/Model/Selectpayment.php +156 -0
  57. app/code/community/Mpay24/Mpay24/Model/SelectpaymentCashTicket.php +0 -79
  58. app/code/community/Mpay24/Mpay24/Model/SelectpaymentCb.php +0 -99
  59. app/code/community/Mpay24/Mpay24/Model/SelectpaymentCc.php +0 -99
  60. app/code/community/Mpay24/Mpay24/Model/SelectpaymentElv.php +0 -80
  61. app/code/community/Mpay24/Mpay24/Model/SelectpaymentEps.php +0 -54
  62. app/code/community/Mpay24/Mpay24/Model/SelectpaymentGiropay.php +0 -49
  63. app/code/community/Mpay24/Mpay24/Model/SelectpaymentMaestro.php +0 -61
  64. app/code/community/Mpay24/Mpay24/Model/SelectpaymentMia.php +0 -54
  65. app/code/community/Mpay24/Mpay24/Model/SelectpaymentMpass.php +0 -79
  66. app/code/community/Mpay24/Mpay24/Model/SelectpaymentPaybox.php +0 -78
  67. app/code/community/Mpay24/Mpay24/Model/SelectpaymentPaypal.php +0 -79
  68. app/code/community/Mpay24/Mpay24/Model/SelectpaymentPsc.php +0 -48
  69. app/code/community/Mpay24/Mpay24/Model/SelectpaymentQuick.php +0 -49
  70. app/code/community/Mpay24/Mpay24/Model/Session.php +5 -7
  71. app/code/community/Mpay24/Mpay24/Model/Source/BillAddr.php +9 -11
  72. app/code/community/Mpay24/Mpay24/Model/Source/Cctype.php +0 -47
  73. app/code/community/Mpay24/Mpay24/Model/Source/ClearingAction.php +10 -9
  74. app/code/community/Mpay24/Mpay24/Model/Source/ElvCountryAction.php +0 -45
  75. app/code/community/Mpay24/Mpay24/Model/Source/Elvtype.php +0 -45
  76. app/code/community/Mpay24/Mpay24/Model/Source/EpsTypesAction.php +0 -54
  77. app/code/community/Mpay24/Mpay24/{sql/mpay24_setup/mysql4-uninstall-1.2.2.php → Model/Source/FormTemplate.php} +32 -28
  78. app/code/community/Mpay24/Mpay24/Model/Source/GiropayCountryAction.php +0 -28
  79. app/code/community/Mpay24/Mpay24/Model/Source/MaestroCountryAction.php +0 -29
  80. app/code/community/Mpay24/Mpay24/Model/Source/MiaCountryAction.php +0 -28
  81. app/code/community/Mpay24/Mpay24/Model/Source/MiaTypesAction.php +0 -29
  82. app/code/community/Mpay24/Mpay24/Model/Source/PaidOrder.php +33 -0
  83. app/code/community/Mpay24/Mpay24/Model/Source/PayboxCountryAction.php +0 -28
  84. app/code/community/Mpay24/Mpay24/Model/Source/PaymentsActive.php +33 -0
  85. app/code/community/Mpay24/Mpay24/Model/Source/PaysafecardCountryAction.php +0 -28
  86. app/code/community/Mpay24/Mpay24/Model/Source/Request.php +3 -3
  87. app/code/community/Mpay24/Mpay24/Model/Source/Result.php +3 -3
  88. app/code/community/Mpay24/Mpay24/Model/Source/ShoppingCartRowsAction.php +5 -7
  89. app/code/community/Mpay24/Mpay24/Model/Source/{EpsCountryAction.php → System.php} +14 -9
  90. app/code/community/Mpay24/Mpay24/Model/System/Config/Backend/Encrypted.php +13 -30
  91. app/code/community/Mpay24/Mpay24/controllers/AdminhtmlController.php +0 -74
  92. app/code/community/Mpay24/Mpay24/controllers/IndexController.php +4 -4
  93. app/code/community/Mpay24/Mpay24/controllers/PaymentController.php +450 -524
  94. app/code/community/Mpay24/Mpay24/etc/config.xml +39 -211
  95. app/code/community/Mpay24/Mpay24/etc/system.xml +970 -1211
  96. app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-install-1.2.2.php → mysql4-install-1.3.0.php} +5 -3
  97. app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-upgrade-0.6.3-1.2.2.php → mysql4-upgrade-0.6.2-1.3.0.php} +3 -3
  98. app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-upgrade-0.6.2-1.2.2.php → mysql4-upgrade-0.6.3-1.3.0.php} +3 -3
  99. app/design/adminhtml/default/default/template/mpay24/info/ajaxRequest.txt +0 -1
  100. app/design/adminhtml/default/default/template/mpay24/info/cc.phtml +0 -26
  101. app/design/adminhtml/default/default/template/mpay24/info/elv.phtml +0 -25
  102. app/design/adminhtml/default/default/template/mpay24/info/giropay.phtml +0 -26
  103. app/design/adminhtml/default/default/template/mpay24/info/mia.phtml +0 -24
  104. app/design/adminhtml/default/default/template/mpay24/info/paybox.phtml +0 -23
  105. app/design/adminhtml/default/default/template/mpay24/info/paysafecard.phtml +0 -23
  106. app/design/adminhtml/default/default/template/mpay24/info/pdf/cc.phtml +0 -27
  107. app/design/adminhtml/default/default/template/mpay24/info/pdf/elv.phtml +0 -26
  108. app/design/adminhtml/default/default/template/mpay24/info/pdf/giropay.phtml +0 -27
  109. app/design/adminhtml/default/default/template/mpay24/info/pdf/mia.phtml +0 -22
  110. app/design/adminhtml/default/default/template/mpay24/info/pdf/paybox.phtml +0 -21
  111. app/design/adminhtml/default/default/template/mpay24/info/pdf/paysafecard.phtml +0 -22
  112. app/design/adminhtml/default/default/template/mpay24/info/pdf/selectpayment.phtml +0 -22
  113. app/design/adminhtml/default/default/template/mpay24/info/selectpayment.phtml +9 -70
  114. app/design/adminhtml/default/default/template/mpay24/prototype.js +0 -3277
  115. app/design/adminhtml/default/default/template/mpay24/system/config/fieldset/global.phtml +0 -515
  116. app/design/frontend/default/default/layout/mpay24.xml +3 -3
  117. app/design/frontend/default/default/template/mpay24/error.phtml +0 -5
  118. app/design/frontend/default/default/template/mpay24/form/area.phtml +148 -0
  119. app/design/frontend/default/default/template/mpay24/form/cc.phtml +0 -94
  120. app/design/frontend/default/default/template/mpay24/form/dropDown.phtml +152 -0
  121. app/design/frontend/default/default/template/mpay24/form/elv.phtml +0 -52
  122. app/design/frontend/default/default/template/mpay24/form/giropay.phtml +0 -43
  123. app/design/frontend/default/default/template/mpay24/form/mia.phtml +0 -52
  124. app/design/frontend/default/default/template/mpay24/form/paybox.phtml +0 -52
  125. app/design/frontend/default/default/template/mpay24/form/paysafecard.phtml +0 -28
  126. app/design/frontend/default/default/template/mpay24/form/selectpayment.phtml +0 -28
  127. app/design/frontend/default/default/template/mpay24/form/selectpaymentCashTicket.phtml +0 -31
  128. app/design/frontend/default/default/template/mpay24/form/selectpaymentCc.phtml +0 -123
  129. app/design/frontend/default/default/template/mpay24/form/selectpaymentElv.phtml +0 -31
  130. app/design/frontend/default/default/template/mpay24/form/selectpaymentEps.phtml +0 -34
  131. app/design/frontend/default/default/template/mpay24/form/selectpaymentGiropay.phtml +0 -31
  132. app/design/frontend/default/default/template/mpay24/form/selectpaymentMaestro.phtml +0 -31
  133. app/design/frontend/default/default/template/mpay24/form/selectpaymentMia.phtml +0 -33
  134. app/design/frontend/default/default/template/mpay24/form/selectpaymentMpass.phtml +0 -31
  135. app/design/frontend/default/default/template/mpay24/form/selectpaymentPaybox.phtml +0 -31
  136. app/design/frontend/default/default/template/mpay24/form/selectpaymentPaypal.phtml +0 -31
  137. app/design/frontend/default/default/template/mpay24/form/selectpaymentPsc.phtml +0 -8
app/code/community/Mpay24/Mpay24/Block/Adminhtml/System/Config/Fieldset/Fieldset.php CHANGED
@@ -12,61 +12,104 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Adminhtml
23
- * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  */
26
 
 
27
 
28
- /**
29
- * Config form fieldset renderer
30
- *
31
- * @category Mage
32
- * @package Mage_Adminhtml
33
- * @author Magento Core Team <core@magentocommerce.com>
34
- */
35
  class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
36
  extends Mage_Adminhtml_Block_Abstract
37
  implements Varien_Data_Form_Element_Renderer_Interface
38
  {
39
-
40
- public $ccBrands = array();
41
- public $epsBrands = array();
42
- public $elvBrands = array();
43
  public $pTypes = array();
 
44
  /**
45
  * Render fieldset html
46
  *
47
  * @param Varien_Data_Form_Element_Abstract $element
48
  * @return string
49
  */
50
- public function render(Varien_Data_Form_Element_Abstract $element)
51
- {
52
-
53
- if(Mage::getStoreConfig('payment/mpay24_sp_cc/active')){
54
- $html = $this->_getHeaderHtml($element);
55
- if($element->getHtmlId() === 'mpay24_mpay24_sp_paybox')
56
- $elementName = 'mpay24_mpay24_sp_pb';
57
- else
58
- $elementName = $element->getHtmlId();
59
-
60
 
61
  foreach ($element->getSortedElements() as $field) {
62
- if(in_array(substr($elementName, 17), Mpay24_Mpay24_Block_Form_SelectpaymentCc::mPAYPaymentMethodsOrBrands('method')))
 
 
 
 
63
  $html.= $field->toHtml();
 
 
64
  }
65
-
66
- $html .= $this->_getFooterHtml($element);
67
-
68
- return $html;
69
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  }
71
 
72
  /**
@@ -75,23 +118,20 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
75
  * @param Varien_Data_Form_Element_Abstract $element
76
  * @return string
77
  */
78
- protected function _getHeaderHtml($element)
79
- {
80
  $html = '';
81
  $default = !$this->getRequest()->getParam('website') && !$this->getRequest()->getParam('store');
82
- if($element->getHtmlId() === 'mpay24_mpay24_sp_paybox')
83
- $elementName = 'mpay24_mpay24_sp_pb';
84
- else
85
- $elementName = $element->getHtmlId();
86
- if(in_array(substr($elementName, 17), Mpay24_Mpay24_Block_Form_SelectpaymentCc::mPAYPaymentMethodsOrBrands('method'))){
87
- $html = '<div class="entry-edit-head collapseable" ><a id="'.$element->getHtmlId().'-head" href="#" onclick="Fieldset.toggleCollapse(\''.$element->getHtmlId().'\', \''.$this->getUrl('*/*/state').'\'); return false;">'.$element->getLegend().'</a></div>';
88
- $html.= '<input id="'.$element->getHtmlId().'-state" name="config_state['.$element->getId().']" type="hidden" value="'.(int)$this->_getCollapseState($element).'" />';
89
- $html.= '<fieldset class="'.$this->_getFieldsetCss().'" id="'.$element->getHtmlId().'">';
90
- $html.= '<legend>'.$element->getLegend().'</legend>';
 
91
  }
92
- if ($element->getComment()) {
93
- $html .= '<div class="comment">'.$element->getComment().'</div>';
94
- }
95
 
96
  // field label column
97
  $html.= '<table cellspacing="0" class="form-list"><colgroup class="label" /><colgroup class="value" />';
@@ -108,8 +148,7 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
108
  *
109
  * @return string
110
  */
111
- protected function _getFieldsetCss()
112
- {
113
  $configCss = (string)$this->getGroup()->fieldset_css;
114
  return 'config collapseable'.($configCss ? ' ' . $configCss : '');
115
  }
@@ -121,8 +160,7 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
121
  * @param Varien_Data_Form_Element_Abstract $element
122
  * @return string
123
  */
124
- protected function _getFooterHtml($element)
125
- {
126
  $tooltipsExist = false;
127
  $html = '</tbody></table>';
128
  foreach ($element->getSortedElements() as $field) {
@@ -146,8 +184,7 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
146
  * @param bool $tooltipsExist Init tooltips observer or not
147
  * @return string
148
  */
149
- protected function _getExtraJs($element, $tooltipsExist = false)
150
- {
151
  $id = $element->getHtmlId();
152
  $js = "Fieldset.applyCollapse('{$id}');";
153
  if ($tooltipsExist) {
@@ -207,8 +244,7 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
207
  * @param Varien_Data_Form_Element_Abstract $element
208
  * @return bool
209
  */
210
- protected function _getCollapseState($element)
211
- {
212
  if ($element->getExpanded() !== null) {
213
  return 1;
214
  }
@@ -218,4 +254,4 @@ class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
218
  }
219
  return false;
220
  }
221
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
 
 
19
  */
20
 
21
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
22
 
 
 
 
 
 
 
 
23
  class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Fieldset
24
  extends Mage_Adminhtml_Block_Abstract
25
  implements Varien_Data_Form_Element_Renderer_Interface
26
  {
 
 
 
 
27
  public $pTypes = array();
28
+
29
  /**
30
  * Render fieldset html
31
  *
32
  * @param Varien_Data_Form_Element_Abstract $element
33
  * @return string
34
  */
35
+ public function render(Varien_Data_Form_Element_Abstract $element) {
36
+ $html = $this->_getHeaderHtml($element);
37
+
38
+ if(Mage::getStoreConfig('payment/mpay24/active') && Mage::getStoreConfig('mpay24/mpay24/active_payments') != '') {
39
+ $elementName = $element->getHtmlId();
40
+
41
+ $brands = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payments'));
 
 
 
42
 
43
  foreach ($element->getSortedElements() as $field) {
44
+ if(substr($field->getHtmlId(), strrpos($field->getHtmlId(), "_")+1) <= Mage::getStoreConfig('mpay24/mpay24/payments_count')) {
45
+ $brandAndDescr = array_shift($brands);
46
+ $brand = substr($brandAndDescr, 0, strpos($brandAndDescr, "=>"));
47
+ $description = substr($brandAndDescr, strpos($brandAndDescr, "=>")+2);
48
+ $field->setLabel("<img src='https://www.mpay24.com/web/img/logos/brands/small/$brand.png' alt='$brand: $description' title='$brand: $description'>");
49
  $html.= $field->toHtml();
50
+ } elseif(substr($field->getHtmlId(), 0, 17) != 'mpay24_mpay24_ps_')
51
+ $html.= $field->toHtml();
52
  }
53
+ } else {
54
+ $html .= '<div style="color:red;">' . Mage::getStoreConfig('mpay24/mpay24/payments_error') . "</div>";
 
 
55
  }
56
+
57
+ $html .= $this->_getFooterHtml($element);
58
+ $html .= "<h1>Extension Version: " . MPay24MagentoShop::MAGENTO_VERSION . "</h1>";
59
+
60
+ $comment = Mage::helper('mpay24')->__("The payment systems will be synchronized when the settings are saved!");
61
+
62
+ $html .= "
63
+ <script type='text/javascript'>
64
+ window.onload = function() {
65
+ document.getElementById('mpay24_mpay24as_title').setAttribute('class', document.getElementById('mpay24_mpay24as_title').getAttribute('class') + ' required-entry');
66
+ var merchantID = document.getElementById('mpay24_mpay24as_merchantid');
67
+ var mpay24Active = document.getElementById('mpay24_mpay24as_active');
68
+ var mpay24System = document.getElementById('mpay24_mpay24as_system');
69
+ var mpay24SOAPPass = document.getElementById('mpay24_mpay24as_soap_pass');
70
+ var mpay24UseProxy = document.getElementById('mpay24_mpay24as_use_proxy');
71
+ var mpay24ProxyPort = document.getElementById('mpay24_mpay24as_proxy_port');
72
+ var mpay24ProxyHost = document.getElementById('mpay24_mpay24as_proxy_host');
73
+
74
+ merchantID.onchange = function() {
75
+ document.getElementById('mpay24_mpay24').style.display = 'none';
76
+ merchantID.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
77
+ }
78
+
79
+ mpay24Active.onchange = function() {
80
+ document.getElementById('mpay24_mpay24').style.display = 'none';
81
+ mpay24Active.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
82
+ }
83
+
84
+ mpay24System.onchange = function() {
85
+ document.getElementById('mpay24_mpay24').style.display = 'none';
86
+ mpay24System.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
87
+ }
88
+
89
+ mpay24SOAPPass.onchange = function() {
90
+ document.getElementById('mpay24_mpay24').style.display = 'none';
91
+ mpay24SOAPPass.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
92
+ }
93
+
94
+ mpay24UseProxy.onchange = function() {
95
+ document.getElementById('mpay24_mpay24').style.display = 'none';
96
+ mpay24UseProxy.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
97
+ }
98
+
99
+ mpay24ProxyPort.onchange = function() {
100
+ document.getElementById('mpay24_mpay24').style.display = 'none';
101
+ mpay24ProxyPort.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
102
+ }
103
+
104
+ mpay24ProxyHost.onchange = function() {
105
+ document.getElementById('mpay24_mpay24').style.display = 'none';
106
+ mpay24ProxyHost.parentElement.childNodes[2].innerHTML = merchantID.parentElement.childNodes[2].innerHTML + '<br/><span style=\'color: red;\'>$comment</span>';
107
+ }
108
+ }
109
+ </script>
110
+ ";
111
+
112
+ return $html;
113
  }
114
 
115
  /**
118
  * @param Varien_Data_Form_Element_Abstract $element
119
  * @return string
120
  */
121
+ protected function _getHeaderHtml($element) {
 
122
  $html = '';
123
  $default = !$this->getRequest()->getParam('website') && !$this->getRequest()->getParam('store');
124
+
125
+ $elementName = $element->getHtmlId();
126
+
127
+ $html = '<div class="entry-edit-head collapseable" ><a id="'.$element->getHtmlId().'-head" href="#" onclick="Fieldset.toggleCollapse(\''.$element->getHtmlId().'\', \''.$this->getUrl('*/*/state').'\'); return false;">'.$element->getLegend().'</a></div>';
128
+ $html.= '<input id="'.$element->getHtmlId().'-state" name="config_state['.$element->getId().']" type="hidden" value="'.(int)$this->_getCollapseState($element).'" />';
129
+ $html.= '<fieldset class="'.$this->_getFieldsetCss().'" id="'.$element->getHtmlId().'">';
130
+ $html.= '<legend>'.$element->getLegend().'</legend>';
131
+
132
+ if ($element->getComment()) {
133
+ $html .= '<div class="comment">'.$element->getComment().'</div>';
134
  }
 
 
 
135
 
136
  // field label column
137
  $html.= '<table cellspacing="0" class="form-list"><colgroup class="label" /><colgroup class="value" />';
148
  *
149
  * @return string
150
  */
151
+ protected function _getFieldsetCss() {
 
152
  $configCss = (string)$this->getGroup()->fieldset_css;
153
  return 'config collapseable'.($configCss ? ' ' . $configCss : '');
154
  }
160
  * @param Varien_Data_Form_Element_Abstract $element
161
  * @return string
162
  */
163
+ protected function _getFooterHtml($element) {
 
164
  $tooltipsExist = false;
165
  $html = '</tbody></table>';
166
  foreach ($element->getSortedElements() as $field) {
184
  * @param bool $tooltipsExist Init tooltips observer or not
185
  * @return string
186
  */
187
+ protected function _getExtraJs($element, $tooltipsExist = false) {
 
188
  $id = $element->getHtmlId();
189
  $js = "Fieldset.applyCollapse('{$id}');";
190
  if ($tooltipsExist) {
244
  * @param Varien_Data_Form_Element_Abstract $element
245
  * @return bool
246
  */
247
+ protected function _getCollapseState($element) {
 
248
  if ($element->getExpanded() !== null) {
249
  return 1;
250
  }
254
  }
255
  return false;
256
  }
257
+ }
app/code/community/Mpay24/Mpay24/Block/Adminhtml/System/Config/Fieldset/Global.php DELETED
@@ -1,195 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Global
22
- extends Mage_Adminhtml_Block_Abstract
23
- implements Varien_Data_Form_Element_Renderer_Interface
24
- {
25
- /**
26
- * Associative array of mPay24 product selection elements
27
- *
28
- * @var array
29
- */
30
- protected $_elements = array();
31
-
32
- /**
33
- * Custom template
34
- *
35
- * @var string
36
- */
37
- protected $_template = 'mpay24/system/config/fieldset/global.phtml';
38
-
39
- /**
40
- * Render fieldset html
41
- *
42
- * @param Varien_Data_Form_Element_Abstract $fieldset
43
- * @return string
44
- */
45
- public function render(Varien_Data_Form_Element_Abstract $fieldset)
46
- {
47
- foreach ($fieldset->getSortedElements() as $element) {
48
- $htmlId = $element->getHtmlId();
49
- $this->_elements[$htmlId] = $element;
50
- }
51
- $originalData = $fieldset->getOriginalData();
52
- $this->addData(array(
53
- 'fieldset_label' => $fieldset->getLegend(),
54
- 'fieldset_help_url' => isset($originalData['help_url']) ? $originalData['help_url'] : '',
55
- ));
56
- return $this->toHtml();
57
- }
58
-
59
- /**
60
- * Get array of element objects
61
- *
62
- * @return array
63
- */
64
- public function getElements()
65
- {
66
- return $this->_elements;
67
- }
68
-
69
- /**
70
- * Return checkbox html with hidden field for correct config values
71
- *
72
- * @param string $elementId
73
- * @return string
74
- */
75
- public function getElementHtml(Varien_Data_Form_Element_Abstract $element)
76
- {
77
- $configValue = (string)$element->getValue();
78
- if ($configValue) {
79
- $element->setChecked(true);
80
- } else {
81
- $element->setValue('1');
82
- }
83
- if ($element->getCanUseDefaultValue() && $element->getInherit()) {
84
- $element->setDisabled(true);
85
- }
86
-
87
- $hidden = new Varien_Data_Form_Element_Hidden(array(
88
- 'html_id' => $element->getHtmlId() . '_value',
89
- 'name' => $element->getName(),
90
- 'value' => '0'
91
- ));
92
- $hidden->setForm($element->getForm());
93
- return $hidden->getElementHtml() . $element->getElementHtml();
94
- }
95
-
96
- /**
97
- * Whether element should be rendered in "simplified" mode
98
- *
99
- * @param Varien_Data_Form_Element_Abstract $element
100
- * @return bool
101
- */
102
- public function getIsElementSimplified(Varien_Data_Form_Element_Abstract $element)
103
- {
104
- $originalData = $element->getOriginalData();
105
- return isset($originalData['is_simplified']) && 1 == $originalData['is_simplified'];
106
- }
107
-
108
- /**
109
- * Getter for element label
110
- *
111
- * @param Varien_Data_Form_Element_Abstract $element
112
- * @return string
113
- */
114
- public function getElementLabel(Varien_Data_Form_Element_Abstract $element)
115
- {
116
- return $element->getLabel();
117
- }
118
-
119
- /**
120
- * Getter for element comment
121
- *
122
- * @param Varien_Data_Form_Element_Abstract $element
123
- * @return string
124
- */
125
- public function getElementComment(Varien_Data_Form_Element_Abstract $element)
126
- {
127
- return $element->getComment();
128
- }
129
-
130
- /**
131
- * Getter for element comment
132
- *
133
- * @param Varien_Data_Form_Element_Abstract $element
134
- * @return string
135
- */
136
- public function getElementOriginalData(Varien_Data_Form_Element_Abstract $element, $key)
137
- {
138
- $data = $element->getOriginalData();
139
- return isset($data[$key]) ? $data[$key] : '';
140
- }
141
-
142
- /**
143
- * Check whether checkbox has "Use default" option or not
144
- *
145
- * @param Varien_Data_Form_Element_Abstract $element
146
- * @return bool
147
- */
148
- public function hasInheritElement(Varien_Data_Form_Element_Abstract $element)
149
- {
150
- return (bool)$element->getCanUseDefaultValue();
151
- }
152
-
153
- /**
154
- * Return "Use default" checkbox html
155
- *
156
- * @param Varien_Data_Form_Element_Abstract $element
157
- * @return string
158
- */
159
- public function getInheritElementHtml(Varien_Data_Form_Element_Abstract $element)
160
- {
161
- $elementId = $element->getHtmlId();
162
- $inheritCheckbox = new Varien_Data_Form_Element_Checkbox(array(
163
- 'html_id' => $elementId . '_inherit',
164
- 'name' => preg_replace('/\[value\](\[\])?$/', '[inherit]', $element->getName()),
165
- 'value' => '1',
166
- 'class' => 'checkbox config-inherit',
167
- 'onclick' => 'toggleValueElements(this, $(\'' . $elementId . '\').up())'
168
- ));
169
- if ($element->getInherit()) {
170
- $inheritCheckbox->setChecked(true);
171
- }
172
-
173
- $inheritCheckbox->setForm($element->getForm());
174
- return $inheritCheckbox->getElementHtml();
175
- }
176
-
177
- /**
178
- * Return label for "Use default" checkbox
179
- *
180
- * @param Varien_Data_Form_Element_Abstract $element
181
- * @return string
182
- */
183
- public function getInheritElementLabelHtml(Varien_Data_Form_Element_Abstract $element)
184
- {
185
- return sprintf('<label for="%s" class="inherit" title="%s">%s</label>',
186
- $element->getHtmlId() . '_inherit',
187
- $element->getDefaultValue(),
188
- Mage::helper('adminhtml')->__('Use Default')
189
- );
190
- }
191
-
192
- public function getMpay24ExtensionVersion(){
193
- return Mpay24_Mpay24_Model_Api_Mpay24::MAGENTO_VERSION;
194
- }
195
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form.php CHANGED
@@ -12,15 +12,12 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- /**
22
- * Payment method form base block
23
- */
24
  class Mpay24_Mpay24_Block_Form extends Mage_Core_Block_Template {
25
  /**
26
  * Retrieve payment method model
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
 
 
 
21
  class Mpay24_Mpay24_Block_Form extends Mage_Core_Block_Template {
22
  /**
23
  * Retrieve payment method model
app/code/community/Mpay24/Mpay24/Block/Form/Cc.php DELETED
@@ -1,103 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_Cc extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/cc.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
-
37
- /**
38
- * Retrieve availables credit card types
39
- *
40
- * @return array
41
- */
42
- public function getCcAvailableTypes() {
43
- $types = $this->_getConfig()->getCcTypes();
44
- if ($method = $this->getMethod()) {
45
- $availableTypes = $method->getConfigData('cctypes');
46
- if ($availableTypes) {
47
- $availableTypes = explode(',', $availableTypes);
48
- foreach ($types as $code=>$name) {
49
- if (!in_array($code, $availableTypes)) {
50
- unset($types[$code]);
51
- }
52
- }
53
- }
54
- }
55
- return $types;
56
- }
57
-
58
- /**
59
- * Retrieve credit card expire months
60
- *
61
- * @return array
62
- */
63
- public function getCcMonths() {
64
- $months = $this->getData('cc_months');
65
- if (is_null($months)) {
66
- $months[0] = $this->__('Month');
67
- $months = array_merge($months, $this->_getConfig()->getMonths());
68
- $this->setData('cc_months', $months);
69
- }
70
- return $months;
71
- }
72
-
73
- /**
74
- * Retrieve credit card expire years
75
- *
76
- * @return array
77
- */
78
- public function getCcYears() {
79
- $years = $this->getData('cc_years');
80
- if (is_null($years)) {
81
- $years = $this->_getConfig()->getYears();
82
- $years = array(0=>$this->__('Year'))+$years;
83
- $this->setData('cc_years', $years);
84
- }
85
- return $years;
86
- }
87
-
88
- /**
89
- * Retrive has verification configuration
90
- *
91
- * @return boolean
92
- */
93
- public function hasVerification() {
94
- if ($this->getMethod()) {
95
- $configData = $this->getMethod()->getConfigData('useccv');
96
- if(is_null($configData)){
97
- return true;
98
- }
99
- return (bool) $configData;
100
- }
101
- return true;
102
- }
103
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/Elv.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_Elv extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/elv.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
-
37
- /**
38
- * Retrieve availables credit card types
39
- *
40
- * @return array
41
- */
42
- public function getElvAvailableTypes() {
43
- $types = $this->_getConfig()->getElvTypes();
44
- if ($method = $this->getMethod()) {
45
- $availableTypes = $method->getConfigData('elvtypes');
46
- if ($availableTypes) {
47
- $availableTypes = explode(',', $availableTypes);
48
- foreach ($types as $code=>$name) {
49
- if (!in_array($code, $availableTypes)) {
50
- unset($types[$code]);
51
- }
52
- }
53
- }
54
- }
55
- return $types;
56
- }
57
-
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/Paybox.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_Paybox extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/paybox.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
-
37
- /**
38
- * Retrieve availables area codes
39
- *
40
- * @return array
41
- */
42
- public function getPayboxAvailableAreaCodes() {
43
- $types = $this->_getConfig()->getPayboxAreaCodes();
44
- if ($method = $this->getMethod()) {
45
- $availableTypes = $method->getConfigData('area_code');
46
- if ($availableTypes) {
47
- $availableTypes = explode(',', $availableTypes);
48
- foreach ($types as $code=>$name) {
49
- if (!in_array($code, $availableTypes)) {
50
- unset($types[$code]);
51
- }
52
- }
53
- }
54
- }
55
- return $types;
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/Selectpayment.php CHANGED
@@ -12,24 +12,83 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Block_Form_Selectpayment extends Mage_Payment_Block_Form {
22
  protected function _construct() {
23
  parent::_construct();
24
- $this->setTemplate('mpay24/form/selectpayment.phtml');
25
  }
26
 
27
  /**
28
- * Retrieve payment configuration object
29
  *
30
- * @return Mage_Payment_Model_Config
31
  */
32
  protected function _getConfig() {
33
  return Mage::getSingleton('mpay24/config');
34
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Block_Form_Selectpayment extends Mage_Payment_Block_Form {
22
  protected function _construct() {
23
  parent::_construct();
24
+ $this->setTemplate('mpay24/form/'.Mage::getStoreConfig('mpay24/mpay24/form_template'));
25
  }
26
 
27
  /**
28
+ * @abstract Retrieve payment configuration object
29
  *
30
+ * @return Mage_Payment_Model_Config
31
  */
32
  protected function _getConfig() {
33
  return Mage::getSingleton('mpay24/config');
34
+ }
35
+
36
+ /**
37
+ * @abstract Get the payment systems for the merchant from the core_config_data and explode it into an array
38
+ * @return Array $method
39
+ */
40
+ public function getActiveMethods() {
41
+ $methods = array();
42
+ $brandsAndDescriptions = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payments'));
43
+
44
+ $firstPS = Mage::getStoreConfig('mpay24/mpay24/ps_1');
45
+ $allPS = true;
46
+
47
+ for($i=2; $i<=Mage::getStoreConfig('mpay24/mpay24/payments_count'); $i++) {
48
+ if($firstPS != Mage::getStoreConfig('mpay24/mpay24/ps_'.$i)) {
49
+ $allPS = false;
50
+ break;
51
+ }
52
+ }
53
+
54
+ if($allPS) {
55
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'false') {
56
+ if($firstPS == 1) {
57
+ Mage::getConfig()->saveConfig("payment/mpay24/active", 0);
58
+ Mage::getConfig()->reinit();
59
+ Mage::app()->reinitStores();
60
+ }
61
+ } else {
62
+ if($firstPS == 0) {
63
+ Mage::getConfig()->saveConfig("payment/mpay24/active", 0);
64
+ Mage::getConfig()->reinit();
65
+ Mage::app()->reinitStores();
66
+ }
67
+ }
68
+
69
+ foreach($brandsAndDescriptions as $brandAndDescr) {
70
+ $brand = substr($brandAndDescr, 0, strpos($brandAndDescr, "=>"));
71
+ $description = substr($brandAndDescr, strpos($brandAndDescr, "=>")+2);
72
+ $methods[$brand] = $description;
73
+ }
74
+
75
+ } else {
76
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'false')
77
+ $check = 0;
78
+ else
79
+ $check = 1;
80
+
81
+ $i=1;
82
+ foreach($brandsAndDescriptions as $brandAndDescr) {
83
+ if(Mage::getStoreConfig('mpay24/mpay24/ps_'.$i) == $check) {
84
+ $brand = substr($brandAndDescr, 0, strpos($brandAndDescr, "=>"));
85
+ $description = substr($brandAndDescr, strpos($brandAndDescr, "=>")+2);
86
+ $methods[$brand] = $description;
87
+ }
88
+ $i++;
89
+ }
90
+ }
91
+
92
+ return $methods;
93
+ }
94
  }
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCashTicket.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentCashTicket extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentCashTicket.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCb.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentCb extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentCb.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentCc.php DELETED
@@ -1,158 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentCc extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentCc.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
-
37
- public function getBrands(){
38
- $ret = array();
39
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_cc/cctypes')) as $brand):
40
- $ret[] = $this->_getBrand($brand);
41
- endforeach;
42
-
43
- return $ret;
44
- }
45
-
46
- private function _getBrand($ccType){
47
- $brand = '';
48
- switch ($ccType){
49
- case 'AE':
50
- $brand = 'AMEX';
51
- break;
52
- case 'DC':
53
- $brand = 'DINERS';
54
- break;
55
- case 'JC':
56
- $brand = 'JCB';
57
- break;
58
- case 'MC':
59
- $brand = 'MASTERCARD';
60
- break;
61
- case 'VI':
62
- $brand = 'VISA';
63
- break;
64
- }
65
- return $brand;
66
- }
67
-
68
- /**
69
- * Retrieve active system payments
70
- *
71
- * @param mixed $store
72
- * @return array
73
- */
74
- public function getActiveMethods($store=null)
75
- {
76
- $methods = array();
77
- $config = Mage::getStoreConfig('payment');
78
-
79
- foreach ($config as $code => $methodConfig) {
80
- if(strcmp("mpay24_sp_", substr($code, 0, 10)) == 0){
81
- Mage::log($code . " => ");
82
- Mage::log($methodConfig);
83
- if (Mage::getStoreConfigFlag('payment/'.$code.'/in_use')) {
84
- if($code == 'mpay24_sp_cc'){
85
- foreach(explode(',', Mage::getStoreConfig('payment/'.$code.'/cctypes')) as $brand){
86
- $methods[$brand] = $brand;
87
- }
88
- } elseif($code == 'mpay24_sp_eps') {
89
- foreach(explode(',', Mage::getStoreConfig('payment/'.$code.'/epstypes')) as $bank){
90
- $methods[$bank] = $bank;
91
- }
92
- } elseif($code == 'mpay24_sp_elv') {
93
- foreach(explode(',', Mage::getStoreConfig('payment/'.$code.'/specificcountry')) as $country){
94
- if($country != 'DE')
95
- $methods['HOBEX-'.$country] = 'HOBEX-'.$country;
96
- else {
97
- $methods['HOBEX-'.$country] = 'HOBEX-'.$country;
98
- $methods['ATOS'] = 'ATOS';
99
- }
100
- }
101
- } else {
102
- $methods[$code] = strtoupper(substr($code, 10, strlen($code)-10));
103
- }
104
- }
105
- }
106
- }
107
- Mage::log("The active methods are: ");
108
- Mage::log($methods);
109
- return $methods;
110
- }
111
-
112
- public static function mPAYPaymentMethodsOrBrands($type)
113
- {
114
- $pTypes = array();
115
- $ccBrands = array();
116
- $elvBrands = array();
117
- $epsBrands = array();
118
- $str = '';
119
- foreach(explode(',', Mage::getStoreConfig('mpay24/mpay24as/payment_methods')) as $brand):
120
- if(($brand == 'AMEX' || $brand == 'DINERS' || $brand == 'JCB' || $brand == 'VISA' || $brand == 'MASTERCARD')){
121
- if(!in_array('cc', $pTypes)){
122
- $pTypes['cc'] = 'cc';
123
- $str.= 'cc,';
124
- }
125
- $ccBrands[strtolower($brand)] = strtolower($brand);
126
- } elseif($brand == 'ATOS' || $brand == 'HOBEX-AT' || $brand == 'HOBEX-DE' || $brand == 'HOBEX-NL'){
127
- if(!in_array('elv', $pTypes)){
128
- $pTypes['elv'] = 'elv';
129
- $str.= 'elv,';
130
- }
131
- $elvBrands[strtolower($brand)] = strtolower($brand);
132
- } elseif($brand == 'ARZ' || $brand == 'ERSTE' || $brand == 'HYPO' || $brand == 'BAWAG' || $brand == 'BA' || $brand == 'RZB'){
133
- if(!in_array('eps', $pTypes)){
134
- $pTypes['eps'] = 'eps';
135
- $str.= 'eps,';
136
- }
137
- $epsBrands[strtolower($brand)] = strtolower($brand);
138
- } elseif($brand == 'CASH-TICKET') {
139
- $pTypes['cashTicket'] = 'cashTicket';
140
- $str.= 'cashTicket,';
141
- }else{
142
- $pTypes[strtolower($brand)] = strtolower($brand);
143
- $str.= strtolower($brand).',';
144
- }
145
- endforeach;
146
-
147
- if($type === 'cc')
148
- return $ccBrands;
149
- elseif($type === 'elv')
150
- return $elvBrands;
151
- elseif($type === 'eps')
152
- return $epsBrands;
153
- elseif($type === 'method')
154
- return $pTypes;
155
-
156
- }
157
- }
158
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentElv.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentElv extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentElv.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentEps.php DELETED
@@ -1,43 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Block_Form_SelectpaymentEps extends Mage_Payment_Block_Form {
22
- protected function _construct() {
23
- parent::_construct();
24
- $this->setTemplate('mpay24/form/selectpaymentEps.phtml');
25
- }
26
-
27
- /**
28
- * Retrieve payment configuration object
29
- *
30
- * @return Mage_Payment_Model_Config
31
- */
32
- protected function _getConfig() {
33
- return Mage::getSingleton('mpay24/config');
34
- }
35
-
36
- public function getBrands(){
37
- $ret = array();
38
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_eps/epstypes')) as $brand):
39
- $ret[] = $brand;
40
- endforeach;
41
- return $ret;
42
- }
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentGiropay.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentGiropay extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentGiropay.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMaestro.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentMaestro extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentMaestro.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMia.php DELETED
@@ -1,44 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentMia extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentMia.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
-
37
- public function getBrands(){
38
- $ret = array();
39
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_mia/miatypes')) as $brand):
40
- $ret[] = $brand;
41
- endforeach;
42
- return $ret;
43
- }
44
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentMpass.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentMpass extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentMpass.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPaybox.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentPaybox extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentPaybox.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPaypal.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentPaypal extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentPaypal.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentPsc.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentPsc extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentPsc.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Form/SelectpaymentQuick.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Form_SelectpaymentQuick extends Mage_Payment_Block_Form {
23
- protected function _construct() {
24
- parent::_construct();
25
- $this->setTemplate('mpay24/form/selectpaymentQuick.phtml');
26
- }
27
-
28
- /**
29
- * Retrieve payment configuration object
30
- *
31
- * @return Mage_Payment_Model_Config
32
- */
33
- protected function _getConfig() {
34
- return Mage::getSingleton('mpay24/config');
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Info/Cc.php DELETED
@@ -1,86 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Block_Info_Cc extends Mage_Payment_Block_Info {
23
- /**
24
- * Init default template for block
25
- */
26
- protected function _construct() {
27
- parent::_construct();
28
- $this->setTemplate('mpay24/info/cc.phtml');
29
- }
30
-
31
- public function getInfo() {
32
- $info = $this->getData('info');
33
-
34
- if (!($info instanceof Mage_Payment_Model_Info)) {
35
- Mage::throwException($this->__('Can not retrieve payment info model object.'));
36
- }
37
- return $info;
38
- }
39
-
40
- public function getMethod() {
41
- return $this->getInfo()->getMethodInstance();
42
- }
43
-
44
- /**
45
- * Retrieve credit card type name
46
- *
47
- * @return string
48
- */
49
- public function getCcTypeName() {
50
- $types = Mage::getSingleton('mpay24/config')->getCcTypes();
51
- if (isset($types[$this->getInfo()->getCcType()])) {
52
- return $types[$this->getInfo()->getCcType()];
53
- }
54
- return $this->getInfo()->getCcType();
55
- }
56
-
57
- /**
58
- * Retrieve CC expiration month
59
- *
60
- * @return string
61
- */
62
- public function getCcExpMonth() {
63
- $month = $this->getInfo()->getCcExpMonth();
64
- if ($month<10) {
65
- $month = '0'.$month;
66
- }
67
- return $month;
68
- }
69
-
70
- /**
71
- * Retrieve CC expiration date
72
- *
73
- * @return Zend_Date
74
- */
75
- public function getCcExpDate() {
76
- $date = Mage::app()->getLocale()->date(0);
77
- $date->setYear($this->getInfo()->getCcExpYear());
78
- $date->setMonth($this->getInfo()->getCcExpMonth());
79
- return $date;
80
- }
81
-
82
- public function toPdf() {
83
- $this->setTemplate('mpay24/info/pdf/cc.phtml');
84
- return $this->toHtml();
85
- }
86
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Info/Elv.php DELETED
@@ -1,57 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Block_Info_Elv extends Mage_Payment_Block_Info{
22
- /**
23
- * Init default template for block
24
- */
25
- protected function _construct(){
26
- parent::_construct();
27
- $this->setTemplate('mpay24/info/elv.phtml');
28
- }
29
-
30
- /**
31
- * Retrieve info model
32
- *
33
- * @return Mage_Sofortueberweisung_Model_Info
34
- */
35
- public function getInfo(){
36
- $info = $this->getData('info');
37
-
38
- if (!($info instanceof Mage_Payment_Model_Info)) {
39
- Mage::throwException($this->__('Can not retrieve payment info model object.'));
40
- }
41
- return $info;
42
- }
43
-
44
- /**
45
- * Retrieve payment method model
46
- *
47
- * @return Mage_Payment_Model_Method_Abstract
48
- */
49
- public function getMethod(){
50
- return $this->getInfo()->getMethodInstance();
51
- }
52
-
53
- public function toPdf(){
54
- $this->setTemplate('mpay24/info/pdf/elv.phtml');
55
- return $this->toHtml();
56
- }
57
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Info/Paybox.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Block_Info_Paybox extends Mage_Payment_Block_Info{
21
- /**
22
- * Init default template for block
23
- */
24
- protected function _construct(){
25
- parent::_construct();
26
- $this->setTemplate('mpay24/info/paybox.phtml');
27
- }
28
-
29
- /**
30
- * Retrieve info model
31
- *
32
- * @return Mage_Sofortueberweisung_Model_Info
33
- */
34
- public function getInfo(){
35
- $info = $this->getData('info');
36
-
37
- if (!($info instanceof Mage_Payment_Model_Info)) {
38
- Mage::throwException($this->__('Can not retrieve payment info model object.'));
39
- }
40
- return $info;
41
- }
42
-
43
- public function getPayboxNr(){
44
- return '+'.$this->getInfo()->getMpayPbCountryCode().'-'.$this->getInfo()->getMpayPbAreaCode().'-'.$this->getInfo()->getMpayPbNumber();
45
-
46
- }
47
-
48
- /**
49
- * Retrieve payment method model
50
- *
51
- * @return Mage_Payment_Model_Method_Abstract
52
- */
53
- public function getMethod(){
54
- return $this->getInfo()->getMethodInstance();
55
- }
56
-
57
- public function toPdf(){
58
- $this->setTemplate('mpay24/info/pdf/paybox.phtml');
59
- return $this->toHtml();
60
- }
61
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Info/Selectpayment.php CHANGED
@@ -12,13 +12,12 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
-
22
  class Mpay24_Mpay24_Block_Info_Selectpayment extends Mage_Payment_Block_Info {
23
  /**
24
  * Init default template for block
@@ -51,13 +50,4 @@ class Mpay24_Mpay24_Block_Info_Selectpayment extends Mage_Payment_Block_Info {
51
  $this->setTemplate('mpay24/info/pdf/selectpayment.phtml');
52
  return $this->toHtml();
53
  }
54
-
55
- public function redirectToCalled($user, $tid) {
56
- if($user === 'backend')
57
- Mage::app()->getFrontController()->getResponse()->
58
- setRedirect(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CALLED_BE_URL,array('_secure' => true, '_query' => "TID=$tid")));
59
- elseif($user === 'frontend')
60
- Mage::app()->getFrontController()->getResponse()->
61
- setRedirect(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CALLED_FE_URL,array('_secure' => true, '_query' => "TID=$tid")));
62
- }
63
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
 
21
  class Mpay24_Mpay24_Block_Info_Selectpayment extends Mage_Payment_Block_Info {
22
  /**
23
  * Init default template for block
50
  $this->setTemplate('mpay24/info/pdf/selectpayment.phtml');
51
  return $this->toHtml();
52
  }
 
 
 
 
 
 
 
 
 
53
  }
app/code/community/Mpay24/Mpay24/Block/Mpay24.php CHANGED
@@ -12,14 +12,13 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- class Mpay24_Mpay24_Block_Mpay24 extends Mage_Core_Block_Template
22
- {
23
  public function _prepareLayout() {
24
  return parent::_prepareLayout();
25
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ class Mpay24_Mpay24_Block_Mpay24 extends Mage_Core_Block_Template {
 
22
  public function _prepareLayout() {
23
  return parent::_prepareLayout();
24
  }
app/code/community/Mpay24/Mpay24/Block/ParentRedirect.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Block_ParentRedirect extends Mage_Core_Block_Abstract {
@@ -26,5 +26,4 @@ class Mpay24_Mpay24_Block_ParentRedirect extends Mage_Core_Block_Abstract {
26
 
27
  return $html;
28
  }
29
-
30
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Block_ParentRedirect extends Mage_Core_Block_Abstract {
26
 
27
  return $html;
28
  }
 
29
  }
app/code/community/Mpay24/Mpay24/Block/Redirect.php DELETED
@@ -1,41 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Block_Redirect extends Mage_Core_Block_Abstract {
22
- protected function _toHtml() {
23
- $form = new Varien_Data_Form();
24
- $form->setAction(urldecode(Mage::getSingleton('mpay24/session')->get3DSUrl()))
25
- ->setId('mpay24_checkout')
26
- ->setName('mpay24_checkout')
27
- ->setMethod('POST')
28
- ->setUseContainer(true);
29
- // foreach ($payment->getFormFields() as $field=>$value) {
30
- // $form->addField($field, 'hidden', array('name'=>$field, 'value'=>$value));
31
- // }
32
- $html = '<html><body>';
33
- $html.= $this->__('You will be redirected to the mPAY24 payment window in a few seconds.');
34
- $html.= $form->toHtml();
35
-
36
- $html.= '<script type="text/javascript">document.getElementById("mpay24_checkout").submit();</script>';
37
- $html.= '</body></html>';
38
-
39
- return $html;
40
- }
41
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Block/Update.php DELETED
@@ -1,65 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Adminhtml
23
- * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
- */
26
-
27
-
28
- /**
29
- * Encrypted config field backend model
30
- *
31
- * @category Mage
32
- * @package Mage_Adminhtml
33
- */
34
- class Mpay24_Mpay24_Block_Update extends Mage_Adminhtml_Block_System_Config_Form_Field
35
- {
36
-
37
- protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
38
- {
39
- if(Mage::getStoreConfig('payment/mpay24_sp_cc/active') && Mage::getStoreConfig('mpay24/mpay24as/merchantid') !== ''
40
- && Mage::getStoreConfig('mpay24/mpay24as/soap_pass')
41
- && Mage::getStoreConfig('mpay24/mpay24as/soap_url')){
42
- $this->setElement($element);
43
- $url = $this->getUrl('mpay24/adminhtml/index');
44
- $export = $this->getUrl('mpay24/adminhtml/export');
45
-
46
- $html = $this->getLayout()->createBlock('adminhtml/widget_button')
47
- ->setType('button')
48
- ->setClass('scalable')
49
- ->setId('mpay24_connect')
50
- ->setLabel('Connect')
51
- ->setOnClick("sendRequest('".Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::CONNECT,array('_secure' => true))."', 'mpay24_connect');")
52
- ->toHtml();
53
-
54
- $html.="<br><br>" . $this->getLayout()->createBlock('adminhtml/widget_button')
55
- ->setType('button')
56
- ->setClass('scalable')
57
- ->setLabel('Export debug table')
58
- ->setOnClick("setLocation('$export')")
59
- ->toHtml();
60
-
61
- return $html;
62
- }
63
- }
64
- }
65
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Helper/Data.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Helper_Data extends Mage_Core_Helper_Abstract {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Helper_Data extends Mage_Core_Helper_Abstract {
app/code/community/Mpay24/Mpay24/Model/Api/MDXI.xsd ADDED
@@ -0,0 +1,406 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
3
+ <xs:complexType name="AddressType">
4
+ <xs:sequence>
5
+ <xs:choice>
6
+ <xs:element name="Name" type="AddressFieldType"/>
7
+ <xs:sequence>
8
+ <xs:annotation>
9
+ <xs:documentation>Obsolete: use Name</xs:documentation>
10
+ </xs:annotation>
11
+ <xs:element name="FirstName">
12
+ <xs:simpleType>
13
+ <xs:restriction base="xs:string">
14
+ <xs:maxLength value="50"/>
15
+ </xs:restriction>
16
+ </xs:simpleType>
17
+ </xs:element>
18
+ <xs:element name="LastName">
19
+ <xs:simpleType>
20
+ <xs:restriction base="xs:string">
21
+ <xs:maxLength value="50"/>
22
+ </xs:restriction>
23
+ </xs:simpleType>
24
+ </xs:element>
25
+ </xs:sequence>
26
+ </xs:choice>
27
+ <xs:sequence minOccurs="0">
28
+ <xs:element name="Street" type="AddressFieldType"/>
29
+ <xs:element name="Street2" type="AddressFieldType" minOccurs="0"/>
30
+ <xs:element name="Zip" type="AddressFieldType"/>
31
+ <xs:element name="City" type="AddressFieldType"/>
32
+ <xs:element name="State" minOccurs="0">
33
+ <xs:simpleType>
34
+ <xs:restriction base="xs:string">
35
+ <xs:maxLength value="40"/>
36
+ </xs:restriction>
37
+ </xs:simpleType>
38
+ </xs:element>
39
+ <xs:element name="Country">
40
+ <xs:complexType>
41
+ <xs:simpleContent>
42
+ <xs:extension base="AddressFieldType">
43
+ <xs:attribute name="Code">
44
+ <xs:simpleType>
45
+ <xs:restriction base="xs:string">
46
+ <xs:pattern value="[A-Z]{2}"/>
47
+ </xs:restriction>
48
+ </xs:simpleType>
49
+ </xs:attribute>
50
+ </xs:extension>
51
+ </xs:simpleContent>
52
+ </xs:complexType>
53
+ </xs:element>
54
+ </xs:sequence>
55
+ <xs:element name="Email" minOccurs="0">
56
+ <xs:simpleType>
57
+ <xs:restriction base="xs:string">
58
+ <xs:maxLength value="64"/>
59
+ </xs:restriction>
60
+ </xs:simpleType>
61
+ </xs:element>
62
+ </xs:sequence>
63
+ <xs:attribute name="Mode" use="required">
64
+ <xs:simpleType>
65
+ <xs:restriction base="xs:string">
66
+ <xs:enumeration value="ReadOnly"/>
67
+ <xs:enumeration value="ReadWrite"/>
68
+ </xs:restriction>
69
+ </xs:simpleType>
70
+ </xs:attribute>
71
+ </xs:complexType>
72
+ <xs:simpleType name="PriceType">
73
+ <xs:restriction base="xs:float">
74
+ <xs:pattern value="-?\d{1,9}\.\d{2}|-?\d{1,9}"/>
75
+ </xs:restriction>
76
+ </xs:simpleType>
77
+ <xs:simpleType name="CurrencyType">
78
+ <xs:restriction base="xs:string">
79
+ <xs:length value="3"/>
80
+ <xs:pattern value="[A-Z]{3}"/>
81
+ </xs:restriction>
82
+ </xs:simpleType>
83
+ <xs:simpleType name="AddressFieldType">
84
+ <xs:restriction base="xs:string">
85
+ <xs:maxLength value="50"/>
86
+ </xs:restriction>
87
+ </xs:simpleType>
88
+ <xs:element name="Order">
89
+ <xs:complexType>
90
+ <xs:sequence>
91
+ <xs:element name="UserField" type="xs:string" minOccurs="0"/>
92
+ <xs:element name="Tid">
93
+ <xs:simpleType>
94
+ <xs:restriction base="xs:string">
95
+ <xs:maxLength value="32"/>
96
+ </xs:restriction>
97
+ </xs:simpleType>
98
+ </xs:element>
99
+ <xs:element name="TemplateSet" minOccurs="0">
100
+ <xs:complexType>
101
+ <xs:simpleContent>
102
+ <xs:extension base="xs:string">
103
+ <xs:attribute name="CSSName" type="xs:string"/>
104
+ <xs:attribute name="Language">
105
+ <xs:simpleType>
106
+ <xs:restriction base="xs:string">
107
+ <xs:enumeration value="EN"/>
108
+ <xs:enumeration value="DE"/>
109
+ <xs:enumeration value="BG"/>
110
+ <xs:enumeration value="FR"/>
111
+ <xs:enumeration value="HU"/>
112
+ <xs:enumeration value="NL"/>
113
+ <xs:enumeration value="ES"/>
114
+ <xs:enumeration value="IT"/>
115
+ <xs:enumeration value="CS"/>
116
+ <xs:enumeration value="HR"/>
117
+ </xs:restriction>
118
+ </xs:simpleType>
119
+ </xs:attribute>
120
+ </xs:extension>
121
+ </xs:simpleContent>
122
+ </xs:complexType>
123
+ </xs:element>
124
+ <xs:element name="PaymentTypes" minOccurs="0">
125
+ <xs:complexType>
126
+ <xs:sequence>
127
+ <xs:element name="Payment" maxOccurs="unbounded">
128
+ <xs:complexType>
129
+ <xs:attribute name="Type" use="required">
130
+ <xs:simpleType>
131
+ <xs:restriction base="xs:string">
132
+ <xs:enumeration value="CC"/>
133
+ <xs:enumeration value="CB"/>
134
+ <xs:enumeration value="MAESTRO"/>
135
+ <xs:enumeration value="EPS"/>
136
+ <xs:enumeration value="MIA"/>
137
+ <xs:enumeration value="PB"/>
138
+ <xs:enumeration value="PSC"/>
139
+ <xs:enumeration value="CASH-TICKET"/>
140
+ <xs:enumeration value="ELV"/>
141
+ <xs:enumeration value="QUICK"/>
142
+ <xs:enumeration value="GIROPAY"/>
143
+ <xs:enumeration value="PAYPAL"/>
144
+ <xs:enumeration value="MPASS"/>
145
+ <xs:enumeration value="INVOICE"/>
146
+ <xs:enumeration value="HP"/>
147
+ </xs:restriction>
148
+ </xs:simpleType>
149
+ </xs:attribute>
150
+ <xs:attribute name="Brand">
151
+ <xs:simpleType>
152
+ <xs:restriction base="xs:string">
153
+ <xs:enumeration value="AMEX"/>
154
+ <xs:enumeration value="DINERS"/>
155
+ <xs:enumeration value="MASTERCARD"/>
156
+ <xs:enumeration value="VISA"/>
157
+ <xs:enumeration value="JCB"/>
158
+ <xs:enumeration value="BANK-BGLD"/>
159
+ <xs:enumeration value="BAWAG"/>
160
+ <xs:enumeration value="BA"/>
161
+ <xs:enumeration value="ERSTE"/>
162
+ <xs:enumeration value="RZB"/>
163
+ <xs:enumeration value="HYPO"/>
164
+ <xs:enumeration value="VOLKSBANK"/>
165
+ <xs:enumeration value="ARZ"/>
166
+ <xs:enumeration value="ONE"/>
167
+ <xs:enumeration value="T-MOBILE"/>
168
+ <xs:enumeration value="ORANGE"/>
169
+ <xs:enumeration value="ATOS"/>
170
+ <xs:enumeration value="HOBEX-AT"/>
171
+ <xs:enumeration value="HOBEX-DE"/>
172
+ <xs:enumeration value="HOBEX-NL"/>
173
+ <xs:enumeration value="BILLPAY"/>
174
+ </xs:restriction>
175
+ </xs:simpleType>
176
+ </xs:attribute>
177
+ </xs:complexType>
178
+ </xs:element>
179
+ </xs:sequence>
180
+ <xs:attribute name="Enable" type="xs:boolean" default="true">
181
+ <xs:annotation>
182
+ <xs:documentation>Enable or disable the specified payment types</xs:documentation>
183
+ </xs:annotation>
184
+ </xs:attribute>
185
+ </xs:complexType>
186
+ </xs:element>
187
+ <xs:element name="ShoppingCart" minOccurs="0">
188
+ <xs:complexType>
189
+ <xs:sequence>
190
+ <xs:element name="Description" type="xs:string" minOccurs="0"/>
191
+ <xs:element name="Item" minOccurs="0" maxOccurs="unbounded">
192
+ <xs:complexType>
193
+ <xs:sequence>
194
+ <xs:element name="Number" minOccurs="0">
195
+ <xs:complexType>
196
+ <xs:simpleContent>
197
+ <xs:extension base="xs:string">
198
+ <xs:attribute name="Style" type="xs:string"/>
199
+ </xs:extension>
200
+ </xs:simpleContent>
201
+ </xs:complexType>
202
+ </xs:element>
203
+ <xs:element name="ProductNr" minOccurs="0">
204
+ <xs:complexType>
205
+ <xs:simpleContent>
206
+ <xs:extension base="xs:string">
207
+ <xs:attribute name="Style" type="xs:string"/>
208
+ </xs:extension>
209
+ </xs:simpleContent>
210
+ </xs:complexType>
211
+ </xs:element>
212
+ <xs:element name="Description" minOccurs="0">
213
+ <xs:complexType>
214
+ <xs:simpleContent>
215
+ <xs:extension base="xs:string">
216
+ <xs:attribute name="Style" type="xs:string"/>
217
+ </xs:extension>
218
+ </xs:simpleContent>
219
+ </xs:complexType>
220
+ </xs:element>
221
+ <xs:element name="Package" minOccurs="0">
222
+ <xs:complexType>
223
+ <xs:simpleContent>
224
+ <xs:extension base="xs:string">
225
+ <xs:attribute name="Style" type="xs:string"/>
226
+ </xs:extension>
227
+ </xs:simpleContent>
228
+ </xs:complexType>
229
+ </xs:element>
230
+ <xs:element name="Quantity" minOccurs="0">
231
+ <xs:complexType>
232
+ <xs:simpleContent>
233
+ <xs:extension base="xs:unsignedInt">
234
+ <xs:attribute name="Style" type="xs:string"/>
235
+ </xs:extension>
236
+ </xs:simpleContent>
237
+ </xs:complexType>
238
+ </xs:element>
239
+ <xs:element name="ItemPrice" minOccurs="0">
240
+ <xs:complexType>
241
+ <xs:simpleContent>
242
+ <xs:extension base="PriceType">
243
+ <xs:attribute name="Style" type="xs:string"/>
244
+ <xs:attribute name="Tax" type="PriceType"/>
245
+ </xs:extension>
246
+ </xs:simpleContent>
247
+ </xs:complexType>
248
+ </xs:element>
249
+ <xs:element name="Price" minOccurs="0">
250
+ <xs:complexType>
251
+ <xs:simpleContent>
252
+ <xs:extension base="PriceType">
253
+ <xs:attribute name="Style" type="xs:string"/>
254
+ </xs:extension>
255
+ </xs:simpleContent>
256
+ </xs:complexType>
257
+ </xs:element>
258
+ </xs:sequence>
259
+ </xs:complexType>
260
+ </xs:element>
261
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
262
+ <xs:element name="SubTotal">
263
+ <xs:complexType>
264
+ <xs:simpleContent>
265
+ <xs:extension base="PriceType">
266
+ <xs:attribute name="Header" type="xs:string"/>
267
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
268
+ <xs:attribute name="Style" type="xs:string"/>
269
+ </xs:extension>
270
+ </xs:simpleContent>
271
+ </xs:complexType>
272
+ </xs:element>
273
+ <xs:element name="Discount">
274
+ <xs:complexType>
275
+ <xs:simpleContent>
276
+ <xs:extension base="PriceType">
277
+ <xs:attribute name="Header" type="xs:string"/>
278
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
279
+ <xs:attribute name="Style" type="xs:string"/>
280
+ </xs:extension>
281
+ </xs:simpleContent>
282
+ </xs:complexType>
283
+ </xs:element>
284
+ <xs:element name="ShippingCosts">
285
+ <xs:complexType>
286
+ <xs:simpleContent>
287
+ <xs:extension base="PriceType">
288
+ <xs:attribute name="Header" type="xs:string"/>
289
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
290
+ <xs:attribute name="Style" type="xs:string"/>
291
+ <xs:attribute name="Tax" type="PriceType"/>
292
+ </xs:extension>
293
+ </xs:simpleContent>
294
+ </xs:complexType>
295
+ </xs:element>
296
+ <xs:element name="Tax">
297
+ <xs:complexType>
298
+ <xs:simpleContent>
299
+ <xs:extension base="PriceType">
300
+ <xs:attribute name="Percent" type="xs:float"/>
301
+ <xs:attribute name="Header" type="xs:string"/>
302
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
303
+ <xs:attribute name="Style" type="xs:string"/>
304
+ </xs:extension>
305
+ </xs:simpleContent>
306
+ </xs:complexType>
307
+ </xs:element>
308
+ </xs:choice>
309
+ </xs:sequence>
310
+ <xs:attribute name="Header" type="xs:string"/>
311
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
312
+ <xs:attribute name="Style" type="xs:string"/>
313
+ <xs:attribute name="CaptionStyle" type="xs:string"/>
314
+ <xs:attribute name="NumberHeader" type="xs:string"/>
315
+ <xs:attribute name="NumberStyle" type="xs:string"/>
316
+ <xs:attribute name="ProductNrHeader" type="xs:string"/>
317
+ <xs:attribute name="ProductNrStyle" type="xs:string"/>
318
+ <xs:attribute name="DescriptionHeader" type="xs:string"/>
319
+ <xs:attribute name="DescriptionStyle" type="xs:string"/>
320
+ <xs:attribute name="PackageHeader" type="xs:string"/>
321
+ <xs:attribute name="PackageStyle" type="xs:string"/>
322
+ <xs:attribute name="QuantityHeader" type="xs:string"/>
323
+ <xs:attribute name="QuantityStyle" type="xs:string"/>
324
+ <xs:attribute name="ItemPriceHeader" type="xs:string"/>
325
+ <xs:attribute name="ItemPriceStyle" type="xs:string"/>
326
+ <xs:attribute name="PriceHeader" type="xs:string"/>
327
+ <xs:attribute name="PriceStyle" type="xs:string"/>
328
+ </xs:complexType>
329
+ </xs:element>
330
+ <xs:element name="Price">
331
+ <xs:complexType>
332
+ <xs:simpleContent>
333
+ <xs:extension base="PriceType">
334
+ <xs:attribute name="Header" type="xs:string"/>
335
+ <xs:attribute name="HeaderStyle" type="xs:string"/>
336
+ <xs:attribute name="Style" type="xs:string"/>
337
+ </xs:extension>
338
+ </xs:simpleContent>
339
+ </xs:complexType>
340
+ </xs:element>
341
+ <xs:element name="Currency" minOccurs="0">
342
+ <xs:complexType>
343
+ <xs:simpleContent>
344
+ <xs:extension base="CurrencyType">
345
+ <xs:attribute name="Display"/>
346
+ </xs:extension>
347
+ </xs:simpleContent>
348
+ </xs:complexType>
349
+ </xs:element>
350
+ <xs:element name="Customer" minOccurs="0">
351
+ <xs:complexType>
352
+ <xs:simpleContent>
353
+ <xs:extension base="xs:string">
354
+ <xs:attribute name="Id">
355
+ <xs:simpleType>
356
+ <xs:restriction base="xs:string">
357
+ <xs:maxLength value="32"/>
358
+ </xs:restriction>
359
+ </xs:simpleType>
360
+ </xs:attribute>
361
+ <xs:attribute name="UseProfile" type="xs:boolean"/>
362
+ </xs:extension>
363
+ </xs:simpleContent>
364
+ </xs:complexType>
365
+ </xs:element>
366
+ <xs:element name="BillingAddr" minOccurs="0">
367
+ <xs:complexType>
368
+ <xs:complexContent>
369
+ <xs:extension base="AddressType"/>
370
+ </xs:complexContent>
371
+ </xs:complexType>
372
+ </xs:element>
373
+ <xs:element name="ShippingAddr" minOccurs="0">
374
+ <xs:complexType>
375
+ <xs:complexContent>
376
+ <xs:extension base="AddressType"/>
377
+ </xs:complexContent>
378
+ </xs:complexType>
379
+ </xs:element>
380
+ <xs:element name="URL" minOccurs="0">
381
+ <xs:complexType>
382
+ <xs:sequence>
383
+ <xs:element name="Success" type="xs:anyURI" minOccurs="0"/>
384
+ <xs:element name="Error" type="xs:anyURI" minOccurs="0"/>
385
+ <xs:element name="Confirmation" type="xs:anyURI" minOccurs="0"/>
386
+ <xs:element name="Cancel" type="xs:anyURI" minOccurs="0"/>
387
+ </xs:sequence>
388
+ </xs:complexType>
389
+ </xs:element>
390
+ </xs:sequence>
391
+ <xs:attribute name="Style" type="xs:string"/>
392
+ <xs:attribute name="LogoStyle" type="xs:string"/>
393
+ <xs:attribute name="PageHeaderStyle" type="xs:string"/>
394
+ <xs:attribute name="PageCaptionStyle" type="xs:string"/>
395
+ <xs:attribute name="PageStyle" type="xs:string"/>
396
+ <xs:attribute name="InputFieldsStyle" type="xs:string"/>
397
+ <xs:attribute name="DropDownListsStyle" type="xs:string"/>
398
+ <xs:attribute name="ButtonsStyle" type="xs:string"/>
399
+ <xs:attribute name="ErrorsStyle" type="xs:string"/>
400
+ <xs:attribute name="ErrorsHeaderStyle" type="xs:string"/>
401
+ <xs:attribute name="SuccessTitleStyle" type="xs:string"/>
402
+ <xs:attribute name="ErrorTitleStyle" type="xs:string"/>
403
+ <xs:attribute name="FooterStyle" type="xs:string"/>
404
+ </xs:complexType>
405
+ </xs:element>
406
+ </xs:schema>
app/code/community/Mpay24/Mpay24/Model/Api/MPay24Api.php ADDED
@@ -0,0 +1,954 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author support@mpay24.com
4
+ * @version $Id: MPay24Api.php 5217 2012-10-16 05:27:43Z anna $
5
+ * @filesource MPay24Api.php
6
+ * @license http://ec.europa.eu/idabc/eupl.html EUPL, Version 1.1
7
+ */
8
+
9
+ class MPay24Api {
10
+
11
+ /**
12
+ * @var BOOLEAN TRUE, when you want to use the test system, and FALSE otherwise
13
+ */
14
+ private $test = false;
15
+ /**
16
+ * @var STRING The link where the requests should be sent to
17
+ *
18
+ * DEFAULT : https://test.mpay24.com/app/bin/etpproxy_v14 (TEST SYSTEM)
19
+ */
20
+ private $etp_url = "https://test.mpay24.com/app/bin/etpproxy_v15";
21
+ /**
22
+ * @var INTEGER The merchant ID (supported from mPAY24). 5-digit number. Begin with 9
23
+ * for test system, begin with 7 for the live system.
24
+ */
25
+ private $merchantid = "9xxxx";
26
+ /**
27
+ * @var STRING The SOAP password (supproted from mPAY24)
28
+ */
29
+ private $soappass = "";
30
+ /**
31
+ * @var STRING The fix (envelope) part of the soap xml, which is to be sent to mPAY24
32
+ */
33
+ private $soap_xml = "";
34
+ /**
35
+ * @var STRING The host name, in case you are using proxy
36
+ */
37
+ private $proxy_host = "";
38
+ /**
39
+ * @var INTEGER 4-digit port number, in case you are using proxy
40
+ */
41
+ private $proxy_port = "";
42
+ /**
43
+ * @var STRING The whole soap-xml (envelope and body), which is to be sent to mPAY24 as request
44
+ */
45
+ private $request = "";
46
+ /**
47
+ * @var STRING The response from mPAY24
48
+ */
49
+ private $response = "";
50
+ /**
51
+ * @var BOOLEAN TRUE if log files are to be written, by default - FALSE
52
+ */
53
+ private $debug = true;
54
+
55
+
56
+ /**
57
+ * @abstract Set the basic (mandatory) settings for the requests
58
+ * @param INTEGER 5-digit account number, supported by mPAY24
59
+ *
60
+ * TEST accounts - starting with 9
61
+ *
62
+ * LIVE account - starting with 7
63
+ * @param STRING The webservice's password, supported by mPAY24
64
+ * @param BOOLEAN TRUE - when you want to use the TEST system
65
+ *
66
+ * FALSE - when you want to use the LIVE system
67
+ * @param STRING The host name in case you are behind a proxy server ("" when not)
68
+ * @param INTEGER 4-digit port number in case you are behind a proxy server ("" when not)
69
+ */
70
+ public function configure($merchantID, $soapPassword, $test, $proxyHost, $proxyPort) {
71
+ if(!defined('LIVE_ERROR_MSG')) define('LIVE_ERROR_MSG', "We are sorry, an error occured - please contact the merchant!");
72
+
73
+ if ( !defined('__DIR__') ) define('__DIR__', dirname(__FILE__));
74
+
75
+ $this->setMerchantID($merchantID);
76
+ $this->setSoapPassword($soapPassword);
77
+ $this->setSystem($test);
78
+
79
+ if($proxyHost != "" && $proxyPort != "")
80
+ $this->setProxySettings($proxyHost, $proxyPort);
81
+ }
82
+
83
+ /**
84
+ * @return STRING 5-digit merchant ID
85
+ */
86
+ public function getMerchantID() {
87
+ return substr($this->merchantid, 1);
88
+ }
89
+
90
+ /**
91
+ * @return STRING The URL where the requests are sending to
92
+ */
93
+ public function getEtpURL() {
94
+ return $this->etp_url;
95
+ }
96
+
97
+ /**
98
+ * @return STRING The request, which was sent to mPAY24 (in XML form)
99
+ */
100
+ public function getRequest() {
101
+ return $this->request;
102
+ }
103
+
104
+ /**
105
+ * @return STRING The response from mPAY24 (in XML form)
106
+ */
107
+ public function getResponse() {
108
+ return $this->response;
109
+ }
110
+
111
+ /**
112
+ * @return BOOLEAN Whether a proxy is used
113
+ */
114
+ public function proxyUsed() {
115
+ if($this->proxy_host != '' && $this->proxy_port != '')
116
+ return true;
117
+ else
118
+ return false;
119
+ }
120
+
121
+ /**
122
+ * @abstract Set debug modus (FALSE by default)
123
+ * @param BOOLEAN TRUE if is turned on, otherwise FALSE
124
+ */
125
+ public function setDebug($debug) {
126
+ $this->debug = $debug;
127
+ }
128
+
129
+ /**
130
+ * @return BOOLEAN Whether the debug modus is turned on or off
131
+ */
132
+ public function getDebug() {
133
+ return $this->debug;
134
+ }
135
+
136
+ public function dieWithMsg($msg) {
137
+ if($this->test)
138
+ die($msg);
139
+ else
140
+ die(LIVE_ERROR_MSG);
141
+ }
142
+
143
+ public function printMsg($msg) {
144
+ if($this->test)
145
+ print($msg);
146
+ else
147
+ print(LIVE_ERROR_MSG);
148
+ }
149
+
150
+ public function permissionError() {
151
+ $errors = error_get_last();
152
+ $message = $errors['message'];
153
+ $path = substr($message, strpos($message, 'fopen(')+6, strpos($message, ')')-(strpos($message, 'fopen(')+6));
154
+ $this->dieWithMsg("Can't open file '$path'! Please set the needed read/write rights!");
155
+ }
156
+
157
+ /**
158
+ * @abstract Get all the payment methods, that are available for the merchant by mPAY24
159
+ * @uses ListPaymentMethodsResponse
160
+ * @return ListPaymentMethodsResponse
161
+ */
162
+ public function ListPaymentMethods() {
163
+ $xml = $this->buildEnvelope();
164
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
165
+
166
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:ListPaymentMethods');
167
+ $operation = $body->appendChild($operation);
168
+
169
+ $xmlMerchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
170
+ $xmlMerchantID = $operation->appendChild($xmlMerchantID);
171
+
172
+ $this->request = $xml->saveXML();
173
+
174
+ $this->send();
175
+
176
+ $result = new ListPaymentMethodsResponse($this->response);
177
+
178
+ return $result;
179
+ }
180
+
181
+ /**
182
+ * @abstract Start a secure payment through the mPAY24 payment window -
183
+ * the sensible data (credit card numbers, bank account numbers etc)
184
+ * is (will be) not saved in the shop
185
+ * @uses PaymentResponse
186
+ * @param ORDER The mdxi xml, which contains the shopping cart
187
+ * @return PaymentResponse
188
+ */
189
+ public function SelectPayment($mdxi) {
190
+ $xml = $this->buildEnvelope();
191
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
192
+
193
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:SelectPayment');
194
+ $operation = $body->appendChild($operation);
195
+
196
+ $merchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
197
+ $merchantID = $operation->appendChild($merchantID);
198
+
199
+ $xmlMDXI = $xml->createElement('mdxi', htmlspecialchars($mdxi));
200
+ $xmlMDXI = $operation->appendChild($xmlMDXI);
201
+
202
+ $getDataURL = $xml->createElement('getDataURL', "dummy_getDataURL");
203
+ $getDataURL = $operation->appendChild($getDataURL);
204
+
205
+ $tid = $xml->createElement('tid', 'tid');
206
+ $tid = $operation->appendChild($tid);
207
+
208
+ $this->request = $xml->saveXML();
209
+
210
+ $this->send();
211
+
212
+ $result = new PaymentResponse($this->response);
213
+
214
+ return $result;
215
+ }
216
+
217
+ /**
218
+ * @abstract Start a secure payment using a PROFILE (mPAY24 proSAFE), supported by mPAY24 -
219
+ * a customer profile (you have already created) will be used for the payment.
220
+ * The payment window will not be called, the payment source (for example credit card),
221
+ * which was used from the customer by the last payment will be used for the transaction.
222
+ * @uses PaymentResponse
223
+ * @param ORDER The order xml, which contains the shopping cart
224
+ * @return SelectPaymentResponse
225
+ */
226
+ public function ProfilePayment($requestString) {
227
+ $xml = $this->buildEnvelope();
228
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
229
+
230
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:AcceptPayment');
231
+ $operation = $body->appendChild($operation);
232
+
233
+ $requestXML = new DOMDocument("1.0", "UTF-8");
234
+ $requestXML->formatOutput = true;
235
+ $requestXML->loadXML($requestString);
236
+
237
+ $requestNode = $requestXML->getElementsByTagName("AcceptPayment")->item(0);
238
+
239
+ foreach($requestNode->childNodes as $child) {
240
+ $child = $xml->importNode($child, true);
241
+ $operation->appendChild($child);
242
+ }
243
+
244
+ $this->request = $xml->saveXML();
245
+
246
+ $this->send();
247
+
248
+ $result = new PaymentResponse($this->response);
249
+
250
+ return $result;
251
+ }
252
+
253
+ /**
254
+ * @abstract Start a secure payment using a PayPal Express Checkout, supported by mPAY24 -
255
+ * the customer doesn't need to be logged in in the shop or to give any data
256
+ * (addresses or payment information), but will be redirected to the PayPal site,
257
+ * and all the information from PayPal will be taken for the payment.
258
+ * @uses PaymentResponse
259
+ * @param ORDER The order xml, which contains the shopping cart
260
+ * @return PaymentResponse
261
+ */
262
+ public function ExpressCheckoutPayment($requestString) {
263
+ $xml = $this->buildEnvelope();
264
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
265
+
266
+ $operation = $xml->createElement('etp:AcceptPayment');
267
+ $operation = $body->appendChild($operation);
268
+
269
+ $requestXML = new DOMDocument("1.0", "UTF-8");
270
+ $requestXML->formatOutput = true;
271
+ $requestXML->loadXML($requestString);
272
+
273
+ $requestNode = $requestXML->getElementsByTagName("AcceptPayment")->item(0);
274
+
275
+ foreach($requestNode->childNodes as $child) {
276
+ $child = $xml->importNode($child, true);
277
+ $operation->appendChild($child);
278
+ if($child->nodeName == 'payment') {
279
+ $child->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance' ,'xsi:type', 'etp:PaymentPAYPAL');
280
+ }
281
+ }
282
+
283
+ $this->request = $xml->saveXML();
284
+
285
+ $this->send();
286
+
287
+ $result = new PaymentResponse($this->response);
288
+
289
+ return $result;
290
+ }
291
+
292
+ /**
293
+ * @uses PaymentResponse
294
+ * @param STRING 5-digit account number, supported by mPAY24
295
+ * @param STRING The transaction ID, supported from mPAY24
296
+ * @param INTEGER The positive shipping costs for the transaction multiply by 100
297
+ * @param INTEGER The positive amount to be reserved/billed multiply by 100
298
+ * @param STRING In case of "true", the transaction will be canceled, in case of "false" the amount will be reserved
299
+ * @return PaymentResponse
300
+ */
301
+ public function CallbackPaypal($requestString) {
302
+ $xml = $this->buildEnvelope();
303
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
304
+
305
+ $operation = $xml->createElement('etp:ManualCallback');
306
+ $operation = $body->appendChild($operation);
307
+
308
+ $requestXML = new DOMDocument("1.0", "UTF-8");
309
+ $requestXML->formatOutput = true;
310
+ $requestXML->loadXML($requestString);
311
+
312
+ $requestNode = $requestXML->getElementsByTagName("AcceptPayment")->item(0);
313
+
314
+ foreach($requestNode->childNodes as $child) {
315
+ $child = $xml->importNode($child, true);
316
+ $operation->appendChild($child);
317
+ if($child->nodeName == 'paymentCallback') {
318
+ $child->setAttributeNS('http://www.w3.org/2001/XMLSchema-instance' ,'xsi:type', 'etp:CallbackPAYPAL');
319
+ }
320
+ }
321
+
322
+ $this->request = $xml->saveXML();
323
+
324
+ $this->send();
325
+
326
+ $result = new PaymentResponse($this->response);
327
+
328
+ return $result;
329
+
330
+ }
331
+
332
+ /**
333
+ * @abstract Clear a transaction with an amount
334
+ * @uses ManagePaymentResponse
335
+ * @param INTEGER The mPAY24 transaction ID
336
+ * @param INTEGER The amount to be cleared multiplay by 100
337
+ * @param STRING 3-digit ISO currency code: EUR, USD, etc
338
+ * @return ManagePaymentResponse
339
+ */
340
+ public function ManualClear($mPAYTid, $amount, $currency) {
341
+ $xml = $this->buildEnvelope();
342
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
343
+
344
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:ManualClear');
345
+ $operation = $body->appendChild($operation);
346
+
347
+ $merchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
348
+ $merchantID = $operation->appendChild($merchantID);
349
+
350
+ $clearingDetails = $xml->createElement('clearingDetails');
351
+ $clearingDetails = $operation->appendChild($clearingDetails);
352
+
353
+ $xmlMPayTid = $xml->createElement('mpayTID', $mPAYTid);
354
+ $xmlMPayTid = $clearingDetails->appendChild($xmlMPayTid);
355
+
356
+ $price = $xml->createElement('amount', $amount);
357
+ $price = $clearingDetails->appendChild($price);
358
+
359
+ $this->request = $xml->saveXML();
360
+
361
+ $this->send();
362
+
363
+ $result = new ManagePaymentResponse($this->response);
364
+
365
+ return $result;
366
+ }
367
+
368
+ /**
369
+ * @abstract Credit a transaction with an amount
370
+ * @uses ManagePaymentResponse
371
+ * @param INTEGER The mPAY24 transaction ID
372
+ * @param INTEGER The amount to be credited multiplay by 100
373
+ * @param STRING 3-digit ISO currency code: EUR, USD, etc
374
+ * @param STRING The name of the customer, who has paid
375
+ * @return ManagePaymentResponse
376
+ */
377
+ public function ManualCredit($mPAYTid, $amount, $currency, $customer) {
378
+ $xml = $this->buildEnvelope();
379
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
380
+
381
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:ManualCredit');
382
+ $operation = $body->appendChild($operation);
383
+
384
+ $merchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
385
+ $merchantID = $operation->appendChild($merchantID);
386
+
387
+ $xmlMPayTid = $xml->createElement('mpayTID', $mPAYTid);
388
+ $xmlMPayTid = $operation->appendChild($xmlMPayTid);
389
+
390
+ $price = $xml->createElement('amount', $amount);
391
+ $price = $operation->appendChild($price);
392
+
393
+ $this->request = $xml->saveXML();
394
+
395
+ $this->send();
396
+
397
+ $result = new ManagePaymentResponse($this->response);
398
+
399
+ return $result;
400
+ }
401
+
402
+ /**
403
+ * @abstract Cancel a transaction
404
+ * @uses ManagePaymentResponse
405
+ * @param INTEGER The mPAY24 transaction ID for the transaction you want to cancel
406
+ * @return ManagePaymentResponse
407
+ */
408
+ public function ManualReverse($mPAYTid) {
409
+ $xml = $this->buildEnvelope();
410
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
411
+
412
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:ManualReverse');
413
+ $operation = $body->appendChild($operation);
414
+
415
+ $merchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
416
+ $merchantID = $operation->appendChild($merchantID);
417
+
418
+ $xmlMPayTid = $xml->createElement('mpayTID', $mPAYTid);
419
+ $xmlMPayTid = $operation->appendChild($xmlMPayTid);
420
+
421
+ $this->request = $xml->saveXML();
422
+
423
+ $this->send();
424
+
425
+ $result = new ManagePaymentResponse($this->response);
426
+
427
+ return $result;
428
+ }
429
+
430
+ /**
431
+ * @abstract Get all the information for a transaction, supported by mPAY24
432
+ * @uses TransactionStatusResponse
433
+ * @param INTEGER The mPAY24 transaction ID
434
+ * @param STRING The transaction ID from your shop
435
+ * @return TransactionStatusResponse
436
+ */
437
+ public function TransactionStatus($mPAYTid=null, $tid=null) {
438
+ $xml = $this->buildEnvelope();
439
+ $body = $xml->getElementsByTagNameNS('http://schemas.xmlsoap.org/soap/envelope/', 'Body')->item(0);
440
+
441
+ $operation = $xml->createElementNS('https://www.mpay24.com/soap/etp/1.5/ETP.wsdl', 'etp:TransactionStatus');
442
+ $operation = $body->appendChild($operation);
443
+
444
+ $merchantID = $xml->createElement('merchantID', substr($this->merchantid, 1));
445
+ $merchantID = $operation->appendChild($merchantID);
446
+
447
+ if($mPAYTid) {
448
+ $xmlMPayTid = $xml->createElement('mpayTID', $mPAYTid);
449
+ $xmlMPayTid = $operation->appendChild($xmlMPayTid);
450
+ } else {
451
+ $xmlTid = $xml->createElement('tid', $tid);
452
+ $xmlTid = $operation->appendChild($xmlTid);
453
+ }
454
+
455
+ $this->request = $xml->saveXML();
456
+
457
+ $this->send();
458
+
459
+ $result = new TransactionStatusResponse($this->response);
460
+
461
+ return $result;
462
+ }
463
+
464
+ /**
465
+ * @param STRING: (without 'u')
466
+ */
467
+ private function setMerchantID($merchantID=null) {
468
+ if($merchantID==null)
469
+ $this->merchantid = 'u' . MERCHANT_ID;
470
+ else
471
+ $this->merchantid = 'u' . $merchantID;
472
+ }
473
+
474
+ /**
475
+ * @param STRING
476
+ */
477
+ private function setSoapPassword($pass=null) {
478
+ if(defined("SOAP_PASSWORD"))
479
+ $this->soappass = SOAP_PASSWORD;
480
+ else
481
+ $this->soappass = $pass;
482
+ }
483
+
484
+ /**
485
+ * @abstract Set if the system is test (true) or not (false)
486
+ *
487
+ * Set the POST url
488
+ * ("https://test.mpay24.com/app/bin/etpproxy_v14" or
489
+ * "https://www.mpay24.com/app/bin/etpproxy_v14")
490
+ * @param BOOLEAN
491
+ *
492
+ */
493
+ private function setSystem($test=null) {
494
+ if($test) {
495
+ $this->test = true;
496
+ $this->etp_url = "https://test.mpay24.com/app/bin/etpproxy_v15";
497
+ } else {
498
+ $this->test = false;
499
+ $this->etp_url = "https://www.mpay24.com/app/bin/etpproxy_v15";
500
+ }
501
+ }
502
+
503
+ /**
504
+ * @abstract Set the used proxy host and proxy port in case proxy is used
505
+ * @param STRING
506
+ * @param STRING
507
+ */
508
+ private function setProxySettings($proxy_host="", $proxy_port="") {
509
+ if($proxy_host != "" && $proxy_port != "") {
510
+ $this->proxy_host = $proxy_host;
511
+ $this->proxy_port = $proxy_port;
512
+ }
513
+ }
514
+
515
+ /**
516
+ * @abstract Create a DOMDocument and prepare it for SOAP request:
517
+ *
518
+ * set Envelope, NameSpaces, create empty Body
519
+ * @return DOMDocument
520
+ */
521
+ private function buildEnvelope() {
522
+ $this->soap_xml = new DOMDocument("1.0", "UTF-8");
523
+ $this->soap_xml->formatOutput = true;
524
+
525
+ $envelope = $this->soap_xml->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'soapenv:Envelope');
526
+ $envelope->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xsd', 'http://www.w3.org/2001/XMLSchema');
527
+ $envelope->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:etp', 'https://www.mpay24.com/soap/etp/1.5/ETP.wsdl');
528
+ $envelope->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
529
+ $envelope = $this->soap_xml->appendChild($envelope);
530
+
531
+ $body = $this->soap_xml->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'soapenv:Body');
532
+ $body = $envelope->appendChild($body);
533
+
534
+ return $this->soap_xml;
535
+ }
536
+
537
+ /**
538
+ * @uses buildXMLRequest()
539
+ * @abstract Create a curl request and send the cretaed SOAP XML
540
+ */
541
+ private function send() {
542
+ $userAgent = 'mPAY24 PHP API $Rev: 5217 $ ($Date:: 2012-10-16 #$)';
543
+
544
+ $ch = curl_init($this->etp_url);
545
+ curl_setopt($ch, CURLOPT_HEADER, 0);
546
+ curl_setopt($ch, CURLOPT_POST, 1);
547
+ curl_setopt($ch,CURLOPT_USERPWD,"$this->merchantid:$this->soappass");
548
+ curl_setopt($ch,CURLOPT_USERAGENT,$userAgent);
549
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $this->request);
550
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
551
+
552
+ if($this->debug) {
553
+ $fh = fopen(__DIR__."/logs/curllog.log", 'a+') or $this->permissionError();
554
+
555
+ curl_setopt($ch, CURLOPT_VERBOSE, 1);
556
+ curl_setopt($ch, CURLOPT_STDERR, $fh);
557
+ }
558
+
559
+ try {
560
+ curl_setopt($ch, CURLOPT_CAINFO, __DIR__.'/cacert.pem');
561
+
562
+ if($this->proxy_host !== '' && $this->proxy_port !== '')
563
+ curl_setopt($ch, CURLOPT_PROXY, $this->proxy_host.':'.$this->proxy_port);
564
+
565
+ $this->response = curl_exec($ch);
566
+ curl_close($ch);
567
+ if($this->debug)
568
+ fclose($fh);
569
+ } catch (Exception $e) {
570
+ if($this->test)
571
+ $dieMSG = "Your request couldn't be sent because of the following error:" . "\n" .
572
+ curl_error($ch) . "\n" .
573
+ $e->getMessage() .
574
+ ' in '.$e->getFile().', line: '.
575
+ $e->getLine().'.';
576
+ else
577
+ $dieMSG = LIVE_ERROR_MSG;
578
+
579
+ echo $dieMSG;
580
+ }
581
+ }
582
+ }
583
+
584
+
585
+
586
+ class GeneralResponse {
587
+
588
+ /**
589
+ * @var STRING The status of the request, which was sent to mPAY24
590
+ */
591
+ var $status;
592
+ /**
593
+ *
594
+ * @var STRING The return code from the request, which was sent to mPAY24
595
+ */
596
+ var $returnCode;
597
+
598
+ /**
599
+ * @abstract Sets the basic values from the response from mPAY24: status and return code
600
+ * @param STRING The SOAP response from mPAY24 (in XML form)
601
+ */
602
+ function GeneralResponse($response) {
603
+ if($response != '') {
604
+ $responseAsDOM = new DOMDocument();
605
+ $responseAsDOM->loadXML($response);
606
+
607
+ if(!empty($responseAsDOM) && is_object($responseAsDOM))
608
+ if(!$responseAsDOM || $responseAsDOM->getElementsByTagName('status')->length == 0){
609
+ $this->status = "ERROR";
610
+ $this->returnCode = urldecode($response);
611
+ } else {
612
+ $this->status = $responseAsDOM->getElementsByTagName('status')->item(0)->nodeValue;
613
+ $this->returnCode = $responseAsDOM->getElementsByTagName('returnCode')->item(0)->nodeValue;
614
+ }
615
+ } else {
616
+ $this->status = "ERROR";
617
+ $this->returnCode = "The response is empty! Probably your request to mPAY24 was not sent! Please see your server log for more information!";
618
+ }
619
+ }
620
+
621
+ /**
622
+ * @return STRING The status of the request, which was sent to mPAY24
623
+ */
624
+ public function getStatus() {
625
+ return $this->status;
626
+ }
627
+
628
+ /**
629
+ * @return STRING The return code from the request, which was sent to mPAY24
630
+ */
631
+ public function getReturnCode() {
632
+ return $this->returnCode;
633
+ }
634
+
635
+ public function setStatus($status) {
636
+ $this->status = $status;
637
+ }
638
+
639
+ public function setReturnCode($returnCode) {
640
+ return $this->returnCode = $returnCode;
641
+ }
642
+
643
+ }
644
+
645
+ class PaymentResponse extends GeneralResponse {
646
+
647
+ /**
648
+ * @var GeneralResponse An object, that represents the basic values from the response from mPAY24:
649
+ * status and return code
650
+ */
651
+ var $generalResponse;
652
+
653
+ /**
654
+ * @var STRING An URL (of the mPAY24 payment fenster), where the customer would be redirected to,
655
+ * in case of successfull request
656
+ */
657
+ var $location;
658
+
659
+
660
+ /**
661
+ * @abstract Sets the values for a payment from the response from mPAY24:
662
+ * mPAY transaction ID, error number, location (URL) and external status
663
+ * @param STRING The SOAP response from mPAY24 (in XML form)
664
+ */
665
+ function PaymentResponse($response) {
666
+ $this->generalResponse = new GeneralResponse($response);
667
+ if($response != '') {
668
+ $responseAsDOM = new DOMDocument();
669
+ $responseAsDOM->loadXML($response);
670
+
671
+ if(!empty($responseAsDOM) && is_object($responseAsDOM))
672
+ $this->location = $responseAsDOM->getElementsByTagName('location')->item(0)->nodeValue;
673
+ } else {
674
+ $this->generalResponse->setStatus("ERROR");
675
+ $this->generalResponse->setReturnCode("The response is empty! Probably your request to mPAY24 was not sent! Please see your server log for more information!");
676
+ }
677
+ }
678
+
679
+ /**
680
+ * @return STRING The location (URL), returned from mPAY24
681
+ */
682
+ public function getLocation(){
683
+ return $this->location;
684
+ }
685
+
686
+ /**
687
+ * @return GeneralResponse The object, that contains the basic values from the response from mPAY24:
688
+ * status and return code
689
+ */
690
+ public function getGeneralResponse(){
691
+ return $this->generalResponse;
692
+ }
693
+ }
694
+
695
+ class ManagePaymentResponse extends GeneralResponse {
696
+
697
+ /**
698
+ * @var GeneralResponse An object, that represents the basic values from the response from mPAY24:
699
+ * status and return code
700
+ */
701
+ var $generalResponse;
702
+ /**
703
+ * @var STRING The mPAY transaction ID
704
+ */
705
+ var $mpayTID;
706
+ /**
707
+ * @var STRING The transaction ID of the shop
708
+ */
709
+ var $tid;
710
+
711
+ /**
712
+ * @abstract Sets the values for a payment from the response from mPAY24:
713
+ * mPAY transaction IDand transaction ID from the shop
714
+ * @param STRING The SOAP response from mPAY24 (in XML form)
715
+ */
716
+ function ManagePaymentResponse($response) {
717
+ $this->generalResponse = new GeneralResponse($response);
718
+
719
+ if($response != '') {
720
+ $responseAsDOM = new DOMDocument();
721
+ $responseAsDOM->loadXML($response);
722
+
723
+ if($responseAsDOM) {
724
+ $this->mpayTID = $responseAsDOM->getElementsByTagName('mpayTID')->item(0)->nodeValue;
725
+ $this->tid = $responseAsDOM->getElementsByTagName('tid')->item(0)->nodeValue;
726
+ }
727
+ } else {
728
+ $this->generalResponse->setStatus("ERROR");
729
+ $this->generalResponse->setReturnCode("The response is empty! Probably your request to mPAY24 was not sent! Please see your server log for more information!");
730
+ }
731
+ }
732
+
733
+ /**
734
+ * @return STRING The mPAY transaction ID, returned from mPAY24
735
+ */
736
+ public function getMpayTID() {
737
+ return $this->mpayTID;
738
+ }
739
+
740
+ /**
741
+ * @return STRING The transaction ID of the shop, returned from mPAY24
742
+ */
743
+ public function getTid() {
744
+ return $this->tid;
745
+ }
746
+
747
+ /**
748
+ * @return GeneralResponse The object, that contains the basic values from the response from mPAY24:
749
+ * status and return code
750
+ */
751
+ public function getGeneralResponse() {
752
+ return $this->generalResponse;
753
+ }
754
+ }
755
+
756
+ class ListPaymentMethodsResponse extends GeneralResponse {
757
+
758
+ /**
759
+ * @var GeneralResponse An object, that represents the basic values from the response from mPAY24:
760
+ * status and return code
761
+ */
762
+ var $generalResponse;
763
+ /**
764
+ * @var INTEGER The count of the payment methods, which are activated by mPAY24
765
+ */
766
+ var $all = 0;
767
+ /**
768
+ * @var ARRAY A list with the payment types, activated by mPAY24
769
+ */
770
+ var $pTypes = array();
771
+ /**
772
+ * @var ARRAY A list with the brands, activated by mPAY24
773
+ */
774
+ var $brands = array();
775
+ /**
776
+ * @var ARRAY A list with the descriptions of the payment methods, activated by mPAY24
777
+ */
778
+ var $descriptions = array();
779
+
780
+ /**
781
+ * @abstract Sets the values for a payment from the response from mPAY24:
782
+ * count, payment types, brands and descriptions
783
+ * @param STRING The SOAP response from mPAY24 (in XML form)
784
+ */
785
+ function ListPaymentMethodsResponse($response) {
786
+ $this->generalResponse = new GeneralResponse($response);
787
+
788
+ if($response != '') {
789
+ $responseAsDOM = new DOMDocument();
790
+ $responseAsDOM->loadXML($response);
791
+
792
+ if($responseAsDOM) {
793
+ $this->all = $responseAsDOM->getElementsByTagName('all')->item(0)->nodeValue;
794
+
795
+ for($i = 0; $i < $this->all; $i++) {
796
+ $this->pTypes[$i] = $responseAsDOM->getElementsByTagName('pType')->item($i)->nodeValue;
797
+ $this->brands[$i] = $responseAsDOM->getElementsByTagName('brand')->item($i)->nodeValue;
798
+ $this->descriptions[$i] = $responseAsDOM->getElementsByTagName('description')->item($i)->nodeValue;
799
+ }
800
+ }
801
+ } else {
802
+ $this->generalResponse->setStatus("ERROR");
803
+ $this->generalResponse->setReturnCode("The response is empty! Probably your request to mPAY24 was not sent! Please see your server log for more information!");
804
+ }
805
+ }
806
+
807
+ /**
808
+ * @return INTEGER The count of the payment methods, returned from mPAY24
809
+ */
810
+ public function getAll() {
811
+ return $this->all;
812
+ }
813
+
814
+ /**
815
+ * @return ARRAY The payment types, returned from mPAY24
816
+ */
817
+ public function getPTypes() {
818
+ return $this->pTypes;
819
+ }
820
+
821
+ /**
822
+ * @return ARRAY The brands, returned from mPAY24
823
+ */
824
+ public function getBrands() {
825
+ return $this->brands;
826
+ }
827
+
828
+ /**
829
+ * @return ARRAY The descriptions, returned from mPAY24
830
+ */
831
+ public function getDescriptions() {
832
+ return $this->descriptions;
833
+ }
834
+
835
+ /**
836
+ * @param INTEGER The index of a payment type
837
+ * @return STRING A payment type, returned from mPAY24
838
+ */
839
+ public function getPType($i) {
840
+ return $this->pTypes[$i];
841
+ }
842
+
843
+ /**
844
+ * @param INTEGER The index of a brand
845
+ * @return STRING A brand, returned from mPAY24
846
+ */
847
+ public function getBrand($i) {
848
+ return $this->brands[$i];
849
+ }
850
+
851
+ /**
852
+ * @param INTEGER The index of a description
853
+ * @return STRING A description, returned from mPAY24
854
+ */
855
+ public function getDescription($i) {
856
+ return $this->descriptions[$i];
857
+ }
858
+
859
+ /**
860
+ * @return GeneralResponse The object, that contains the basic values from the response from mPAY24:
861
+ * status and return code
862
+ */
863
+ public function getGeneralResponse() {
864
+ return $this->generalResponse;
865
+ }
866
+ }
867
+
868
+ class TransactionStatusResponse extends GeneralResponse {
869
+
870
+ /**
871
+ * @var GeneralResponse An object, that represents the basic values from the response from mPAY24:
872
+ * status and return code
873
+ */
874
+ var $generalResponse;
875
+ /**
876
+ * @var ARRAY A list with all the parameters for a transaction
877
+ */
878
+ var $params = array();
879
+ /**
880
+ * @var INTEGER The count of all the paramerters for a transaction
881
+ */
882
+ var $paramCount = 0;
883
+
884
+ /**
885
+ * @abstract Sets the values for a transaction from the response from mPAY24:
886
+ * STATUS, PRICE, CURRENCY, LANGUAGE, etc
887
+ * @param STRING The SOAP response from mPAY24 (in XML form)
888
+ */
889
+ function TransactionStatusResponse($response) {
890
+ $this->generalResponse = new GeneralResponse($response);
891
+ if($response != '') {
892
+ $responseAsDOM = new DOMDocument();
893
+ $responseAsDOM->loadXML($response);
894
+
895
+ if($responseAsDOM) {
896
+ $this->paramCount = $responseAsDOM->getElementsByTagName('name')->length;
897
+ $this->params['STATUS'] = $this->generalResponse->getStatus();
898
+
899
+ for($i = 0; $i < $this->paramCount; $i++){
900
+ if($responseAsDOM->getElementsByTagName("name")->item($i)->nodeValue == "STATUS")
901
+ $this->params["TSTATUS"] = $responseAsDOM->getElementsByTagName("value")->item($i)->nodeValue;
902
+ else
903
+ $this->params[$responseAsDOM->getElementsByTagName('name')->item($i)->nodeValue]
904
+ = $responseAsDOM->getElementsByTagName('value')->item($i)->nodeValue;
905
+ }
906
+ }
907
+ } else {
908
+ $this->generalResponse->setStatus("ERROR");
909
+ $this->generalResponse->setReturnCode("The response is empty! Probably your request to mPAY24 was not sent! Please see your server log for more information!");
910
+ }
911
+ }
912
+
913
+ /**
914
+ * @return INTEGER The count of all the paramerters for a transaction
915
+ */
916
+ public function getParamCount() {
917
+ return $this->paramCount;
918
+ }
919
+
920
+ /**
921
+ * @return ARRAY The parameters for a transaction, returned from mPAY24
922
+ */
923
+ public function getParams() {
924
+ return $this->params;
925
+ }
926
+
927
+ /**
928
+ * @param STRING The name of a parameter (for example: STATUS, PRICE, CURRENCY, etc)
929
+ * @return STRING A description, returned from mPAY24
930
+ */
931
+ public function getParam($i) {
932
+ if(isset($this->params[$i]))
933
+ return $this->params[$i];
934
+ else
935
+ return false;
936
+ }
937
+
938
+ /**
939
+ * @param STRING The name of a parameter (for example: STATUS, PRICE, CURRENCY, etc)
940
+ * @param STRING The value of the parameter
941
+ */
942
+ public function setParam($name, $value) {
943
+ $this->params[$name] = $value;
944
+ }
945
+
946
+ /**
947
+ * @return GeneralResponse The object, that contains the basic values from the response from mPAY24:
948
+ * status and return code
949
+ */
950
+ public function getGeneralResponse() {
951
+ return $this->generalResponse;
952
+ }
953
+ }
954
+ ?>
app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php ADDED
@@ -0,0 +1,534 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author support@mpay24.com
4
+ * @version $Id: test.php 5230 2012-10-25 14:42:49Z anna $
5
+ * @filesource test.php
6
+ * @license http://ec.europa.eu/idabc/eupl.html EUPL, Version 1.1
7
+ */
8
+
9
+ include_once("MPay24Shop.php");
10
+
11
+ class MPay24MagentoShop extends MPay24Shop {
12
+
13
+ const PAYMENT_TYPE_AUTH = 'authorize';
14
+ const PAYMENT_TYPE_SALE = 'authorize_capture';
15
+
16
+ const SUCCESS_URL = 'mpay24/payment/success';
17
+ const GUEST_SUCCESS_URL = 'mpay24/payment/guestsuccess';
18
+ const ERROR_URL = 'mpay24/payment/error';
19
+ const CONFIRMATION_URL = 'mpay24/payment/confirmation';
20
+
21
+ const CANCEL_URL = 'mpay24/payment/cancel';
22
+
23
+ const MAGENTO_VERSION = "Magento 1.4.0 ";
24
+
25
+ var $tid;
26
+ var $price;
27
+ var $order;
28
+ var $ps;
29
+ var $type;
30
+ var $brand;
31
+
32
+ public static function getAllowedAuth() {
33
+ return array("CC", "CB", "MAESTRO", "PAYPAL", "ELV", "PB", "MPASS", "INVOICE", "HP", "SAFETYPAY");
34
+ }
35
+
36
+ function updateTransaction($tid, $args, $shippingConfirmed) {}
37
+
38
+ function getTransaction($tid) {
39
+ $transaction = new Transaction($tid);
40
+ $order = Mage::getSingleton('sales/order');
41
+ $order->loadByIncrementId($tid);
42
+ $transaction->PRICE = number_format(floatval($order->getPayment()->getAmountAuthorized()), 2, '.', '');
43
+ $transaction->CURRENCY = $order->getBaseCurrencyCode();
44
+ $transaction->MPAYTID = $order->getPayment()->getAdditionalInformation('mpay_tid');
45
+ return $transaction;
46
+ }
47
+
48
+ function createProfileOrder($tid) {}
49
+ function createExpressCheckoutOrder($tid) {}
50
+ function createFinishExpressCheckoutOrder($tid, $s, $a, $c) {}
51
+
52
+ function write_log($operation, $info_to_log) {
53
+ $fh = fopen("app/code/community/Mpay24/Mpay24/Model/Api/logs/mPAY24log.log", 'a+') or die("can't open file");
54
+ $MessageDate = date("Y-m-d H:i:s");
55
+ $Message= $MessageDate." ".$_SERVER['SERVER_NAME']." mPAY24 : ";
56
+ $result = $Message."$operation : $info_to_log\n";
57
+ fwrite($fh, $result);
58
+ fclose($fh);
59
+ }
60
+
61
+ function createSecret($tid, $amount, $currency, $timeStamp) {}
62
+ function getSecret($tid) {}
63
+
64
+ function createTransaction() {
65
+ $transaction = new Transaction($this->tid);
66
+ $transaction->PRICE = $this->price;
67
+ return $transaction;
68
+ }
69
+
70
+ function createMDXI($transaction) {
71
+ $mdxi = new ORDER();
72
+
73
+ $mdxi->Order->setStyle(Mage::getStoreConfig('mpay24/mpay24sporder/style'));
74
+ $mdxi->Order->setLogoStyle(Mage::getStoreConfig('mpay24/mpay24sporder/logostyle'));
75
+ $mdxi->Order->setPageHeaderStyle(Mage::getStoreConfig('mpay24/mpay24sporder/pageheaderstyle'));
76
+ $mdxi->Order->setPageCaptionStyle(Mage::getStoreConfig('mpay24/mpay24sporder/pagecaptionstyle'));
77
+ $mdxi->Order->setPageStyle(Mage::getStoreConfig('mpay24/mpay24sporder/pagestyle'));
78
+ $mdxi->Order->setInputFieldsStyle(Mage::getStoreConfig('mpay24/mpay24sporder/inputfieldsstyle'));
79
+ $mdxi->Order->setDropDownListsStyle(Mage::getStoreConfig('mpay24/mpay24sporder/dropdownlistsstyle'));
80
+ $mdxi->Order->setButtonsStyle(Mage::getStoreConfig('mpay24/mpay24sporder/buttonsstyle'));
81
+ $mdxi->Order->setErrorsStyle(Mage::getStoreConfig('mpay24/mpay24sporder/errorsstyle'));
82
+ $mdxi->Order->setSuccessTitleStyle(Mage::getStoreConfig('mpay24/mpay24sporder/successtitlestyle'));
83
+ $mdxi->Order->setErrorTitleStyle(Mage::getStoreConfig('mpay24/mpay24sporder/errortitlestyle'));
84
+ $mdxi->Order->setFooterStyle(Mage::getStoreConfig('mpay24/mpay24sporder/footerstyle'));
85
+
86
+ $this->order->getPayment()->setAdditionalInformation('user_field', MPay24MagentoShop::MAGENTO_VERSION.$transaction->TID.'_'.date('Y-m-d'))->save();
87
+ $mdxi->Order->UserField = MPay24MagentoShop::MAGENTO_VERSION.$transaction->TID.'_'.date('Y-m-d');
88
+ $mdxi->Order->Tid = $transaction->TID;
89
+
90
+ $lang = explode('_', Mage::getStoreConfig('general/locale/code'));
91
+ $mdxi->Order->TemplateSet->setLanguage(strtoupper($lang[0]));
92
+
93
+ if($this->ps) {
94
+ $mdxi->Order->PaymentTypes->setEnable('true');
95
+ $mdxi->Order->PaymentTypes->Payment(1)->setType($this->type);
96
+ if($this->type != $this->brand)
97
+ $mdxi->Order->PaymentTypes->Payment(1)->setBrand($this->brand);
98
+ } else {
99
+ $brandsAndTypes = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payment_types'));
100
+ $brands = array();
101
+ foreach($brandsAndTypes as $brandAndType)
102
+ $brands[substr($brandAndType, 0, strpos($brandAndType, "=>"))] = substr($brandAndType, strpos($brandAndType, "=>")+2);
103
+
104
+ $firstPS = Mage::getStoreConfig('mpay24/mpay24/ps_1');
105
+ $allPS = true;
106
+
107
+ for($i=2; $i<=Mage::getStoreConfig('mpay24/mpay24/payments_count'); $i++) {
108
+ if($firstPS != Mage::getStoreConfig('mpay24/mpay24/ps_'.$i)) {
109
+ $allPS = false;
110
+ break;
111
+ }
112
+ }
113
+
114
+ if(!$allPS && Mage::getStoreConfig('mpay24/mpay24/payments_active') != 'false') {
115
+ $mdxi->Order->PaymentTypes->setEnable('true');
116
+
117
+ $brands = $this->getActiveMethods();
118
+ $c = 1;
119
+ foreach($brands as $brand => $type) {
120
+ $mdxi->Order->PaymentTypes->Payment($c)->setType($type);
121
+ if($type != $brand)
122
+ $mdxi->Order->PaymentTypes->Payment($c)->setBrand($brand);
123
+ $c++;
124
+ }
125
+ }
126
+ // else {
127
+ // if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'false') {
128
+ // if($firstPS == 1) {
129
+ // $mdxi->Order->PaymentTypes->setEnable('true');
130
+ // }
131
+ // } else {
132
+ // if($firstPS == 0) {
133
+ // $mdxi->Order->PaymentTypes->setEnable('true');
134
+ // }
135
+ // }
136
+ // }
137
+ }
138
+
139
+ $conf = explode(',',Mage::getStoreConfig('mpay24/mpay24spsc/sc_row'));
140
+
141
+ $mdxi->Order->ShoppingCart->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_style'));
142
+ $mdxi->Order->ShoppingCart->setHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_header'));
143
+ $mdxi->Order->ShoppingCart->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_headerstyle'));
144
+ $mdxi->Order->ShoppingCart->setCaptionStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_captionstyle'));
145
+
146
+ if(in_array('Number',$conf)){
147
+ $mdxi->Order->ShoppingCart->setNumberHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberheader'));
148
+ $mdxi->Order->ShoppingCart->setNumberStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberstyle'));
149
+ }
150
+ if(in_array('ProductNr',$conf)){
151
+ $mdxi->Order->ShoppingCart->setProductNrHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrheader'));
152
+ $mdxi->Order->ShoppingCart->setProductNrStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrstyle'));
153
+ }
154
+ if(in_array('Description',$conf)){
155
+ $mdxi->Order->ShoppingCart->setDescriptionHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionheader'));
156
+ $mdxi->Order->ShoppingCart->setDescriptionStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionstyle'));
157
+ }
158
+ if(in_array('Package',$conf)){
159
+ $mdxi->Order->ShoppingCart->setPackageHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_packageheader'));
160
+ $mdxi->Order->ShoppingCart->setPackageStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_packagestyle'));
161
+ }
162
+ if(in_array('Quantity',$conf)){
163
+ $mdxi->Order->ShoppingCart->setQuantityHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantityheader'));
164
+ $mdxi->Order->ShoppingCart->setQuantityStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantitystyle'));
165
+ }
166
+ if(in_array('ItemPrice',$conf)){
167
+ $mdxi->Order->ShoppingCart->setItemPriceHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempriceheader'));
168
+ $mdxi->Order->ShoppingCart->setItemPriceStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempricestyle'));
169
+ }
170
+ if(in_array('Price',$conf)){
171
+ $mdxi->Order->ShoppingCart->setPriceHeader(Mage::getStoreConfig('mpay24/mpay24spsc/sc_priceheader'));
172
+ $mdxi->Order->ShoppingCart->setPriceStyle(Mage::getStoreConfig('mpay24/mpay24spsc/sc_pricestyle'));
173
+ }
174
+
175
+ $mdxi->Order->ShoppingCart->Description(Mage::getStoreConfig('mpay24/mpay24spsc/description'));
176
+
177
+ $style1 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style1');
178
+ $style2 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style2');
179
+ $ret = "";
180
+ $linecount = 0;
181
+
182
+ foreach($this->order->getAllItems() as $_item){
183
+ if(Mage::getStoreConfig('mpay24/mpay24/show_free_products') == 1 ||
184
+ (Mage::getStoreConfig('mpay24/mpay24/show_free_products') == 0 && number_format(($_item->getData('price')*1),2,'.','') != '0.00')) {
185
+ $linecount++;
186
+ $style = ($linecount % 2== 1) ? $style1 : $style2;
187
+
188
+ if(in_array('Number',$conf)) {
189
+ $mdxi->Order->ShoppingCart->Item($linecount)->Number = $linecount;
190
+ $mdxi->Order->ShoppingCart->Item($linecount)->Number->setStyle($style);
191
+ }
192
+ if(in_array('ProductNr',$conf)) {
193
+ $mdxi->Order->ShoppingCart->Item($linecount)->ProductNr = $this->xmlentities($_item->getData('sku'));
194
+ $mdxi->Order->ShoppingCart->Item($linecount)->ProductNr->setStyle($style);
195
+ }
196
+ if(in_array('Description',$conf)) {
197
+ $mdxi->Order->ShoppingCart->Item($linecount)->Description = $this->xmlentities($_item->getData('name'));
198
+ $mdxi->Order->ShoppingCart->Item($linecount)->Description->setStyle($style);
199
+ }
200
+ if(in_array('Package',$conf)) {
201
+ $mdxi->Order->ShoppingCart->Item($linecount)->Package = "";
202
+ $mdxi->Order->ShoppingCart->Item($linecount)->Package->setStyle($style);
203
+ }
204
+ if(in_array('Quantity',$conf)) {
205
+ $mdxi->Order->ShoppingCart->Item($linecount)->Quantity = (int)$_item->getQtyOrdered();
206
+ $mdxi->Order->ShoppingCart->Item($linecount)->Quantity->setStyle($style);
207
+ }
208
+
209
+ if(Mage::getStoreConfig('tax/cart_display/price') == 2 || Mage::getStoreConfig('tax/cart_display/price') == 3) {
210
+ if(in_array('ItemPrice',$conf)) {
211
+ $mdxi->Order->ShoppingCart->Item($linecount)->ItemPrice = number_format($_item->getPriceInclTax()*1,2,'.','');
212
+ $mdxi->Order->ShoppingCart->Item($linecount)->ItemPrice->setStyle($style);
213
+ $mdxi->Order->ShoppingCart->Item($linecount)->ItemPrice->setTax(number_format($_item->getTaxAmount(),2,'.',''));
214
+ }
215
+ } else {
216
+ if(in_array('ItemPrice',$conf)) {
217
+ $mdxi->Order->ShoppingCart->Item($linecount)->ItemPrice = number_format(($_item->getData('price')*1),2,'.','');
218
+ $mdxi->Order->ShoppingCart->Item($linecount)->ItemPrice->setStyle($style);
219
+ }
220
+ }
221
+ }
222
+ }
223
+
224
+ $mdxi->Order->ShoppingCart->SubTotal->setHeader(Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_header'));
225
+ $mdxi->Order->ShoppingCart->SubTotal->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_headerstyle'));
226
+ $mdxi->Order->ShoppingCart->SubTotal->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_style'));
227
+
228
+ if(Mage::getStoreConfig('tax/cart_display/subtotal') == 2 || Mage::getStoreConfig('tax/cart_display/subtotal') == 3)
229
+ $mdxi->Order->ShoppingCart->SubTotal = number_format($this->order->getSubtotalInclTax(),2,'.','');
230
+ else
231
+ $mdxi->Order->ShoppingCart->SubTotal = number_format($this->order->getData('subtotal'),2,'.','');
232
+
233
+ if(number_format($this->order->getData('discount_amount'),2,'.','') !== '0.00'){
234
+ $mdxi->Order->ShoppingCart->Discount->setHeader($this->order->getData('discount_description'));
235
+ $mdxi->Order->ShoppingCart->Discount->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/discount_headerstyle'));
236
+ $mdxi->Order->ShoppingCart->Discount->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/discount_style'));
237
+ $mdxi->Order->ShoppingCart->Discount = number_format($this->order->getData('discount_amount'), 2, '.', '');
238
+ }
239
+
240
+ if(number_format($this->order->getData('shipping_amount'),2,'.','') !== '0.00'){
241
+ $mdxi->Order->ShoppingCart->ShippingCosts->setHeader($this->order->getData('shipping_description'));
242
+ $mdxi->Order->ShoppingCart->ShippingCosts->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_headerstyle'));
243
+ $mdxi->Order->ShoppingCart->ShippingCosts->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_style'));
244
+
245
+ if(Mage::getStoreConfig('tax/cart_display/shipping') == 2 || Mage::getStoreConfig('tax/cart_display/shipping') == 3)
246
+ $mdxi->Order->ShoppingCart->ShippingCosts = number_format($this->order->getShippingInclTax(), 2, '.', '');
247
+ else
248
+ $mdxi->Order->ShoppingCart->ShippingCosts = number_format($this->order->getData('shipping_amount'), 2, '.', '');
249
+ }
250
+
251
+ if(number_format($this->order->getData('tax_amount'),2,'.','') !== '0.00'){
252
+ $array = $this->order->getFullTaxInfo();
253
+ $taxInfo = array();
254
+ foreach($array as $a){
255
+ $taxArray = $a;
256
+
257
+ foreach(array_keys($taxArray) as $taxKey){
258
+ $taxInfo[$taxKey] = $taxArray[$taxKey];
259
+ }
260
+
261
+ if(Mage::getStoreConfig('tax/cart_display/shipping') == 2 || Mage::getStoreConfig('tax/cart_display/shipping') == 3) {
262
+ if(substr(Mage::getStoreConfig('general/locale/code'), 0, 2) == 'de')
263
+ $inklText = "inkl. ";
264
+ else
265
+ $inklText = "incl. ";
266
+ } else {
267
+ $inklText = "";
268
+ }
269
+
270
+ $mdxi->Order->ShoppingCart->Tax->setHeader($inklText . $taxArray['id']);
271
+ $mdxi->Order->ShoppingCart->Tax->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/tax_headerstyle'));
272
+ $mdxi->Order->ShoppingCart->Tax->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/tax_style'));
273
+ $mdxi->Order->ShoppingCart->Tax->setPercent(number_format($taxArray['rates'][0]['percent'],0,'.',''));
274
+
275
+ $mdxi->Order->ShoppingCart->Tax = number_format($taxArray['amount'],2,'.','');
276
+ }
277
+ }
278
+
279
+ $billingCountry = "";
280
+ $billingCountryCode = "";
281
+ $shippingCountry = "";
282
+ $shippingCountryCode = "";
283
+
284
+ foreach(Mage::app()->getLocale()->getOptionCountries() as $c)
285
+ if ($c['value'] == $this->order->getBillingAddress()->getCountry()) {
286
+ $billingCountry = $c['label'];
287
+ $billingCountryCode = $c['value'];
288
+ break;
289
+ }
290
+
291
+ if($this->order->getShippingAddress())
292
+ foreach(Mage::app()->getLocale()->getOptionCountries() as $c){
293
+ if ($c['value'] == $this->order->getShippingAddress()->getCountry()) {
294
+ $shippingCountry = $c['label'];
295
+ $shippingCountryCode = $c['value'];
296
+ break;
297
+ }
298
+ }
299
+
300
+ $mdxi->Order->Price = $transaction->PRICE;
301
+ $mdxi->Order->Price->setHeader(Mage::getStoreConfig('mpay24/mpay24spsc/price_header'));
302
+ $mdxi->Order->Price->setHeaderStyle(Mage::getStoreConfig('mpay24/mpay24spsc/price_headerstyle'));
303
+ $mdxi->Order->Price->setStyle(Mage::getStoreConfig('mpay24/mpay24spsc/price_style'));
304
+
305
+ $mdxi->Order->Currency = $this->xmlentities($this->order->getBaseCurrencyCode());
306
+
307
+ $mdxi->Order->BillingAddr->setMode(Mage::getStoreConfig('mpay24/mpay24/billingAddressMode'));
308
+
309
+ if($this->order->getShippingAddress() && $this->xmlentities($this->order->getShippingAddress()->getFirstname()) === '')
310
+ $billingName = $this->xmlentities($this->order->getBillingAddress()->getLastname());
311
+ elseif($this->xmlentities($this->order->getBillingAddress()->getLastname()) === '')
312
+ $billingName = $this->xmlentities($this->order->getBillingAddress()->getFirstname());
313
+ else
314
+ $billingName = $this->xmlentities($this->order->getBillingAddress()->getFirstname()).' '.$this->xmlentities($this->order->getBillingAddress()->getLastname());
315
+
316
+ $mdxi->Order->BillingAddr->Name = substr($billingName,0,50);
317
+
318
+ $billingAdress = $this->xmlentities($this->order->getBillingAddress()->getStreetFull());
319
+
320
+ $billingStreet = $this->splitAdress($billingAdress);
321
+
322
+ if(is_array($billingStreet[0])) {
323
+ $mdxi->Order->BillingAddr->Street = $billingStreet[0]['Street'];
324
+ $mdxi->Order->BillingAddr->Street2 = $billingStreet[1]['Street2'];
325
+ } else {
326
+ $mdxi->Order->BillingAddr->Street = $billingStreet['Street'];
327
+ $mdxi->Order->BillingAddr->Street2 = $billingStreet['Street2'];
328
+ }
329
+ $mdxi->Order->BillingAddr->Zip = substr($this->xmlentities($this->order->getBillingAddress()->getPostcode()),0,50);
330
+ $mdxi->Order->BillingAddr->City = substr($this->xmlentities($this->order->getBillingAddress()->getCity()),0,50);
331
+ $mdxi->Order->BillingAddr->Country->setCode($this->xmlentities($billingCountryCode));
332
+
333
+ if($this->order->getShippingAddress()){
334
+ $mdxi->Order->ShippingAddr->setMode("ReadOnly");
335
+
336
+ if($this->xmlentities($this->order->getShippingAddress()->getFirstname()) === '')
337
+ $shippingName = $this->xmlentities($this->order->getShippingAddress()->getLastname());
338
+ elseif($this->xmlentities($this->order->getShippingAddress()->getLastname()) === '')
339
+ $shippingName = $this->xmlentities($this->order->getShippingAddress()->getFirstname());
340
+ else
341
+ $shippingName = $this->xmlentities($this->order->getShippingAddress()->getFirstname()).' '.$this->xmlentities($this->order->getShippingAddress()->getLastname());
342
+
343
+ $mdxi->Order->ShippingAddr->Name = substr($shippingName,0,50);
344
+
345
+ $shippingAdress = $this->xmlentities($this->order->getShippingAddress()->getStreetFull());
346
+
347
+ $shippingStreet = $this->splitAdress($shippingAdress);
348
+
349
+ if(is_array($shippingStreet[0])) {
350
+ $mdxi->Order->ShippingAddr->Street = $shippingStreet[0]['Street'];
351
+ $mdxi->Order->ShippingAddr->Street2 = $shippingStreet[1]['Street2'];
352
+ } else {
353
+ $mdxi->Order->ShippingAddr->Street = $shippingStreet['Street'];
354
+ $mdxi->Order->ShippingAddr->Street2 = $shippingStreet['Street2'];
355
+ }
356
+ $mdxi->Order->ShippingAddr->Zip = substr($this->xmlentities($this->order->getShippingAddress()->getPostcode()),0,50);
357
+ $mdxi->Order->ShippingAddr->City = substr($this->xmlentities($this->order->getShippingAddress()->getCity()),0,50);
358
+ $mdxi->Order->ShippingAddr->Country->setCode($this->xmlentities($shippingCountryCode));
359
+ }
360
+
361
+ if(Mage::helper('customer')->isLoggedIn())
362
+ $mdxi->Order->URL->Success = Mage::getUrl(MPay24MagentoShop::SUCCESS_URL,array('_secure' => true, '_query' => "TID=" . substr($this->order->getIncrementId(),0,32) ));
363
+ else
364
+ $mdxi->Order->URL->Success = Mage::getUrl(MPay24MagentoShop::GUEST_SUCCESS_URL,array('_secure' => true, '_query' => "tid=" . substr($this->order->getIncrementId(),0,32) ));
365
+
366
+ $mdxi->Order->URL->Error = Mage::getUrl(MPay24MagentoShop::ERROR_URL,array('_secure' => true, '_query' => "TID=" . substr($this->order->getIncrementId(),0,32) ));
367
+ $mdxi->Order->URL->Confirmation = Mage::getUrl(MPay24MagentoShop::CONFIRMATION_URL,array('_secure' => true));
368
+ $mdxi->Order->URL->Cancel = Mage::getUrl(MPay24MagentoShop::CANCEL_URL,array('_secure' => true, '_query' => "TID=" . substr($this->order->getIncrementId(),0,32) ));
369
+
370
+ if(Mage::getStoreConfig('mpay24/mpay24as/debug') == 1) {
371
+ $myFile = "app/code/community/Mpay24/Mpay24/Model/Api/xmls/".$transaction->TID.".xml";
372
+ $fh = fopen($myFile, 'w') or die("can't open file");
373
+ fwrite($fh, $mdxi->toXML());
374
+ fclose($fh);
375
+ }
376
+
377
+ return $mdxi;
378
+ }
379
+
380
+ function setVariables($order, $ps, $type, $brand) {
381
+ $this->tid = $order->getIncrementId();
382
+ $this->order = $order;
383
+ $this->price = number_format($order->getData('grand_total'),2,'.','');
384
+ $this->ps = $ps;
385
+ $this->type = $type;
386
+ $this->brand = $brand;
387
+ }
388
+
389
+ private function xmlentities($string){
390
+ static $trans;
391
+ if (!isset($trans)) {
392
+ $trans = get_html_translation_table(HTML_SPECIALCHARS);
393
+ foreach ($trans as $key => $value)
394
+ $trans[$key] = '&#'.ord($key).';';
395
+
396
+ // dont translate the '&' in case it is part of &xxx;
397
+ $trans[chr(38)] = '&';
398
+ }
399
+
400
+ //after the initial translation, _do_ map standalone '&' into '&#38;'
401
+ return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&#38;" , strtr($string, $trans));
402
+ }
403
+
404
+ private function splitAdress($adress, $str2=null){
405
+ $posNewLine = strpos($adress, "\n");
406
+ $strArray = array();
407
+ if($posNewLine === false) {
408
+ if(strlen($adress) <= 50){
409
+ if($str2 !== true) {
410
+ $strArray['Street'] = $adress;
411
+ } else {
412
+ $strArray['Street2'] = $adress;
413
+ }
414
+ } else {
415
+ $street1before = substr($adress, 0, 50);
416
+ $posLastInterval1 = strrpos($street1before, " ");
417
+
418
+ $street1 = substr($street1before, 0, $posLastInterval1);
419
+
420
+ $street2before = substr(substr($street1before, $posLastInterval1).substr($adress, 50), 1, 50);
421
+ $posLastInterval2 = strrpos($street2before, " ");
422
+ $street2 = substr($street2before, 0, $posLastInterval2);
423
+
424
+ if($str2 === null){
425
+ $strArray['Street'] = $street1;
426
+ $strArray['Street2'] = $street2;
427
+ } elseif($str2 === false) {
428
+ if($posLastInterval1){
429
+ $strArray['Street'] = $street1;
430
+ } else {
431
+ $strArray['Street'] = $street1before;
432
+ }
433
+ } else {
434
+ if($posLastInterval1) {
435
+ $strArray['Street2'] = $street1;
436
+ } else {
437
+ $strArray['Street2'] = $street1before;
438
+ }
439
+ }
440
+ }
441
+ } else {
442
+ $array = explode("\n", $adress);
443
+ $adress1 = $array[0];
444
+ array_push($strArray, $this->splitAdress($adress1, false));
445
+
446
+ $adress2 = $array[1];
447
+ array_push($strArray, $this->splitAdress($adress2, true));
448
+ }
449
+ return $strArray;
450
+ }
451
+
452
+ public static function getMPay24Api() {
453
+ if(Mage::getStoreConfig('mpay24/mpay24as/system') == 1)
454
+ $test = TRUE;
455
+ else
456
+ $test = FALSE;
457
+
458
+ if(Mage::getStoreConfig('mpay24/mpay24as/debug') == 1)
459
+ $debug = TRUE;
460
+ else
461
+ $debug = FALSE;
462
+
463
+ if(Mage::getStoreConfig('mpay24/mpay24as/use_proxy') == 1) {
464
+ $proxy_host = Mage::getStoreConfig('mpay24/mpay24as/proxy_host');
465
+ $proxy_port = Mage::getStoreConfig('mpay24/mpay24as/proxy_port');
466
+ } else {
467
+ $proxy_host = null;
468
+ $proxy_port = null;
469
+ }
470
+
471
+ $mPay24MagentoShop = new MPay24MagentoShop(Mage::getStoreConfig('mpay24/mpay24as/merchantid'), Mage::getStoreConfig('mpay24/mpay24as/soap_pass'), $test, $proxy_host, $proxy_port, $debug);
472
+ return $mPay24MagentoShop;
473
+ }
474
+
475
+ /**
476
+ * @abstract Get the payment systems for the merchant from the core_config_data and explode it into an array
477
+ * @return Array $method
478
+ */
479
+ public function getActiveMethods() {
480
+ $methods = array();
481
+ $brandsAndDescriptions = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payment_types'));
482
+
483
+ $firstPS = Mage::getStoreConfig('mpay24/mpay24/ps_1');
484
+ $allPS = true;
485
+
486
+ for($i=2; $i<=Mage::getStoreConfig('mpay24/mpay24/payments_count'); $i++) {
487
+ if($firstPS != Mage::getStoreConfig('mpay24/mpay24/ps_'.$i)) {
488
+ $allPS = false;
489
+ break;
490
+ }
491
+ }
492
+
493
+ if($allPS) {
494
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'false') {
495
+ if($firstPS == 1) {
496
+ Mage::getConfig()->saveConfig("payment/mpay24/active", 0);
497
+ Mage::getConfig()->reinit();
498
+ Mage::app()->reinitStores();
499
+ }
500
+ } else {
501
+ if($firstPS == 0) {
502
+ Mage::getConfig()->saveConfig("payment/mpay24/active", 0);
503
+ Mage::getConfig()->reinit();
504
+ Mage::app()->reinitStores();
505
+ }
506
+ }
507
+
508
+ foreach($brandsAndDescriptions as $brandAndDescr) {
509
+ $brand = substr($brandAndDescr, 0, strpos($brandAndDescr, "=>"));
510
+ $description = substr($brandAndDescr, strpos($brandAndDescr, "=>")+2);
511
+ $methods[$brand] = $description;
512
+ }
513
+
514
+ } else {
515
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'false')
516
+ $check = 0;
517
+ else
518
+ $check = 1;
519
+
520
+ $i=1;
521
+ foreach($brandsAndDescriptions as $brandAndDescr) {
522
+ if(Mage::getStoreConfig('mpay24/mpay24/ps_'.$i) == $check) {
523
+ $brand = substr($brandAndDescr, 0, strpos($brandAndDescr, "=>"));
524
+ $description = substr($brandAndDescr, strpos($brandAndDescr, "=>")+2);
525
+ $methods[$brand] = $description;
526
+ }
527
+ $i++;
528
+ }
529
+ }
530
+
531
+ return $methods;
532
+ }
533
+ }
534
+ ?>
app/code/community/Mpay24/Mpay24/Model/Api/MPay24Shop.php ADDED
@@ -0,0 +1,721 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author support@mpay24.com
4
+ * @version $Id: MPay24Shop.php 5217 2012-10-16 05:27:43Z anna $
5
+ * @filesource MPay24Shop.php
6
+ * @license http://ec.europa.eu/idabc/eupl.html EUPL, Version 1.1
7
+ */
8
+
9
+ include_once("MPay24Api.php");
10
+ include_once("orderXML.php");
11
+
12
+ abstract class MPay24Shop extends Transaction {
13
+
14
+ /**
15
+ * @var MPAY24API The mPAY24API Object, with you are going to work
16
+ */
17
+ var $mPay24Api = null;
18
+
19
+ /**
20
+ * @abstract The constructor, which sets all the initial values
21
+ * to be able making transactions
22
+ * @param INTEGER 5-digit account number, supported by mPAY24
23
+ *
24
+ * TEST accounts - starting with 9
25
+ *
26
+ * LIVE account - starting with 7
27
+ * @param STRING The webservice's password, supported by mPAY24
28
+ * @param BOOLEAN TRUE - when you want to use the TEST system
29
+ *
30
+ * FALSE - when you want to use the LIVE system
31
+ * @param STRING The host name in case you are behind a proxy server ("" when not)
32
+ * @param INTEGER 4-digit port number in case you are behind a proxy server ("" when not)
33
+ */
34
+ function MPay24Shop($merchantID, $soapPassword, $test, $proxyHost=null, $proxyPort=null, $debug=false) {
35
+ if(!is_bool($test))
36
+ die("The test parameter '$test' you have given is wrong, it must be boolean value 'true' or 'false'!");
37
+
38
+ if(!is_bool($debug))
39
+ die("The debug parameter '$debug' you have given is wrong, it must be boolean value 'true' or 'false'!");
40
+
41
+ $this->mPay24Api = new MPay24Api();
42
+
43
+ if($proxyHost == null) {
44
+ $pHost = "";
45
+ $pPort = "";
46
+ } else {
47
+ $pHost = $proxyHost;
48
+ $pPort = $proxyPort;
49
+ }
50
+
51
+ $this->mPay24Api->configure($merchantID, $soapPassword, $test, $pHost, $pPort);
52
+ $this->mPay24Api->setDebug($debug);
53
+
54
+ if (version_compare(phpversion(), '5.0.0', '<')===true || !in_array('curl', get_loaded_extensions()) || !in_array('dom', get_loaded_extensions())) {
55
+ $this->mPay24Api->printMsg("ERROR: You don't meet the needed requirements for this example shop.<br>");
56
+ if(version_compare(phpversion(), '5.0.0', '<')===true)
57
+ $this->mPay24Api->printMsg("You need PHP version 5.0.0 or newer!<br>");
58
+ if(!in_array('curl', get_loaded_extensions()))
59
+ $this->mPay24Api->printMsg("You need cURL extension!<br>");
60
+ if(!in_array('dom', get_loaded_extensions()))
61
+ $this->mPay24Api->printMsg("You need DOM extension!<br>");
62
+ $this->mPay24Api->dieWithMsg("Please load the required extensions!");
63
+ }
64
+
65
+ if(strlen($merchantID) != 5 || (substr($merchantID, 0, 1) != "7" && substr($merchantID, 0, 1) != "9"))
66
+ $this->mPay24Api->dieWithMsg("The merchant ID '$merchantID' you have given is wrong, it must be 5-digit number and starts with 7 or 9!");
67
+
68
+ if($proxyPort != null && (!is_numeric($proxyPort) || strlen($proxyPort) != 4))
69
+ $this->mPay24Api->dieWithMsg("The proxy port '$proxyPort' you have given must be numeric!");
70
+
71
+ if(($proxyHost == null && $proxyHost != $proxyPort) || ($proxyPort == null && $proxyHost != $proxyPort))
72
+ $this->mPay24Api->dieWithMsg("You must setup both variables 'proxyHost' and 'proxyPort'!");
73
+ }
74
+
75
+
76
+
77
+ /**
78
+ * @abstract Create a transaction and save this (in a data base or file system (for example XML))
79
+ * @uses Transaction
80
+ * @return Transaction The created transaction
81
+ */
82
+ abstract function createTransaction();
83
+
84
+
85
+
86
+ /**
87
+ * @abstract Actualize the transaction, which has a transaction ID = $tid with the values from $args in your shop
88
+ * @param STRING The transaction ID you want to update with the confirmation
89
+ * @param ARRAY Arrguments with them the transaction is to be updated
90
+ * @param BOOLEAN TRUE if the shipping address is confirmed, FALSE - otherwise (in case of PayPal Express Checkout)
91
+ * @return Transaction The updated transaction
92
+ */
93
+ abstract function updateTransaction($tid, $args, $shippingConfirmed);
94
+
95
+
96
+
97
+ /**
98
+ * @abstract Give the transaction object back, for a transaction which has a transaction ID = $tid
99
+ * @param STRING The transaction ID of the transaction you want get
100
+ * @return Transaction
101
+ */
102
+ abstract function getTransaction($tid);
103
+
104
+
105
+
106
+ /**
107
+ * @abstract Using the ORDER object from order.php, create a MDXI-XML, which is needed
108
+ * for a transaction to be started
109
+ * @uses ORDER
110
+ * @param Transaction The transaction you want to make a MDXI XML file for
111
+ * @return ORDER The MDXI, needed for a transaction to be started
112
+ */
113
+ abstract function createMDXI($transaction);
114
+
115
+ /**
116
+ * @abstract Using the ORDER object from order.php, create a order-xml, which is needed
117
+ * for a transaction with profiles to be started
118
+ * @uses ORDER
119
+ * @param Transaction The transaction you want to make an order transaction XML file for
120
+ * @return XML The ORDER, needed for a transaction to be started
121
+ */
122
+ abstract function createProfileOrder($tid);
123
+
124
+ /**
125
+ * @abstract Using the ORDER object from order.php, create a order-xml, which is needed
126
+ * for a transaction with PayPal Express Checkout to be started
127
+ * @uses ORDER
128
+ * @param Transaction The transaction you want to make an order transaction XML file for
129
+ * @return XML The ORDER, needed for a transaction to be started
130
+ */
131
+ abstract function createExpressCheckoutOrder($tid);
132
+
133
+ /**
134
+ * @abstract Using the ORDER object from order.php, create a order-xml, which is needed
135
+ * for a transaction with PayPal Express Checkout to be finished
136
+ * @uses ORDER
137
+ * @param Transaction The transaction you want to make an order transaction XML file for
138
+ * @return XML The ORDER, needed for a transaction to be started
139
+ */
140
+ abstract function createFinishExpressCheckoutOrder($tid, $shippingCosts, $amount, $cancel);
141
+
142
+ /**
143
+ * @abstract Write a log into a file, file system, data base
144
+ * @param STRING The operation, which is to log: GetPaymentMethods, Pay, PayWithProfile,
145
+ * Confirmation, UpdateTransactionStatus, ClearAmount, CreditAmount, CancelTransaction, etc.
146
+ * @param STRING The information, which is to log: request, response, etc.
147
+ */
148
+ abstract function write_log($operation, $info_to_log);
149
+
150
+ /**
151
+ * @abstract This is an optional function, but it's strongly recomended that you implement it.
152
+ * It should build a hash from the transaction ID of your shop, the amount of the transaction,
153
+ * the currency and the timeStamp of the transaction. The mPAY24 confirmation interface will be called
154
+ * with this hash (parameter name 'token'), so you would be able to check whether the confirmation is
155
+ * really coming from mPAY24 or not. The hash should be then saved in the transaction object, so that
156
+ * every transaction has an unique secret token.
157
+ * @param STRING The transaction ID you want to make a secret key for
158
+ * @param STRING The amount, reserved for this transaction
159
+ * @param CURRENCY The currency for the transaction
160
+ * @param DATE The timeStamp at the moment the transaction is created
161
+ * @return HASHED_STRING The secret key for the transaction
162
+ */
163
+ abstract function createSecret($tid, $amount, $currency, $timeStamp);
164
+
165
+ /**
166
+ * @param STRING The transaction ID you want to get the secret key for
167
+ * @return HASHED_STRING The hash for the transaction
168
+ */
169
+
170
+ abstract function getSecret($tid);
171
+
172
+ /**
173
+ * @return ARRAY A list which includes all the payment methods (activated by mPAY24)
174
+ * for your mechant ID
175
+ */
176
+ function getPaymentMethods() {
177
+ if(!$this->mPay24Api)
178
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
179
+
180
+ $paymentMethods = $this->mPay24Api->ListPaymentMethods();
181
+ if($this->mPay24Api->getDebug()) {
182
+ $this->write_log("GetPaymentMethods",
183
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
184
+ $this->write_log("GetPaymentMethods",
185
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
186
+ }
187
+ return $paymentMethods;
188
+ }
189
+
190
+ /**
191
+ * @abstract Start a payment
192
+ * @return PaymentResponse Including redirection URL
193
+ */
194
+ function pay() {
195
+ if(!$this->mPay24Api)
196
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
197
+
198
+ $transaction = $this->createTransaction();
199
+
200
+ $this->checkTransaction($transaction);
201
+
202
+ libxml_use_internal_errors(true);
203
+
204
+ $mdxi = $this->createMDXI($transaction);
205
+
206
+ if(!$mdxi || !$mdxi instanceof ORDER)
207
+ $this->mPay24Api->dieWithMsg("To be able to use the MPay24Api you must create an ORDER object (order.php) and fulfill it with a MDXI!");
208
+
209
+ $mdxiXML = $mdxi->toXML();
210
+
211
+ if(!$this->mPay24Api->proxyUsed())
212
+ if(!$mdxi->validate()) {
213
+ $errors = "";
214
+ foreach(libxml_get_errors() as $error)
215
+ $errors.= trim($error->message) . "<br>";
216
+
217
+ $this->write_log("ERROR", "The schema you have created is not valid!\n\n". trim($error->message) . "\n\n$mdxiXML");
218
+
219
+ Mage::log("The schema you have created is not valid!\n\n". trim($error->message) . "\n\n$mdxiXML", 10);
220
+ Mage::throwException(Mage::helper('mpay24')->__('Please contact the merchant,')."\n".Mage::helper('mpay24')->__('this payment is not possible at the moment!'));
221
+
222
+ $this->mPay24Api->dieWithMsg("The schema you have created is not valid!". "<br><br>".$errors.
223
+ "<textarea cols='100' rows='30'>$mdxiXML</textarea>"
224
+ );
225
+ }
226
+
227
+ $payResult = $this->mPay24Api->SelectPayment($mdxiXML);
228
+
229
+ if($this->mPay24Api->getDebug()) {
230
+ $this->write_log("Pay",
231
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
232
+ $this->write_log("Pay",
233
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
234
+ }
235
+
236
+ return $payResult;
237
+ }
238
+
239
+ /**
240
+ * @abstract Start a payment with customer profile
241
+ * @return PaymentResponse
242
+ */
243
+ function payWithProfile() {
244
+ if(!$this->mPay24Api)
245
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
246
+
247
+ $transaction = $this->createTransaction();
248
+
249
+ $this->checkTransaction($transaction);
250
+
251
+ $order = $this->createProfileOrder($transaction);
252
+
253
+ if(!$order || !$order instanceof ORDER)
254
+ $this->mPay24Api->dieWithMsg("To be able to use the MPay24Api you must create an ORDER object (order.php)!");
255
+
256
+ $payWithProfileResult = $this->mPay24Api->ProfilePayment($order->toXML());
257
+
258
+ if($this->mPay24Api->getDebug()) {
259
+ $this->write_log("PayWithProfile",
260
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
261
+ $this->write_log("PayWithProfile",
262
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
263
+ }
264
+
265
+ return $payWithProfileResult;
266
+ }
267
+
268
+ /**
269
+ * @abstract Start a payment with PayPal Express Checkout
270
+ * @return PaymentResponse Including redirection URL
271
+ */
272
+ function payWithExpressCheckout() {
273
+ if(!$this->mPay24Api)
274
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
275
+
276
+ $transaction = $this->createTransaction();
277
+
278
+ $this->checkTransaction($transaction);
279
+
280
+ $order = $this->createExpressCheckoutOrder($transaction);
281
+
282
+ if(!$order || !$order instanceof ORDER)
283
+ $this->mPay24Api->dieWithMsg("To be able to use the MPay24Api you must create an ORDER object (order.php)!");
284
+
285
+ $payWithExpressCheckoutResult = $this->mPay24Api->ExpressCheckoutPayment($order->toXML());
286
+
287
+ if($this->mPay24Api->getDebug()) {
288
+ $this->write_log("PayWithExpressCheckout",
289
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
290
+ $this->write_log("PayWithExpressCheckout",
291
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
292
+ }
293
+
294
+ return $payWithExpressCheckoutResult;
295
+ }
296
+
297
+ /**
298
+ * @abstract Finish the payment, started with PayPal Express Checkout - reserve, bill or cancel it:
299
+ *
300
+ * Whether are you going to reserve or bill a payment is setted at the beginning of the payment.
301
+ *
302
+ * With the 'cancel' parameter you are able also to cancel the transaction
303
+ * @param STRING The transaction ID in the shop
304
+ * @param INTEGER The shippingcosts for the transaction multiply by 100
305
+ * @param INTEGER The amount you want to reserve/bill multiply by 100
306
+ * @param STRING ALLOWED: "true" or "false" - in case of 'true' the transaction will be canceled, otherwise
307
+ * reserved/billed
308
+ * @return PaymentResponse Including mPAY24 transaction ID
309
+ */
310
+ function finishExpressCheckoutPayment($tid, $shippingCosts, $amount, $cancel) {
311
+ if(!$this->mPay24Api)
312
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
313
+
314
+ if($cancel !== "true" && $cancel !== "false")
315
+ $this->mPay24Api->dieWithMsg("The allowed values for the parameter 'cancel' by finishing a PayPal (Express Checkout) payment are 'true' or 'false'!");
316
+
317
+ $transaction = $this->getTransaction($tid);
318
+
319
+ $this->checkTransaction($transaction);
320
+
321
+ $mPAYTid = $transaction->MPAYTID;
322
+
323
+ if(!$mPAYTid)
324
+ $this->mPay24Api->dieWithMsg("The transaction '$tid' you want to finish with the mPAYTid '$mPAYTid' does not exist in the mPAY24 data base!");
325
+
326
+ if(!$amount || !is_numeric($amount))
327
+ $this->mPay24Api->dieWithMsg("The amount '$amount' you are trying to pay by PayPal is not valid!");
328
+
329
+ if(!$shippingCosts || !is_numeric($shippingCosts))
330
+ $this->mPay24Api->dieWithMsg("The shipping costs '$shippingCosts' you are trying to set are not valid!");
331
+
332
+ $order = $this->createFinishExpressCheckoutOrder($transaction, $shippingCosts, $amount, $cancel);
333
+
334
+ if(!$order || !$order instanceof ORDER)
335
+ $this->mPay24Api->dieWithMsg("To be able to use the MPay24Api you must create an ORDER object (order.php)!");
336
+
337
+ $finishExpressCheckoutResult = $this->mPay24Api->CallbackPaypal($order->toXML());
338
+
339
+ if($this->mPay24Api->getDebug()) {
340
+ $this->write_log("FinishExpressCheckoutResult",
341
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
342
+ $this->write_log("FinishExpressCheckoutResult",
343
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
344
+ }
345
+
346
+ return $finishExpressCheckoutResult;
347
+ }
348
+
349
+ /**
350
+ * @param STRING The transaction ID, for the transaction you want to confirm
351
+ * @param ARRAY The arguments you want to set for this transaction
352
+ */
353
+ function confirm($tid, $args) {
354
+ $to_log = '';
355
+ $shippingConfirmed = "";
356
+
357
+ foreach($args as $name => $value)
358
+ $to_log.= $name . " = " . $value . "\n";
359
+
360
+ if($this->mPay24Api->getDebug())
361
+ $this->write_log("Confirmation for transaction '" . $tid . "'\n", utf8_encode($to_log)."\n");
362
+
363
+ $transactionStatus = $this->updateTransactionStatus($tid);
364
+
365
+ $newArgs = $transactionStatus->getParams();
366
+
367
+ foreach($newArgs as $name => $value)
368
+ $to_log.= $name . " = " . $value . "\n";
369
+
370
+ if($this->mPay24Api->getDebug())
371
+ $this->write_log("Status for transaction " . $tid . ":", utf8_encode($to_log)."\n");
372
+
373
+ if($transactionStatus->getParam("SHIPPING_ADDR")) {
374
+ $order = new DOMDocument();
375
+ $order->loadXML($transactionStatus->getParam("SHIPPING_ADDR"));
376
+ }
377
+
378
+ if(isset($order)) {
379
+ $shipping = $order->getElementsByTagName("Shipping")->item(0);
380
+ $shippingConfirmed = $shipping->getAttribute("confirmed");
381
+ }
382
+
383
+ if($this->getSecret($tid) == $args['token']) {
384
+ if($shippingConfirmed == "false") {
385
+ $newArgs["SHIPP_NAME"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("Name")->item(0)->nodeValue;
386
+ $newArgs["SHIPP_STREET"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("Street")->item(0)->nodeValue;
387
+ if($order->getElementsByTagName("Shipping")->item(0)->hasAttribute("Street2"))
388
+ $newArgs["SHIPP_STREET2"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("Street2")->item(0)->nodeValue;
389
+ $newArgs["SHIPP_ZIP"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("Zip")->item(0)->nodeValue;
390
+ $newArgs["SHIPP_CITY"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("City")->item(0)->nodeValue;
391
+ $newArgs["SHIPP_COUNTRY"] = $order->getElementsByTagName("Shipping")->item(0)->getElementsByTagName("Country")->item(0)->getAttribute("code");
392
+ $this->updateTransaction($tid, $newArgs, false);
393
+ } else
394
+ $this->updateTransaction($tid, $newArgs, true);
395
+ }
396
+ }
397
+
398
+
399
+
400
+ /**
401
+ * @param STRING The transaction ID (in your shop), for the transaction you are asking for
402
+ * @return ARRAY An array with all the data (by mPAY24) for this transaction (STATUS, CURRENCY, PRICE, APPR_CODE, etc).
403
+ * Possible values for the STATUS attribute:
404
+ *
405
+ * RESERVED - in case the authorization was successful but not cleared yet
406
+ *
407
+ * BILLED - in case the authorization was successful and amount was cleared
408
+ *
409
+ * CREDITED - in case amount was credited
410
+ *
411
+ * REVERSED - in case the transaction was canceled
412
+ *
413
+ * SUSPENDED - in case the transaction is not fully compleated yet
414
+ *
415
+ * NOT FOUND - in case there is not such a transaction in the mPAY24 database
416
+ *
417
+ * ERROR - in case the transaction was not successful
418
+ */
419
+ function updateTransactionStatus($tid) {
420
+ if(!$this->mPay24Api)
421
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
422
+
423
+ $transaction = $this->getTransaction($tid);
424
+
425
+ $this->checkTransaction($transaction);
426
+
427
+ if(!$transaction->MPAYTID || !is_numeric($transaction->MPAYTID)) {
428
+ $tidTransactionStatusResult = $this->mPay24Api->TransactionStatus(null, $tid);
429
+
430
+ if($this->mPay24Api->getDebug()) {
431
+ $this->write_log("TidTransactionStatus",
432
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
433
+ $this->write_log("TidTransactionStatus",
434
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
435
+ }
436
+
437
+ if($tidTransactionStatusResult->getParam("SHIPPING_ADDR")) {
438
+ $order = new DOMDocument();
439
+ $order->loadXML($tidTransactionStatusResult->getParam("SHIPPING_ADDR"));
440
+ }
441
+
442
+ if(isset($order)) {
443
+ $shipping = $order->getElementsByTagName("Shipping")->item(0);
444
+ $shippingConfirmed = $shipping->getAttribute("confirmed");
445
+
446
+ if($shippingConfirmed == "false") {
447
+ $tidTransactionStatusResult->setParam("shippingConfirmed", false);
448
+ $tidTransactionStatusResult->setParam("SHIPP_NAME", $order->getElementsByTagName("Shipping")->item(0)
449
+ ->getElementsByTagName("Name")->item(0)->nodeValue);
450
+ $tidTransactionStatusResult->setParam("SHIPP_STREET", $order->getElementsByTagName("Shipping")->item(0)
451
+ ->getElementsByTagName("Street")->item(0)->nodeValue);
452
+ if($tidTransactionStatusResult->getParam("SHIPP_STREET2"))
453
+ $tidTransactionStatusResult->setParam("SHIPP_STREET2", $order->getElementsByTagName("Shipping")->item(0)
454
+ ->getElementsByTagName("Street2")->item(0)->nodeValue);
455
+ $tidTransactionStatusResult->setParam("SHIPP_ZIP", $order->getElementsByTagName("Shipping")->item(0)
456
+ ->getElementsByTagName("Zip")->item(0)->nodeValue);
457
+ $tidTransactionStatusResult->setParam("SHIPP_CITY", $order->getElementsByTagName("Shipping")->item(0)
458
+ ->getElementsByTagName("City")->item(0)->nodeValue);
459
+ $tidTransactionStatusResult->setParam("SHIPP_COUNTRY", $order->getElementsByTagName("Shipping")->item(0)
460
+ ->getElementsByTagName("Country")->item(0)->getAttribute("code"));
461
+ } else
462
+ $tidTransactionStatusResult->setParam("shippingConfirmed", true);
463
+ } else
464
+ $tidTransactionStatusResult->setParam("shippingConfirmed", true);
465
+ return $tidTransactionStatusResult;
466
+ } else{
467
+ $mPAYTidTransactionStatusResult = $this->mPay24Api->TransactionStatus($transaction->MPAYTID, null);
468
+
469
+ if($this->mPay24Api->getDebug()) {
470
+ $this->write_log("mPAYTidTransactionStatus",
471
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
472
+ $this->write_log("mPAYTidTransactionStatus",
473
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
474
+ }
475
+
476
+ if($mPAYTidTransactionStatusResult->getParam("SHIPPING_ADDR")) {
477
+ $order = new DOMDocument();
478
+ $order->loadXML($mPAYTidTransactionStatusResult->getParam("SHIPPING_ADDR"));
479
+ }
480
+
481
+ if(isset($order)) {
482
+ $shipping = $order->getElementsByTagName("Shipping")->item(0);
483
+ $shippingConfirmed = $shipping->getAttribute("confirmed");
484
+
485
+ if($shippingConfirmed == "false") {
486
+ $mPAYTidTransactionStatusResult->setParam("shippingConfirmed", false);
487
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_NAME", $order->getElementsByTagName("Shipping")->item(0)
488
+ ->getElementsByTagName("Name")->item(0)->nodeValue);
489
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_STREET", $order->getElementsByTagName("Shipping")->item(0)
490
+ ->getElementsByTagName("Street")->item(0)->nodeValue);
491
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_STREET2", $order->getElementsByTagName("Shipping")->item(0)
492
+ ->getElementsByTagName("Street2")->item(0)->nodeValue);
493
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_ZIP", $order->getElementsByTagName("Shipping")->item(0)
494
+ ->getElementsByTagName("Zip")->item(0)->nodeValue);
495
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_CITY", $order->getElementsByTagName("Shipping")->item(0)
496
+ ->getElementsByTagName("City")->item(0)->nodeValue);
497
+ $mPAYTidTransactionStatusResult->setParam("SHIPP_COUNTRY", $order->getElementsByTagName("Shipping")->item(0)
498
+ ->getElementsByTagName("Country")->item(0)->getAttribute("code"));
499
+ } else
500
+ $mPAYTidTransactionStatusResult->setParam("shippingConfirmed", true);
501
+ } else
502
+ $mPAYTidTransactionStatusResult->setParam("shippingConfirmed", true);
503
+ return $mPAYTidTransactionStatusResult;
504
+ }
505
+
506
+ }
507
+
508
+ /**
509
+ * @param STRING The transaction ID, for the transaction you want to clear
510
+ * @param INTEGER The amount you want to clear multiply by 100
511
+ */
512
+ function clearAmount($tid, $amount) {
513
+ if(!$this->mPay24Api)
514
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
515
+
516
+ $transaction = $this->getTransaction($tid);
517
+
518
+ $this->checkTransaction($transaction);
519
+
520
+ $mPAYTid = $transaction->MPAYTID;
521
+ $currency = $transaction->CURRENCY;
522
+
523
+ if(!$mPAYTid)
524
+ $this->mPay24Api->dieWithMsg("The transaction '$tid' you want to clear with the mPAYTid '$mPAYTid' does not exist in the mPAY24 data base!");
525
+
526
+ if(!$amount || !is_numeric($amount))
527
+ $this->mPay24Api->dieWithMsg("The amount '$amount' you are trying to clear is not valid!");
528
+
529
+ if(!$currency || strlen($currency) != 3)
530
+ $this->mPay24Api->dieWithMsg("The currency code '$currency' for the amount you are trying to clear is not valid (3-digit ISO-Currency-Code)!");
531
+
532
+ $clearAmountResult = $this->mPay24Api->ManualClear($mPAYTid, $amount, $currency);
533
+
534
+ if($this->mPay24Api->getDebug()) {
535
+ $this->write_log("ClearAmount",
536
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
537
+ $this->write_log("ClearAmount",
538
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
539
+ }
540
+
541
+ return $clearAmountResult;
542
+ }
543
+
544
+
545
+
546
+ /**
547
+ * @param STRING The transaction ID, for the transaction you want to credit
548
+ * @param INTEGER The amount you want to credit multiply by 100
549
+ */
550
+ function creditAmount($tid, $amount) {
551
+ if(!$this->mPay24Api)
552
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
553
+
554
+ $transaction = $this->getTransaction($tid);
555
+
556
+ $this->checkTransaction($transaction);
557
+
558
+ $mPAYTid = $transaction->MPAYTID;
559
+ $currency = $transaction->CURRENCY;
560
+ $customer = $transaction->CUSTOMER;
561
+
562
+ if(!$mPAYTid)
563
+ $this->mPay24Api->dieWithMsg("The transaction '$tid' you want to credit with the mPAYTid '$mPAYTid' does not exist in the mPAY24 data base!");
564
+
565
+ if(!$amount || !is_numeric($amount))
566
+ $this->mPay24Api->dieWithMsg("The amount '$amount' you are trying to credit is not valid!");
567
+
568
+ if(!$currency || strlen($currency) != 3)
569
+ $this->mPay24Api->dieWithMsg("The currency code '$currency' for the amount you are trying to credit is not valid (3-digit ISO-Currency-Code)!");
570
+
571
+ $creditAmountResult = $this->mPay24Api->ManualCredit($mPAYTid, $amount, $currency, $customer);
572
+
573
+ if($this->mPay24Api->getDebug()) {
574
+ $this->write_log("CreditAmount",
575
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
576
+ $this->write_log("CreditAmount",
577
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
578
+ }
579
+
580
+ return $creditAmountResult;
581
+ }
582
+
583
+
584
+
585
+ /**
586
+ * @param STRING The transaction ID, for the transaction you want to cancel
587
+ */
588
+ function cancelTransaction($tid) {
589
+ if(!$this->mPay24Api)
590
+ die("You are not allowed to define a constructor in the child class of MPay24Shop!");
591
+
592
+ $transaction = $this->getTransaction($tid);
593
+
594
+ $this->checkTransaction($transaction);
595
+
596
+ $mPAYTid = $transaction->MPAYTID;
597
+
598
+ if(!$mPAYTid)
599
+ $this->mPay24Api->dieWithMsg("The transaction '$tid' you want to cancel with the mPAYTid '$mPAYTid' does not exist in the mPAY24 data base!");
600
+
601
+ $cancelTransactionResult = $this->mPay24Api->ManualReverse($mPAYTid);
602
+
603
+ if($this->mPay24Api->getDebug()) {
604
+ $this->write_log("CancelTransaction",
605
+ "REQUEST to " . $this->mPay24Api->getEtpURL() . " - ".str_replace("><", ">\n<", $this->mPay24Api->getRequest())."\n");
606
+ $this->write_log("CancelTransaction",
607
+ "RESPONSE - ".str_replace("><", ">\n<", $this->mPay24Api->getResponse())."\n");
608
+ }
609
+
610
+ return $cancelTransactionResult;
611
+ }
612
+
613
+ /**
614
+ * @abstract Check if the a transaction is created, whether the object is from type Transaction
615
+ * and whether the mandatory settings (TID and PRICE) of a transaction are setted
616
+ * @param Transaction The transaction, which is to be checked
617
+ */
618
+ private function checkTransaction($transaction) {
619
+ if(!$transaction || !$transaction instanceof Transaction)
620
+ $this->mPay24Api->dieWithMsg("To be able to use the MPay24Api you must create a Transaction object, which contains at least TID and PRICE!");
621
+ else if(!$transaction->TID)
622
+ $this->mPay24Api->dieWithMsg("The Transaction must contain TID!");
623
+ else if(!$transaction->PRICE)
624
+ $this->mPay24Api->dieWithMsg("The Transaction must contain PRICE!");
625
+ }
626
+ }
627
+
628
+ define("TRANSACTION_PROPERTIES", "SECRET,TID,STATUS,MPAYTID,APPR_CODE,P_TYPE,
629
+ BRAND,PRICE,CURRENCY,OPERATION,LANGUAGE,
630
+ USER_FIELD,ORDERDESC,CUSTOMER,CUSTOMER_EMAIL,
631
+ CUSTOMER_ID,PROFILE_STATUS,FILTER_STATUS,TSTATUS");
632
+
633
+ class Transaction {
634
+
635
+ /**
636
+ * @abstract PARAMETER VALUE(s), description
637
+ *
638
+ * STRING STATUS : OK, ERROR
639
+ *
640
+ * STRING OPERATION = CONFIRMATION
641
+ *
642
+ * STRING TID : length <= 32
643
+ *
644
+ * STRING TRANSACTION_STATUS : RESERVED, BILLED, REVERSED, CREDITED, ERROR
645
+ *
646
+ * INTEGER PRICE : length = 11 (e. g. "10" = "0,10")
647
+ *
648
+ * STRING CURRENCY : length = 3 (ISO currency code, e. g. "EUR")
649
+ *
650
+ * STRING P_TYPE : CC, ELV, EPS, GIROPAY, MAESTRO, MIA, PB, PSC, QUICK
651
+ *
652
+ * STRING BRAND : AMEX, DINERS, JCB, MASTERCARD, VISA, ATOS, HOBEX-AT, HOBEX-DE,
653
+ * HOBEX-NL, ARZ, BA, ERSTE, HYPO, RZB, ONE, T-MOBILE
654
+ *
655
+ * INTEGER MPAYTID : length = 11
656
+ *
657
+ * STRING USER_FIELD
658
+ *
659
+ * STRING ORDERDESC
660
+ *
661
+ * STRING CUSTOMER
662
+ *
663
+ * STRING CUSTOMER_EMAIL
664
+ *
665
+ * STRING LANGUAGE : length = 2
666
+ *
667
+ * STRING CUSTOMER_ID : length = 11
668
+ *
669
+ * STRING PROFILE_STATUS : IGNORED, USED, ERROR, CREATED, UPDATED, DELETED
670
+ *
671
+ * STRING FILTER_STATUS
672
+ *
673
+ * STRING APPR_CODE
674
+ */
675
+ var $allowedProperties = array();
676
+ /**
677
+ *
678
+ * @var INTEGER The ID of a transaction
679
+ */
680
+ var $properties = array();
681
+
682
+ /**
683
+ * @abstract Create a transaction object and set the allowed properties from the TRANSACTION_PROPERTIES
684
+ * @uses CONSTANT TRANSACTION_PROPERTIES
685
+ * @param INTEGER The ID of a transaction
686
+ */
687
+ function Transaction($tid) {
688
+ $this->allowedProperties = explode(",", preg_replace('/\s*/m', '', TRANSACTION_PROPERTIES));
689
+ $this->TID = $tid;
690
+ }
691
+
692
+ public function __get($property) {
693
+ if(!in_array($property, $this->allowedProperties))
694
+ die("The transaction's property " . $property . ", you want to get is not defined!");
695
+ if(isset($this->properties[$property]))
696
+ return $this->properties[$property];
697
+ else
698
+ return false;
699
+ }
700
+
701
+ public function __set($property, $value) {
702
+ if(!in_array($property, $this->allowedProperties))
703
+ die("The transaction's property " . $property . ", you want to set is not defined!");
704
+ $this->properties[$property] = $value;
705
+ }
706
+
707
+ /**
708
+ * @param ARRAY All the allowed properties for this transaction
709
+ */
710
+ protected function setProperties($args) {
711
+ $this->properties = $args;
712
+ }
713
+
714
+ /**
715
+ * @return ARRAY All the allowed properties for this transaction
716
+ */
717
+ protected function getProperties() {
718
+ return $this->properties;
719
+ }
720
+ }
721
+ ?>
app/code/community/Mpay24/Mpay24/Model/Api/Mpay24.php DELETED
@@ -1,732 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Api_Mpay24 extends Varien_Object {
22
-
23
- const PAYMENT_TYPE_AUTH = 'authorize';
24
- const PAYMENT_TYPE_SALE = 'authorize_capture';
25
-
26
- const URL = 'https://test.mPAY24.com/app/bin/etpv5';
27
-
28
- const SUCCESS_URL = 'mpay24/payment/success';
29
- const GUEST_SUCCESS_URL = 'mpay24/payment/guestsuccess';
30
- const ERROR_URL = 'mpay24/payment/error';
31
- const CONFIRMATION_URL = 'mpay24/payment/confirmation';
32
-
33
- const SP_ERROR_URL = 'mpay24/payment/errorSP';
34
- const UPDATE_URL = 'mpay24/payment/update';
35
- const CONNECT = 'mpay24/payment/connect';
36
- const SP_CONFIRMATION_URL = 'mpay24/payment/confirmationSP';
37
- const SP_CANCEL_URL = 'mpay24/payment/cancelSP';
38
- const SP_CALLED_BE_URL = 'mpay24/payment/calledBESP';
39
- const SP_CALLED_FE_URL = 'mpay24/payment/calledFESP';
40
-
41
- const RESPONSE_CODE_UNKNOWN = 0;
42
- const RESPONSE_CODE_APPROVED = 1;
43
- const RESPONSE_CODE_DECLINED = 2;
44
- const RESPONSE_CODE_ERROR = 3;
45
- const RESPONSE_CODE_HELD = 4;
46
- const RESPONSE_CODE_REDIRECT = 5;
47
- const RESPONSE_CODE_OPERATION = 6;
48
- const RESPONSE_CODE_STATUS_GETTED = 7;
49
- const RESPONSE_CODE_STATUS_UNKNOWN = 8;
50
-
51
- const MAGENTO_VERSION = "Magento 1.2.2 ";
52
-
53
- private $debug_save = false;
54
-
55
- public function createBasicRequestObject($operation, $mID = null){
56
- if($mID === null || $mID === Mage::getStoreConfig('mpay24/mpay24as/merchantid')){
57
- $request = Mage::getModel('mpay24/source_request')
58
- ->setOperation($operation)
59
- ->setMerchantid(Mage::getStoreConfig('mpay24/mpay24as/merchantid'));
60
- } else{
61
- $request = Mage::getModel('mpay24/source_request')
62
- ->setOperation($operation)
63
- ->setMerchantid($mID);
64
- }
65
- return $request;
66
- }
67
-
68
- public function createBasicSoapRequestObject($operation, $merchantID = null, $soapPass = null){
69
- if($merchantID != null && $soapPass != null){
70
- $merchID = $merchantID;
71
- $soapP = $soapPass;
72
- } else {
73
- $merchID = Mage::getStoreConfig('mpay24/mpay24as/merchantid');
74
- $soapP = Mage::getStoreConfig('mpay24/mpay24as/soap_pass');
75
- }
76
- $request = Mage::getModel('mpay24/source_request')
77
- ->setOperation($operation)
78
- ->setMerchantid($merchID)
79
- ->setSoapPass($soapP);
80
- if(Mage::getStoreConfig('mpay24/mpay24as/use_proxy')){
81
- $request->setProxyHost(Mage::getStoreConfig('mpay24/mpay24as/proxy_host'))
82
- ->setProxyPort(Mage::getStoreConfig('mpay24/mpay24as/proxy_port'));
83
- }
84
- return $request;
85
- }
86
-
87
- public function getMpayTid($orderId){
88
- $order = Mage::getModel('sales/order');
89
- $order->loadByIncrementId($orderId);
90
- return ($order->getId()) ? $order->getPayment()->getAdditionalInformation('mpay_tid') : '';
91
- }
92
-
93
- public function authorize(Varien_Object $request){
94
- $result = $this->_processSoapRequest($request);
95
-
96
- $this->_responseHandler($result);
97
- return $result;
98
- }
99
-
100
- public function charge($mpaytid, $amount){
101
- $soapRequest = $this->createBasicSoapRequestObject('LESSCLEAR');
102
- $transactionStatusRequest = $this->createBasicSoapRequestObject('MPAYTID_TRANSACTIONSTATUS');
103
-
104
- $soapRequest->setMpaytid(trim($mpaytid))
105
- ->setPrice($amount*100);
106
- $transactionStatusRequest->setMpaytid(trim($mpaytid));
107
-
108
- $result = $this->_processSoapRequest($soapRequest);
109
- $resultTransactionStatus = $this->_processSoapRequest($transactionStatusRequest);
110
- }
111
-
112
- public function refund($mpaytid, $amount){
113
- $soapRequest = $this->createBasicSoapRequestObject('MANUALCREDIT');
114
- $transactionStatusRequest = $this->createBasicSoapRequestObject('MPAYTID_TRANSACTIONSTATUS');
115
-
116
- $soapRequest->setMpaytid(trim($mpaytid))
117
- ->setPrice($amount*100)
118
- ->setCustomer('DUMMY')
119
- ->setCurrency('DUMMY');
120
- $transactionStatusRequest->setMpaytid(trim($mpaytid));
121
-
122
- $result = $this->_processSoapRequest($soapRequest);
123
- $resultTransactionStatus = $this->_processSoapRequest($transactionStatusRequest);
124
- }
125
-
126
- public function cancel($mpaytid){
127
- $soapRequest = $this->createBasicSoapRequestObject('MANUALREVERSE');
128
- $transactionStatusRequest = $this->createBasicSoapRequestObject('MPAYTID_TRANSACTIONSTATUS');
129
-
130
- $soapRequest->setMpaytid(trim($mpaytid));
131
- $transactionStatusRequest->setMpaytid(trim($mpaytid));
132
-
133
- $result = $this->_processSoapRequest($soapRequest);
134
- $resultTransactionStatus = $this->_processSoapRequest($transactionStatusRequest);
135
- }
136
-
137
- private function _processRequest($request){
138
- $result = Mage::getModel('mpay24/source_result');
139
- $client = new Varien_Http_Client();
140
- try{
141
- $uri = Mage::getStoreConfig('mpay24/mpay24as/url');
142
- $client->setUri($uri ? $uri : self::URL);
143
- $client->setConfig(array(
144
- 'maxredirects'=>0,
145
- 'timeout'=>30,
146
- ));
147
-
148
- $client->setParameterPost($request->getData());
149
- $client->setMethod(Zend_Http_Client::POST);
150
-
151
- $requestData = join('&', $requestData);
152
-
153
- $debug = Mage::getModel('mpay24/mpay24_debug')
154
- ->setRequestBody($requestData)
155
- ->setRequestSerialized(serialize($request->getData()))
156
- ->setRequestDump(print_r($request->getData(),1));
157
- if($this->debug_save)$debug->save();
158
-
159
- $response = $client->request();
160
-
161
- $response = trim(strstr($response->getRawBody(), 'STATUS'));
162
-
163
- $valArray = explode('&', $response);
164
- $v = '';
165
-
166
- $result->setResultCode($result->getResult())
167
- ->setRespmsg($result->getRespmsg());
168
-
169
- if (!empty($debug)) {
170
- $debug
171
- ->setResponseBody($response)
172
- ->setResultSerialized(serialize($result->getData()))
173
- ->setResultDump(print_r($result->getData(),1));
174
- if($this->debug_save) $debug->save();
175
- }
176
- } catch (Exception $e) {
177
- $result->setResponseCode(-1)
178
- ->setResponseReasonCode($e->getCode())
179
- ->setResponseReasonText($e->getMessage());
180
- if (!empty($debug)) {
181
- $debug
182
- ->setResultSerialized(serialize($result->getData()))
183
- ->setResultDump(print_r($result->getData(),1));
184
- if($this->debug_save) $debug->save();
185
- }
186
- Mage::throwException(Mage::helper('mpay24')->__('Gateway request error: %s', $e->getMessage()));
187
- }
188
- return $result;
189
- }
190
-
191
- private function _processSoapRequest($request){
192
- $result = Mage::getModel('mpay24/source_result');
193
- $wsdlURI = Mage::getStoreConfig('mpay24/mpay24as/soap_url');
194
-
195
- ini_set("soap.wsdl_cache_enabled", "0");
196
- if(Mage::getStoreConfig('mpay24/mpay24as/use_proxy')){
197
- $client = new Zend_Soap_Client($wsdlURI,
198
- array(
199
- 'login' => 'u'.$request->getMerchantid(),
200
- 'password' => $request->getSoapPass(),
201
- 'proxy_host' => $request->getProxyHost(),
202
- 'proxy_port' => $request->getProxyPort()
203
- ));
204
- } else{
205
- $client = new Zend_Soap_Client($wsdlURI,
206
- array(
207
- 'login' => 'u'.$request->getMerchantid(),
208
- 'password' => $request->getSoapPass()
209
- ));
210
- }
211
- try{
212
- $soapReq = '';
213
-
214
- foreach( $request->getData() as $key => $value ) {
215
- $requestData[] = strtoupper($key) . '=' . $value;
216
- $soapReq.= strtoupper($key) . '=' . $value."\n";
217
- }
218
- $debug = Mage::getModel('mpay24/mpay24_debug');
219
- $debug -> setRequestBody(serialize($requestData)) -> save();
220
- $debug -> setRequestSerialized(serialize($request->getData())) -> save();
221
- $debug -> setRequestDump(print_r($request->getData(),1)) -> save();
222
- if($this->debug_save) $debug->save();
223
-
224
- switch($request->getOperation()){
225
- case 'SELECTPAYMENT':
226
- $response = $client->SelectPayment(array(
227
- 'merchantID' => $request->getMerchantid(),
228
- 'mdxi' =>utf8_encode($request->getMdxi()),
229
- 'getDataURL' => '',
230
- 'tid' => $request->getTid()
231
- ));
232
-
233
- break;
234
- case 'LESSCLEAR':
235
- $response = $client->LessClear(array(
236
- 'merchantID' => $request->getMerchantid(),
237
- 'mpayTID' => $request->getMpaytid(),
238
- 'price' => $request->getPrice(),
239
- 'currency' => $request->getCurrency(),
240
- 'timeStamp' => 1294738079
241
- ));
242
- break;
243
- case 'MANUALCREDIT':
244
- $response = $client->ManualCredit(array(
245
- 'merchantID' => $request->getMerchantid(),
246
- 'mpayTID' => $request->getMpaytid(),
247
- 'price' => $request->getPrice(),
248
- 'currency' => $request->getCurrency(),
249
- 'timeStamp' => 1294738079,
250
- 'customer' => $request->getCustomer()
251
- ));
252
- break;
253
- case 'LISTPAYMENTMETHODS':
254
- $response = $client->ListPaymentMethods(array(
255
- 'merchantID' => $request->getMerchantid(),
256
- ));
257
- break;
258
- case 'MANUALREVERSE':
259
- $response = $client->ManualReverse(array(
260
- 'merchantID' => $request->getMerchantid(),
261
- 'mpayTID' =>$request->getMpaytid(),
262
- 'timeStamp' => 1294738079
263
- ));
264
- break;
265
- case 'MPAYTID_TRANSACTIONSTATUS':
266
- $response = $client->TransactionStatus(array(
267
- 'merchantID' => $request->getMerchantid(),
268
- 'mpayTID' =>$request->getMpaytid()
269
- ));
270
- break;
271
- case 'TID_TRANSACTIONSTATUS':
272
- $response = $client->TransactionStatus(array(
273
- 'merchantID' => $request->getMerchantid(),
274
- 'tid' => $request->getTid()
275
- ));
276
- break;
277
- default:
278
- break;
279
- }
280
- $result = $this->convertResponse($response, $request->getOperation());
281
-
282
- $debug -> setResultSerialized(serialize($result->getData())) -> save();
283
- $debug -> setResultDump(print_r($result->getData(),1)) -> save();
284
- if($this->debug_save) $debug->save();
285
- } catch (Exception $e) {
286
- $result->setResponseCode(-1)
287
- ->setResponseReasonCode($e->getCode())
288
- ->setResponseReasonText($e->getMessage());
289
- $debug->setResultSerialized(serialize($result->getData()))->save();
290
- $debug->setResultDump(print_r($result->getData(),1))->save();
291
- if($this->debug_save) $debug->save();
292
- Mage::throwException(Mage::helper('mpay24')->__('Gateway request error: %s', $e->getMessage()));
293
- }
294
- Mage::log($result);
295
- return $result;
296
- }
297
-
298
- private function _responseHandler($result){
299
- switch($result->getData('STATUS')){
300
- case 'OK':
301
- if($result->getData('RETURNCODE') != ''){
302
- switch($result->getData('RETURNCODE')){
303
- case 'OK':
304
- $result->setResponseCode(self::RESPONSE_CODE_APPROVED);
305
- $result->setTransactionId(trim($result->getData('MPAYTID')));
306
- $this->getSession()->setAdditionalInformation('mpay_tid', trim($result->getData('MPAYTID')));
307
- if($result->getData('ALL') > 0){
308
- $activeBrands = '';
309
- foreach( $result->getData() as $key => $value ) {
310
- if(substr($key, 0, 5) == 'BRAND')
311
- if(($value == 'JCB' && Mage::getStoreConfig('currency/options/base') == 'EUR') || $value != 'JCB')
312
- $activeBrands.= $value.",";
313
- }
314
-
315
- $paymentMethods = new Mage_Core_Model_Config();
316
- $paymentMethods ->saveConfig('mpay24/mpay24as/payment_methods', $activeBrands, 'default', "");
317
- }
318
-
319
- if($result->getData('TRANSACTION_STATUS') !== null){
320
- if($result->getData('USER_FIELD') !== null){
321
- $order = Mage::getSingleton('sales/order');
322
- $order->loadByIncrementId($result->getData('TID'));
323
- if($result->getData('USER_FIELD') === $order->getPayment()->getAdditionalInformation('user_field')){
324
- $result->setResponseCode(self::RESPONSE_CODE_STATUS_GETTED);
325
- } else {
326
- $result->setResponseCode(self::RESPONSE_CODE_STATUS_UNKNOWN);
327
- }
328
- }
329
-
330
- }
331
-
332
- break;
333
- case 'ERROR':
334
- $result->setResponseCode(self::RESPONSE_CODE_ERROR);
335
- break;
336
- case 'REDIRECT':
337
- $result->setResponseCode(self::RESPONSE_CODE_REDIRECT);
338
- $result->setLocation($result->getData('LOCATION'));
339
- $this->getSession()->set3DSUrl($result->getLocation());
340
- break;
341
- case 'TRANSACTION_NOT_FOUND':
342
- $result->setResponseCode(self::RESPONSE_CODE_STATUS_UNKNOWN);
343
- break;
344
- default:
345
- break;
346
- }
347
- break;
348
- } else {
349
-
350
- switch($result->getData('ERRORCODE')){
351
- case 'OK':
352
-
353
- $activeBrands = '';
354
-
355
- $paymentMethods = new Mage_Core_Model_Config();
356
- $paymentMethods ->saveConfig('mpay24/mpay24as/payment_methods', $activeBrands, 'default', "");
357
-
358
- break;
359
- default:
360
- break;
361
- }
362
- break;
363
- }
364
- case 'ERROR':
365
- $result->setResponseCode(self::RESPONSE_CODE_ERROR);
366
- if($result->getData('RETURNCODE') != ''){
367
- switch($result->getData('RETURNCODE')){
368
- case 'OPERATION%5FNOT%5FSUPPORTED':
369
- $result->setResponseCode(self::RESPONSE_CODE_OPERATION);
370
- $activeBrands = 'AMEX,DINERS,JCB,MASTERCARD,VISA,MAESTRO,ERSTE,HYPO,ARZ,RZB,BAWAG,BA,PB,GIROPAY,ATOS,HOBEX-AT,HOBEX-DE,HOBEX-NL,PAYPAL,CASH-TICKET,MPASS,PSC,';
371
- $paymentMethods = new Mage_Core_Model_Config();
372
- $paymentMethods ->saveConfig('mpay24/mpay24as/payment_methods', $activeBrands, 'default', "");
373
- break;
374
- case 'NOT_FOUND':
375
- $result->setResponseCode(self::RESPONSE_CODE_STATUS_UNKNOWN);
376
- break;
377
- }
378
- }
379
- break;
380
- if($result->getData('ERRNO') != ''){
381
- switch($result->getData('ERRNO')){
382
- case '1': // Karte abgelehnt
383
- case '2': // Ablaufdatum falsch
384
- $result->setResponseCode(self::RESPONSE_CODE_DECLINED);
385
- break;
386
- case '3': // Host Problem
387
- case '4': // Haendler abgelehnt
388
- case '5': // Betrag falsch
389
- case '6': // Pin falsch
390
- case '7': // Transaktion ungueltig
391
- case '8': // Invalid UserID
392
- case '9': // Transaction Error
393
- case '10': // Transaktion abgelehnt, Autorisierung negativ
394
- $result->setResponseCode(self::RESPONSE_CODE_ERROR);
395
- break;
396
- default:
397
- $result->setResponseCode(self::RESPONSE_CODE_ERROR);
398
- break;
399
- }
400
- }
401
- break;
402
- default:
403
- $result->setResponseCode(self::RESPONSE_CODE_UNKNOWN);
404
- break;
405
- }
406
- }
407
-
408
- public function convertResponse($response, $operation){
409
- $responseAsArray = (array) $response;
410
- $result = Mage::getModel('mpay24/source_result');
411
- $soapResult = '';
412
- $countMethods = 0;
413
-
414
- switch($operation){
415
- case 'SELECTPAYMENT':
416
- foreach($responseAsArray as $r){
417
- $array2 = (array) $r;
418
- foreach(array_keys($array2) as $k){
419
- $result->setData(strtoupper($k), $array2[$k]);
420
- $soapResult.= strtoupper($k).' = '.$array2[$k]."\n";
421
- }
422
- }
423
- break;
424
- case 'LESSCLEAR':
425
- foreach(array_keys($responseAsArray) as $r){
426
- if(!$responseAsArray[$r] instanceOf stdClass){
427
- $result->setData(strtoupper($r), $responseAsArray[$r]);
428
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
429
- }
430
- else{
431
- $a = (array) $responseAsArray[$r];
432
- foreach(array_keys($a) as $k){
433
- $result->setData(strtoupper($k), $a[$k]);
434
- $soapResult.= strtoupper($k).' = '.$a[$k]."\n";
435
- }
436
- }
437
- }
438
- break;
439
- case 'MANUALCREDIT':
440
- foreach(array_keys($responseAsArray) as $r){
441
- if(!$responseAsArray[$r] instanceOf stdClass){
442
- $result->setData(strtoupper($r), $responseAsArray[$r]);
443
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
444
- }
445
- else{
446
- $a = (array) $responseAsArray[$r];
447
- foreach(array_keys($a) as $k){
448
- $result->setData(strtoupper($k), $a[$k]);
449
- $soapResult.= strtoupper($k).' = '.$a[$k]."\n";
450
- }
451
- }
452
- }
453
- break;
454
- case 'LISTPAYMENTMETHODS':
455
- foreach(array_keys($responseAsArray) as $r){
456
- if(!is_array($responseAsArray[$r])){
457
- $result->setData(strtoupper($r), $responseAsArray[$r]);
458
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
459
- }
460
- else{
461
- foreach($responseAsArray[$r] as $o){
462
- $array2 = (array) $o;
463
- $countMethods++;
464
- foreach(array_keys($array2) as $ok){
465
- $result->setData(strtoupper($ok).'['.$countMethods.']', $array2[$ok]);
466
- $soapResult.= strtoupper($ok).'['.$countMethods.'] = '.$array2[$ok]."\n";
467
- }
468
- }
469
- }
470
- }
471
- break;
472
- case 'MANUALREVERSE':
473
- foreach(array_keys($responseAsArray) as $r){
474
- if(!$responseAsArray[$r] instanceOf stdClass) {
475
- $result->setData(strtoupper($r), $responseAsArray[$r]);
476
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
477
- }
478
- else{
479
- $a = (array) $responseAsArray[$r];
480
- foreach(array_keys($a) as $k){
481
- $result->setData(strtoupper($k), $a[$k]);
482
- $soapResult.= strtoupper($k).' = '.$a[$k]."\n";
483
- }
484
- }
485
- }
486
- break;
487
- case 'MPAYTID_TRANSACTIONSTATUS':
488
- $statusGeted = false;
489
- $userFieldGeted = false;
490
- $appr_codeGeted = false;
491
- $mpaytidGeted = false;
492
- $priceGeted = false;
493
- $currencyGeted = false;
494
- $ptypeGeted = false;
495
- $brandGeted = false;
496
- $billing_addrGeted = false;
497
- $shipping_addrGeted = false;
498
-
499
- foreach(array_keys($responseAsArray) as $r){
500
- if(!is_array($responseAsArray[$r])){
501
- $result->setData(strtoupper($r), $responseAsArray[$r]);
502
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
503
- }
504
- else{
505
- $a = $responseAsArray[$r];
506
- foreach(array_keys($a) as $k){
507
- $array2 = (array) $a[$k];
508
- foreach(array_keys($array2) as $ak){
509
- if(strtoupper($ak) === 'VALUE' && $statusGeted === true){
510
- $result->setData('TRANSACTION_STATUS', $array2[$ak]);
511
- $soapResult.= $array2[$ak]."\n";
512
- $statusGeted = false;
513
- }
514
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'STATUS' && $statusGeted === false){
515
- $soapResult.= 'TRANSACTION_STATUS'.' = ';
516
- $statusGeted = true;
517
- }
518
- if(strtoupper($ak) === 'VALUE' && $userFieldGeted === true){
519
- $result->setData('USER_FIELD', $array2[$ak]);
520
- $soapResult.= $array2[$ak]."\n";
521
- $userFieldGeted = false;
522
- }
523
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'USER_FIELD' && $userFieldGeted === false){
524
- $soapResult.= 'USER_FIELD'.' = ';
525
- $userFieldGeted = true;
526
- }
527
- if(strtoupper($ak) === 'VALUE' && $appr_codeGeted === true){
528
- $result->setData('APPR_CODE', $array2[$ak]);
529
- $soapResult.= $array2[$ak]."\n";
530
- $appr_codeGeted = false;
531
- }
532
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'APPR_CODE' && $appr_codeGeted === false){
533
- $soapResult.= 'APPR_CODE'.' = ';
534
- $appr_codeGeted = true;
535
- }
536
- if(strtoupper($ak) === 'VALUE' && $mpaytidGeted === true){
537
- $result->setData('MPAYTID', $array2[$ak]);
538
- $soapResult.= $array2[$ak]."\n";
539
- $mpaytidGeted = false;
540
- }
541
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'MPAYTID' && $mpaytidGeted === false){
542
- $soapResult.= 'MPAYTID'.' = ';
543
- $mpaytidGeted = true;
544
- }
545
- if(strtoupper($ak) === 'VALUE' && $priceGeted === true){
546
- $result->setData('PRICE', $array2[$ak]);
547
- $soapResult.= $array2[$ak]."\n";
548
- $priceGeted = false;
549
- }
550
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'PRICE' && $priceGeted === false){
551
- $soapResult.= 'PRICE'.' = ';
552
- $priceGeted = true;
553
- }
554
- if(strtoupper($ak) === 'VALUE' && $currencyGeted === true){
555
- $result->setData('CURRENCY', $array2[$ak]);
556
- $soapResult.= $array2[$ak]."\n";
557
- $currencyGeted = false;
558
- }
559
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'CURRENCY' && $currencyGeted === false){
560
- $soapResult.= 'CURRENCY'.' = ';
561
- $currencyGeted = true;
562
- }
563
- if(strtoupper($ak) === 'VALUE' && $ptypeGeted === true){
564
- $result->setData('P_TYPE', $array2[$ak]);
565
- $soapResult.= $array2[$ak]."\n";
566
- $ptypeGeted = false;
567
- }
568
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'P_TYPE' && $ptypeGeted === false){
569
- $soapResult.= 'P_TYPE'.' = ';
570
- $ptypeGeted = true;
571
- }
572
- if(strtoupper($ak) === 'VALUE' && $brandGeted === true){
573
- $result->setData('BRAND', $array2[$ak]);
574
- $soapResult.= $array2[$ak]."\n";
575
- $brandGeted = false;
576
- }
577
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'BRAND' && $brandGeted === false){
578
- $soapResult.= 'BRAND'.' = ';
579
- $brandGeted = true;
580
- }
581
- if(strtoupper($ak) === 'VALUE' && $billing_addrGeted === true){
582
- $result->setData('BILLING_ADDR', $array2[$ak]);
583
- $soapResult.= $array2[$ak]."\n";
584
- $billing_addrGeted = false;
585
- }
586
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'BILLING_ADDR' && $billing_addrGeted === false){
587
- $soapResult.= 'BILLING_ADDR'.' = ';
588
- $billing_addrGeted = true;
589
- }
590
- if(strtoupper($ak) === 'VALUE' && $shipping_addrGeted === true){
591
- $result->setData('SHIPPING_ADDR', $array2[$ak]);
592
- $soapResult.= $array2[$ak]."\n";
593
- $shipping_addrGeted = false;
594
- }
595
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'SHIPPING_ADDR' && $shipping_addrGeted === false){
596
- $soapResult.= 'SHIPPING_ADDR'.' = ';
597
- $shipping_addrGeted = true;
598
- }
599
- }
600
- }
601
- }
602
- }
603
- break;
604
- case 'TID_TRANSACTIONSTATUS':
605
- $statusGeted = false;
606
- $userFieldGeted = false;
607
- $appr_codeGeted = false;
608
- $mpaytidGeted = false;
609
- $priceGeted = false;
610
- $currencyGeted = false;
611
- $ptypeGeted = false;
612
- $brandGeted = false;
613
- $billing_addrGeted = false;
614
- $shipping_addrGeted = false;
615
-
616
- foreach(array_keys($responseAsArray) as $r){
617
- if(!is_array($responseAsArray[$r])){
618
- $result->setData(strtoupper($r), $responseAsArray[$r]);
619
- $soapResult.= strtoupper($r).' = '.$responseAsArray[$r]."\n";
620
- }
621
- else{
622
- $a = $responseAsArray[$r];
623
- foreach(array_keys($a) as $k){
624
- $array2 = (array) $a[$k];
625
- foreach(array_keys($array2) as $ak){
626
- if(strtoupper($ak) === 'VALUE' && $statusGeted === true){
627
- $result->setData('TRANSACTION_STATUS', $array2[$ak]);
628
- $soapResult.= $array2[$ak]."\n";
629
- $statusGeted = false;
630
- }
631
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'STATUS' && $statusGeted === false){
632
- $soapResult.= 'TRANSACTION_STATUS'.' = ';
633
- $statusGeted = true;
634
- }
635
- if(strtoupper($ak) === 'VALUE' && $userFieldGeted === true){
636
- $result->setData('USER_FIELD', $array2[$ak]);
637
- $soapResult.= $array2[$ak]."\n";
638
- $userFieldGeted = false;
639
- }
640
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'USER_FIELD' && $userFieldGeted === false){
641
- $soapResult.= 'USER_FIELD'.' = ';
642
- $userFieldGeted = true;
643
- }
644
- if(strtoupper($ak) === 'VALUE' && $appr_codeGeted === true){
645
- $result->setData('APPR_CODE', $array2[$ak]);
646
- $soapResult.= $array2[$ak]."\n";
647
- $appr_codeGeted = false;
648
- }
649
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'APPR_CODE' && $appr_codeGeted === false){
650
- $soapResult.= 'APPR_CODE'.' = ';
651
- $appr_codeGeted = true;
652
- }
653
- if(strtoupper($ak) === 'VALUE' && $mpaytidGeted === true){
654
- $result->setData('MPAYTID', $array2[$ak]);
655
- $soapResult.= $array2[$ak]."\n";
656
- $mpaytidGeted = false;
657
- }
658
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'MPAYTID' && $mpaytidGeted === false){
659
- $soapResult.= 'MPAYTID'.' = ';
660
- $mpaytidGeted = true;
661
- }
662
- if(strtoupper($ak) === 'VALUE' && $priceGeted === true){
663
- $result->setData('PRICE', $array2[$ak]);
664
- $soapResult.= $array2[$ak]."\n";
665
- $priceGeted = false;
666
- }
667
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'PRICE' && $priceGeted === false){
668
- $soapResult.= 'PRICE'.' = ';
669
- $priceGeted = true;
670
- }
671
- if(strtoupper($ak) === 'VALUE' && $currencyGeted === true){
672
- $result->setData('CURRENCY', $array2[$ak]);
673
- $soapResult.= $array2[$ak]."\n";
674
- $currencyGeted = false;
675
- }
676
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'CURRENCY' && $currencyGeted === false){
677
- $soapResult.= 'CURRENCY'.' = ';
678
- $currencyGeted = true;
679
- }
680
- if(strtoupper($ak) === 'VALUE' && $ptypeGeted === true){
681
- $result->setData('P_TYPE', $array2[$ak]);
682
- $soapResult.= $array2[$ak]."\n";
683
- $ptypeGeted = false;
684
- }
685
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'P_TYPE' && $ptypeGeted === false){
686
- $soapResult.= 'P_TYPE'.' = ';
687
- $ptypeGeted = true;
688
- }
689
- if(strtoupper($ak) === 'VALUE' && $brandGeted === true){
690
- $result->setData('BRAND', $array2[$ak]);
691
- $soapResult.= $array2[$ak]."\n";
692
- $brandGeted = false;
693
- }
694
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'BRAND' && $brandGeted === false){
695
- $soapResult.= 'BRAND'.' = ';
696
- $brandGeted = true;
697
- }
698
- if(strtoupper($ak) === 'VALUE' && $billing_addrGeted === true){
699
- $result->setData('BILLING_ADDR', $array2[$ak]);
700
- $soapResult.= $array2[$ak]."\n";
701
- $billing_addrGeted = false;
702
- }
703
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'BILLING_ADDR' && $billing_addrGeted === false){
704
- $soapResult.= 'BILLING_ADDR'.' = ';
705
- $billing_addrGeted = true;
706
- }
707
- if(strtoupper($ak) === 'VALUE' && $shipping_addrGeted === true){
708
- $result->setData('SHIPPING_ADDR', $array2[$ak]);
709
- $soapResult.= $array2[$ak]."\n";
710
- $shipping_addrGeted = false;
711
- }
712
- if(strtoupper($ak) === 'NAME' && $array2[$ak] === 'SHIPPING_ADDR' && $shipping_addrGeted === false){
713
- $soapResult.= 'SHIPPING_ADDR'.' = ';
714
- $shipping_addrGeted = true;
715
- }
716
- }
717
- }
718
- }
719
- }
720
- break;
721
- default:
722
- break;
723
- }
724
-
725
- return $result;
726
- }
727
-
728
- public function getSession() {
729
- return Mage::getSingleton('mpay24/session');
730
- }
731
- }
732
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Api/cacert.pem ADDED
@@ -0,0 +1,3721 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##
2
+ ## ca-bundle.crt -- Bundle of CA Root Certificates
3
+ ##
4
+ ## Certificate data from Mozilla as of: Fri Sep 2 23:34:57 2011
5
+ ##
6
+ ## This is a bundle of X.509 certificates of public Certificate Authorities
7
+ ## (CA). These were automatically extracted from Mozilla's root certificates
8
+ ## file (certdata.txt). This file can be found in the mozilla source tree:
9
+ ## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
10
+ ##
11
+ ## It contains the certificates in PEM format and therefore
12
+ ## can be directly used with curl / libcurl / php_curl, or with
13
+ ## an Apache+mod_ssl webserver for SSL client authentication.
14
+ ## Just configure this file as the SSLCACertificateFile.
15
+ ##
16
+
17
+ # ***** BEGIN LICENSE BLOCK *****
18
+ # Version: MPL 1.1/GPL 2.0/LGPL 2.1
19
+ #
20
+ # The contents of this file are subject to the Mozilla Public License Version
21
+ # 1.1 (the "License"); you may not use this file except in compliance with
22
+ # the License. You may obtain a copy of the License at
23
+ # http://www.mozilla.org/MPL/
24
+ #
25
+ # Software distributed under the License is distributed on an "AS IS" basis,
26
+ # WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
27
+ # for the specific language governing rights and limitations under the
28
+ # License.
29
+ #
30
+ # The Original Code is the Netscape security libraries.
31
+ #
32
+ # The Initial Developer of the Original Code is
33
+ # Netscape Communications Corporation.
34
+ # Portions created by the Initial Developer are Copyright (C) 1994-2000
35
+ # the Initial Developer. All Rights Reserved.
36
+ #
37
+ # Contributor(s):
38
+ #
39
+ # Alternatively, the contents of this file may be used under the terms of
40
+ # either the GNU General Public License Version 2 or later (the "GPL"), or
41
+ # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
42
+ # in which case the provisions of the GPL or the LGPL are applicable instead
43
+ # of those above. If you wish to allow use of your version of this file only
44
+ # under the terms of either the GPL or the LGPL, and not to allow others to
45
+ # use your version of this file under the terms of the MPL, indicate your
46
+ # decision by deleting the provisions above and replace them with the notice
47
+ # and other provisions required by the GPL or the LGPL. If you do not delete
48
+ # the provisions above, a recipient may use your version of this file under
49
+ # the terms of any one of the MPL, the GPL or the LGPL.
50
+ #
51
+ # ***** END LICENSE BLOCK *****
52
+ # @(#) $RCSfile: certdata.txt,v $ $Revision: 1.79 $ $Date: 2011/09/02 19:40:56 $
53
+
54
+ GTE CyberTrust Global Root
55
+ ==========================
56
+ -----BEGIN CERTIFICATE-----
57
+ MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
58
+ Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
59
+ A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
60
+ MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
61
+ Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
62
+ IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
63
+ sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
64
+ HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
65
+ AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
66
+ M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
67
+ NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
68
+ -----END CERTIFICATE-----
69
+
70
+ Thawte Server CA
71
+ ================
72
+ -----BEGIN CERTIFICATE-----
73
+ MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
74
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
75
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
76
+ AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
77
+ b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
78
+ BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
79
+ c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
80
+ A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
81
+ ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
82
+ /Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
83
+ 1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
84
+ MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
85
+ GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
86
+ GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
87
+ -----END CERTIFICATE-----
88
+
89
+ Thawte Premium Server CA
90
+ ========================
91
+ -----BEGIN CERTIFICATE-----
92
+ MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
93
+ DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
94
+ dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
95
+ AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
96
+ ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
97
+ AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
98
+ VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
99
+ aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
100
+ cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
101
+ aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
102
+ Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
103
+ qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
104
+ SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
105
+ 8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
106
+ UCemDaYj+bvLpgcUQg==
107
+ -----END CERTIFICATE-----
108
+
109
+ Equifax Secure CA
110
+ =================
111
+ -----BEGIN CERTIFICATE-----
112
+ MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
113
+ ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
114
+ MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
115
+ B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
116
+ nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
117
+ fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
118
+ 8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
119
+ A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
120
+ CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
121
+ A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
122
+ spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
123
+ Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
124
+ zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
125
+ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
126
+ 70+sB3c4
127
+ -----END CERTIFICATE-----
128
+
129
+ Digital Signature Trust Co. Global CA 1
130
+ =======================================
131
+ -----BEGIN CERTIFICATE-----
132
+ MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
133
+ ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
134
+ MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
135
+ IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
136
+ A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
137
+ NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
138
+ o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
139
+ BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
140
+ dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
141
+ IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
142
+ MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
143
+ BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
144
+ ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
145
+ kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
146
+ RbyhkwS7hp86W0N6w4pl
147
+ -----END CERTIFICATE-----
148
+
149
+ Digital Signature Trust Co. Global CA 3
150
+ =======================================
151
+ -----BEGIN CERTIFICATE-----
152
+ MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
153
+ ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
154
+ MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
155
+ IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
156
+ A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
157
+ VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
158
+ xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
159
+ BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
160
+ dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
161
+ IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
162
+ MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
163
+ BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
164
+ AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
165
+ up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
166
+ mPnHfxsb1gYgAlihw6ID
167
+ -----END CERTIFICATE-----
168
+
169
+ Verisign Class 1 Public Primary Certification Authority
170
+ =======================================================
171
+ -----BEGIN CERTIFICATE-----
172
+ MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJBgNVBAYTAlVT
173
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
174
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTla
175
+ MF8xCzAJBgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3Mg
176
+ MSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEF
177
+ AAOBjQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0NH8xlbgyw
178
+ 0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR4k5FVmkfeAKA2txHkSm7
179
+ NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATANBgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf
180
+ 7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZoEWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnx
181
+ giJduLHdgSOjeyUVRjB5FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0A
182
+ NACY89FxlA==
183
+ -----END CERTIFICATE-----
184
+
185
+ Verisign Class 2 Public Primary Certification Authority
186
+ =======================================================
187
+ -----BEGIN CERTIFICATE-----
188
+ MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
189
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmltYXJ5
190
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
191
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAy
192
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
193
+ A4GNADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyhYGt+eSz6
194
+ Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7FYCTXOvnzAhsPz6zSvz/
195
+ S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBAIobK/o5wXTX
196
+ XtgZZKJYSi034DNHD6zt96rbHuSLBlxgJ8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUY
197
+ YAS/QoD90KioHgE796Ncr6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2
198
+ lw0Xd8rY
199
+ -----END CERTIFICATE-----
200
+
201
+ Verisign Class 3 Public Primary Certification Authority
202
+ =======================================================
203
+ -----BEGIN CERTIFICATE-----
204
+ MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
205
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
206
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
207
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
208
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
209
+ A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
210
+ f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
211
+ hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
212
+ TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
213
+ WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
214
+ Tqj/ZA1k
215
+ -----END CERTIFICATE-----
216
+
217
+ Verisign Class 1 Public Primary Certification Authority - G2
218
+ ============================================================
219
+ -----BEGIN CERTIFICATE-----
220
+ MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
221
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
222
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
223
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
224
+ dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
225
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
226
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
227
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
228
+ dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
229
+ k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
230
+ WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
231
+ MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
232
+ XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
233
+ lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
234
+ -----END CERTIFICATE-----
235
+
236
+ Verisign Class 2 Public Primary Certification Authority - G2
237
+ ============================================================
238
+ -----BEGIN CERTIFICATE-----
239
+ MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
240
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
241
+ cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
242
+ Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
243
+ c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
244
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
245
+ cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
246
+ Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
247
+ c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
248
+ nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
249
+ wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
250
+ ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
251
+ 1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
252
+ LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
253
+ -----END CERTIFICATE-----
254
+
255
+ Verisign Class 3 Public Primary Certification Authority - G2
256
+ ============================================================
257
+ -----BEGIN CERTIFICATE-----
258
+ MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
259
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
260
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
261
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
262
+ dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
263
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
264
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
265
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
266
+ dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
267
+ FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
268
+ lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
269
+ MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
270
+ 1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
271
+ Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
272
+ -----END CERTIFICATE-----
273
+
274
+ Verisign Class 4 Public Primary Certification Authority - G2
275
+ ============================================================
276
+ -----BEGIN CERTIFICATE-----
277
+ MIIDAjCCAmsCEDKIjprS9esTR/h/xCA3JfgwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
278
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
279
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
280
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
281
+ dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
282
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgNCBQdWJsaWMgUHJpbWFy
283
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
284
+ biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
285
+ dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC68OTP+cSuhVS5B1f5j8V/aBH4
286
+ xBewRNzjMHPVKmIquNDMHO0oW369atyzkSTKQWI8/AIBvxwWMZQFl3Zuoq29YRdsTjCG8FE3KlDH
287
+ qGKB3FtKqsGgtG7rL+VXxbErQHDbWk2hjh+9Ax/YA9SPTJlxvOKCzFjomDqG04Y48wApHwIDAQAB
288
+ MA0GCSqGSIb3DQEBBQUAA4GBAIWMEsGnuVAVess+rLhDityq3RS6iYF+ATwjcSGIL4LcY/oCRaxF
289
+ WdcqWERbt5+BO5JoPeI3JPV7bI92NZYJqFmduc4jq3TWg/0ycyfYaT5DdPauxYma51N86Xv2S/PB
290
+ ZYPejYqcPIiNOVn8qj8ijaHBZlCBckztImRPT8qAkbYp
291
+ -----END CERTIFICATE-----
292
+
293
+ GlobalSign Root CA
294
+ ==================
295
+ -----BEGIN CERTIFICATE-----
296
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
297
+ GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
298
+ b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
299
+ BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
300
+ VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
301
+ DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
302
+ THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
303
+ Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
304
+ c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
305
+ gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
306
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
307
+ AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
308
+ Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
309
+ j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
310
+ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
311
+ X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
312
+ -----END CERTIFICATE-----
313
+
314
+ GlobalSign Root CA - R2
315
+ =======================
316
+ -----BEGIN CERTIFICATE-----
317
+ MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
318
+ YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
319
+ bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
320
+ aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
321
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
322
+ ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
323
+ s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
324
+ S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
325
+ TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
326
+ ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
327
+ FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
328
+ YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
329
+ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
330
+ 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
331
+ 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
332
+ 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
333
+ TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
334
+ -----END CERTIFICATE-----
335
+
336
+ ValiCert Class 1 VA
337
+ ===================
338
+ -----BEGIN CERTIFICATE-----
339
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
340
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
341
+ YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
342
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
343
+ MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
344
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
345
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
346
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
347
+ A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
348
+ GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
349
+ DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
350
+ lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
351
+ icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
352
+ Orf1LXLI
353
+ -----END CERTIFICATE-----
354
+
355
+ ValiCert Class 2 VA
356
+ ===================
357
+ -----BEGIN CERTIFICATE-----
358
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
359
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
360
+ YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
361
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
362
+ MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
363
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
364
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
365
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
366
+ A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
367
+ CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
368
+ ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
369
+ SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
370
+ UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
371
+ W9ViH0Pd
372
+ -----END CERTIFICATE-----
373
+
374
+ RSA Root Certificate 1
375
+ ======================
376
+ -----BEGIN CERTIFICATE-----
377
+ MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
378
+ b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
379
+ YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
380
+ bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
381
+ MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
382
+ d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
383
+ UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
384
+ LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
385
+ A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
386
+ 3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
387
+ BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
388
+ 3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
389
+ V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
390
+ on+jjBXu
391
+ -----END CERTIFICATE-----
392
+
393
+ Verisign Class 1 Public Primary Certification Authority - G3
394
+ ============================================================
395
+ -----BEGIN CERTIFICATE-----
396
+ MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
397
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
398
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
399
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
400
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
401
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
402
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
403
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
404
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
405
+ ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
406
+ bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
407
+ rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
408
+ Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
409
+ FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
410
+ q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
411
+ y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
412
+ ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
413
+ a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
414
+ D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
415
+ -----END CERTIFICATE-----
416
+
417
+ Verisign Class 2 Public Primary Certification Authority - G3
418
+ ============================================================
419
+ -----BEGIN CERTIFICATE-----
420
+ MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
421
+ MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
422
+ azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
423
+ b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
424
+ aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
425
+ BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
426
+ c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
427
+ aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
428
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
429
+ AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
430
+ tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
431
+ C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
432
+ 0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
433
+ Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
434
+ JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
435
+ 0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
436
+ sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
437
+ JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
438
+ GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
439
+ -----END CERTIFICATE-----
440
+
441
+ Verisign Class 3 Public Primary Certification Authority - G3
442
+ ============================================================
443
+ -----BEGIN CERTIFICATE-----
444
+ MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
445
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
446
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
447
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
448
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
449
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
450
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
451
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
452
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
453
+ ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
454
+ EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
455
+ cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
456
+ EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
457
+ 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
458
+ ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
459
+ j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
460
+ /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
461
+ xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
462
+ t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
463
+ -----END CERTIFICATE-----
464
+
465
+ Verisign Class 4 Public Primary Certification Authority - G3
466
+ ============================================================
467
+ -----BEGIN CERTIFICATE-----
468
+ MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
469
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
470
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
471
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
472
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
473
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
474
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
475
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
476
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
477
+ ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
478
+ tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
479
+ 8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
480
+ Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
481
+ Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
482
+ j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
483
+ mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
484
+ fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
485
+ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
486
+ UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
487
+ -----END CERTIFICATE-----
488
+
489
+ Entrust.net Secure Server CA
490
+ ============================
491
+ -----BEGIN CERTIFICATE-----
492
+ MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
493
+ BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
494
+ cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
495
+ ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
496
+ cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
497
+ A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
498
+ eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
499
+ dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
500
+ aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
501
+ aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
502
+ gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
503
+ ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
504
+ CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
505
+ dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
506
+ bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
507
+ cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
508
+ dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
509
+ NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
510
+ HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
511
+ BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
512
+ Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
513
+ n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
514
+ -----END CERTIFICATE-----
515
+
516
+ Entrust.net Premium 2048 Secure Server CA
517
+ =========================================
518
+ -----BEGIN CERTIFICATE-----
519
+ MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
520
+ ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
521
+ bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
522
+ BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
523
+ NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
524
+ d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
525
+ MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
526
+ ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
527
+ MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
528
+ Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
529
+ hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
530
+ nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
531
+ VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
532
+ AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
533
+ gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
534
+ AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
535
+ oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
536
+ o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
537
+ 2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
538
+ OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
539
+ -----END CERTIFICATE-----
540
+
541
+ Baltimore CyberTrust Root
542
+ =========================
543
+ -----BEGIN CERTIFICATE-----
544
+ MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
545
+ ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
546
+ ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
547
+ SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
548
+ dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
549
+ uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
550
+ UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
551
+ G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
552
+ XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
553
+ l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
554
+ VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
555
+ BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
556
+ cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
557
+ hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
558
+ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
559
+ RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
560
+ -----END CERTIFICATE-----
561
+
562
+ Equifax Secure Global eBusiness CA
563
+ ==================================
564
+ -----BEGIN CERTIFICATE-----
565
+ MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
566
+ RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
567
+ bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
568
+ HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
569
+ b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
570
+ PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
571
+ qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
572
+ hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
573
+ BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
574
+ MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
575
+ I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
576
+ NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
577
+ -----END CERTIFICATE-----
578
+
579
+ Equifax Secure eBusiness CA 1
580
+ =============================
581
+ -----BEGIN CERTIFICATE-----
582
+ MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
583
+ RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
584
+ LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
585
+ ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
586
+ IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
587
+ 1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
588
+ IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
589
+ MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
590
+ Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
591
+ AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
592
+ lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
593
+ KpYrtWKmpj29f5JZzVoqgrI3eQ==
594
+ -----END CERTIFICATE-----
595
+
596
+ Equifax Secure eBusiness CA 2
597
+ =============================
598
+ -----BEGIN CERTIFICATE-----
599
+ MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
600
+ ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
601
+ MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
602
+ DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
603
+ nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
604
+ 2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
605
+ BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
606
+ A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
607
+ JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
608
+ A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
609
+ uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
610
+ Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
611
+ jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
612
+ 78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
613
+ V+GRMOrN
614
+ -----END CERTIFICATE-----
615
+
616
+ AddTrust Low-Value Services Root
617
+ ================================
618
+ -----BEGIN CERTIFICATE-----
619
+ MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
620
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
621
+ cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
622
+ CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
623
+ ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
624
+ AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
625
+ 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
626
+ oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
627
+ Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
628
+ GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
629
+ HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
630
+ AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
631
+ RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
632
+ HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
633
+ ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
634
+ iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
635
+ eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
636
+ mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
637
+ ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
638
+ -----END CERTIFICATE-----
639
+
640
+ AddTrust External Root
641
+ ======================
642
+ -----BEGIN CERTIFICATE-----
643
+ MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
644
+ QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
645
+ VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
646
+ NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
647
+ cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
648
+ Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
649
+ +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
650
+ Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
651
+ aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
652
+ 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
653
+ 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
654
+ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
655
+ VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
656
+ VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
657
+ IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
658
+ j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
659
+ 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
660
+ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
661
+ G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
662
+ -----END CERTIFICATE-----
663
+
664
+ AddTrust Public Services Root
665
+ =============================
666
+ -----BEGIN CERTIFICATE-----
667
+ MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
668
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
669
+ cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
670
+ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
671
+ dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
672
+ AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
673
+ nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
674
+ d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
675
+ Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
676
+ HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
677
+ A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
678
+ /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
679
+ FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
680
+ A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
681
+ JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
682
+ +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
683
+ GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
684
+ Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
685
+ EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
686
+ -----END CERTIFICATE-----
687
+
688
+ AddTrust Qualified Certificates Root
689
+ ====================================
690
+ -----BEGIN CERTIFICATE-----
691
+ MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
692
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
693
+ cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
694
+ CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
695
+ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
696
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
697
+ 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
698
+ KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
699
+ L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
700
+ wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
701
+ MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
702
+ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
703
+ BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
704
+ azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
705
+ ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
706
+ GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
707
+ dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
708
+ RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
709
+ iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
710
+ -----END CERTIFICATE-----
711
+
712
+ Entrust Root Certification Authority
713
+ ====================================
714
+ -----BEGIN CERTIFICATE-----
715
+ MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
716
+ BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
717
+ b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
718
+ A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
719
+ MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
720
+ MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
721
+ Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
722
+ dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
723
+ ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
724
+ A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
725
+ Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
726
+ j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
727
+ rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
728
+ DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
729
+ MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
730
+ hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
731
+ A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
732
+ Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
733
+ v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
734
+ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
735
+ tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
736
+ -----END CERTIFICATE-----
737
+
738
+ RSA Security 2048 v3
739
+ ====================
740
+ -----BEGIN CERTIFICATE-----
741
+ MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
742
+ ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
743
+ MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
744
+ BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
745
+ AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
746
+ Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
747
+ WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
748
+ KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
749
+ +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
750
+ MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
751
+ FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
752
+ v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
753
+ 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
754
+ VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
755
+ nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
756
+ pKnXwiJPZ9d37CAFYd4=
757
+ -----END CERTIFICATE-----
758
+
759
+ GeoTrust Global CA
760
+ ==================
761
+ -----BEGIN CERTIFICATE-----
762
+ MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
763
+ Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
764
+ MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
765
+ LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
766
+ CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
767
+ BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
768
+ 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
769
+ T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
770
+ vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
771
+ AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
772
+ DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
773
+ zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
774
+ d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
775
+ mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
776
+ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
777
+ Mw==
778
+ -----END CERTIFICATE-----
779
+
780
+ GeoTrust Global CA 2
781
+ ====================
782
+ -----BEGIN CERTIFICATE-----
783
+ MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
784
+ R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
785
+ MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
786
+ LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
787
+ ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
788
+ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
789
+ LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
790
+ Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
791
+ HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
792
+ MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
793
+ K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
794
+ srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
795
+ ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
796
+ OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
797
+ x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
798
+ H4z1Ir+rzoPz4iIprn2DQKi6bA==
799
+ -----END CERTIFICATE-----
800
+
801
+ GeoTrust Universal CA
802
+ =====================
803
+ -----BEGIN CERTIFICATE-----
804
+ MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
805
+ R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
806
+ MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
807
+ Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
808
+ ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
809
+ JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
810
+ RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
811
+ 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
812
+ 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
813
+ qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
814
+ Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
815
+ Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
816
+ KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
817
+ ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
818
+ XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
819
+ hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
820
+ aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
821
+ qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
822
+ oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
823
+ xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
824
+ KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
825
+ DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
826
+ xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
827
+ p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
828
+ P/rmMuGNG2+k5o7Y+SlIis5z/iw=
829
+ -----END CERTIFICATE-----
830
+
831
+ GeoTrust Universal CA 2
832
+ =======================
833
+ -----BEGIN CERTIFICATE-----
834
+ MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
835
+ R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
836
+ MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
837
+ SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
838
+ A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
839
+ DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
840
+ j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
841
+ JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
842
+ QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
843
+ WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
844
+ 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
845
+ ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
846
+ SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
847
+ 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
848
+ +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
849
+ BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
850
+ dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
851
+ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
852
+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
853
+ A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
854
+ Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
855
+ pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
856
+ FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
857
+ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
858
+ X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
859
+ -----END CERTIFICATE-----
860
+
861
+ UTN-USER First-Network Applications
862
+ ===================================
863
+ -----BEGIN CERTIFICATE-----
864
+ MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
865
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
866
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
867
+ BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
868
+ WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
869
+ YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
870
+ dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
871
+ cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
872
+ mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
873
+ DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
874
+ Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
875
+ P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
876
+ j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
877
+ HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
878
+ cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
879
+ CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
880
+ IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
881
+ RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
882
+ xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
883
+ DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
884
+ -----END CERTIFICATE-----
885
+
886
+ America Online Root Certification Authority 1
887
+ =============================================
888
+ -----BEGIN CERTIFICATE-----
889
+ MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
890
+ QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
891
+ Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
892
+ A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
893
+ T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
894
+ ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
895
+ v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
896
+ DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
897
+ sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
898
+ 8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
899
+ AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
900
+ o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
901
+ GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
902
+ VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
903
+ 3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
904
+ Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
905
+ sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
906
+ -----END CERTIFICATE-----
907
+
908
+ America Online Root Certification Authority 2
909
+ =============================================
910
+ -----BEGIN CERTIFICATE-----
911
+ MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
912
+ QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
913
+ Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
914
+ A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
915
+ T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
916
+ ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
917
+ fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
918
+ f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
919
+ qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
920
+ RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
921
+ gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
922
+ 6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
923
+ FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
924
+ Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
925
+ B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
926
+ aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
927
+ AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
928
+ T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
929
+ +DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
930
+ JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
931
+ zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
932
+ ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
933
+ 1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
934
+ GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
935
+ Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
936
+ cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
937
+ -----END CERTIFICATE-----
938
+
939
+ Visa eCommerce Root
940
+ ===================
941
+ -----BEGIN CERTIFICATE-----
942
+ MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
943
+ EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
944
+ QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
945
+ WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
946
+ VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
947
+ bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
948
+ F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
949
+ RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
950
+ TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
951
+ /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
952
+ GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
953
+ MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
954
+ CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
955
+ YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
956
+ zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
957
+ YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
958
+ 398znM/jra6O1I7mT1GvFpLgXPYHDw==
959
+ -----END CERTIFICATE-----
960
+
961
+ TC TrustCenter, Germany, Class 2 CA
962
+ ===================================
963
+ -----BEGIN CERTIFICATE-----
964
+ MIIDXDCCAsWgAwIBAgICA+owDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
965
+ EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
966
+ U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
967
+ bGFzcyAyIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
968
+ ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
969
+ YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
970
+ aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
971
+ MiBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
972
+ hvcNAQEBBQADgY0AMIGJAoGBANo46O0yAClxgwENv4wB3NrGrTmkqYov1YtcaF9QxmL1Zr3KkSLs
973
+ qh1R1z2zUbKDTl3LSbDwTFXlay3HhQswHJJOgtTKAu33b77c4OMUuAVT8pr0VotanoWT0bSCVq5N
974
+ u6hLVxa8/vhYnvgpjbB7zXjJT6yLZwzxnPv8V5tXXE8NAgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
975
+ Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
976
+ LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBAIRS+yjf
977
+ /x91AbwBvgRWl2p0QiQxg/lGsQaKic+WLDO/jLVfenKhhQbOhvgFjuj5Jcrag4wGrOs2bYWRNAQ2
978
+ 9ELw+HkuCkhcq8xRT3h2oNmsGb0q0WkEKJHKNhAngFdb0lz1wlurZIFjdFH0l7/NEij3TWZ/p/Ac
979
+ ASZ4smZHcFFk
980
+ -----END CERTIFICATE-----
981
+
982
+ TC TrustCenter, Germany, Class 3 CA
983
+ ===================================
984
+ -----BEGIN CERTIFICATE-----
985
+ MIIDXDCCAsWgAwIBAgICA+swDQYJKoZIhvcNAQEEBQAwgbwxCzAJBgNVBAYTAkRFMRAwDgYDVQQI
986
+ EwdIYW1idXJnMRAwDgYDVQQHEwdIYW1idXJnMTowOAYDVQQKEzFUQyBUcnVzdENlbnRlciBmb3Ig
987
+ U2VjdXJpdHkgaW4gRGF0YSBOZXR3b3JrcyBHbWJIMSIwIAYDVQQLExlUQyBUcnVzdENlbnRlciBD
988
+ bGFzcyAzIENBMSkwJwYJKoZIhvcNAQkBFhpjZXJ0aWZpY2F0ZUB0cnVzdGNlbnRlci5kZTAeFw05
989
+ ODAzMDkxMTU5NTlaFw0xMTAxMDExMTU5NTlaMIG8MQswCQYDVQQGEwJERTEQMA4GA1UECBMHSGFt
990
+ YnVyZzEQMA4GA1UEBxMHSGFtYnVyZzE6MDgGA1UEChMxVEMgVHJ1c3RDZW50ZXIgZm9yIFNlY3Vy
991
+ aXR5IGluIERhdGEgTmV0d29ya3MgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3Mg
992
+ MyBDQTEpMCcGCSqGSIb3DQEJARYaY2VydGlmaWNhdGVAdHJ1c3RjZW50ZXIuZGUwgZ8wDQYJKoZI
993
+ hvcNAQEBBQADgY0AMIGJAoGBALa0wTUFLg2N7KBAahwOJ6ZQkmtQGwfeLud2zODa/ISoXoxjaitN
994
+ 2U4CdhHBC/KNecoAtvGwDtf7pBc9r6tpepYnv68zoZoqWarEtTcI8hKlMbZD9TKWcSgoq40oht+7
995
+ 7uMMfTDWw1Krj10nnGvAo+cFa1dJRLNu6mTP0o56UHd3AgMBAAGjazBpMA8GA1UdEwEB/wQFMAMB
996
+ Af8wDgYDVR0PAQH/BAQDAgGGMDMGCWCGSAGG+EIBCAQmFiRodHRwOi8vd3d3LnRydXN0Y2VudGVy
997
+ LmRlL2d1aWRlbGluZXMwEQYJYIZIAYb4QgEBBAQDAgAHMA0GCSqGSIb3DQEBBAUAA4GBABY9xs3B
998
+ u4VxhUafPiCPUSiZ7C1FIWMjWwS7TJC4iJIETb19AaM/9uzO8d7+feXhPrvGq14L3T2WxMup1Pkm
999
+ 5gZOngylerpuw3yCGdHHsbHD2w2Om0B8NwvxXej9H5CIpQ5ON2QhqE6NtJ/x3kit1VYYUimLRzQS
1000
+ CdS7kjXvD9s0
1001
+ -----END CERTIFICATE-----
1002
+
1003
+ Certum Root CA
1004
+ ==============
1005
+ -----BEGIN CERTIFICATE-----
1006
+ MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
1007
+ ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
1008
+ Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
1009
+ by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
1010
+ wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
1011
+ kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
1012
+ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
1013
+ Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
1014
+ NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
1015
+ hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
1016
+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
1017
+ GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
1018
+ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
1019
+ qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
1020
+ -----END CERTIFICATE-----
1021
+
1022
+ Comodo AAA Services root
1023
+ ========================
1024
+ -----BEGIN CERTIFICATE-----
1025
+ MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
1026
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
1027
+ TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
1028
+ MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
1029
+ c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
1030
+ BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
1031
+ ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
1032
+ C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
1033
+ i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
1034
+ Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
1035
+ Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
1036
+ Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
1037
+ BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
1038
+ cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
1039
+ LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
1040
+ 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
1041
+ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
1042
+ 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
1043
+ 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
1044
+ -----END CERTIFICATE-----
1045
+
1046
+ Comodo Secure Services root
1047
+ ===========================
1048
+ -----BEGIN CERTIFICATE-----
1049
+ MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
1050
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
1051
+ TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
1052
+ MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
1053
+ Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
1054
+ BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
1055
+ ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
1056
+ 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
1057
+ rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
1058
+ oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
1059
+ p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
1060
+ FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
1061
+ gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
1062
+ YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
1063
+ aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
1064
+ 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
1065
+ Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
1066
+ DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
1067
+ pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
1068
+ RR3B7Hzs/Sk=
1069
+ -----END CERTIFICATE-----
1070
+
1071
+ Comodo Trusted Services root
1072
+ ============================
1073
+ -----BEGIN CERTIFICATE-----
1074
+ MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
1075
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
1076
+ TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
1077
+ MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
1078
+ bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
1079
+ IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
1080
+ AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
1081
+ 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
1082
+ /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
1083
+ juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
1084
+ ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
1085
+ DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
1086
+ /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
1087
+ ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
1088
+ cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
1089
+ uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
1090
+ pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
1091
+ BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
1092
+ R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
1093
+ 9y5Xt5hwXsjEeLBi
1094
+ -----END CERTIFICATE-----
1095
+
1096
+ QuoVadis Root CA
1097
+ ================
1098
+ -----BEGIN CERTIFICATE-----
1099
+ MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
1100
+ ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
1101
+ eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
1102
+ MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
1103
+ cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
1104
+ EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
1105
+ AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
1106
+ J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
1107
+ F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
1108
+ YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
1109
+ AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
1110
+ PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
1111
+ ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
1112
+ MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
1113
+ YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
1114
+ ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
1115
+ Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
1116
+ Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
1117
+ BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
1118
+ FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
1119
+ aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
1120
+ tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
1121
+ fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
1122
+ LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
1123
+ gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
1124
+ 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
1125
+ 5nrQNiOKSnQ2+Q==
1126
+ -----END CERTIFICATE-----
1127
+
1128
+ QuoVadis Root CA 2
1129
+ ==================
1130
+ -----BEGIN CERTIFICATE-----
1131
+ MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
1132
+ EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx
1133
+ ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
1134
+ aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC
1135
+ DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6
1136
+ XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk
1137
+ lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB
1138
+ lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy
1139
+ lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt
1140
+ 66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn
1141
+ wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh
1142
+ D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy
1143
+ BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie
1144
+ J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud
1145
+ DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU
1146
+ a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT
1147
+ ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv
1148
+ Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3
1149
+ UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm
1150
+ VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK
1151
+ +JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW
1152
+ IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1
1153
+ WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X
1154
+ f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II
1155
+ 4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8
1156
+ VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u
1157
+ -----END CERTIFICATE-----
1158
+
1159
+ QuoVadis Root CA 3
1160
+ ==================
1161
+ -----BEGIN CERTIFICATE-----
1162
+ MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
1163
+ EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
1164
+ OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
1165
+ aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
1166
+ DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
1167
+ DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
1168
+ KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
1169
+ DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
1170
+ BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
1171
+ p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
1172
+ nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
1173
+ MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
1174
+ Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
1175
+ uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
1176
+ BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
1177
+ YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
1178
+ aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
1179
+ BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
1180
+ VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
1181
+ ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
1182
+ AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
1183
+ qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
1184
+ hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
1185
+ POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
1186
+ Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
1187
+ 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
1188
+ bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
1189
+ g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
1190
+ vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
1191
+ qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
1192
+ -----END CERTIFICATE-----
1193
+
1194
+ Security Communication Root CA
1195
+ ==============================
1196
+ -----BEGIN CERTIFICATE-----
1197
+ MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
1198
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
1199
+ HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
1200
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
1201
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
1202
+ 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
1203
+ DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
1204
+ 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
1205
+ DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
1206
+ JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
1207
+ DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
1208
+ 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
1209
+ mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
1210
+ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
1211
+ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
1212
+ FL39vmwLAw==
1213
+ -----END CERTIFICATE-----
1214
+
1215
+ Sonera Class 1 Root CA
1216
+ ======================
1217
+ -----BEGIN CERTIFICATE-----
1218
+ MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
1219
+ U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
1220
+ NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
1221
+ IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
1222
+ 7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
1223
+ EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
1224
+ 0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
1225
+ 2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
1226
+ HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
1227
+ iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
1228
+ 28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
1229
+ yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
1230
+ vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
1231
+ qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
1232
+ IRlXvVWa
1233
+ -----END CERTIFICATE-----
1234
+
1235
+ Sonera Class 2 Root CA
1236
+ ======================
1237
+ -----BEGIN CERTIFICATE-----
1238
+ MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
1239
+ U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
1240
+ NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
1241
+ IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
1242
+ /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
1243
+ dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
1244
+ f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
1245
+ tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
1246
+ nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
1247
+ XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
1248
+ 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
1249
+ cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
1250
+ Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
1251
+ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
1252
+ llpwrN9M
1253
+ -----END CERTIFICATE-----
1254
+
1255
+ Staat der Nederlanden Root CA
1256
+ =============================
1257
+ -----BEGIN CERTIFICATE-----
1258
+ MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
1259
+ ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
1260
+ Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
1261
+ HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
1262
+ bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
1263
+ vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
1264
+ jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
1265
+ C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
1266
+ vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
1267
+ 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
1268
+ HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
1269
+ dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
1270
+ BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
1271
+ EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
1272
+ MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
1273
+ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
1274
+ iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
1275
+ -----END CERTIFICATE-----
1276
+
1277
+ TDC Internet Root CA
1278
+ ====================
1279
+ -----BEGIN CERTIFICATE-----
1280
+ MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
1281
+ ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
1282
+ NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
1283
+ ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1284
+ MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
1285
+ xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
1286
+ znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
1287
+ 5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
1288
+ otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
1289
+ AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
1290
+ VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
1291
+ MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
1292
+ AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
1293
+ UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
1294
+ CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
1295
+ gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
1296
+ 2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
1297
+ O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
1298
+ Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
1299
+ -----END CERTIFICATE-----
1300
+
1301
+ TDC OCES Root CA
1302
+ ================
1303
+ -----BEGIN CERTIFICATE-----
1304
+ MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
1305
+ ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
1306
+ MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
1307
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
1308
+ nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
1309
+ zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
1310
+ iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
1311
+ dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
1312
+ 3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
1313
+ 5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
1314
+ ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
1315
+ cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
1316
+ Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
1317
+ LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
1318
+ MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
1319
+ aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
1320
+ MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
1321
+ +RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
1322
+ NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
1323
+ A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
1324
+ A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
1325
+ AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
1326
+ AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
1327
+ -----END CERTIFICATE-----
1328
+
1329
+ UTN DATACorp SGC Root CA
1330
+ ========================
1331
+ -----BEGIN CERTIFICATE-----
1332
+ MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
1333
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1334
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
1335
+ BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
1336
+ MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
1337
+ HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
1338
+ dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
1339
+ AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
1340
+ raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
1341
+ wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
1342
+ 9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
1343
+ 33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
1344
+ DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
1345
+ BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
1346
+ LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
1347
+ DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
1348
+ Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
1349
+ I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
1350
+ EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
1351
+ DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
1352
+ -----END CERTIFICATE-----
1353
+
1354
+ UTN USERFirst Email Root CA
1355
+ ===========================
1356
+ -----BEGIN CERTIFICATE-----
1357
+ MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
1358
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1359
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
1360
+ BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
1361
+ OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
1362
+ FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
1363
+ ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
1364
+ dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1365
+ MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
1366
+ B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
1367
+ om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
1368
+ TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
1369
+ yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
1370
+ AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
1371
+ HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
1372
+ bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
1373
+ AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
1374
+ xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
1375
+ 5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
1376
+ NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
1377
+ w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
1378
+ -----END CERTIFICATE-----
1379
+
1380
+ UTN USERFirst Hardware Root CA
1381
+ ==============================
1382
+ -----BEGIN CERTIFICATE-----
1383
+ MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
1384
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1385
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
1386
+ BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
1387
+ OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
1388
+ eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
1389
+ ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
1390
+ DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
1391
+ wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
1392
+ tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
1393
+ i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
1394
+ Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
1395
+ gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
1396
+ lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
1397
+ UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
1398
+ BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
1399
+ //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
1400
+ XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
1401
+ lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
1402
+ iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
1403
+ nfhmqA==
1404
+ -----END CERTIFICATE-----
1405
+
1406
+ UTN USERFirst Object Root CA
1407
+ ============================
1408
+ -----BEGIN CERTIFICATE-----
1409
+ MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
1410
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
1411
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
1412
+ BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
1413
+ NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
1414
+ HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
1415
+ dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
1416
+ BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
1417
+ loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
1418
+ w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
1419
+ lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
1420
+ RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
1421
+ BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
1422
+ ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
1423
+ c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
1424
+ DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
1425
+ NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
1426
+ PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
1427
+ qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
1428
+ hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
1429
+ -----END CERTIFICATE-----
1430
+
1431
+ Camerfirma Chambers of Commerce Root
1432
+ ====================================
1433
+ -----BEGIN CERTIFICATE-----
1434
+ MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1435
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1436
+ ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
1437
+ NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
1438
+ cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
1439
+ MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
1440
+ AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
1441
+ xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
1442
+ NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
1443
+ DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
1444
+ d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
1445
+ EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
1446
+ cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
1447
+ AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
1448
+ bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
1449
+ VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
1450
+ aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
1451
+ fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
1452
+ L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
1453
+ UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
1454
+ ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
1455
+ erfutGWaIZDgqtCYvDi1czyL+Nw=
1456
+ -----END CERTIFICATE-----
1457
+
1458
+ Camerfirma Global Chambersign Root
1459
+ ==================================
1460
+ -----BEGIN CERTIFICATE-----
1461
+ MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
1462
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
1463
+ ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
1464
+ NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
1465
+ YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
1466
+ MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
1467
+ ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
1468
+ 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
1469
+ by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
1470
+ 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
1471
+ 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
1472
+ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
1473
+ aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
1474
+ Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
1475
+ aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
1476
+ ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
1477
+ bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
1478
+ PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
1479
+ gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
1480
+ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
1481
+ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
1482
+ t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
1483
+ -----END CERTIFICATE-----
1484
+
1485
+ NetLock Qualified (Class QA) Root
1486
+ =================================
1487
+ -----BEGIN CERTIFICATE-----
1488
+ MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1489
+ CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1490
+ BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
1491
+ eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
1492
+ bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
1493
+ MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
1494
+ LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
1495
+ dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
1496
+ aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
1497
+ CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
1498
+ 8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
1499
+ m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
1500
+ 0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
1501
+ 0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
1502
+ HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
1503
+ YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
1504
+ biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
1505
+ a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
1506
+ YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
1507
+ YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
1508
+ ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
1509
+ L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
1510
+ Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
1511
+ aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
1512
+ YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
1513
+ IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
1514
+ DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
1515
+ wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
1516
+ W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
1517
+ R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
1518
+ 5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
1519
+ -----END CERTIFICATE-----
1520
+
1521
+ NetLock Notary (Class A) Root
1522
+ =============================
1523
+ -----BEGIN CERTIFICATE-----
1524
+ MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
1525
+ EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1526
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
1527
+ ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
1528
+ DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
1529
+ EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
1530
+ VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
1531
+ cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
1532
+ D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
1533
+ z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
1534
+ /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
1535
+ tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
1536
+ 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
1537
+ A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
1538
+ Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
1539
+ bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
1540
+ IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
1541
+ LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
1542
+ ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
1543
+ IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
1544
+ IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
1545
+ b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
1546
+ bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
1547
+ Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
1548
+ bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
1549
+ ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
1550
+ ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
1551
+ CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
1552
+ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
1553
+ 8CgHrTwXZoi1/baI
1554
+ -----END CERTIFICATE-----
1555
+
1556
+ NetLock Business (Class B) Root
1557
+ ===============================
1558
+ -----BEGIN CERTIFICATE-----
1559
+ MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1560
+ CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1561
+ BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
1562
+ VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
1563
+ VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
1564
+ bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
1565
+ VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
1566
+ iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
1567
+ o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
1568
+ 1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
1569
+ HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
1570
+ RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
1571
+ dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
1572
+ ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
1573
+ c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
1574
+ YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
1575
+ c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
1576
+ Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
1577
+ bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
1578
+ IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
1579
+ YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
1580
+ cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
1581
+ 43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
1582
+ stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
1583
+ -----END CERTIFICATE-----
1584
+
1585
+ NetLock Express (Class C) Root
1586
+ ==============================
1587
+ -----BEGIN CERTIFICATE-----
1588
+ MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
1589
+ CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
1590
+ BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
1591
+ KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
1592
+ BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
1593
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
1594
+ ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
1595
+ jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
1596
+ W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
1597
+ euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
1598
+ DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
1599
+ RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
1600
+ YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
1601
+ IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
1602
+ aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
1603
+ ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
1604
+ ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
1605
+ dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
1606
+ emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
1607
+ IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
1608
+ UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
1609
+ YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
1610
+ xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
1611
+ gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
1612
+ -----END CERTIFICATE-----
1613
+
1614
+ XRamp Global CA Root
1615
+ ====================
1616
+ -----BEGIN CERTIFICATE-----
1617
+ MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
1618
+ BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
1619
+ dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
1620
+ dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
1621
+ HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
1622
+ U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
1623
+ dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
1624
+ IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
1625
+ foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
1626
+ zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
1627
+ AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
1628
+ xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1629
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
1630
+ oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
1631
+ AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
1632
+ /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
1633
+ qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
1634
+ nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
1635
+ 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
1636
+ -----END CERTIFICATE-----
1637
+
1638
+ Go Daddy Class 2 CA
1639
+ ===================
1640
+ -----BEGIN CERTIFICATE-----
1641
+ MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
1642
+ VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
1643
+ ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
1644
+ A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
1645
+ RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
1646
+ ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
1647
+ 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
1648
+ qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
1649
+ YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
1650
+ vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
1651
+ BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
1652
+ atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
1653
+ MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
1654
+ A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
1655
+ PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
1656
+ I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
1657
+ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
1658
+ Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
1659
+ vZ8=
1660
+ -----END CERTIFICATE-----
1661
+
1662
+ Starfield Class 2 CA
1663
+ ====================
1664
+ -----BEGIN CERTIFICATE-----
1665
+ MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
1666
+ U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
1667
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
1668
+ MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
1669
+ A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
1670
+ SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
1671
+ bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
1672
+ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
1673
+ epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
1674
+ F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
1675
+ MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
1676
+ hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
1677
+ bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
1678
+ QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
1679
+ afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
1680
+ PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
1681
+ xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
1682
+ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
1683
+ QBFGmh95DmK/D5fs4C8fF5Q=
1684
+ -----END CERTIFICATE-----
1685
+
1686
+ StartCom Certification Authority
1687
+ ================================
1688
+ -----BEGIN CERTIFICATE-----
1689
+ MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
1690
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
1691
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
1692
+ NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
1693
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
1694
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
1695
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
1696
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
1697
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
1698
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
1699
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
1700
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
1701
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
1702
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
1703
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
1704
+ 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
1705
+ FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
1706
+ Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
1707
+ YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
1708
+ AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
1709
+ Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
1710
+ U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
1711
+ LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
1712
+ cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
1713
+ cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
1714
+ dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
1715
+ AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
1716
+ 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
1717
+ vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
1718
+ fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
1719
+ fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
1720
+ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
1721
+ yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
1722
+ 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
1723
+ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
1724
+ g14=
1725
+ -----END CERTIFICATE-----
1726
+
1727
+ Taiwan GRCA
1728
+ ===========
1729
+ -----BEGIN CERTIFICATE-----
1730
+ MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG
1731
+ EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X
1732
+ DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv
1733
+ dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD
1734
+ ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN
1735
+ w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5
1736
+ BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O
1737
+ 1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO
1738
+ htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov
1739
+ J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7
1740
+ Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t
1741
+ B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB
1742
+ O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8
1743
+ lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV
1744
+ HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2
1745
+ 09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ
1746
+ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj
1747
+ Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2
1748
+ Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU
1749
+ D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz
1750
+ DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk
1751
+ Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk
1752
+ 7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ
1753
+ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
1754
+ +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
1755
+ -----END CERTIFICATE-----
1756
+
1757
+ Firmaprofesional Root CA
1758
+ ========================
1759
+ -----BEGIN CERTIFICATE-----
1760
+ MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
1761
+ GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
1762
+ Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
1763
+ ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
1764
+ MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
1765
+ OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
1766
+ ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
1767
+ AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
1768
+ j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
1769
+ lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
1770
+ 3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
1771
+ NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
1772
+ KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
1773
+ AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
1774
+ DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
1775
+ ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
1776
+ u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
1777
+ wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
1778
+ 7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
1779
+ VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
1780
+ -----END CERTIFICATE-----
1781
+
1782
+ Wells Fargo Root CA
1783
+ ===================
1784
+ -----BEGIN CERTIFICATE-----
1785
+ MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
1786
+ BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
1787
+ cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1788
+ MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
1789
+ bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
1790
+ MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
1791
+ SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
1792
+ x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
1793
+ E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
1794
+ OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
1795
+ sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
1796
+ YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
1797
+ BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
1798
+ ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
1799
+ m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
1800
+ OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
1801
+ x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
1802
+ tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
1803
+ -----END CERTIFICATE-----
1804
+
1805
+ Swisscom Root CA 1
1806
+ ==================
1807
+ -----BEGIN CERTIFICATE-----
1808
+ MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG
1809
+ EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
1810
+ dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4
1811
+ MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
1812
+ aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC
1813
+ IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM
1814
+ MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF
1815
+ NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe
1816
+ AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC
1817
+ b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn
1818
+ 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN
1819
+ cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp
1820
+ WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5
1821
+ haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY
1822
+ MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
1823
+ HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j
1824
+ BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9
1825
+ MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn
1826
+ jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ
1827
+ MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H
1828
+ VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl
1829
+ vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl
1830
+ OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3
1831
+ 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq
1832
+ nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy
1833
+ x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW
1834
+ NY6E0F/6MBr1mmz0DlP5OlvRHA==
1835
+ -----END CERTIFICATE-----
1836
+
1837
+ DigiCert Assured ID Root CA
1838
+ ===========================
1839
+ -----BEGIN CERTIFICATE-----
1840
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
1841
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
1842
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
1843
+ MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
1844
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
1845
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
1846
+ 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
1847
+ UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
1848
+ /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
1849
+ oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
1850
+ GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
1851
+ 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
1852
+ hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
1853
+ EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
1854
+ SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
1855
+ 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
1856
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
1857
+ -----END CERTIFICATE-----
1858
+
1859
+ DigiCert Global Root CA
1860
+ =======================
1861
+ -----BEGIN CERTIFICATE-----
1862
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
1863
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
1864
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
1865
+ MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
1866
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
1867
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
1868
+ TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
1869
+ BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
1870
+ 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
1871
+ 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
1872
+ o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
1873
+ 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
1874
+ BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
1875
+ EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
1876
+ tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
1877
+ UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
1878
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
1879
+ -----END CERTIFICATE-----
1880
+
1881
+ DigiCert High Assurance EV Root CA
1882
+ ==================================
1883
+ -----BEGIN CERTIFICATE-----
1884
+ MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
1885
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
1886
+ KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
1887
+ MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
1888
+ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
1889
+ Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
1890
+ Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
1891
+ OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
1892
+ MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
1893
+ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
1894
+ h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
1895
+ Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
1896
+ JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
1897
+ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
1898
+ myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
1899
+ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1900
+ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
1901
+ -----END CERTIFICATE-----
1902
+
1903
+ Certplus Class 2 Primary CA
1904
+ ===========================
1905
+ -----BEGIN CERTIFICATE-----
1906
+ MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
1907
+ BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
1908
+ OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
1909
+ dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
1910
+ ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
1911
+ 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
1912
+ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
1913
+ YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
1914
+ e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
1915
+ CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
1916
+ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
1917
+ L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
1918
+ P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
1919
+ TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
1920
+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
1921
+ //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
1922
+ l7+ijrRU
1923
+ -----END CERTIFICATE-----
1924
+
1925
+ DST Root CA X3
1926
+ ==============
1927
+ -----BEGIN CERTIFICATE-----
1928
+ MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
1929
+ ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
1930
+ DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
1931
+ cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
1932
+ ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
1933
+ rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
1934
+ UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
1935
+ xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
1936
+ utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
1937
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
1938
+ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
1939
+ dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
1940
+ GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
1941
+ RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
1942
+ fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
1943
+ -----END CERTIFICATE-----
1944
+
1945
+ DST ACES CA X6
1946
+ ==============
1947
+ -----BEGIN CERTIFICATE-----
1948
+ MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
1949
+ EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
1950
+ MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
1951
+ MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
1952
+ CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
1953
+ AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
1954
+ DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
1955
+ pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
1956
+ GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
1957
+ MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
1958
+ EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
1959
+ Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
1960
+ dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
1961
+ CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
1962
+ 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
1963
+ Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
1964
+ nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
1965
+ vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1966
+ oKfN5XozNmr6mis=
1967
+ -----END CERTIFICATE-----
1968
+
1969
+ TURKTRUST Certificate Services Provider Root 1
1970
+ ==============================================
1971
+ -----BEGIN CERTIFICATE-----
1972
+ MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1973
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
1974
+ MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
1975
+ acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
1976
+ MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
1977
+ U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
1978
+ TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
1979
+ aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
1980
+ AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
1981
+ yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
1982
+ Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
1983
+ 8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
1984
+ W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
1985
+ BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
1986
+ sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
1987
+ q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
1988
+ B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
1989
+ nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
1990
+ -----END CERTIFICATE-----
1991
+
1992
+ TURKTRUST Certificate Services Provider Root 2
1993
+ ==============================================
1994
+ -----BEGIN CERTIFICATE-----
1995
+ MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
1996
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
1997
+ MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
1998
+ QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
1999
+ MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
2000
+ dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
2001
+ A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
2002
+ acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
2003
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
2004
+ LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
2005
+ x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
2006
+ QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
2007
+ 5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
2008
+ AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
2009
+ A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
2010
+ Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
2011
+ Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
2012
+ hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
2013
+ 9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
2014
+ UrbnBEI=
2015
+ -----END CERTIFICATE-----
2016
+
2017
+ SwissSign Platinum CA - G2
2018
+ ==========================
2019
+ -----BEGIN CERTIFICATE-----
2020
+ MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT
2021
+ BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw
2022
+ HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM
2023
+ U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ
2024
+ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu
2025
+ 669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF
2026
+ eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne
2027
+ WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo
2028
+ j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6
2029
+ 8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T
2030
+ aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy
2031
+ domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D
2032
+ +m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV
2033
+ CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
2034
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv
2035
+ zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW
2036
+ IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1
2037
+ Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3
2038
+ NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4
2039
+ U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8
2040
+ KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl
2041
+ 9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B
2042
+ aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs
2043
+ OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY
2044
+ Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci
2045
+ IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g==
2046
+ -----END CERTIFICATE-----
2047
+
2048
+ SwissSign Gold CA - G2
2049
+ ======================
2050
+ -----BEGIN CERTIFICATE-----
2051
+ MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw
2052
+ EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN
2053
+ MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp
2054
+ c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B
2055
+ AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq
2056
+ t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C
2057
+ jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg
2058
+ vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF
2059
+ ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR
2060
+ AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend
2061
+ jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO
2062
+ peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR
2063
+ 7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi
2064
+ GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw
2065
+ AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64
2066
+ OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov
2067
+ L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm
2068
+ 5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr
2069
+ 44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf
2070
+ Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m
2071
+ Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp
2072
+ mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk
2073
+ vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf
2074
+ KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br
2075
+ NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj
2076
+ viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ
2077
+ -----END CERTIFICATE-----
2078
+
2079
+ SwissSign Silver CA - G2
2080
+ ========================
2081
+ -----BEGIN CERTIFICATE-----
2082
+ MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT
2083
+ BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X
2084
+ DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3
2085
+ aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG
2086
+ 9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644
2087
+ N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm
2088
+ +/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH
2089
+ 6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu
2090
+ MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h
2091
+ qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5
2092
+ FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs
2093
+ ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc
2094
+ celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X
2095
+ CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/
2096
+ BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB
2097
+ tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0
2098
+ cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P
2099
+ 4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F
2100
+ kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L
2101
+ 3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx
2102
+ /uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa
2103
+ DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP
2104
+ e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu
2105
+ WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ
2106
+ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub
2107
+ DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u
2108
+ -----END CERTIFICATE-----
2109
+
2110
+ GeoTrust Primary Certification Authority
2111
+ ========================================
2112
+ -----BEGIN CERTIFICATE-----
2113
+ MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
2114
+ EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
2115
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
2116
+ CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
2117
+ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2118
+ CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
2119
+ b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
2120
+ nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
2121
+ RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
2122
+ tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
2123
+ AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
2124
+ hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
2125
+ Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
2126
+ NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
2127
+ Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
2128
+ 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
2129
+ -----END CERTIFICATE-----
2130
+
2131
+ thawte Primary Root CA
2132
+ ======================
2133
+ -----BEGIN CERTIFICATE-----
2134
+ MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
2135
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
2136
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
2137
+ cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
2138
+ MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
2139
+ SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
2140
+ KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
2141
+ FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
2142
+ oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
2143
+ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
2144
+ q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
2145
+ aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
2146
+ afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
2147
+ VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
2148
+ AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
2149
+ uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
2150
+ xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
2151
+ jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
2152
+ z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
2153
+ -----END CERTIFICATE-----
2154
+
2155
+ VeriSign Class 3 Public Primary Certification Authority - G5
2156
+ ============================================================
2157
+ -----BEGIN CERTIFICATE-----
2158
+ MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
2159
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
2160
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
2161
+ IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
2162
+ ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
2163
+ yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
2164
+ biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
2165
+ dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
2166
+ YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
2167
+ ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
2168
+ j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
2169
+ Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
2170
+ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
2171
+ fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
2172
+ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
2173
+ Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
2174
+ aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
2175
+ SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
2176
+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
2177
+ KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
2178
+ Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
2179
+ ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
2180
+ -----END CERTIFICATE-----
2181
+
2182
+ SecureTrust CA
2183
+ ==============
2184
+ -----BEGIN CERTIFICATE-----
2185
+ MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
2186
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
2187
+ dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
2188
+ BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
2189
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
2190
+ OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
2191
+ DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
2192
+ GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
2193
+ 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
2194
+ ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
2195
+ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
2196
+ aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
2197
+ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
2198
+ SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
2199
+ mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
2200
+ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
2201
+ 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
2202
+ -----END CERTIFICATE-----
2203
+
2204
+ Secure Global CA
2205
+ ================
2206
+ -----BEGIN CERTIFICATE-----
2207
+ MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
2208
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
2209
+ bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
2210
+ MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
2211
+ Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
2212
+ YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
2213
+ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
2214
+ 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
2215
+ HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
2216
+ 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
2217
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
2218
+ oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
2219
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
2220
+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
2221
+ CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
2222
+ 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
2223
+ f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
2224
+ -----END CERTIFICATE-----
2225
+
2226
+ COMODO Certification Authority
2227
+ ==============================
2228
+ -----BEGIN CERTIFICATE-----
2229
+ MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
2230
+ BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
2231
+ A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
2232
+ dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
2233
+ MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
2234
+ T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
2235
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
2236
+ +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
2237
+ xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
2238
+ 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
2239
+ 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
2240
+ rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
2241
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
2242
+ b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
2243
+ AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
2244
+ OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
2245
+ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
2246
+ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
2247
+ +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
2248
+ -----END CERTIFICATE-----
2249
+
2250
+ Network Solutions Certificate Authority
2251
+ =======================================
2252
+ -----BEGIN CERTIFICATE-----
2253
+ MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
2254
+ EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
2255
+ IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
2256
+ MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
2257
+ MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
2258
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
2259
+ jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
2260
+ aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
2261
+ crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
2262
+ /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
2263
+ AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
2264
+ BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
2265
+ bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
2266
+ A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
2267
+ 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
2268
+ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
2269
+ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
2270
+ ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
2271
+ -----END CERTIFICATE-----
2272
+
2273
+ WellsSecure Public Root Certificate Authority
2274
+ =============================================
2275
+ -----BEGIN CERTIFICATE-----
2276
+ MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
2277
+ F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
2278
+ NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
2279
+ MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
2280
+ bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
2281
+ VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
2282
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
2283
+ iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
2284
+ i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
2285
+ bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
2286
+ K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
2287
+ AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
2288
+ cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
2289
+ lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
2290
+ i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
2291
+ GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
2292
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
2293
+ K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
2294
+ bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
2295
+ qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
2296
+ E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
2297
+ tylv2G0xffX8oRAHh84vWdw+WNs=
2298
+ -----END CERTIFICATE-----
2299
+
2300
+ COMODO ECC Certification Authority
2301
+ ==================================
2302
+ -----BEGIN CERTIFICATE-----
2303
+ MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
2304
+ R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
2305
+ ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
2306
+ dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
2307
+ GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
2308
+ Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
2309
+ b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
2310
+ 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
2311
+ wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
2312
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
2313
+ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
2314
+ U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
2315
+ -----END CERTIFICATE-----
2316
+
2317
+ IGC/A
2318
+ =====
2319
+ -----BEGIN CERTIFICATE-----
2320
+ MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
2321
+ VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
2322
+ Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
2323
+ MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
2324
+ EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
2325
+ STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
2326
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
2327
+ TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
2328
+ So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
2329
+ HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
2330
+ frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
2331
+ tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
2332
+ egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
2333
+ iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
2334
+ q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
2335
+ MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
2336
+ Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
2337
+ lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
2338
+ 0mBWWg==
2339
+ -----END CERTIFICATE-----
2340
+
2341
+ Security Communication EV RootCA1
2342
+ =================================
2343
+ -----BEGIN CERTIFICATE-----
2344
+ MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
2345
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
2346
+ dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
2347
+ BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
2348
+ Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2349
+ AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
2350
+ /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
2351
+ WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
2352
+ ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
2353
+ bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
2354
+ 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
2355
+ SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
2356
+ iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
2357
+ Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
2358
+ mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
2359
+ T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
2360
+ -----END CERTIFICATE-----
2361
+
2362
+ OISTE WISeKey Global Root GA CA
2363
+ ===============================
2364
+ -----BEGIN CERTIFICATE-----
2365
+ MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
2366
+ BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
2367
+ A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
2368
+ bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
2369
+ VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
2370
+ IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
2371
+ IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
2372
+ Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
2373
+ Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
2374
+ d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
2375
+ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
2376
+ LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
2377
+ AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
2378
+ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
2379
+ MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
2380
+ +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
2381
+ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
2382
+ okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
2383
+ -----END CERTIFICATE-----
2384
+
2385
+ S-TRUST Authentication and Encryption Root CA 2005 PN
2386
+ =====================================================
2387
+ -----BEGIN CERTIFICATE-----
2388
+ MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
2389
+ BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
2390
+ cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
2391
+ LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
2392
+ NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
2393
+ ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
2394
+ aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
2395
+ b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2396
+ MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
2397
+ 4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
2398
+ g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
2399
+ eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
2400
+ KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
2401
+ /wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
2402
+ bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
2403
+ D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
2404
+ pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
2405
+ P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
2406
+ nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
2407
+ F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
2408
+ Hz2eBIPdltkdOpQ=
2409
+ -----END CERTIFICATE-----
2410
+
2411
+ Microsec e-Szigno Root CA
2412
+ =========================
2413
+ -----BEGIN CERTIFICATE-----
2414
+ MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
2415
+ BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
2416
+ EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
2417
+ MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
2418
+ dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
2419
+ GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
2420
+ AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
2421
+ d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
2422
+ oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
2423
+ QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
2424
+ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
2425
+ MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
2426
+ IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
2427
+ VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
2428
+ LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
2429
+ dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
2430
+ AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
2431
+ 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
2432
+ AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
2433
+ egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
2434
+ Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
2435
+ PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
2436
+ c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
2437
+ cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
2438
+ IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
2439
+ WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
2440
+ MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
2441
+ MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
2442
+ Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
2443
+ HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
2444
+ nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
2445
+ aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
2446
+ 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
2447
+ yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
2448
+ S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
2449
+ -----END CERTIFICATE-----
2450
+
2451
+ Certigna
2452
+ ========
2453
+ -----BEGIN CERTIFICATE-----
2454
+ MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
2455
+ EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
2456
+ MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
2457
+ Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
2458
+ XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
2459
+ GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
2460
+ ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
2461
+ DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
2462
+ Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
2463
+ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
2464
+ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
2465
+ SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
2466
+ hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
2467
+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
2468
+ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
2469
+ 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
2470
+ WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
2471
+ -----END CERTIFICATE-----
2472
+
2473
+ AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
2474
+ ======================================
2475
+ -----BEGIN CERTIFICATE-----
2476
+ MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
2477
+ AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
2478
+ LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
2479
+ HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
2480
+ U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
2481
+ IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
2482
+ AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
2483
+ yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
2484
+ 2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
2485
+ 4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
2486
+ 2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
2487
+ 8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
2488
+ HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
2489
+ Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
2490
+ 5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
2491
+ czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
2492
+ AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
2493
+ ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
2494
+ BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
2495
+ cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
2496
+ AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
2497
+ EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
2498
+ /zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
2499
+ MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
2500
+ 3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
2501
+ eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
2502
+ /RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
2503
+ RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
2504
+ Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
2505
+ -----END CERTIFICATE-----
2506
+
2507
+ TC TrustCenter Class 2 CA II
2508
+ ============================
2509
+ -----BEGIN CERTIFICATE-----
2510
+ MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2511
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2512
+ IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
2513
+ MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2514
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
2515
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2516
+ AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
2517
+ IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
2518
+ xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
2519
+ Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
2520
+ SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
2521
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
2522
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2523
+ Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2524
+ cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2525
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2526
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
2527
+ dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
2528
+ KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
2529
+ TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
2530
+ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
2531
+ vQ==
2532
+ -----END CERTIFICATE-----
2533
+
2534
+ TC TrustCenter Class 3 CA II
2535
+ ============================
2536
+ -----BEGIN CERTIFICATE-----
2537
+ MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
2538
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
2539
+ IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
2540
+ MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
2541
+ c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
2542
+ AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2543
+ AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
2544
+ yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
2545
+ 6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
2546
+ uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
2547
+ 2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
2548
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
2549
+ 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
2550
+ Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
2551
+ cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
2552
+ SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
2553
+ TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
2554
+ O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
2555
+ yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
2556
+ IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
2557
+ 092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
2558
+ 5A==
2559
+ -----END CERTIFICATE-----
2560
+
2561
+ TC TrustCenter Universal CA I
2562
+ =============================
2563
+ -----BEGIN CERTIFICATE-----
2564
+ MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
2565
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
2566
+ IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
2567
+ MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
2568
+ VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
2569
+ JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
2570
+ ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
2571
+ qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
2572
+ xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
2573
+ ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
2574
+ gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
2575
+ BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2576
+ AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
2577
+ 1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
2578
+ vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
2579
+ ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
2580
+ ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
2581
+ 7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
2582
+ -----END CERTIFICATE-----
2583
+
2584
+ Deutsche Telekom Root CA 2
2585
+ ==========================
2586
+ -----BEGIN CERTIFICATE-----
2587
+ MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
2588
+ RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
2589
+ A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
2590
+ MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
2591
+ A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
2592
+ b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
2593
+ bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
2594
+ KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
2595
+ AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
2596
+ Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
2597
+ jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
2598
+ HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
2599
+ E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
2600
+ zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
2601
+ rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
2602
+ dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
2603
+ Cm26OWMohpLzGITY+9HPBVZkVw==
2604
+ -----END CERTIFICATE-----
2605
+
2606
+ ComSign CA
2607
+ ==========
2608
+ -----BEGIN CERTIFICATE-----
2609
+ MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
2610
+ EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
2611
+ MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
2612
+ Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
2613
+ ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
2614
+ P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
2615
+ GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
2616
+ YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
2617
+ rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
2618
+ oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
2619
+ AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
2620
+ VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
2621
+ QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
2622
+ mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
2623
+ /627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
2624
+ zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
2625
+ AGegcQCCSA==
2626
+ -----END CERTIFICATE-----
2627
+
2628
+ ComSign Secured CA
2629
+ ==================
2630
+ -----BEGIN CERTIFICATE-----
2631
+ MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
2632
+ AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
2633
+ NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
2634
+ QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
2635
+ ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
2636
+ 49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
2637
+ 7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
2638
+ kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
2639
+ 9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
2640
+ AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
2641
+ U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
2642
+ j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
2643
+ AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
2644
+ BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
2645
+ FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
2646
+ 51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
2647
+ OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
2648
+ -----END CERTIFICATE-----
2649
+
2650
+ Cybertrust Global Root
2651
+ ======================
2652
+ -----BEGIN CERTIFICATE-----
2653
+ MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
2654
+ ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
2655
+ MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
2656
+ ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
2657
+ +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
2658
+ 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
2659
+ AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
2660
+ 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
2661
+ 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
2662
+ BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
2663
+ MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
2664
+ A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
2665
+ lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
2666
+ 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
2667
+ hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
2668
+ X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
2669
+ WL1WMRJOEcgh4LMRkWXbtKaIOM5V
2670
+ -----END CERTIFICATE-----
2671
+
2672
+ ePKI Root Certification Authority
2673
+ =================================
2674
+ -----BEGIN CERTIFICATE-----
2675
+ MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
2676
+ EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
2677
+ Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
2678
+ MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
2679
+ MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
2680
+ AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
2681
+ IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
2682
+ lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
2683
+ qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
2684
+ 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
2685
+ WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
2686
+ ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
2687
+ lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
2688
+ vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
2689
+ Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
2690
+ MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
2691
+ ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
2692
+ 1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
2693
+ KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
2694
+ xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
2695
+ NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
2696
+ GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
2697
+ xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
2698
+ gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
2699
+ sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
2700
+ BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
2701
+ -----END CERTIFICATE-----
2702
+
2703
+ T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
2704
+ =============================================================================================================================
2705
+ -----BEGIN CERTIFICATE-----
2706
+ MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
2707
+ DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
2708
+ aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
2709
+ b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
2710
+ BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
2711
+ S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
2712
+ MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
2713
+ IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
2714
+ n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
2715
+ IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
2716
+ dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
2717
+ cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
2718
+ AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
2719
+ Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
2720
+ xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
2721
+ 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
2722
+ hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
2723
+ BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
2724
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
2725
+ N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
2726
+ y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
2727
+ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
2728
+ dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
2729
+ -----END CERTIFICATE-----
2730
+
2731
+ Buypass Class 2 CA 1
2732
+ ====================
2733
+ -----BEGIN CERTIFICATE-----
2734
+ MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2735
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
2736
+ MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2737
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
2738
+ hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
2739
+ cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
2740
+ 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
2741
+ 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
2742
+ uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
2743
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
2744
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
2745
+ 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
2746
+ 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
2747
+ fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
2748
+ wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
2749
+ -----END CERTIFICATE-----
2750
+
2751
+ Buypass Class 3 CA 1
2752
+ ====================
2753
+ -----BEGIN CERTIFICATE-----
2754
+ MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
2755
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
2756
+ MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
2757
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
2758
+ hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
2759
+ ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
2760
+ n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
2761
+ AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
2762
+ 1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
2763
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
2764
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
2765
+ pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
2766
+ EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
2767
+ htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
2768
+ el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
2769
+ -----END CERTIFICATE-----
2770
+
2771
+ EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
2772
+ ==========================================================================
2773
+ -----BEGIN CERTIFICATE-----
2774
+ MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF
2775
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg
2776
+ QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe
2777
+ Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p
2778
+ ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt
2779
+ IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG
2780
+ SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by
2781
+ X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b
2782
+ gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr
2783
+ eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ
2784
+ TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy
2785
+ Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn
2786
+ uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI
2787
+ qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm
2788
+ ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0
2789
+ Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
2790
+ /wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW
2791
+ Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t
2792
+ FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm
2793
+ zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k
2794
+ XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT
2795
+ bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU
2796
+ RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK
2797
+ 1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt
2798
+ 2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ
2799
+ Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9
2800
+ AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT
2801
+ -----END CERTIFICATE-----
2802
+
2803
+ certSIGN ROOT CA
2804
+ ================
2805
+ -----BEGIN CERTIFICATE-----
2806
+ MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
2807
+ VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
2808
+ Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
2809
+ CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
2810
+ JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
2811
+ rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
2812
+ ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
2813
+ 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
2814
+ AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
2815
+ Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
2816
+ AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
2817
+ SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
2818
+ x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
2819
+ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
2820
+ TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
2821
+ -----END CERTIFICATE-----
2822
+
2823
+ CNNIC ROOT
2824
+ ==========
2825
+ -----BEGIN CERTIFICATE-----
2826
+ MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
2827
+ ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
2828
+ OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
2829
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
2830
+ o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
2831
+ VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
2832
+ VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
2833
+ czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
2834
+ y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
2835
+ wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
2836
+ lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
2837
+ Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
2838
+ O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
2839
+ BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
2840
+ G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
2841
+ mxE=
2842
+ -----END CERTIFICATE-----
2843
+
2844
+ ApplicationCA - Japanese Government
2845
+ ===================================
2846
+ -----BEGIN CERTIFICATE-----
2847
+ MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
2848
+ SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
2849
+ MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
2850
+ cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
2851
+ CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
2852
+ fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
2853
+ wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
2854
+ jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
2855
+ nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
2856
+ WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
2857
+ BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
2858
+ vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
2859
+ o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
2860
+ /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
2861
+ io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
2862
+ dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
2863
+ rosot4LKGAfmt1t06SAZf7IbiVQ=
2864
+ -----END CERTIFICATE-----
2865
+
2866
+ GeoTrust Primary Certification Authority - G3
2867
+ =============================================
2868
+ -----BEGIN CERTIFICATE-----
2869
+ MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
2870
+ BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
2871
+ IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
2872
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
2873
+ NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
2874
+ YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
2875
+ LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
2876
+ hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
2877
+ K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
2878
+ c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
2879
+ IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
2880
+ dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
2881
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
2882
+ 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
2883
+ cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
2884
+ Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
2885
+ AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
2886
+ t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
2887
+ -----END CERTIFICATE-----
2888
+
2889
+ thawte Primary Root CA - G2
2890
+ ===========================
2891
+ -----BEGIN CERTIFICATE-----
2892
+ MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
2893
+ VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
2894
+ IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
2895
+ Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
2896
+ MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
2897
+ b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
2898
+ IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
2899
+ LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
2900
+ 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
2901
+ mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
2902
+ G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
2903
+ rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
2904
+ -----END CERTIFICATE-----
2905
+
2906
+ thawte Primary Root CA - G3
2907
+ ===========================
2908
+ -----BEGIN CERTIFICATE-----
2909
+ MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
2910
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
2911
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
2912
+ cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
2913
+ ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
2914
+ d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
2915
+ VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
2916
+ A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
2917
+ MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
2918
+ P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
2919
+ +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
2920
+ 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
2921
+ vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
2922
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
2923
+ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
2924
+ A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
2925
+ t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
2926
+ 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
2927
+ er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
2928
+ -----END CERTIFICATE-----
2929
+
2930
+ GeoTrust Primary Certification Authority - G2
2931
+ =============================================
2932
+ -----BEGIN CERTIFICATE-----
2933
+ MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
2934
+ VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
2935
+ Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
2936
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
2937
+ OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
2938
+ MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
2939
+ b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
2940
+ BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
2941
+ KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
2942
+ VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
2943
+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
2944
+ ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
2945
+ npaqBA+K
2946
+ -----END CERTIFICATE-----
2947
+
2948
+ VeriSign Universal Root Certification Authority
2949
+ ===============================================
2950
+ -----BEGIN CERTIFICATE-----
2951
+ MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
2952
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
2953
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
2954
+ IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
2955
+ IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
2956
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
2957
+ cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
2958
+ IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
2959
+ aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
2960
+ 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
2961
+ MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
2962
+ 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
2963
+ AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
2964
+ tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
2965
+ CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
2966
+ a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
2967
+ DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
2968
+ Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
2969
+ Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
2970
+ P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
2971
+ wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
2972
+ mJO37M2CYfE45k+XmCpajQ==
2973
+ -----END CERTIFICATE-----
2974
+
2975
+ VeriSign Class 3 Public Primary Certification Authority - G4
2976
+ ============================================================
2977
+ -----BEGIN CERTIFICATE-----
2978
+ MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
2979
+ VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
2980
+ b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
2981
+ ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
2982
+ YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
2983
+ MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
2984
+ cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
2985
+ b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
2986
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
2987
+ Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
2988
+ rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
2989
+ /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
2990
+ HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
2991
+ Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
2992
+ A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
2993
+ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
2994
+ -----END CERTIFICATE-----
2995
+
2996
+ NetLock Arany (Class Gold) Főtanúsítvány
2997
+ ============================================
2998
+ -----BEGIN CERTIFICATE-----
2999
+ MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
3000
+ A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
3001
+ dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
3002
+ cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
3003
+ MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
3004
+ ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
3005
+ biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
3006
+ c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
3007
+ 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
3008
+ /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
3009
+ H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
3010
+ fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
3011
+ neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
3012
+ BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
3013
+ qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
3014
+ YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
3015
+ bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
3016
+ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
3017
+ dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
3018
+ -----END CERTIFICATE-----
3019
+
3020
+ Staat der Nederlanden Root CA - G2
3021
+ ==================================
3022
+ -----BEGIN CERTIFICATE-----
3023
+ MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
3024
+ CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
3025
+ Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC
3026
+ TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
3027
+ ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ
3028
+ 5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn
3029
+ vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj
3030
+ CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil
3031
+ e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR
3032
+ OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI
3033
+ CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65
3034
+ 48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi
3035
+ trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737
3036
+ qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB
3037
+ AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC
3038
+ ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV
3039
+ HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA
3040
+ A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz
3041
+ +51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj
3042
+ f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN
3043
+ kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk
3044
+ CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF
3045
+ URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb
3046
+ CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h
3047
+ oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV
3048
+ IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm
3049
+ 66+KAQ==
3050
+ -----END CERTIFICATE-----
3051
+
3052
+ CA Disig
3053
+ ========
3054
+ -----BEGIN CERTIFICATE-----
3055
+ MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
3056
+ QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
3057
+ MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
3058
+ bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
3059
+ DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
3060
+ GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
3061
+ Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
3062
+ hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
3063
+ ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
3064
+ gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
3065
+ AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
3066
+ aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
3067
+ ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
3068
+ BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
3069
+ WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
3070
+ mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
3071
+ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
3072
+ ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
3073
+ 4Z7CRneC9VkGjCFMhwnN5ag=
3074
+ -----END CERTIFICATE-----
3075
+
3076
+ Juur-SK
3077
+ =======
3078
+ -----BEGIN CERTIFICATE-----
3079
+ MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
3080
+ c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
3081
+ DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
3082
+ SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
3083
+ aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
3084
+ ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
3085
+ TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
3086
+ +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
3087
+ UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
3088
+ Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
3089
+ MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
3090
+ HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
3091
+ AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
3092
+ cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
3093
+ AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
3094
+ cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
3095
+ FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
3096
+ A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
3097
+ ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
3098
+ abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
3099
+ IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
3100
+ Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
3101
+ yyqcjg==
3102
+ -----END CERTIFICATE-----
3103
+
3104
+ Hongkong Post Root CA 1
3105
+ =======================
3106
+ -----BEGIN CERTIFICATE-----
3107
+ MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
3108
+ DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
3109
+ NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
3110
+ IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
3111
+ AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
3112
+ ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
3113
+ auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
3114
+ qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
3115
+ V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
3116
+ HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
3117
+ h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
3118
+ l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
3119
+ IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
3120
+ T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
3121
+ c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
3122
+ -----END CERTIFICATE-----
3123
+
3124
+ SecureSign RootCA11
3125
+ ===================
3126
+ -----BEGIN CERTIFICATE-----
3127
+ MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
3128
+ SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
3129
+ b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
3130
+ KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
3131
+ cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
3132
+ TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
3133
+ wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
3134
+ g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
3135
+ O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
3136
+ bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
3137
+ t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
3138
+ OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
3139
+ bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
3140
+ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
3141
+ y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
3142
+ lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
3143
+ -----END CERTIFICATE-----
3144
+
3145
+ ACEDICOM Root
3146
+ =============
3147
+ -----BEGIN CERTIFICATE-----
3148
+ MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD
3149
+ T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4
3150
+ MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG
3151
+ A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF
3152
+ AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk
3153
+ WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD
3154
+ YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew
3155
+ MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb
3156
+ m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk
3157
+ HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT
3158
+ xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2
3159
+ 3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9
3160
+ 2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq
3161
+ TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz
3162
+ 4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU
3163
+ 9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv
3164
+ bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg
3165
+ aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP
3166
+ eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk
3167
+ zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1
3168
+ ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI
3169
+ KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq
3170
+ nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE
3171
+ I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp
3172
+ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
3173
+ tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
3174
+ -----END CERTIFICATE-----
3175
+
3176
+ Verisign Class 1 Public Primary Certification Authority
3177
+ =======================================================
3178
+ -----BEGIN CERTIFICATE-----
3179
+ MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
3180
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
3181
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
3182
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
3183
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
3184
+ A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
3185
+ VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
3186
+ yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
3187
+ XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
3188
+ 0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
3189
+ RjXZ+Hxb
3190
+ -----END CERTIFICATE-----
3191
+
3192
+ Verisign Class 3 Public Primary Certification Authority
3193
+ =======================================================
3194
+ -----BEGIN CERTIFICATE-----
3195
+ MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
3196
+ FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
3197
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
3198
+ XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
3199
+ IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
3200
+ A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
3201
+ f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
3202
+ hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
3203
+ CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
3204
+ bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
3205
+ D/xwzoiQ
3206
+ -----END CERTIFICATE-----
3207
+
3208
+ Microsec e-Szigno Root CA 2009
3209
+ ==============================
3210
+ -----BEGIN CERTIFICATE-----
3211
+ MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
3212
+ MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
3213
+ c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
3214
+ dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
3215
+ BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
3216
+ U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
3217
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
3218
+ fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
3219
+ 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
3220
+ pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
3221
+ 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
3222
+ AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
3223
+ QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
3224
+ FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
3225
+ lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
3226
+ I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
3227
+ tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
3228
+ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
3229
+ LXpUq3DDfSJlgnCW
3230
+ -----END CERTIFICATE-----
3231
+
3232
+ E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
3233
+ ===================================================
3234
+ -----BEGIN CERTIFICATE-----
3235
+ MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
3236
+ EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
3237
+ ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
3238
+ MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
3239
+ cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
3240
+ aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
3241
+ AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
3242
+ 8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
3243
+ jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
3244
+ JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
3245
+ 9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
3246
+ AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
3247
+ SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
3248
+ F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
3249
+ D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
3250
+ Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
3251
+ fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
3252
+ -----END CERTIFICATE-----
3253
+
3254
+ GlobalSign Root CA - R3
3255
+ =======================
3256
+ -----BEGIN CERTIFICATE-----
3257
+ MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
3258
+ YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
3259
+ bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
3260
+ aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
3261
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
3262
+ iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
3263
+ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
3264
+ rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
3265
+ OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
3266
+ xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
3267
+ FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
3268
+ lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
3269
+ EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
3270
+ bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
3271
+ YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
3272
+ kpeDMdmztcpHWD9f
3273
+ -----END CERTIFICATE-----
3274
+
3275
+ TC TrustCenter Universal CA III
3276
+ ===============================
3277
+ -----BEGIN CERTIFICATE-----
3278
+ MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
3279
+ REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
3280
+ IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
3281
+ Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
3282
+ QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
3283
+ KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
3284
+ AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
3285
+ QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
3286
+ juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
3287
+ CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
3288
+ M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
3289
+ A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
3290
+ BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
3291
+ g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
3292
+ KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
3293
+ BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
3294
+ CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
3295
+ woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
3296
+ -----END CERTIFICATE-----
3297
+
3298
+ Autoridad de Certificacion Firmaprofesional CIF A62634068
3299
+ =========================================================
3300
+ -----BEGIN CERTIFICATE-----
3301
+ MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
3302
+ BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
3303
+ MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
3304
+ QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
3305
+ NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
3306
+ Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
3307
+ B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
3308
+ 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
3309
+ ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
3310
+ plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
3311
+ MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
3312
+ LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
3313
+ bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
3314
+ vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
3315
+ EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
3316
+ DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
3317
+ cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
3318
+ bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
3319
+ ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
3320
+ 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
3321
+ R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
3322
+ T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
3323
+ Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
3324
+ osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
3325
+ crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
3326
+ saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
3327
+ KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
3328
+ 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
3329
+ -----END CERTIFICATE-----
3330
+
3331
+ Izenpe.com
3332
+ ==========
3333
+ -----BEGIN CERTIFICATE-----
3334
+ MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
3335
+ EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
3336
+ MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
3337
+ QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
3338
+ 03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
3339
+ ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
3340
+ +zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
3341
+ PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
3342
+ OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
3343
+ F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
3344
+ 0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
3345
+ 0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
3346
+ leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
3347
+ AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
3348
+ SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
3349
+ NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
3350
+ MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
3351
+ BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
3352
+ Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
3353
+ kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
3354
+ hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
3355
+ g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
3356
+ aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
3357
+ nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
3358
+ ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
3359
+ Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
3360
+ WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
3361
+ -----END CERTIFICATE-----
3362
+
3363
+ Chambers of Commerce Root - 2008
3364
+ ================================
3365
+ -----BEGIN CERTIFICATE-----
3366
+ MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
3367
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
3368
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
3369
+ QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
3370
+ Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
3371
+ ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
3372
+ EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
3373
+ cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
3374
+ AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
3375
+ XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
3376
+ h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
3377
+ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
3378
+ NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
3379
+ D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
3380
+ lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
3381
+ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
3382
+ ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
3383
+ EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
3384
+ G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
3385
+ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
3386
+ bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
3387
+ bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
3388
+ CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
3389
+ AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
3390
+ wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
3391
+ 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
3392
+ RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
3393
+ M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
3394
+ YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
3395
+ 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
3396
+ zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
3397
+ nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
3398
+ OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
3399
+ -----END CERTIFICATE-----
3400
+
3401
+ Global Chambersign Root - 2008
3402
+ ==============================
3403
+ -----BEGIN CERTIFICATE-----
3404
+ MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
3405
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
3406
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
3407
+ QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
3408
+ NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
3409
+ Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
3410
+ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
3411
+ aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
3412
+ VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
3413
+ XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
3414
+ ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
3415
+ /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
3416
+ TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
3417
+ H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
3418
+ Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
3419
+ HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
3420
+ wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
3421
+ AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
3422
+ BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
3423
+ BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
3424
+ aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
3425
+ aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
3426
+ 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
3427
+ dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
3428
+ /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
3429
+ ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
3430
+ dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
3431
+ 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
3432
+ foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
3433
+ qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
3434
+ P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
3435
+ c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
3436
+ 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
3437
+ -----END CERTIFICATE-----
3438
+
3439
+ Go Daddy Root Certificate Authority - G2
3440
+ ========================================
3441
+ -----BEGIN CERTIFICATE-----
3442
+ MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3443
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
3444
+ MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
3445
+ MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
3446
+ b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
3447
+ A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
3448
+ hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
3449
+ 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
3450
+ +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
3451
+ fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
3452
+ NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
3453
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
3454
+ BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
3455
+ vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
3456
+ 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
3457
+ N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
3458
+ LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
3459
+ -----END CERTIFICATE-----
3460
+
3461
+ Starfield Root Certificate Authority - G2
3462
+ =========================================
3463
+ -----BEGIN CERTIFICATE-----
3464
+ MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3465
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3466
+ b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
3467
+ eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
3468
+ DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
3469
+ VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
3470
+ dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
3471
+ W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
3472
+ bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
3473
+ N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
3474
+ ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
3475
+ JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3476
+ AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
3477
+ TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
3478
+ 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
3479
+ F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
3480
+ pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
3481
+ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
3482
+ -----END CERTIFICATE-----
3483
+
3484
+ Starfield Services Root Certificate Authority - G2
3485
+ ==================================================
3486
+ -----BEGIN CERTIFICATE-----
3487
+ MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
3488
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
3489
+ b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
3490
+ IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
3491
+ BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
3492
+ dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
3493
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
3494
+ AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
3495
+ h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
3496
+ hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
3497
+ LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
3498
+ rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
3499
+ AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
3500
+ SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
3501
+ E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
3502
+ xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
3503
+ iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
3504
+ YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
3505
+ -----END CERTIFICATE-----
3506
+
3507
+ AffirmTrust Commercial
3508
+ ======================
3509
+ -----BEGIN CERTIFICATE-----
3510
+ MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
3511
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
3512
+ MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3513
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
3514
+ AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
3515
+ DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
3516
+ C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
3517
+ BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
3518
+ MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
3519
+ HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3520
+ AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
3521
+ hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
3522
+ qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
3523
+ 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
3524
+ sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
3525
+ -----END CERTIFICATE-----
3526
+
3527
+ AffirmTrust Networking
3528
+ ======================
3529
+ -----BEGIN CERTIFICATE-----
3530
+ MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
3531
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
3532
+ MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
3533
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
3534
+ AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
3535
+ Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
3536
+ dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
3537
+ /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
3538
+ h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
3539
+ HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
3540
+ AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
3541
+ UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
3542
+ 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
3543
+ WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
3544
+ /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
3545
+ -----END CERTIFICATE-----
3546
+
3547
+ AffirmTrust Premium
3548
+ ===================
3549
+ -----BEGIN CERTIFICATE-----
3550
+ MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
3551
+ BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
3552
+ OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
3553
+ dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3554
+ MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
3555
+ BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
3556
+ 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
3557
+ +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
3558
+ GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
3559
+ p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
3560
+ S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
3561
+ 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
3562
+ /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
3563
+ +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
3564
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
3565
+ MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
3566
+ Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
3567
+ 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
3568
+ L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
3569
+ +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
3570
+ BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
3571
+ IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
3572
+ g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
3573
+ zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
3574
+ -----END CERTIFICATE-----
3575
+
3576
+ AffirmTrust Premium ECC
3577
+ =======================
3578
+ -----BEGIN CERTIFICATE-----
3579
+ MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
3580
+ BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
3581
+ MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
3582
+ cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
3583
+ IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
3584
+ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
3585
+ BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
3586
+ BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
3587
+ 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
3588
+ eQ==
3589
+ -----END CERTIFICATE-----
3590
+
3591
+ Certum Trusted Network CA
3592
+ =========================
3593
+ -----BEGIN CERTIFICATE-----
3594
+ MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
3595
+ ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
3596
+ biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
3597
+ MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
3598
+ ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
3599
+ MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
3600
+ AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
3601
+ l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
3602
+ J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
3603
+ fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
3604
+ cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
3605
+ Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
3606
+ DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
3607
+ jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
3608
+ mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
3609
+ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
3610
+ 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
3611
+ -----END CERTIFICATE-----
3612
+
3613
+ Certinomis - Autorité Racine
3614
+ =============================
3615
+ -----BEGIN CERTIFICATE-----
3616
+ MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK
3617
+ Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg
3618
+ LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG
3619
+ A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw
3620
+ JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD
3621
+ ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa
3622
+ wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly
3623
+ Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw
3624
+ 2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N
3625
+ jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q
3626
+ c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC
3627
+ lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb
3628
+ xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g
3629
+ 530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna
3630
+ 4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
3631
+ A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ
3632
+ KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x
3633
+ WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva
3634
+ R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40
3635
+ nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B
3636
+ CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv
3637
+ JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE
3638
+ qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b
3639
+ WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE
3640
+ wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/
3641
+ vgt2Fl43N+bYdJeimUV5
3642
+ -----END CERTIFICATE-----
3643
+
3644
+ Root CA Generalitat Valenciana
3645
+ ==============================
3646
+ -----BEGIN CERTIFICATE-----
3647
+ MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
3648
+ ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
3649
+ IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
3650
+ WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
3651
+ CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
3652
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
3653
+ F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
3654
+ ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
3655
+ D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
3656
+ JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
3657
+ AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
3658
+ dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
3659
+ ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
3660
+ AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
3661
+ YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
3662
+ AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
3663
+ aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
3664
+ AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
3665
+ YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
3666
+ AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
3667
+ OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
3668
+ dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
3669
+ BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
3670
+ A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
3671
+ b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
3672
+ TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
3673
+ Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
3674
+ NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
3675
+ iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
3676
+ +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
3677
+ -----END CERTIFICATE-----
3678
+
3679
+ A-Trust-nQual-03
3680
+ ================
3681
+ -----BEGIN CERTIFICATE-----
3682
+ MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
3683
+ Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
3684
+ a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
3685
+ dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
3686
+ RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
3687
+ ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
3688
+ c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
3689
+ zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
3690
+ yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
3691
+ SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
3692
+ iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
3693
+ cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
3694
+ eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
3695
+ ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
3696
+ sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
3697
+ JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
3698
+ mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
3699
+ ahq97BvIxYSazQ==
3700
+ -----END CERTIFICATE-----
3701
+
3702
+ TWCA Root Certification Authority
3703
+ =================================
3704
+ -----BEGIN CERTIFICATE-----
3705
+ MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
3706
+ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
3707
+ dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
3708
+ EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
3709
+ IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
3710
+ AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
3711
+ QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
3712
+ oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
3713
+ 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
3714
+ y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
3715
+ BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
3716
+ 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
3717
+ mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
3718
+ QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
3719
+ T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
3720
+ Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
3721
+ -----END CERTIFICATE-----
app/code/community/Mpay24/Mpay24/Model/Api/logs/curllog.log ADDED
File without changes
app/code/community/Mpay24/Mpay24/Model/Api/logs/mPAY24log.log ADDED
File without changes
app/code/community/Mpay24/Mpay24/Model/Api/orderXML.php ADDED
@@ -0,0 +1,219 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @author support@mpay24.com
4
+ * @version $Id: orderXML.php 5217 2012-10-16 05:27:43Z anna $
5
+ * @filesource orderXML.php
6
+ * @license http://ec.europa.eu/idabc/eupl.html EUPL, Version 1.1
7
+ */
8
+
9
+ /**
10
+ * @abstract STRING MDXI_SCHEMA = the specified from mPAY24 URL, where you can download the MDXI schema
11
+ */
12
+ define ("MDXI_SCHEMA","https://www.mpay24.com/schemas/MDXI/v3.0/MDXI.xsd");
13
+
14
+ class ORDER {
15
+ private $doc;
16
+ private $node;
17
+
18
+ /**
19
+ * @abstract Create a DOMDocument or a ORDER-Object with root $doc
20
+ * @param DOMNode The root DOMNode of an XML tree
21
+ * @param DOMNode The child DOMNode
22
+ */
23
+ public function ORDER($doc=null,$node=null) {
24
+ if ($doc)
25
+ $this->doc = $doc;
26
+ else {
27
+ $this->doc = new DOMDocument("1.0", "UTF-8");
28
+ $this->doc->formatOutput = true;
29
+ }
30
+
31
+ if ($node)
32
+ $this->node = $node;
33
+ else
34
+ $this->node = $this->doc;
35
+ }
36
+
37
+ /**
38
+ * @abstract Generic call-Method instead of numerous setter methods
39
+ * @param STRING The name of the method, which is called for the Item-Object
40
+ * @param ARRAY The arguments with them the method is called - minOccurance = 0, maxOccurance = 2:
41
+ *
42
+ * The first argument must be a positive integer (will be used as a index)
43
+ *
44
+ * The second argument is optional and would be used as value for the DOMNode
45
+ */
46
+ public function __call($method, $args) {
47
+ if(substr($method, 0, 3) == "set" && $args[0] != '') {
48
+ $attributeName = substr($method, 3);
49
+
50
+ $value = $args[0];
51
+
52
+ if(preg_match('/[0-9]+,[0-9]+/', $value, $match))
53
+ $value = str_replace(',', '.', $match[0]);
54
+
55
+ if(preg_match('/[0-9]+.[0-9]+/', $value, $match) && $value == $match[0] && $attributeName != 'shippingCosts' && (is_int(strpos($attributeName, 'price')) || is_int(strpos($attributeName, 'Price')) || is_int(strpos($attributeName, 'Tax')) || is_int(strpos($attributeName, 'cost')) || is_int(strpos($attributeName, 'Cost'))))
56
+ $value = number_format(floatval($match[0]), 2, '.', '');
57
+
58
+ $this->node->setAttribute($attributeName, $value);
59
+ } elseif($args[0] != '') {
60
+ if(sizeof($args)>2)
61
+ die("It is not allowed to set more than 2 arguments for the node '$method'!");
62
+ if(!is_int($args[0]) || $args[0] < 1)
63
+ die("The first argument for the node '$method' must be whole number, bigger than 0!");
64
+
65
+ $name = $method . '[' . $args[0] . ']';
66
+
67
+ $xpath = new DOMXPath($this->doc);
68
+ $qry = $xpath->query($name,$this->node);
69
+
70
+ if ($qry->length > 0)
71
+ return new ORDER($this->doc,$qry->item(0));
72
+ else {
73
+ if(array_key_exists(1, $args)) {
74
+ $value = $args[1];
75
+
76
+ if(preg_match('/[0-9]+,[0-9]+/', $value, $match))
77
+ $value = str_replace(',', '.', $match[0]);
78
+
79
+ if(preg_match('/[0-9]+.[0-9]+/', $value, $match) && $value == $match[0] && $name != 'shippingCosts' && (is_int(strpos($name, 'price')) || is_int(strpos($name, 'Price')) || is_int(strpos($name, 'Tax')) || is_int(strpos($name, 'cost')) || is_int(strpos($name, 'Cost'))))
80
+ $value = number_format(floatval($match[0]), 2, '.', '');
81
+
82
+ $node = $this->doc->createElement($method, $value);
83
+ }
84
+ else
85
+ $node = $this->doc->createElement($method);
86
+
87
+ $node = $this->node->appendChild($node);
88
+ return new ORDER($this->doc,$node);
89
+ }
90
+ }
91
+ }
92
+
93
+ /**
94
+ * @abstract Get the value of a ORDER-Variable
95
+ * @param STRING The name of the Node you need
96
+ * @return ORDER The ORDER-Object of a DOMDocument tree
97
+ */
98
+ public function __get($name) {
99
+ $xpath = new DOMXPath($this->doc);
100
+ $qry = $xpath->query($name,$this->node);
101
+
102
+ if ($qry->length > 0)
103
+ return new ORDER($this->doc,$qry->item(0));
104
+ else {
105
+ $node = $this->doc->createElement($name);
106
+ $node = $this->node->appendChild($node);
107
+ return new ORDER($this->doc,$node);
108
+ }
109
+ }
110
+
111
+ /**
112
+ * @abstract Set the value of a ORDER-Variable
113
+ * @param STRING The name of the Node you want to set
114
+ * @param ANY The value of the Node you want to set
115
+ */
116
+ public function __set($name, $value) {
117
+ $xpath = new DOMXPath($this->doc);
118
+ $qry = $xpath->query($name,$this->node);
119
+
120
+ $value = str_replace('&', '&amp;', $value);
121
+
122
+ if(preg_match('/[0-9]+,[0-9]+/', $value, $match))
123
+ $value = str_replace(',', '.', $match[0]);
124
+
125
+ if(preg_match('/[0-9]+.[0-9]+/', $value, $match) && $value == $match[0] && $name != 'shippingCosts' && (is_int(strpos($name, 'price')) || is_int(strpos($name, 'Price')) || is_int(strpos($name, 'Tax')) || is_int(strpos($name, 'cost')) || is_int(strpos($name, 'Cost'))))
126
+ $value = number_format(floatval($match[0]), 2, '.', '');
127
+
128
+ if(strpos($value, "<") || strpos($value, ">"))
129
+ $value = "<![CDATA[" . $this->xmlencode($value) . "]]>";
130
+
131
+ if ($qry->length > 0)
132
+ $qry->item(0)->nodeValue = $value;
133
+ else {
134
+ $node = $this->doc->createElement($name,$value);
135
+ $this->node = $this->node->appendChild($node);
136
+ }
137
+ }
138
+
139
+ /**
140
+ * @abstract Create a XML-Object from the ORDER-Object
141
+ * @return XML The created XML from the ORDER
142
+ */
143
+ public function toXML() {
144
+ return $this->doc->saveXML();
145
+ }
146
+
147
+ /**
148
+ * @abstract Validate the ORDER with the schema, defined in the constant MDXI_SCHEMA
149
+ * @uses CONSTANT MDXI_SCHEMA
150
+ * @return BOOLEAN TRUE if the validation was successful or FALSE
151
+ */
152
+ public function validate() {
153
+ $mdxi = "/MDXI.xsd";
154
+
155
+ if($this->olderThanOneWeek(__DIR__ . $mdxi)){
156
+ set_time_limit(0);
157
+ ini_set('display_errors',true);
158
+
159
+ $fp = fopen (__DIR__ . '/MDXInew.xsd', 'w');
160
+ $ch = curl_init(MDXI_SCHEMA);
161
+ curl_setopt($ch, CURLOPT_FILE, $fp);
162
+ curl_setopt($ch, CURLOPT_HEADER, 0);
163
+ curl_setopt($ch, CURLOPT_CAINFO, __DIR__.'/cacert.pem');
164
+ $result = curl_exec($ch);
165
+
166
+ if(curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200 && file_exists(__DIR__ . '/MDXInew.xsd')) {
167
+ unlink(__DIR__ . $mdxi);
168
+ fclose($fp);
169
+ rename(__DIR__ . "/MDXInew.xsd", __DIR__ . $mdxi);
170
+ } else
171
+ fclose($fp);
172
+
173
+ curl_close($ch);
174
+ }
175
+
176
+ return $this->doc->schemaValidate(__DIR__ . $mdxi);
177
+ }
178
+
179
+ private function xmlencode($txt)
180
+ {
181
+ $txt = str_replace('<', '&lt;', $txt);
182
+ $txt = str_replace('>', '&gt;', $txt);
183
+ $txt = str_replace('&amp;apos;', "'", $txt);
184
+ $txt = str_replace('&amp;quot;', '"', $txt);
185
+ return $txt;
186
+ }
187
+
188
+ private function olderThanOneWeek($filename){
189
+ $year = date ("Y", filemtime($filename));
190
+ $month = date ("m", filemtime($filename));
191
+ $day = date ("d", filemtime($filename));
192
+
193
+ $tyear = date ("Y");
194
+ $tmonth = date ("m");
195
+ $tday = date ("d");
196
+
197
+ if($tyear > $year)
198
+ return true;
199
+ else {
200
+ if($tmonth > $month){
201
+ if($tday > 7)
202
+ return true;
203
+ else {
204
+ if($tday-7+30 < $day)
205
+ return false;
206
+ else
207
+ return true;
208
+ }
209
+ } else {
210
+ if($tday-7 > $day)
211
+ return true;
212
+ else {
213
+ return false;
214
+ }
215
+ }
216
+ }
217
+ }
218
+ }
219
+ ?>
app/code/community/Mpay24/Mpay24/Model/Api/xmls/Example_MDXI.xml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Order>
3
+ <UserField>UserField_1234567890</UserField>
4
+ <Tid>1234567890</Tid>
5
+ <TemplateSet Language="EN"/>
6
+ <PaymentTypes Enable="true">
7
+ <Payment Type="CC"/>
8
+ <Payment Type="EPS" Brand="ARZ"/>
9
+ <Payment Type="EPS" Brand="BAWAG"/>
10
+ <Payment Type="EPS" Brand="ERSTE"/>
11
+ </PaymentTypes>
12
+ <ShoppingCart>
13
+ <Description>ShoppingCart Description</Description>
14
+ <Item>
15
+ <Number>1</Number>
16
+ <ProductNr>Product 1</ProductNr>
17
+ <Description>Description 1</Description>
18
+ <Quantity>1</Quantity>
19
+ <ItemPrice>17.99</ItemPrice>
20
+ </Item>
21
+ <SubTotal>17.99</SubTotal>
22
+ <ShippingCosts>8.00</ShippingCosts>
23
+ </ShoppingCart>
24
+ <Price>25.99</Price>
25
+ <Currency>EUR</Currency>
26
+ <BillingAddr Mode="ReadWrite">
27
+ <Name>Max Musterman</Name>
28
+ <Street>Teststraße 123</Street>
29
+ <Zip>1234</Zip>
30
+ <City>Wien</City>
31
+ <Country Code="AT"/>
32
+ </BillingAddr>
33
+ <ShippingAddr Mode="ReadOnly">
34
+ <Name>Name Surname</Name>
35
+ <Street>Teststreet 123</Street>
36
+ <Zip>9876</Zip>
37
+ <City>Salzburg</City>
38
+ <Country Code="AT"/>
39
+ </ShippingAddr>
40
+ <URL>
41
+ <Success>https://www.test.com/success</Success>
42
+ <Error>https://www.test.com/error</Error>
43
+ <Confirmation>https://www.test.com/confirmation</Confirmation>
44
+ <Cancel>https://www.test.com/cancel</Cancel>
45
+ </URL>
46
+ </Order>
app/code/community/Mpay24/Mpay24/Model/Cc.php DELETED
@@ -1,206 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- /*
21
- * Visa Number = 40070000000027
22
- * MasterCard Number = 5424000000000015
23
- * American Express Number = 370000000000002
24
- * Discover/Novus Number = 6011000000000012
25
- * JCB Number = 3088000000000017
26
- * Diners/Carte Blanche Number = 38000000000006
27
- * Monat 01 -> Abgelehnt ohne Begründung
28
- * Monat 02 -> Ablaufdatum falsch
29
- * Monat 03 -> Kartenprüfzifer falsch
30
- * Monat 04 -> externer Fehler
31
- * Monat 05 -> OK
32
- * Monat 06 bis 12 -> eine Verified by VISA-Transaktion wird simuliert
33
- * (Das Jahr bitte größer 2007 wählen)
34
- */
35
-
36
-
37
- class Mpay24_Mpay24_Model_Cc extends Mpay24_Mpay24_Model_Method_Cc {
38
- protected $_code = 'mpay24_cc';
39
-
40
- /**
41
- * Availability options
42
- */
43
- protected $_isGateway = false;
44
- protected $_canAuthorize = true;
45
- protected $_canCapture = true;
46
- protected $_canCapturePartial = true;
47
- protected $_canRefund = true;
48
- protected $_canVoid = false;
49
- protected $_canUseInternal = true;
50
- protected $_canUseCheckout = true;
51
- protected $_canUseForMultishipping = false;
52
- protected $_canSaveCc = false;
53
-
54
-
55
- /**
56
- * Send authorize request to gateway
57
- *
58
- * @param Varien_Object $payment
59
- * @param decimal $amount
60
- * @return Mpay24_Mpay24_Model_PaymentMethod
61
- */
62
- public function authorize(Varien_Object $payment, $amount){
63
- $this->clearSession();
64
- $error = false;
65
- if($amount>0){
66
- $payment->setAmount($amount);
67
- $request= $this->_buildRequest($payment);
68
- $result = $this->getApi()->authorize($request);
69
-
70
- switch ($result->getResponseCode()) {
71
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_APPROVED:
72
- $payment->setStatus(self::STATUS_APPROVED);
73
- $payment->setMpayTid($result->getTransactionId());
74
- break;
75
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_DECLINED:
76
- $error = Mage::helper('mpay24')->__('Your credit card was declined, sorry.');
77
- break;
78
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_REDIRECT:
79
- $this->getPayment()->setAuth3DS(true);
80
- break;
81
- default:
82
- // $error = Mage::helper('mpay24')->__('Payment authorization error.');
83
- $error = urldecode($result->getData('RETURNCODE'));
84
- break;
85
- }
86
- }else{
87
- $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
88
- }
89
- if ($error !== false) {
90
- Mage::throwException($error);
91
- }
92
- return $this;
93
- }
94
-
95
- /**
96
- * Capture payment
97
- *
98
- * @param Varien_Object $orderPayment
99
- * @return Mpay24_Mpay24_Model_PaymentMethod
100
- */
101
- public function capture(Varien_Object $payment, $amount) {
102
- $this->clearSession();
103
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
104
- if($mpayTid != ''){
105
- $this->getApi()->charge($mpayTid, $amount);
106
- }else{
107
- Mage::log('capture not possible. mpaytid not exist');
108
- }
109
- return $this;
110
- }
111
-
112
- /**
113
- * Refund money
114
- *
115
- * @param Varien_Object $invoicePayment
116
- * @return Mpay24_Mpay24_Model_PaymentMethod
117
- */
118
- public function refund(Varien_Object $payment, $amount){
119
- $this->clearSession();
120
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
121
- $this->getApi()->refund($mpayTid, $amount);
122
- return $this;
123
- }
124
-
125
- // public function void(Varien_Object $payment){
126
- // Mage::log('void');
127
- // $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
128
- // $this->getApi()->void($mpayTid);
129
- //// $this->getApi()->refund($mpayTid, $payment->getOrder()->getGrandTotal());
130
- // return $this;
131
- // }
132
-
133
- protected function _buildRequest(Varien_Object $payment) {
134
- $order = $payment->getOrder();
135
- $this->setStore($order->getStoreId());
136
-
137
- $request = $this->getApi()->createBasicRequestObject('ACCEPTPAYMENT');
138
-
139
- if ($order && $order->getIncrementId()) {
140
- $request->setTid($order->getIncrementId()); // TID == OrderNR
141
- }
142
-
143
- $request->setPType('CC');
144
-
145
- if($payment->getCcNumber()){
146
- $request->setBrand($this->_getBrand($payment->getCcType()))
147
- ->setIdentifier($payment->getCcNumber())
148
- ->setExpiry(substr(sprintf('%04d%02d', $payment->getCcExpYear(), $payment->getCcExpMonth()), 2, 4 ))
149
- ->setCvc($payment->getCcCid());
150
- }
151
-
152
- if($payment->getAmount()){
153
- $request->setPrice($payment->getAmount()*100,2);
154
- $request->setCurrency($order->getBaseCurrencyCode());
155
- }
156
- $request->setClearing('1');
157
- $request->setAuth_3ds('Y');
158
-
159
- $request->setSuccessUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SUCCESS_URL,array('_secure' => true)));
160
- $request->setErrorUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::ERROR_URL,array('_secure' => true)));
161
- $request->setConfirmationUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::CONFIRMATION_URL,array('_secure' => true)));
162
-
163
- $billing = $order->getBillingAddress();
164
- if (!empty($billing)) {
165
- $request->setCustomer($billing->getFirstname()." ".$billing->getLastname());
166
- }
167
- $request->setUserField($order->getIncrementId()); // do not change this -> it will be used as order id; USER_FIELD == OrderNR
168
- // $request->setProfile();
169
- // $request->setCustomerId();
170
- // $request->setCustomerEmail();
171
- // $request->setUserField();
172
-
173
- // Mage::log($request);
174
- return $request;
175
- }
176
-
177
- public function getOrderPlaceRedirectUrl() {
178
- if(!$this->getPayment()->getAuth3DS() && $this->getSession()->getMpayTid()){
179
- return Mage::getUrl('mpay24/payment/redirectcc',array('_secure' => true));
180
- }
181
- return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/payment',array('_secure' => true)) : false;
182
- }
183
-
184
- private function _getBrand($ccType){
185
- $brand = '';
186
- switch ($ccType){
187
- case 'AE':
188
- $brand = 'AMEX';
189
- break;
190
- case 'DC':
191
- $brand = 'DINERS';
192
- break;
193
- case 'JC':
194
- $brand = 'JCB';
195
- break;
196
- case 'MC':
197
- $brand = 'MASTERCARD';
198
- break;
199
- case 'VI':
200
- $brand = 'VISA';
201
- break;
202
- }
203
- return $brand;
204
- }
205
- }
206
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Config.php CHANGED
@@ -12,23 +12,21 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- class Mpay24_Mpay24_Model_Config extends Mage_Payment_Model_Config
22
- {
23
 
24
  /**
25
- * Retrieve active system payments
26
  *
27
- * @param mixed $store
28
- * @return array
29
  */
30
- public function getActiveMethods($store=null)
31
- {
32
  $methods = array();
33
  $config = Mage::getStoreConfig('mpay24', $store);
34
  foreach ($config as $code => $methodConfig) {
@@ -40,13 +38,12 @@ class Mpay24_Mpay24_Model_Config extends Mage_Payment_Model_Config
40
  }
41
 
42
  /**
43
- * Retrieve all system payments
44
  *
45
- * @param mixed $store
46
- * @return array
47
  */
48
- public function getAllMethods($store=null)
49
- {
50
  $methods = array();
51
  $config = Mage::getStoreConfig('payment', $store);
52
  foreach ($config as $code => $methodConfig) {
@@ -54,43 +51,4 @@ class Mpay24_Mpay24_Model_Config extends Mage_Payment_Model_Config
54
  }
55
  return $methods;
56
  }
57
-
58
- /**
59
- * Retrieve array of credit card types
60
- *
61
- * @return array
62
- */
63
- public function getCcTypes() {
64
- $_types = Mage::getConfig()->getNode('global/payment/cc/types')->asArray();
65
-
66
- // usort($_types, array('Mpay24_Mpay24_Model_Config', 'compareCcTypes'));
67
- sort($_types);
68
-
69
- $types = array();
70
- foreach ($_types as $data) {
71
- $types[$data['code']] = $data['name'];
72
- }
73
- return $types;
74
- }
75
-
76
- public function getElvTypes() {
77
- $_types = Mage::getConfig()->getNode('global/payment/elv/types')->asArray();
78
-
79
- // uasort($_types, array('Mpay24_Mpay24_Model_Config', 'compareCcTypes'));
80
-
81
- $types = array();
82
- foreach ($_types as $data) {
83
- $types[$data['code']] = $data['name'];
84
- }
85
- return $types;
86
- }
87
-
88
- public function getPayboxAreaCodes(){
89
- $_types = Mage::getConfig()->getNode('global/payment/paybox/area_code')->asArray();
90
- $types = array();
91
- foreach ($_types as $data) {
92
- $types[$data['code']] = $data['name'];
93
- }
94
- return $types;
95
- }
96
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ class Mpay24_Mpay24_Model_Config extends Mage_Payment_Model_Config {
 
22
 
23
  /**
24
+ * @abstract Retrieve active system payments
25
  *
26
+ * @param mixed $store
27
+ * @return Array
28
  */
29
+ public function getActiveMethods($store=null) {
 
30
  $methods = array();
31
  $config = Mage::getStoreConfig('mpay24', $store);
32
  foreach ($config as $code => $methodConfig) {
38
  }
39
 
40
  /**
41
+ * @abstract Retrieve all system payments
42
  *
43
+ * @param mixed $store
44
+ * @return Array
45
  */
46
+ public function getAllMethods($store=null) {
 
47
  $methods = array();
48
  $config = Mage::getStoreConfig('payment', $store);
49
  foreach ($config as $code => $methodConfig) {
51
  }
52
  return $methods;
53
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
app/code/community/Mpay24/Mpay24/Model/Convert/Order.php DELETED
@@ -1,39 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Convert_Order extends Mage_Sales_Model_Convert_Order
22
- {
23
- /**
24
- * Convert order payment to quote payment
25
- *
26
- * @param Mage_Sales_Model_Order_Payment $payment
27
- * @return Mage_Sales_Model_Quote_Payment
28
- */
29
- public function paymentToQuotePayment(Mage_Sales_Model_Order_Payment $payment, $quotePayment=null)
30
- {
31
- $quotePayment = parent::paymentToQuotePayment($payment, $quotePayment);
32
-
33
- $quotePayment->setMpayAccountNumber($payment->getMpayAccountNumber())
34
- ->setMpayBankCode($payment->getMpayBankCode())
35
- ->setMpayHolder($payment->getMpayHolder());
36
-
37
- return $quotePayment;
38
- }
39
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Convert/Quote.php DELETED
@@ -1,40 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Convert_Quote extends Mage_Sales_Model_Convert_Quote
22
- {
23
-
24
- /**
25
- * Convert quote payment to order payment
26
- *
27
- * @param Mage_Sales_Model_Quote_Payment $payment
28
- * @return Mage_Sales_Model_Quote_Payment
29
- */
30
- public function paymentToOrderPayment(Mage_Sales_Model_Quote_Payment $payment)
31
- {
32
- $orderPayment = parent::paymentToOrderPayment($payment);
33
- $orderPayment->setMpayAccountNumber($payment->getMpayAccountNumber())
34
- ->setMpayBankCode($payment->getMpayBankCode())
35
- ->setMpayHolder($payment->getMpayHolder());
36
-
37
- return $orderPayment;
38
- }
39
-
40
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Elv.php DELETED
@@ -1,162 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Elv extends Mpay24_Mpay24_Model_Method_Abstract {
22
- protected $_code = 'mpay24_elv';
23
- protected $_formBlockType = 'mpay24/form_elv';
24
- protected $_infoBlockType = 'mpay24/info_elv';
25
- protected $_allowCurrencyCode = array('EUR');
26
-
27
-
28
- /**
29
- * Availability options
30
- */
31
- protected $_isGateway = false;
32
- protected $_canAuthorize = true;
33
- protected $_canCapture = false;
34
- protected $_canCapturePartial = false;
35
- protected $_canRefund = false;
36
- protected $_canVoid = false;
37
- protected $_canUseInternal = false;
38
- protected $_canUseCheckout = true;
39
- protected $_canUseForMultishipping = false;
40
- protected $_canSaveCc = false;
41
-
42
- public function _construct(){
43
- parent::_construct();
44
- $this->_init('mpay24/elv');
45
- }
46
-
47
- public function assignData($data){
48
- if (!($data instanceof Varien_Object)) {
49
- $data = new Varien_Object($data);
50
- }
51
- $info = $this->getInfoInstance();
52
- $info->setMpayAccountNumber($data->getMpayAccountNumber())
53
- ->setMpayBankCode($data->getMpayBankCode())
54
- ->setMpayHolder($data->getMpayHolder());
55
-
56
- return $this;
57
- }
58
-
59
- public function validate(){
60
- parent::validate();
61
- if (!$this->getQuote()->getPayment()->getMpayHolder()) {
62
- Mage::throwException(Mage::helper('mpay24')->__('Please fill out the account holder'));
63
- }
64
- if (!$this->getQuote()->getPayment()->getMpayAccountNumber()) {
65
- Mage::throwException(Mage::helper('mpay24')->__('Please fill out the account number'));
66
- }
67
- if (!$this->getQuote()->getPayment()->getMpayBankCode()) {
68
- Mage::throwException(Mage::helper('mpay24')->__('Please fill out the bank code'));
69
- }
70
- $currency_code = $this->getQuote()->getBaseCurrencyCode();
71
- if (!in_array($currency_code,$this->_allowCurrencyCode)) {
72
- Mage::throwException(Mage::helper('mpay24')->__('Selected currency code ('.$currency_code.') is not compatible with Elv'));
73
- }
74
- return $this;
75
- }
76
-
77
- public function authorize(Varien_Object $payment, $amount){
78
- $this->clearSession();
79
- $error = false;
80
- if($amount>0){
81
- // $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_ONLY);
82
- $payment->setAmount($amount);
83
-
84
- $request= $this->_buildRequest($payment);
85
- $result = $this->getApi()->authorize($request);
86
- switch ($result->getResponseCode()) {
87
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_APPROVED:
88
- $payment->setStatus(self::STATUS_APPROVED);
89
- $payment->setMpayTid($result->getTransactionId());
90
- break;
91
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_REDIRECT:
92
- $this->getPayment()->setAuth3DS(true);
93
- break;
94
- default:
95
- switch(urldecode($result->getData('RETURNCODE'))){
96
- case 'SORT_CODE_NOT_CORRECT':
97
- $error = Mage::helper('mpay24')->__('Invalid Bank Code.');
98
- break;
99
- case 'PAYMENT_METHOD_NOT_ACTIVE':
100
- $error = Mage::helper('mpay24')->__('Payment method not active.');
101
- break;
102
- default:
103
- $error = urldecode($result->getData('RETURNCODE'));
104
- break;
105
- }
106
- // $error = Mage::helper('mpay24')->__('Payment authorization error.');
107
- break;
108
- }
109
- }else{
110
- $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
111
- }
112
- Mage::log('error'.$error);
113
- if ($error !== false) {
114
- Mage::throwException($error);
115
- }
116
- return $this;
117
- }
118
-
119
- protected function _buildRequest(Varien_Object $payment) {
120
- $order = $payment->getOrder();
121
- $this->setStore($order->getStoreId());
122
-
123
- $request = $this->getApi()->createBasicRequestObject('ACCEPTPAYMENT');
124
-
125
- if ($order && $order->getIncrementId()) {
126
- $request->setTid($order->getIncrementId()); // TID == OrderNR
127
- }
128
-
129
- $request->setPType('ELV')
130
- ->setIdentifier($payment->getMpayAccountNumber())
131
- ->setSortCode($payment->getMpayBankCode());
132
-
133
- if($payment->getAmount()){
134
- $request->setPrice($payment->getAmount()*100,2);
135
- $request->setCurrency($order->getBaseCurrencyCode());
136
- }
137
-
138
- $request->setClearing('0');
139
-
140
- $request->setSuccessUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SUCCESS_URL,array('_secure' => true)));
141
- $request->setErrorUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::ERROR_URL,array('_secure' => true)));
142
- $request->setConfirmationUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::CONFIRMATION_URL,array('_secure' => true)));
143
-
144
- $billing = $order->getBillingAddress();
145
- if (!empty($billing)) {
146
- $request->setCustomer($billing->getFirstname()." ".$billing->getLastname());
147
- }
148
- $request->setUserField($order->getIncrementId()); // do not change this -> it will be used as order id; USER_FIELD == OrderNR
149
- // $request->setProfile();
150
- // $request->setCustomerId();
151
- // $request->setCustomerEmail();
152
- // $request->setUserField();
153
-
154
- // Mage::log($request);
155
- return $request;
156
- }
157
-
158
- public function getOrderPlaceRedirectUrl(){
159
- return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/payment',array('_secure' => true)) : false;
160
- }
161
- }
162
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Entity/Setup.php CHANGED
@@ -12,36 +12,27 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- //class Mpay24_Mpay24_Model_Entity_Setup extends Mage_Core_Model_Resource_Setup
22
- class Mpay24_Mpay24_Model_Entity_Setup extends Mage_Eav_Model_Entity_Setup
23
- {
24
- public function getDefaultEntities()
25
- {
26
  return array(
27
  'order_payment' => array(
28
- 'entity_model' => 'sales/order_payment',
29
- 'table'=>'sales/order_entity',
30
- 'attributes' => array(
31
- 'parent_id' => array(
32
- 'type'=>'static',
33
- 'backend'=>'sales_entity/order_attribute_backend_child'
34
- ),
35
- 'mpay_tid' => array(),
36
- 'mpay_holder' => array(),
37
- 'mpay_account_number' => array(),
38
- 'mpay_bank_code' => array(),
39
- 'mpay_pb_country_code' => array(),
40
- 'mpay_pb_area_code' => array(),
41
- 'mpay_pb_number' => array()
42
  )
43
  )
44
  );
45
  }
46
  }
47
- ?>
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ class Mpay24_Mpay24_Model_Entity_Setup extends Mage_Eav_Model_Entity_Setup {
22
+ public function getDefaultEntities() {
 
 
 
23
  return array(
24
  'order_payment' => array(
25
+ 'entity_model' => 'sales/order_payment',
26
+ 'table'=>'sales/order_entity',
27
+ 'attributes' => array(
28
+ 'parent_id' => array(
29
+ 'type'=>'static',
30
+ 'backend'=>'sales_entity/order_attribute_backend_child'
31
+ ),
32
+ 'mpay_tid' => array(),
 
 
 
 
 
 
33
  )
34
  )
35
  );
36
  }
37
  }
38
+ ?>
app/code/community/Mpay24/Mpay24/Model/Method/Abstract.php CHANGED
@@ -12,33 +12,18 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- /**
22
- *
23
- * Abstract Payment Module
24
- *
25
- * @author Magento Core Team <core@magentocommerce.com>
26
- */
27
- abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Method_Abstract
28
- {
29
- /**
30
- * Get mpay24 API Model
31
- *
32
- * @return Mpay24_Mpay24_Model_Api_Mpay24
33
- */
34
- public function getApi(){
35
- return Mage::getSingleton('mpay24/api_mpay24');
36
- }
37
 
38
  /**
39
- * Get mpay24 session namespace
40
  *
41
- * @return Mpay24_Mpay24_Model_Session
42
  */
43
  public function getSession() {
44
  return Mage::getSingleton('mpay24/session');
@@ -47,13 +32,12 @@ abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Me
47
  public function clearSession(){
48
  $this->getSession()->set3DSUrl('');
49
  $this->getSession()->setAdditionalInformation('mpay_tid', '');
50
- // $this->getSession()->setMpayTid('');
51
  }
52
 
53
  /**
54
- * Get payment
55
  *
56
- * @return Mage_Sales_Model_Order
57
  */
58
  public function getPayment() {
59
  if (empty($this->_payment)) {
@@ -63,9 +47,9 @@ abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Me
63
  }
64
 
65
  /**
66
- * Get quote
67
  *
68
- * @return Mage_Sales_Model_Order
69
  */
70
  public function getQuote() {
71
  if (empty($this->_quote)) {
@@ -75,9 +59,9 @@ abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Me
75
  }
76
 
77
  /**
78
- * Get checkout
79
  *
80
- * @return Mage_Sales_Model_Order
81
  */
82
  public function getCheckout() {
83
  if (empty($this->_checkout)) {
@@ -87,9 +71,9 @@ abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Me
87
  }
88
 
89
  /**
90
- * Get order model
91
  *
92
- * @return Mage_Sales_Model_Order
93
  */
94
  public function getOrder() {
95
  if (!$this->_order) {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ abstract class Mpay24_Mpay24_Model_Method_Abstract extends Mage_Payment_Model_Method_Abstract {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
  /**
24
+ * @abstract Get mpay24 session namespace
25
  *
26
+ * @return Mpay24_Mpay24_Model_Session
27
  */
28
  public function getSession() {
29
  return Mage::getSingleton('mpay24/session');
32
  public function clearSession(){
33
  $this->getSession()->set3DSUrl('');
34
  $this->getSession()->setAdditionalInformation('mpay_tid', '');
 
35
  }
36
 
37
  /**
38
+ * @abstract Get payment
39
  *
40
+ * @return Mage_Sales_Model_Order
41
  */
42
  public function getPayment() {
43
  if (empty($this->_payment)) {
47
  }
48
 
49
  /**
50
+ * @abstract Get quote
51
  *
52
+ * @return Mage_Sales_Model_Order
53
  */
54
  public function getQuote() {
55
  if (empty($this->_quote)) {
59
  }
60
 
61
  /**
62
+ * @abstract Get checkout
63
  *
64
+ * @return Mage_Sales_Model_Order
65
  */
66
  public function getCheckout() {
67
  if (empty($this->_checkout)) {
71
  }
72
 
73
  /**
74
+ * @abstract Get order model
75
  *
76
+ * @return Mage_Sales_Model_Order
77
  */
78
  public function getOrder() {
79
  if (!$this->_order) {
app/code/community/Mpay24/Mpay24/Model/Method/Cc.php DELETED
@@ -1,198 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
-
22
- class Mpay24_Mpay24_Model_Method_Cc extends Mpay24_Mpay24_Model_Method_Abstract {
23
- protected $_formBlockType = 'mpay24/form_cc';
24
- protected $_infoBlockType = 'mpay24/info_cc';
25
- protected $_canSaveCc = false;
26
-
27
-
28
- /**
29
- * Assign data to info model instance
30
- *
31
- * @param mixed $data
32
- * @return Mage_Payment_Model_Info
33
- */
34
- public function assignData($data) {
35
- if (!($data instanceof Varien_Object)) {
36
- $data = new Varien_Object($data);
37
- }
38
- $info = $this->getInfoInstance();
39
- $info->setCcType($data->getCcType())
40
- ->setCcOwner($data->getCcOwner())
41
- ->setCcLast4(substr($data->getCcNumber(), -4))
42
- ->setCcNumber($data->getCcNumber())
43
- ->setCcCid($data->getCcCid())
44
- ->setCcExpMonth($data->getCcExpMonth())
45
- ->setCcExpYear($data->getCcExpYear());
46
- return $this;
47
- }
48
-
49
- /**
50
- * Prepare info instance for save
51
- *
52
- * @return Mage_Payment_Model_Abstract
53
- */
54
- public function prepareSave() {
55
- $info = $this->getInfoInstance();
56
- if ($this->_canSaveCc) {
57
- $info->setCcNumberEnc($info->encrypt($info->getCcNumber()));
58
- }
59
- //$info->setCcCidEnc($info->encrypt($info->getCcCid()));
60
- $info->setCcNumber(null)
61
- ->setCcCid(null);
62
- return $this;
63
- }
64
-
65
- /**
66
- * Validate payment method information object
67
- *
68
- * @param Mage_Payment_Model_Info $info
69
- * @return Mage_Payment_Model_Abstract
70
- */
71
- public function validate() {
72
- /*
73
- * calling parent validate function
74
- */
75
- parent::validate();
76
-
77
- $info = $this->getInfoInstance();
78
- $errorMsg = false;
79
- $availableTypes = explode(',',$this->getConfigData('cctypes'));
80
-
81
- $ccNumber = $info->getCcNumber();
82
-
83
- // remove credit card number delimiters such as "-" and space
84
- $ccNumber = preg_replace('/[\-\s]+/', '', $ccNumber);
85
- $info->setCcNumber($ccNumber);
86
-
87
- $ccType = '';
88
-
89
- if (!$this->_validateExpDate($info->getCcExpYear(), $info->getCcExpMonth())) {
90
- $errorCode = 'ccsave_expiration,ccsave_expiration_yr';
91
- $errorMsg = $this->_getHelper()->__('Incorrect credit card expiration date');
92
- }
93
-
94
- if (in_array($info->getCcType(), $availableTypes)){
95
- if ($this->validateCcNum($ccNumber)
96
- // Other credit card type number validation
97
- || ($this->OtherCcType($info->getCcType()) && $this->validateCcNumOther($ccNumber))) {
98
-
99
- $ccType = 'OT';
100
- $ccTypeRegExpList = array(
101
- 'VI' => '/^4[0-9]{12}([0-9]{3})?$/', // Visa
102
- 'MC' => '/^5[1-5][0-9]{14}$/', // Master Card
103
- 'AE' => '/^3[47][0-9]{13}$/', // American Express
104
- 'DI' => '/^6011[0-9]{12}$/', // Discovery
105
- 'DC' => '/^3(?:0[0-5]|[68][0-9])[0-9]{11}$/', // Diners Club
106
- 'JC' => '/(^3[0-9]{15}$)|(^(2131|1800)[0-9]{11}$)/', // JCB
107
- 'SS' => '/^((6759[0-9]{12})|(49[013][1356][0-9]{13})|(633[34][0-9]{12})|(633110[0-9]{10})|(564182[0-9]{10}))([0-9]{2,3})?$/'
108
- );
109
-
110
- foreach ($ccTypeRegExpList as $ccTypeMatch=>$ccTypeRegExp) {
111
- if (preg_match($ccTypeRegExp, $ccNumber)) {
112
- $ccType = $ccTypeMatch;
113
- break;
114
- }
115
- }
116
-
117
- if (!$this->OtherCcType($info->getCcType()) && $ccType!=$info->getCcType()) {
118
- $errorCode = 'ccsave_cc_type,ccsave_cc_number';
119
- $errorMsg = $this->_getHelper()->__('Credit card number mismatch with credit card type');
120
- }
121
- } else {
122
- $errorCode = 'ccsave_cc_number';
123
- $errorMsg = $this->_getHelper()->__('Invalid Credit Card Number');
124
- }
125
-
126
- } else {
127
- $errorCode = 'ccsave_cc_type';
128
- $errorMsg = $this->_getHelper()->__('Credit card type is not allowed for this payment method');
129
- }
130
-
131
- if($errorMsg){
132
- Mage::throwException($errorMsg);
133
- //throw Mage::exception('Mage_Payment', $errorMsg, $errorCode);
134
- }
135
-
136
- return $this;
137
- }
138
-
139
- protected function _validateExpDate($expYear, $expMonth) {
140
- $date = Mage::app()->getLocale()->date();
141
- if (!$expYear || !$expMonth || ($date->compareYear($expYear)==1) || ($date->compareYear($expYear) == 0 && ($date->compareMonth($expMonth)==1 ) )) {
142
- return false;
143
- }
144
- return true;
145
- }
146
-
147
- public function OtherCcType($type) {
148
- return $type=='OT';
149
- }
150
-
151
- /**
152
- * Validate credit card number
153
- *
154
- * @param string $cc_number
155
- * @return bool
156
- */
157
- public function validateCcNum($ccNumber) {
158
- $cardNumber = strrev($ccNumber);
159
- $numSum = 0;
160
-
161
- for ($i=0; $i<strlen($cardNumber); $i++) {
162
- $currentNum = substr($cardNumber, $i, 1);
163
-
164
- /**
165
- * Double every second digit
166
- */
167
- if ($i % 2 == 1) {
168
- $currentNum *= 2;
169
- }
170
-
171
- /**
172
- * Add digits of 2-digit numbers together
173
- */
174
- if ($currentNum > 9) {
175
- $firstNum = $currentNum % 10;
176
- $secondNum = ($currentNum - $firstNum) / 10;
177
- $currentNum = $firstNum + $secondNum;
178
- }
179
-
180
- $numSum += $currentNum;
181
- }
182
-
183
- /**
184
- * If the total has no remainder it's OK
185
- */
186
- return ($numSum % 10 == 0);
187
- }
188
-
189
- /**
190
- * Other credit cart type number validation
191
- *
192
- * @param string $ccNumber
193
- * @return boolean
194
- */
195
- public function validateCcNumOther($ccNumber) {
196
- return preg_match('/^\\d+$/', $ccNumber);
197
- }
198
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Method/Selectpayment.php CHANGED
@@ -12,482 +12,56 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- abstract class Mpay24_Mpay24_Model_Method_Selectpayment extends Mpay24_Mpay24_Model_Method_Abstract {
22
-
23
- public function authorize(Varien_Object $payment, $amount){
 
 
 
 
 
 
 
 
 
 
 
 
24
  $this->clearSession();
25
  $error = false;
26
- if($amount>0){
27
- // $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_ONLY);
28
  $payment->setAmount($amount);
29
 
30
- $soapRequest = $this->_buildSoapRequest($payment);
31
- $soapResult = $this->getApi()->authorize($soapRequest);
 
32
 
33
  $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
34
 
35
- switch ($soapResult->getResponseCode()) {
36
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_APPROVED:
37
- $payment->setStatus(self::STATUS_APPROVED);
38
- $payment->setAdditionalInformation('mpay_tid', $soapResult->getTransactionId());
39
- break;
40
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_REDIRECT:
41
- $this->getPayment()->setAuth3DS(true);
42
- $payment->setAdditionalInformation('mpay_tid', $soapResult->getTransactionId());
43
- $payment->setAdditionalInformation('user_field', Mpay24_Mpay24_Model_Api_Mpay24::MAGENTO_VERSION.substr($payment->getOrder()->getIncrementId(),0,100).'_'.date('Y-m-d'));
44
- break;
45
- default:
46
- $error = urldecode($soapResult->getData('EXTERNALSTATUS'));
47
- break;
48
- }
49
- }else{
50
- $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
51
- }
52
- if ($error !== false) {
53
- Mage::throwException('Please contact the merchant,'."\n".'this payment is at the moment not possible!'."\n".'ERROR: '.$error);
54
- }
55
- }
56
-
57
- protected function _buildRequest(Varien_Object $payment){
58
- $order = $payment->getOrder();
59
- $this->setStore($order->getStoreId());
60
-
61
- $request = $this->getApi()->createBasicRequestObject('SELECTPAYMENT');
62
- $request->setMdxi($this->makeMDXI($order));
63
-
64
- return $request;
65
- }
66
-
67
- protected function _buildSoapRequest(Varien_Object $payment){
68
- $order = $payment->getOrder();
69
- $this->setStore($order->getStoreId());
70
-
71
- $request = $this->getApi()->createBasicSoapRequestObject('SELECTPAYMENT');
72
- $mdxi = str_replace('"', '\'"', $this->makeMDXI($order));
73
- $mdxi = $this->makeMDXI($order);
74
-
75
- $request->setMdxi($mdxi);
76
- $request->setTid($order->getIncrementId());
77
- $request->setCurrency($order->getBaseCurrencyCode());
78
-
79
- return $request;
80
- }
81
-
82
- public function _buildSoapTransactionStatusRequest(Varien_Object $payment){
83
- $order = $payment->getOrder();
84
- $this->setStore($order->getStoreId());
85
-
86
- $transactionStatusRequest = $this->getApi()->createBasicSoapRequestObject('TID_TRANSACTIONSTATUS');
87
-
88
- $transactionStatusRequest->setTid($order->getIncrementId());
89
-
90
- return $transactionStatusRequest;
91
- }
92
-
93
- private function _getBrand($ccType){
94
- $brand = '';
95
- switch ($ccType){
96
- case 'AE':
97
- $brand = 'AMEX';
98
- break;
99
- case 'DC':
100
- $brand = 'DINERS';
101
- break;
102
- case 'JC':
103
- $brand = 'JCB';
104
- break;
105
- case 'MC':
106
- $brand = 'MASTERCARD';
107
- break;
108
- case 'VI':
109
- $brand = 'VISA';
110
- break;
111
- }
112
- return $brand;
113
- }
114
-
115
- public function getActivePaymentTypes(){
116
- $newLine = "\n";
117
- $tab = "\t";
118
- $ret = '';
119
- $inactivePayments = '';
120
- $inactiveCcBrands = array();
121
- $inactiveElvCountries = array();
122
- $inactiveEpsBanks = array();
123
-
124
-
125
- if(!Mage::getStoreConfig('payment/mpay24_sp_cc/in_use'))
126
- $inactivePayments= 'cc,';
127
- else {
128
- $inactiveCcBrands = array("AE" => "AE", "DC" => "DC", "JC" => "JC", "MC" => "MC", "VI" => "VI");
129
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_cc/cctypes')) as $b):
130
- unset($inactiveCcBrands[$b]);
131
- endforeach;
132
- }
133
- if(!Mage::getStoreConfig('payment/mpay24_sp_elv/in_use'))
134
- $inactivePayments.= 'elv,';
135
- else {
136
- $inactiveElvCountries = array("AT" => "AT", "DE" => "DE", "NL" => "NL");
137
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_elv/specificcountry')) as $c):
138
- unset($inactiveElvCountries[$c]);
139
- endforeach;
140
- }
141
- if(!Mage::getStoreConfig('payment/mpay24_sp_eps/in_use'))
142
- $inactivePayments.= 'eps,';
143
- else {
144
- $inactiveEpsBanks = array("ARZ" => "ARZ", "BA" => "BA", "BAWAG" => "BAWAG", "ERSTE" => "ERSTE", "HYPO" => "HYPO", "RZB" => "RZB");
145
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_eps/epstypes')) as $b):
146
- unset($inactiveEpsBanks[$b]);
147
- endforeach;
148
- }
149
- if(!Mage::getStoreConfig('payment/mpay24_sp_giropay/in_use'))
150
- $inactivePayments.= 'giropay,';
151
- if(!Mage::getStoreConfig('payment/mpay24_sp_maestro/in_use'))
152
- $inactivePayments.= 'maestro,';
153
- if(!Mage::getStoreConfig('payment/mpay24_sp_paybox/in_use'))
154
- $inactivePayments.= 'pb,';
155
- if(!Mage::getStoreConfig('payment/mpay24_sp_psc/in_use'))
156
- $inactivePayments.= 'psc,';
157
- if(!Mage::getStoreConfig('payment/mpay24_sp_paypal/in_use'))
158
- $inactivePayments.= 'paypal,';
159
- if(!Mage::getStoreConfig('payment/mpay24_sp_mpass/in_use'))
160
- $inactivePayments.= 'mpass,';
161
- if(!Mage::getStoreConfig('payment/mpay24_sp_cashTicket/in_use'))
162
- $inactivePayments.= 'cash-ticket';
163
- $ret.=$tab.'<PaymentTypes Enable="false">'.$newLine;
164
- if(!empty($inactiveCcBrands))
165
- foreach($inactiveCcBrands as $brand => $value):
166
- $ret.= $tab.$tab.'<Payment Type="CC" Brand="'.$this->_getBrand($inactiveCcBrands[$brand]).'"/>'.$newLine;
167
- endforeach;
168
- if(!empty($inactiveEpsBanks))
169
- foreach($inactiveEpsBanks as $bank => $value):
170
- $ret.= $tab.$tab.'<Payment Type="EPS" Brand="'.$bank.'"/>'.$newLine;
171
- endforeach;
172
- if(!empty($inactiveElvCountries))
173
- foreach($inactiveElvCountries as $country => $value):
174
- if($country === 'DE')
175
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="ATOS"/>'.$newLine;
176
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="HOBEX-'.$country.'"/>'.$newLine;
177
- endforeach;
178
- else{
179
- $inactiveElvCountries = array("AT" => "AT", "DE" => "DE", "NL" => "NL");
180
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_elv/specificcountry')) as $c):
181
- if($c === $this->getQuote()->getBillingAddress()->getCountry())
182
- unset($inactiveElvCountries[$c]);
183
- endforeach;
184
- foreach($inactiveElvCountries as $country => $value):
185
- if($country === "DE")
186
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="ATOS"/>'.$newLine;
187
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="HOBEX-'.$country.'"/>'.$newLine;
188
- endforeach;
189
- }
190
- if($inactivePayments !== ''){
191
- if(strripos($inactivePayments, ',') === strlen($inactivePayments)-1)
192
- $inactivePayments = substr($inactivePayments, 0, strlen($inactivePayments)-1);
193
-
194
- foreach(explode(',',$inactivePayments) as $payment):
195
- $ret.= $tab.$tab.'<Payment Type="'.strtoupper($payment).'"/>'.$newLine;
196
- endforeach;
197
-
198
- }
199
- $ret.=$tab.'</PaymentTypes>'.$newLine;
200
- return $ret;
201
- }
202
-
203
- protected function makeMDXI($order){
204
- $newLine = "\n";
205
- $tab = "\t";
206
- $stylehead = "font-family:Verdana,Arial,sans-serif;font-size: 10px;background:#336699;color:#FFFFFF;font-weight:bold;border:1px solid #ffffff;border-top:1px solid #7b9ebd;border:1px solid #7b9ebd;";
207
-
208
- $mdxi= '<?xml version="1.0" encoding="UTF-8"?>'.$newLine;
209
- $mdxi.= '<Order';
210
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24sporder/style').'"' : "";
211
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/logostyle')) ? ' LogoStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/logostyle').'"' : "";
212
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pageheaderstyle')) ? ' PageHeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pageheaderstyle').'"' : "";
213
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pagecaptionstyle')) ? ' PageCaptionStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pagecaptionstyle').'"' : "";
214
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pagestyle')) ? ' PageStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pagestyle').'"' : "";
215
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/inputfieldsstyle')) ? ' InputFieldsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/inputfieldsstyle').'"' : "";
216
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/dropdownlistsstyle')) ? ' DropDownListsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/dropdownlistsstyle').'"' : "";
217
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/buttonsstyle')) ? ' ButtonsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/buttonsstyle').'"' : "";
218
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/errorsstyle')) ? ' ErrorsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/errorsstyle').'"' : "";
219
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/successtitlestyle')) ? ' SuccessTitleStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/successtitlestyle').'"' : "";
220
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/errortitlestyle')) ? ' ErrorTitleStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/errortitlestyle').'"' : "";
221
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/footerstyle')) ? ' FooterStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/footerstyle').'"' : "";
222
- $mdxi.= '>'.$newLine;
223
- $mdxi.= $tab.'<UserField>'.Mpay24_Mpay24_Model_Api_Mpay24::MAGENTO_VERSION.substr($order->getIncrementId(),0,100).'_'.date('Y-m-d').'</UserField>'.$newLine;
224
- $mdxi.= $tab.'<Tid>'.substr($order->getIncrementId(),0,32).'</Tid>'.$newLine;
225
- $lang = explode('_', Mage::getStoreConfig('general/locale/code'));
226
- $mdxi.= $tab.'<TemplateSet Language="'.strtoupper($lang[0]).'"/>'.$newLine;
227
- $mdxi.= $this->getActivePaymentTypes();
228
- $conf = explode(',',Mage::getStoreConfig('mpay24/mpay24spsc/sc_row'));
229
-
230
- $mdxi.= $tab.'<ShoppingCart';
231
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_style').'"' : "";
232
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_header').'"' : "";
233
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_headerstyle').'"' : "";
234
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_captionstyle')) ? ' CaptionStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_captionstyle').'"' : "";
235
- if(in_array('Number',$conf)){
236
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberheader')) ? ' NumberHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberheader').'"' : "";
237
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberstyle')) ? ' NumberStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberstyle').'"' : "";
238
- }
239
- if(in_array('ProductNr',$conf)){
240
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrheader')) ? ' ProductNrHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrheader').'"' : "";
241
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrstyle')) ? ' ProductNrStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrstyle').'"' : "";
242
- }
243
- if(in_array('Description',$conf)){
244
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionheader')) ? ' DescriptionHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionheader').'"' : "";
245
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionstyle')) ? ' DescriptionStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionstyle').'"' : "";
246
- }
247
- if(in_array('Package',$conf)){
248
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_packageheader')) ? ' PackageHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_packageheader').'"' : "";
249
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_packagestyle')) ? ' PackageStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_packagestyle').'"' : "";
250
- }
251
- if(in_array('Quantity',$conf)){
252
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantityheader')) ? ' QuantityHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantityheader').'"' : "";
253
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantitystyle')) ? ' QuantityStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantitystyle').'"' : "";
254
- }
255
- if(in_array('ItemPrice',$conf)){
256
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempriceheader')) ? ' ItemPriceHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempriceheader').'"' : "";
257
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempricestyle')) ? ' ItemPriceStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempricestyle').'"' : "";
258
- }
259
- if(in_array('Price',$conf)){
260
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_priceheader')) ? ' PriceHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_priceheader').'"' : "";
261
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_pricestyle')) ? ' PriceStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_pricestyle').'"' : "";
262
- }
263
- $mdxi.= '>'.$newLine;
264
-
265
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/description')) ? $tab.'<Description>'.Mage::getStoreConfig('mpay24/mpay24spsc/description').'</Description>' : "";
266
-
267
- $style1 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style1');
268
- $style2 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style2');
269
- $ret = "";
270
- $linecount = 0;
271
-
272
- foreach($order->getAllItems() as $_item):
273
- $linecount++;
274
- $style = ($linecount % 2== 1) ? $style1 : $style2;
275
- if($style !== '')
276
- $style = "Style=\"".$style."\"";
277
- $xmlitem = $newLine.$tab.$tab."<Item>".$newLine;
278
- $xmlitem .= (in_array('Number',$conf)) ? $tab.$tab.$tab."<Number ".$style.">".$linecount."</Number>".$newLine : "";
279
- $xmlitem .= (in_array('ProductNr',$conf)) ? $tab.$tab.$tab."<ProductNr ".$style.">".$this->xmlentities($_item->getData('sku'))."</ProductNr>".$newLine : "";
280
- $xmlitem .= (in_array('Description',$conf)) ? $tab.$tab.$tab."<Description ".$style.">".$this->xmlentities($_item->getData('name'))."</Description>".$newLine : "";
281
- $xmlitem .= (in_array('Package',$conf)) ? $tab.$tab.$tab."<Package ".$style.">"."</Package>".$newLine : "";
282
- $xmlitem .= (in_array('Quantity',$conf)) ? $tab.$tab.$tab."<Quantity ".$style.">".(int)$_item->getQtyOrdered()."</Quantity>".$newLine : "";
283
- if(Mage::getStoreConfig('tax/cart_display/price') == 2 || Mage::getStoreConfig('tax/cart_display/price') == 3){
284
- $xmlitem .= (in_array('ItemPrice',$conf)) ? $tab.$tab.$tab."<ItemPrice ".$style." Tax='".number_format($_item->getTaxAmount(),2,'.','')."'>".number_format($_item->getPriceInclTax()*1,2,'.','')."</ItemPrice>".$newLine : "";
285
  } else
286
- $xmlitem .= (in_array('ItemPrice',$conf)) ? $tab.$tab.$tab."<ItemPrice ".$style.">".number_format(($_item->getData('price')*1),2,'.','')."</ItemPrice>".$newLine : "";
287
- $xmlitem .= $tab.$tab."</Item>".$newLine;
288
- $ret .= $xmlitem;
289
- endforeach;
290
- $mdxi.= $ret;
291
-
292
- $mdxi.= $tab.'<SubTotal';
293
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_header').'"' : "";
294
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_headerstyle').'"' : "";
295
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_style').'"' : "";
296
- if(Mage::getStoreConfig('tax/cart_display/subtotal') == 2 || Mage::getStoreConfig('tax/cart_display/subtotal') == 3)
297
- $mdxi.= '>'.number_format($order->getSubtotalInclTax(),2,'.','').'</SubTotal>'.$newLine;
298
- else
299
- $mdxi.= '>'.number_format($order->getData('subtotal'),2,'.','').'</SubTotal>'.$newLine;
300
-
301
- if(number_format($order->getData('discount_amount'),2,'.','') !== '0.00'){
302
- $mdxi.= $tab.$tab.'<Discount';
303
- $mdxi.= ' Header="'.$order->getData('discount_description').'"';
304
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/discount_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/discount_headerstyle').'"' : "";
305
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/discount_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/discount_style').'"' : "";
306
- $mdxi.= '>'.number_format($order->getData('discount_amount'), 2, '.', '').'</Discount>'.$newLine;
307
- }
308
-
309
- if(number_format($order->getData('shipping_amount'),2,'.','') !== '0.00'){
310
- $mdxi.=$tab. $tab.'<ShippingCosts';
311
- $mdxi.= ' Header="'.$order->getData('shipping_description').'"';
312
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_headerstyle').'"' : "";
313
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_style').'"' : "";
314
- if(Mage::getStoreConfig('tax/cart_display/shipping') == 2 || Mage::getStoreConfig('tax/cart_display/shipping') == 3)
315
- $mdxi.= '>'.number_format($order->getShippingInclTax(), 2, '.', '').'</ShippingCosts>'.$newLine;
316
- else
317
- $mdxi.= '>'.number_format($order->getData('shipping_amount'), 2, '.', '').'</ShippingCosts>'.$newLine;
318
- }
319
-
320
- if(number_format($order->getData('tax_amount'),2,'.','') !== '0.00'){
321
- $array = $order->getFullTaxInfo();
322
- $taxInfo = array();
323
- foreach($array as $a){
324
- $taxArray = $a;
325
- foreach(array_keys($taxArray) as $taxKey){
326
- $taxInfo[$taxKey] = $taxArray[$taxKey];
327
- }
328
- $mdxi.= $tab.$tab.'<Tax';
329
- $mdxi.= ' Header="'.$taxArray['id'].'"';
330
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/tax_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/tax_headerstyle').'"' : "";
331
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/tax_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/tax_style').'"' : "";
332
- $mdxi.= ' Percent="'.number_format($taxArray['rates'][0]['percent'],0,'.','').'"';
333
- $mdxi.= '>'.number_format($taxArray['amount'],2,'.','').'</Tax>'.$newLine;
334
- }
335
- }
336
-
337
- $mdxi.= $tab.'</ShoppingCart>'.$newLine;
338
-
339
- $billingCountry = "";
340
- $billingCountryCode = "";
341
- $shippingCountry = "";
342
- $shippingCountryCode = "";
343
-
344
- foreach(Mage::app()->getLocale()->getOptionCountries() as $c)
345
- if ($c['value'] == $order->getBillingAddress()->getCountry()) {
346
- $billingCountry = $c['label'];
347
- $billingCountryCode = $c['value'];
348
- break;
349
  }
350
 
351
- if($order->getShippingAddress())
352
- foreach(Mage::app()->getLocale()->getOptionCountries() as $c){
353
- if ($c['value'] == $order->getShippingAddress()->getCountry()) {
354
- $shippingCountry = $c['label'];
355
- $shippingCountryCode = $c['value'];
356
- break;
357
- }
358
- }
359
-
360
- $mdxi.= $tab.'<Price';
361
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_header').'"' : "";
362
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_headerstyle').'"' : "";
363
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_style').'"' : "";
364
- $mdxi.= '>'.number_format($order->getData('grand_total'),2,'.','').'</Price>'.$newLine;
365
-
366
- $mdxi.= $tab.'<Currency>'.$this->xmlentities($order->getBaseCurrencyCode()).'</Currency>'.$newLine;
367
-
368
- $mdxi.= $tab.'<BillingAddr Mode="'.Mage::getStoreConfig('mpay24/mpay24as/billingAddressMode').'">'.$newLine;
369
-
370
- if($order->getShippingAddress() && $this->xmlentities($order->getShippingAddress()->getFirstname()) === '')
371
- $billingName = $this->xmlentities($order->getBillingAddress()->getLastname());
372
- elseif($this->xmlentities($order->getBillingAddress()->getLastname()) === '')
373
- $billingName = $this->xmlentities($order->getBillingAddress()->getFirstname());
374
- else
375
- $billingName = $this->xmlentities($order->getBillingAddress()->getFirstname()).' '.$this->xmlentities($order->getBillingAddress()->getLastname());
376
- $mdxi.= $tab.$tab.'<Name>'.substr($billingName,0,50).'</Name>'.$newLine;
377
-
378
- $billingAdress = $this->xmlentities($order->getBillingAddress()->getStreetFull());
379
-
380
- $billingStreet = $this->splitAdress($billingAdress);
381
-
382
- $mdxi.= $tab.$tab.$billingStreet;
383
- $mdxi.= $tab.$tab.'<Zip>'.substr($this->xmlentities($order->getBillingAddress()->getPostcode()),0,50).'</Zip>'.$newLine;
384
- $mdxi.= $tab.$tab.'<City>'.substr($this->xmlentities($order->getBillingAddress()->getCity()),0,50).'</City>'.$newLine;
385
- $mdxi.= $tab.$tab.'<Country Code="'.$this->xmlentities($billingCountryCode).'"/>'.$newLine;
386
- $mdxi.= $tab.'</BillingAddr>'.$newLine;
387
-
388
- if($order->getShippingAddress()){
389
- $mdxi.= $tab.'<ShippingAddr Mode="ReadOnly">'.$newLine;
390
- if($this->xmlentities($order->getShippingAddress()->getFirstname()) === '')
391
- $shippingName = $this->xmlentities($order->getShippingAddress()->getLastname());
392
- elseif($this->xmlentities($order->getShippingAddress()->getLastname()) === '')
393
- $shippingName = $this->xmlentities($order->getShippingAddress()->getFirstname());
394
- else
395
- $shippingName = $this->xmlentities($order->getShippingAddress()->getFirstname()).' '.$this->xmlentities($order->getShippingAddress()->getLastname());
396
- $mdxi.= $tab.$tab.'<Name>'.substr($shippingName,0,50).'</Name>'.$newLine;
397
-
398
- $shippingAdress = $this->xmlentities($order->getShippingAddress()->getStreetFull());
399
-
400
- $shippingStreet = $this->splitAdress($shippingAdress);
401
-
402
- $mdxi.= $tab.$tab.$shippingStreet;
403
- $mdxi.= $tab.$tab.'<Zip>'.substr($this->xmlentities($order->getShippingAddress()->getPostcode()),0,50).'</Zip>'.$newLine;
404
- $mdxi.= $tab.$tab.'<City>'.substr($this->xmlentities($order->getShippingAddress()->getCity()),0,50).'</City>'.$newLine;
405
- $mdxi.= $tab.$tab.'<Country Code="'.$this->xmlentities($shippingCountryCode).'"/>'.$newLine;
406
- $mdxi.= $tab.'</ShippingAddr>'.$newLine;
407
  }
408
-
409
- $mdxi.= $tab.'<URL>'.$newLine;
410
- if(Mage::helper('customer')->isLoggedIn())
411
- $mdxi.= $tab.$tab.'<Success>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SUCCESS_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Success>'.$newLine;
412
- else
413
- $mdxi.= $tab.$tab.'<Success>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::GUEST_SUCCESS_URL,array('_secure' => true, '_query' => "tid=" . substr($order->getIncrementId(),0,32) )).'</Success>'.$newLine;
414
- $mdxi.= $tab.$tab.'<Error>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_ERROR_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Error>'.$newLine;
415
- $mdxi.= $tab.$tab.'<Confirmation>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CONFIRMATION_URL,array('_secure' => true)).'</Confirmation>'.$newLine;
416
- $mdxi.= $tab.$tab.'<Cancel>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CANCEL_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Cancel>'.$newLine;
417
- $mdxi.= $tab.'</URL>'.$newLine;
418
-
419
- $mdxi.= '</Order>';
420
-
421
- return $mdxi;
422
  }
423
-
424
  public function getOrderPlaceRedirectUrl() {
425
- return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/redirect',array('_secure' => true)) : false;
426
- }
427
-
428
- private function xmlentities($string){
429
- static $trans;
430
- if (!isset($trans)) {
431
- $trans = get_html_translation_table(HTML_SPECIALCHARS);
432
- foreach ($trans as $key => $value)
433
- $trans[$key] = '&#'.ord($key).';';
434
-
435
- // dont translate the '&' in case it is part of &xxx;
436
- $trans[chr(38)] = '&';
437
- }
438
-
439
- //after the initial translation, _do_ map standalone '&' into '&#38;'
440
- return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&#38;" , strtr($string, $trans));
441
- }
442
-
443
- private function splitAdress($adress, $str2=null){
444
- $posNewLine = strpos($adress, "\n");
445
- $str = '';
446
- if($posNewLine === false){
447
- if(strlen($adress) <= 50){
448
- if($str2 !== true)
449
- $str.= '<Street>'.$adress.'</Street>'."\n";
450
- else
451
- $str.= "\t"."\t".'<Street2>'.$adress.'</Street2>'."\n";
452
- }
453
- else{
454
- $street1before = substr($adress, 0, 50);
455
- $posLastInterval1 = strrpos($street1before, " ");
456
-
457
- $street1 = substr($street1before, 0, $posLastInterval1);
458
-
459
- $street2before = substr(substr($street1before, $posLastInterval1).substr($adress, 50), 1, 50);
460
- $posLastInterval2 = strrpos($street2before, " ");
461
- $street2 = substr($street2before, 0, $posLastInterval2);
462
-
463
- if($str2 === null){
464
- $str.= '<Street>'.$street1.'</Street>'."\n";
465
- $str.= "\t"."\t".'<Street2>'.$street2.'</Street2>'."\n";
466
- }
467
- elseif($str2 === false){
468
- if($posLastInterval1){
469
- $str.= '<Street>'.$street1.'</Street>'."\n";
470
- } else {
471
- $str.= '<Street>'.$street1before.'</Street>'."\n";
472
- }
473
- }
474
- else{
475
- if($posLastInterval1){
476
- $str.= "\t"."\t".'<Street2>'.$street1.'</Street2>'."\n";
477
- } else {
478
- $str.= '<Street2>'.$street1before.'</Street2>'."\n";
479
- }
480
- }
481
- }
482
- }
483
- else{
484
- $array = explode("\n", $adress);
485
- $adress1 = $array[0];
486
- $str.= $this->splitAdress($adress1, false);
487
-
488
- $adress2 = $array[1];
489
- $str.= $this->splitAdress($adress2, true);
490
- }
491
- return $str;
492
  }
493
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
22
+
23
+ abstract class Mpay24_Mpay24_Model_Method_Selectpayment extends Mpay24_Mpay24_Model_Method_Abstract{
24
+
25
+ public function authorize(Varien_Object $payment, $amount) {
26
+ $ps = false;
27
+ $type = "";
28
+ $brand = "";
29
+
30
+ if(isset($_REQUEST['mpay24_ps']) && $_REQUEST['mpay24_ps'] != 'false') {
31
+ $ps = true;
32
+ $brand = substr($_REQUEST['mpay24_ps'], 10, strpos($_REQUEST['mpay24_ps'], "_", 10)-10);
33
+ $type = substr($_REQUEST['mpay24_ps'], strpos($_REQUEST['mpay24_ps'], "_", 10+strlen($brand))+1);
34
+ }
35
+
36
  $this->clearSession();
37
  $error = false;
38
+
39
+ if($amount>0) {
40
  $payment->setAmount($amount);
41
 
42
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
43
+ $mPay24MagentoShop->setVariables($payment->getOrder(), $ps, $type, $brand);
44
+ $soapResult = $mPay24MagentoShop->pay();
45
 
46
  $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
47
 
48
+ if($soapResult->getGeneralResponse()->getStatus() == "OK") {
49
+ $this->getPayment()->setAuth(true);
50
+ $this->getSession()->setUrl($soapResult->getLocation());
51
+ $payment->setAdditionalInformation('user_field', MPay24MagentoShop::MAGENTO_VERSION.substr($payment->getOrder()->getIncrementId(),0,100).'_'.date('Y-m-d'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  } else
53
+ $error = $soapResult->getGeneralResponse()->getReturnCode();
54
+ } else {
55
+ $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
 
58
+ if ($error !== false) {
59
+ Mage::log($error, 10);
60
+ Mage::throwException(Mage::helper('mpay24')->__('Please contact the merchant,')."\n".Mage::helper('mpay24')->__('this payment is not possible at the moment!'));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
63
+
64
  public function getOrderPlaceRedirectUrl() {
65
+ return ($this->getPayment()->getAuth()) ? Mage::getUrl('mpay24/payment/redirect',array('_secure' => true)) : false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
  }
67
+ }
app/code/community/Mpay24/Mpay24/Model/Method/Selectpayment.php.new~ DELETED
@@ -1,493 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- abstract class Mpay24_Mpay24_Model_Method_Selectpayment extends Mpay24_Mpay24_Model_Method_Abstract {
22
-
23
- public function authorize(Varien_Object $payment, $amount){
24
- $this->clearSession();
25
- $error = false;
26
- if($amount>0){
27
- // $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_ONLY);
28
- $payment->setAmount($amount);
29
-
30
- $soapRequest = $this->_buildSoapRequest($payment);
31
- $soapResult = $this->getApi()->authorize($soapRequest);
32
-
33
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
34
-
35
- switch ($soapResult->getResponseCode()) {
36
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_APPROVED:
37
- $payment->setStatus(self::STATUS_APPROVED);
38
- $payment->setAdditionalInformation('mpay_tid', $soapResult->getTransactionId());
39
- break;
40
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_REDIRECT:
41
- $this->getPayment()->setAuth3DS(true);
42
- $payment->setAdditionalInformation('mpay_tid', $soapResult->getTransactionId());
43
- $payment->setAdditionalInformation('user_field', "Magento 1.1.1 ".substr($payment->getOrder()->getIncrementId(),0,100).'_'.date('Y-m-d'));
44
- break;
45
- default:
46
- $error = urldecode($soapResult->getData('EXTERNALSTATUS'));
47
- break;
48
- }
49
- }else{
50
- $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
51
- }
52
- if ($error !== false) {
53
- Mage::throwException('Please contact the merchant,'."\n".'this payment is at the moment not possible!'."\n".'ERROR: '.$error);
54
- }
55
- }
56
-
57
- protected function _buildRequest(Varien_Object $payment){
58
- $order = $payment->getOrder();
59
- $this->setStore($order->getStoreId());
60
-
61
- $request = $this->getApi()->createBasicRequestObject('SELECTPAYMENT');
62
- $request->setMdxi($this->makeMDXI($order));
63
-
64
- return $request;
65
- }
66
-
67
- protected function _buildSoapRequest(Varien_Object $payment){
68
- $order = $payment->getOrder();
69
- $this->setStore($order->getStoreId());
70
-
71
- $request = $this->getApi()->createBasicSoapRequestObject('SELECTPAYMENT');
72
- $mdxi = str_replace('"', '\'"', $this->makeMDXI($order));
73
- $mdxi = $this->makeMDXI($order);
74
-
75
- $request->setMdxi($mdxi);
76
- $request->setTid($order->getIncrementId());
77
- $request->setCurrency($order->getBaseCurrencyCode());
78
-
79
- return $request;
80
- }
81
-
82
- public function _buildSoapTransactionStatusRequest(Varien_Object $payment){
83
- $order = $payment->getOrder();
84
- $this->setStore($order->getStoreId());
85
-
86
- $transactionStatusRequest = $this->getApi()->createBasicSoapRequestObject('TID_TRANSACTIONSTATUS');
87
-
88
- $transactionStatusRequest->setTid($order->getIncrementId());
89
-
90
- return $transactionStatusRequest;
91
- }
92
-
93
- private function _getBrand($ccType){
94
- $brand = '';
95
- switch ($ccType){
96
- case 'AE':
97
- $brand = 'AMEX';
98
- break;
99
- case 'DC':
100
- $brand = 'DINERS';
101
- break;
102
- case 'JC':
103
- $brand = 'JCB';
104
- break;
105
- case 'MC':
106
- $brand = 'MASTERCARD';
107
- break;
108
- case 'VI':
109
- $brand = 'VISA';
110
- break;
111
- }
112
- return $brand;
113
- }
114
-
115
- public function getActivePaymentTypes(){
116
- $newLine = "\n";
117
- $tab = "\t";
118
- $ret = '';
119
- $inactivePayments = '';
120
- $inactiveCcBrands = array();
121
- $inactiveElvCountries = array();
122
- $inactiveEpsBanks = array();
123
-
124
-
125
- if(!Mage::getStoreConfig('payment/mpay24_sp_cc/in_use'))
126
- $inactivePayments= 'cc,';
127
- else {
128
- $inactiveCcBrands = array("AE" => "AE", "DC" => "DC", "JC" => "JC", "MC" => "MC", "VI" => "VI");
129
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_cc/cctypes')) as $b):
130
- unset($inactiveCcBrands[$b]);
131
- endforeach;
132
- }
133
- if(!Mage::getStoreConfig('payment/mpay24_sp_elv/in_use'))
134
- $inactivePayments.= 'elv,';
135
- else {
136
- $inactiveElvCountries = array("AT" => "AT", "DE" => "DE", "NL" => "NL");
137
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_elv/specificcountry')) as $c):
138
- unset($inactiveElvCountries[$c]);
139
- endforeach;
140
- }
141
- if(!Mage::getStoreConfig('payment/mpay24_sp_eps/in_use'))
142
- $inactivePayments.= 'eps,';
143
- else {
144
- $inactiveEpsBanks = array("ARZ" => "ARZ", "BA" => "BA", "BAWAG" => "BAWAG", "ERSTE" => "ERSTE", "HYPO" => "HYPO", "RZB" => "RZB");
145
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_eps/epstypes')) as $b):
146
- unset($inactiveEpsBanks[$b]);
147
- endforeach;
148
- }
149
- if(!Mage::getStoreConfig('payment/mpay24_sp_giropay/in_use'))
150
- $inactivePayments.= 'giropay,';
151
- if(!Mage::getStoreConfig('payment/mpay24_sp_maestro/in_use'))
152
- $inactivePayments.= 'maestro,';
153
- if(!Mage::getStoreConfig('payment/mpay24_sp_paybox/in_use'))
154
- $inactivePayments.= 'pb,';
155
- if(!Mage::getStoreConfig('payment/mpay24_sp_psc/in_use'))
156
- $inactivePayments.= 'psc,';
157
- if(!Mage::getStoreConfig('payment/mpay24_sp_paypal/in_use'))
158
- $inactivePayments.= 'paypal,';
159
- if(!Mage::getStoreConfig('payment/mpay24_sp_mpass/in_use'))
160
- $inactivePayments.= 'mpass,';
161
- if(!Mage::getStoreConfig('payment/mpay24_sp_cashTicket/in_use'))
162
- $inactivePayments.= 'cash-ticket';
163
- $ret.=$tab.'<PaymentTypes Enable="false">'.$newLine;
164
- if(!empty($inactiveCcBrands))
165
- foreach($inactiveCcBrands as $brand => $value):
166
- $ret.= $tab.$tab.'<Payment Type="CC" Brand="'.$this->_getBrand($inactiveCcBrands[$brand]).'"/>'.$newLine;
167
- endforeach;
168
- if(!empty($inactiveEpsBanks))
169
- foreach($inactiveEpsBanks as $bank => $value):
170
- $ret.= $tab.$tab.'<Payment Type="EPS" Brand="'.$bank.'"/>'.$newLine;
171
- endforeach;
172
- if(!empty($inactiveElvCountries))
173
- foreach($inactiveElvCountries as $country => $value):
174
- if($country === 'DE')
175
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="ATOS"/>'.$newLine;
176
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="HOBEX-'.$country.'"/>'.$newLine;
177
- endforeach;
178
- else{
179
- $inactiveElvCountries = array("AT" => "AT", "DE" => "DE", "NL" => "NL");
180
- foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_elv/specificcountry')) as $c):
181
- if($c === $this->getQuote()->getBillingAddress()->getCountry())
182
- unset($inactiveElvCountries[$c]);
183
- endforeach;
184
- foreach($inactiveElvCountries as $country => $value):
185
- if($country === "DE")
186
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="ATOS"/>'.$newLine;
187
- $ret.= $tab.$tab.'<Payment Type="ELV" Brand="HOBEX-'.$country.'"/>'.$newLine;
188
- endforeach;
189
- }
190
- if($inactivePayments !== ''){
191
- if(strripos($inactivePayments, ',') === strlen($inactivePayments)-1)
192
- $inactivePayments = substr($inactivePayments, 0, strlen($inactivePayments)-1);
193
-
194
- foreach(explode(',',$inactivePayments) as $payment):
195
- $ret.= $tab.$tab.'<Payment Type="'.strtoupper($payment).'"/>'.$newLine;
196
- endforeach;
197
-
198
- }
199
- $ret.=$tab.'</PaymentTypes>'.$newLine;
200
- return $ret;
201
- }
202
-
203
- protected function makeMDXI($order){
204
- $newLine = "\n";
205
- $tab = "\t";
206
- $stylehead = "font-family:Verdana,Arial,sans-serif;font-size: 10px;background:#336699;color:#FFFFFF;font-weight:bold;border:1px solid #ffffff;border-top:1px solid #7b9ebd;border:1px solid #7b9ebd;";
207
-
208
- $mdxi= '<?xml version="1.0" encoding="UTF-8"?>'.$newLine;
209
- $mdxi.= '<Order';
210
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24sporder/style').'"' : "";
211
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/logostyle')) ? ' LogoStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/logostyle').'"' : "";
212
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pageheaderstyle')) ? ' PageHeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pageheaderstyle').'"' : "";
213
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pagecaptionstyle')) ? ' PageCaptionStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pagecaptionstyle').'"' : "";
214
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/pagestyle')) ? ' PageStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/pagestyle').'"' : "";
215
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/inputfieldsstyle')) ? ' InputFieldsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/inputfieldsstyle').'"' : "";
216
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/dropdownlistsstyle')) ? ' DropDownListsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/dropdownlistsstyle').'"' : "";
217
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/buttonsstyle')) ? ' ButtonsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/buttonsstyle').'"' : "";
218
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/errorsstyle')) ? ' ErrorsStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/errorsstyle').'"' : "";
219
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/successtitlestyle')) ? ' SuccessTitleStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/successtitlestyle').'"' : "";
220
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/errortitlestyle')) ? ' ErrorTitleStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/errortitlestyle').'"' : "";
221
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24sporder/footerstyle')) ? ' FooterStyle="'.Mage::getStoreConfig('mpay24/mpay24sporder/footerstyle').'"' : "";
222
- $mdxi.= '>'.$newLine;
223
- $mdxi.= $tab.'<UserField>Magento 1.1.1 '.substr($order->getIncrementId(),0,100).'_'.date('Y-m-d').'</UserField>'.$newLine;
224
- $mdxi.= $tab.'<Tid>'.substr($order->getIncrementId(),0,32).'</Tid>'.$newLine;
225
- $lang = explode('_', Mage::getStoreConfig('general/locale/code'));
226
- $mdxi.= $tab.'<TemplateSet Language="'.strtoupper($lang[0]).'"/>'.$newLine;
227
- $mdxi.= $this->getActivePaymentTypes();
228
- $conf = explode(',',Mage::getStoreConfig('mpay24/mpay24spsc/sc_row'));
229
-
230
- $mdxi.= $tab.'<ShoppingCart';
231
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_style').'"' : "";
232
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_header').'"' : "";
233
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_headerstyle').'"' : "";
234
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_captionstyle')) ? ' CaptionStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_captionstyle').'"' : "";
235
- if(in_array('Number',$conf)){
236
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberheader')) ? ' NumberHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberheader').'"' : "";
237
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberstyle')) ? ' NumberStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_numberstyle').'"' : "";
238
- }
239
- if(in_array('ProductNr',$conf)){
240
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrheader')) ? ' ProductNrHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrheader').'"' : "";
241
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrstyle')) ? ' ProductNrStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_productnrstyle').'"' : "";
242
- }
243
- if(in_array('Description',$conf)){
244
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionheader')) ? ' DescriptionHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionheader').'"' : "";
245
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionstyle')) ? ' DescriptionStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_descriptionstyle').'"' : "";
246
- }
247
- if(in_array('Package',$conf)){
248
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_packageheader')) ? ' PackageHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_packageheader').'"' : "";
249
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_packagestyle')) ? ' PackageStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_packagestyle').'"' : "";
250
- }
251
- if(in_array('Quantity',$conf)){
252
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantityheader')) ? ' QuantityHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantityheader').'"' : "";
253
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantitystyle')) ? ' QuantityStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_quantitystyle').'"' : "";
254
- }
255
- if(in_array('ItemPrice',$conf)){
256
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempriceheader')) ? ' ItemPriceHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempriceheader').'"' : "";
257
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempricestyle')) ? ' ItemPriceStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_itempricestyle').'"' : "";
258
- }
259
- if(in_array('Price',$conf)){
260
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_priceheader')) ? ' PriceHeader="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_priceheader').'"' : "";
261
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/sc_pricestyle')) ? ' PriceStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/sc_pricestyle').'"' : "";
262
- }
263
- $mdxi.= '>'.$newLine;
264
-
265
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/description')) ? $tab.'<Description>'.Mage::getStoreConfig('mpay24/mpay24spsc/description').'</Description>' : "";
266
-
267
- $style1 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style1');
268
- $style2 = Mage::getStoreConfig('mpay24/mpay24spsc/item_style2');
269
- $ret = "";
270
- $linecount = 0;
271
-
272
- foreach($order->getAllItems() as $_item):
273
- $linecount++;
274
- $style = ($linecount % 2== 1) ? $style1 : $style2;
275
- if($style !== '')
276
- $style = "Style=\"".$style."\"";
277
- $xmlitem = $newLine.$tab.$tab."<Item>".$newLine;
278
- $xmlitem .= (in_array('Number',$conf)) ? $tab.$tab.$tab."<Number ".$style.">".$linecount."</Number>".$newLine : "";
279
- $xmlitem .= (in_array('ProductNr',$conf)) ? $tab.$tab.$tab."<ProductNr ".$style.">".$this->xmlentities($_item->getData('sku'))."</ProductNr>".$newLine : "";
280
- $xmlitem .= (in_array('Description',$conf)) ? $tab.$tab.$tab."<Description ".$style.">".$this->xmlentities($_item->getData('name'))."</Description>".$newLine : "";
281
- $xmlitem .= (in_array('Package',$conf)) ? $tab.$tab.$tab."<Package ".$style.">"."</Package>".$newLine : "";
282
- $xmlitem .= (in_array('Quantity',$conf)) ? $tab.$tab.$tab."<Quantity ".$style.">".(int)$_item->getQtyOrdered()."</Quantity>".$newLine : "";
283
- if(Mage::getStoreConfig('tax/cart_display/price') == 2 || Mage::getStoreConfig('tax/cart_display/price') == 3){
284
- $xmlitem .= (in_array('ItemPrice',$conf)) ? $tab.$tab.$tab."<ItemPrice ".$style." Tax='".number_format($_item->getTaxAmount(),2,'.','')."'>".number_format($_item->getPriceInclTax()*1,2,'.','')."</ItemPrice>".$newLine : "";
285
- } else
286
- $xmlitem .= (in_array('ItemPrice',$conf)) ? $tab.$tab.$tab."<ItemPrice ".$style.">".number_format(($_item->getData('price')*1),2,'.','')."</ItemPrice>".$newLine : "";
287
- $xmlitem .= $tab.$tab."</Item>".$newLine;
288
- $ret .= $xmlitem;
289
- endforeach;
290
- $mdxi.= $ret;
291
-
292
- $mdxi.= $tab.'<SubTotal';
293
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_header').'"' : "";
294
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_headerstyle').'"' : "";
295
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/subtotal_style').'"' : "";
296
- if(Mage::getStoreConfig('tax/cart_display/subtotal') == 2 || Mage::getStoreConfig('tax/cart_display/subtotal') == 3)
297
- $mdxi.= '>'.number_format($order->getSubtotalInclTax(),2,'.','').'</SubTotal>'.$newLine;
298
- else
299
- $mdxi.= '>'.number_format($order->getData('subtotal'),2,'.','').'</SubTotal>'.$newLine;
300
-
301
- if(number_format($order->getData('discount_amount'),2,'.','') !== '0.00'){
302
- $mdxi.= $tab.$tab.'<Discount';
303
- $mdxi.= ' Header="'.$order->getData('discount_description').'"';
304
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/discount_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/discount_headerstyle').'"' : "";
305
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/discount_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/discount_style').'"' : "";
306
- $mdxi.= '>'.number_format($order->getData('discount_amount'), 2, '.', '').'</Discount>'.$newLine;
307
- }
308
-
309
- if(number_format($order->getData('shipping_amount'),2,'.','') !== '0.00'){
310
- $mdxi.=$tab. $tab.'<ShippingCosts';
311
- $mdxi.= ' Header="'.$order->getData('shipping_description').'"';
312
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_headerstyle').'"' : "";
313
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/shipping_costs_style').'"' : "";
314
- if(Mage::getStoreConfig('tax/cart_display/shipping') == 2 || Mage::getStoreConfig('tax/cart_display/shipping') == 3)
315
- $mdxi.= '>'.number_format($order->getShippingInclTax(), 2, '.', '').'</ShippingCosts>'.$newLine;
316
- else
317
- $mdxi.= '>'.number_format($order->getData('shipping_amount'), 2, '.', '').'</ShippingCosts>'.$newLine;
318
- }
319
-
320
- if(number_format($order->getData('tax_amount'),2,'.','') !== '0.00'){
321
- $array = $order->getFullTaxInfo();
322
- $taxInfo = array();
323
- foreach($array as $a){
324
- $taxArray = $a;
325
- foreach(array_keys($taxArray) as $taxKey){
326
- $taxInfo[$taxKey] = $taxArray[$taxKey];
327
- }
328
- $mdxi.= $tab.$tab.'<Tax';
329
- $mdxi.= ' Header="'.$taxArray['id'].'"';
330
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/tax_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/tax_headerstyle').'"' : "";
331
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/tax_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/tax_style').'"' : "";
332
- $mdxi.= ' Percent="'.number_format($taxArray['rates'][0]['percent'],0,'.','').'"';
333
- $mdxi.= '>'.number_format($taxArray['amount'],2,'.','').'</Tax>'.$newLine;
334
- }
335
- }
336
-
337
- $mdxi.= $tab.'</ShoppingCart>'.$newLine;
338
-
339
- $billingCountry = "";
340
- $billingCountryCode = "";
341
- $shippingCountry = "";
342
- $shippingCountryCode = "";
343
-
344
- foreach(Mage::app()->getLocale()->getOptionCountries() as $c)
345
- if ($c['value'] == $order->getBillingAddress()->getCountry()) {
346
- $billingCountry = $c['label'];
347
- $billingCountryCode = $c['value'];
348
- break;
349
- }
350
-
351
- if($order->getShippingAddress())
352
- foreach(Mage::app()->getLocale()->getOptionCountries() as $c){
353
- if ($c['value'] == $order->getShippingAddress()->getCountry()) {
354
- $shippingCountry = $c['label'];
355
- $shippingCountryCode = $c['value'];
356
- break;
357
- }
358
- }
359
-
360
- $mdxi.= $tab.'<Price';
361
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_header')) ? ' Header="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_header').'"' : "";
362
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_headerstyle')) ? ' HeaderStyle="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_headerstyle').'"' : "";
363
- $mdxi.= (Mage::getStoreConfig('mpay24/mpay24spsc/price_style')) ? ' Style="'.Mage::getStoreConfig('mpay24/mpay24spsc/price_style').'"' : "";
364
- $mdxi.= '>'.number_format($order->getData('grand_total'),2,'.','').'</Price>'.$newLine;
365
-
366
- $mdxi.= $tab.'<Currency>'.$this->xmlentities($order->getBaseCurrencyCode()).'</Currency>'.$newLine;
367
-
368
- $mdxi.= $tab.'<BillingAddr Mode="'.Mage::getStoreConfig('mpay24/mpay24as/billingAddressMode').'">'.$newLine;
369
-
370
- if($order->getShippingAddress() && $this->xmlentities($order->getShippingAddress()->getFirstname()) === '')
371
- $billingName = $this->xmlentities($order->getBillingAddress()->getLastname());
372
- elseif($this->xmlentities($order->getBillingAddress()->getLastname()) === '')
373
- $billingName = $this->xmlentities($order->getBillingAddress()->getFirstname());
374
- else
375
- $billingName = $this->xmlentities($order->getBillingAddress()->getFirstname()).' '.$this->xmlentities($order->getBillingAddress()->getLastname());
376
- $mdxi.= $tab.$tab.'<Name>'.substr($billingName,0,50).'</Name>'.$newLine;
377
-
378
- $billingAdress = $this->xmlentities($order->getBillingAddress()->getStreetFull());
379
-
380
- $billingStreet = $this->splitAdress($billingAdress);
381
-
382
- $mdxi.= $tab.$tab.$billingStreet;
383
- $mdxi.= $tab.$tab.'<Zip>'.substr($this->xmlentities($order->getBillingAddress()->getPostcode()),0,50).'</Zip>'.$newLine;
384
- $mdxi.= $tab.$tab.'<City>'.substr($this->xmlentities($order->getBillingAddress()->getCity()),0,50).'</City>'.$newLine;
385
- $mdxi.= $tab.$tab.'<Country Code="'.$this->xmlentities($billingCountryCode).'"/>'.$newLine;
386
- $mdxi.= $tab.'</BillingAddr>'.$newLine;
387
-
388
- if($order->getShippingAddress()){
389
- $mdxi.= $tab.'<ShippingAddr Mode="ReadOnly">'.$newLine;
390
- if($this->xmlentities($order->getShippingAddress()->getFirstname()) === '')
391
- $shippingName = $this->xmlentities($order->getShippingAddress()->getLastname());
392
- elseif($this->xmlentities($order->getShippingAddress()->getLastname()) === '')
393
- $shippingName = $this->xmlentities($order->getShippingAddress()->getFirstname());
394
- else
395
- $shippingName = $this->xmlentities($order->getShippingAddress()->getFirstname()).' '.$this->xmlentities($order->getShippingAddress()->getLastname());
396
- $mdxi.= $tab.$tab.'<Name>'.substr($shippingName,0,50).'</Name>'.$newLine;
397
-
398
- $shippingAdress = $this->xmlentities($order->getShippingAddress()->getStreetFull());
399
-
400
- $shippingStreet = $this->splitAdress($shippingAdress);
401
-
402
- $mdxi.= $tab.$tab.$shippingStreet;
403
- $mdxi.= $tab.$tab.'<Zip>'.substr($this->xmlentities($order->getShippingAddress()->getPostcode()),0,50).'</Zip>'.$newLine;
404
- $mdxi.= $tab.$tab.'<City>'.substr($this->xmlentities($order->getShippingAddress()->getCity()),0,50).'</City>'.$newLine;
405
- $mdxi.= $tab.$tab.'<Country Code="'.$this->xmlentities($shippingCountryCode).'"/>'.$newLine;
406
- $mdxi.= $tab.'</ShippingAddr>'.$newLine;
407
- }
408
-
409
- $mdxi.= $tab.'<URL>'.$newLine;
410
- if(Mage::helper('customer')->isLoggedIn())
411
- $mdxi.= $tab.$tab.'<Success>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SUCCESS_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Success>'.$newLine;
412
- else
413
- $mdxi.= $tab.$tab.'<Success>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::GUEST_SUCCESS_URL,array('_secure' => true, '_query' => "tid=" . substr($order->getIncrementId(),0,32) )).'</Success>'.$newLine;
414
- $mdxi.= $tab.$tab.'<Error>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_ERROR_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Error>'.$newLine;
415
- $mdxi.= $tab.$tab.'<Confirmation>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CONFIRMATION_URL,array('_secure' => true)).'</Confirmation>'.$newLine;
416
- $mdxi.= $tab.$tab.'<Cancel>'.Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SP_CANCEL_URL,array('_secure' => true, '_query' => "TID=" . substr($order->getIncrementId(),0,32) )).'</Cancel>'.$newLine;
417
- $mdxi.= $tab.'</URL>'.$newLine;
418
-
419
- $mdxi.= '</Order>';
420
-
421
- return $mdxi;
422
- }
423
-
424
- public function getOrderPlaceRedirectUrl() {
425
- return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/redirect',array('_secure' => true)) : false;
426
- }
427
-
428
- private function xmlentities($string){
429
- static $trans;
430
- if (!isset($trans)) {
431
- $trans = get_html_translation_table(HTML_SPECIALCHARS);
432
- foreach ($trans as $key => $value)
433
- $trans[$key] = '&#'.ord($key).';';
434
-
435
- // dont translate the '&' in case it is part of &xxx;
436
- $trans[chr(38)] = '&';
437
- }
438
-
439
- //after the initial translation, _do_ map standalone '&' into '&#38;'
440
- return preg_replace("/&(?![A-Za-z]{0,4}\w{2,3};|#[0-9]{2,3};)/","&#38;" , strtr($string, $trans));
441
- }
442
-
443
- private function splitAdress($adress, $str2=null){
444
- $posNewLine = strpos($adress, "\n");
445
- $str = '';
446
- if($posNewLine === false){
447
- if(strlen($adress) <= 50){
448
- if($str2 !== true)
449
- $str.= '<Street>'.$adress.'</Street>'."\n";
450
- else
451
- $str.= "\t"."\t".'<Street2>'.$adress.'</Street2>'."\n";
452
- }
453
- else{
454
- $street1before = substr($adress, 0, 50);
455
- $posLastInterval1 = strrpos($street1before, " ");
456
-
457
- $street1 = substr($street1before, 0, $posLastInterval1);
458
-
459
- $street2before = substr(substr($street1before, $posLastInterval1).substr($adress, 50), 1, 50);
460
- $posLastInterval2 = strrpos($street2before, " ");
461
- $street2 = substr($street2before, 0, $posLastInterval2);
462
-
463
- if($str2 === null){
464
- $str.= '<Street>'.$street1.'</Street>'."\n";
465
- $str.= "\t"."\t".'<Street2>'.$street2.'</Street2>'."\n";
466
- }
467
- elseif($str2 === false){
468
- if($posLastInterval1){
469
- $str.= '<Street>'.$street1.'</Street>'."\n";
470
- } else {
471
- $str.= '<Street>'.$street1before.'</Street>'."\n";
472
- }
473
- }
474
- else{
475
- if($posLastInterval1){
476
- $str.= "\t"."\t".'<Street2>'.$street1.'</Street2>'."\n";
477
- } else {
478
- $str.= '<Street2>'.$street1before.'</Street2>'."\n";
479
- }
480
- }
481
- }
482
- }
483
- else{
484
- $array = explode("\n", $adress);
485
- $adress1 = $array[0];
486
- $str.= $this->splitAdress($adress1, false);
487
-
488
- $adress2 = $array[1];
489
- $str.= $this->splitAdress($adress2, true);
490
- }
491
- return $str;
492
- }
493
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Mpay24/Debug.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mpay24_Debug extends Mage_Core_Model_Abstract {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mpay24_Debug extends Mage_Core_Model_Abstract {
app/code/community/Mpay24/Mpay24/Model/Mysql4/Mpay24/Debug.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Mpay24_Debug extends Mage_Core_Model_Mysql4_Abstract {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Mpay24_Debug extends Mage_Core_Model_Mysql4_Abstract {
app/code/community/Mpay24/Mpay24/Model/Mysql4/Mpay24/Debug/Collection.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Mpay24_Debug_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Mpay24_Debug_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract {
app/code/community/Mpay24/Mpay24/Model/Mysql4/Setup.php CHANGED
@@ -12,12 +12,12 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Setup extends Mage_Core_Model_Resource_Setup {
22
 
23
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Mysql4_Setup extends Mage_Core_Model_Resource_Setup {
22
 
23
+ }
app/code/community/Mpay24/Mpay24/Model/Observer.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
21
+
22
+ class Mpay24_Mpay24_Model_Observer extends Mage_Core_Model_Config_Data {
23
+
24
+ /**
25
+ * @abstract Retrieve active system payments
26
+ *
27
+ */
28
+ public function afterSave() {
29
+ Mage::getConfig()->saveConfig("mpay24/mpay24/payments_count", 0);
30
+ Mage::getConfig()->saveConfig("mpay24/mpay24/payments_error", "");
31
+ Mage::getConfig()->saveConfig("mpay24/mpay24/active_payments", "");
32
+ Mage::getConfig()->saveConfig("mpay24/mpay24/active_payment_types", "");
33
+
34
+ if(Mage::getStoreConfig('mpay24/mpay24as/old_merchantid') == "")
35
+ Mage::getConfig()->saveConfig("mpay24/mpay24as/old_merchantid", Mage::getStoreConfig('mpay24/mpay24as/merchantid'));
36
+
37
+ if(Mage::getStoreConfig('mpay24/mpay24as/old_merchantid') != Mage::getStoreConfig('mpay24/mpay24as/merchantid')) {
38
+ Mage::getConfig()->saveConfig("mpay24/mpay24/payments_active", "false");
39
+
40
+ for($i=1; $i<=50; $i++) {
41
+ Mage::getConfig()->saveConfig("mpay24/mpay24/ps_".$i, 0);
42
+ }
43
+ }
44
+
45
+ Mage::getConfig()->reinit();
46
+ Mage::app()->reinitStores();
47
+
48
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
49
+ $result = $mPay24MagentoShop->getPaymentMethods();
50
+
51
+ if($result->getGeneralResponse()->getStatus() == 'OK') {
52
+ Mage::getConfig()->saveConfig("mpay24/mpay24/payments_count", $result->getAll());
53
+
54
+ $brands = array();
55
+ $types = "";
56
+ $i=0;
57
+ foreach($result->getBrands() as $brand) {
58
+ array_push($brands, $brand . "=>" . $result->getDescription($i));
59
+ $types .= $brand . "=>" . $result->getPType($i) . ", ";
60
+ $i++;
61
+
62
+ if(Mage::getStoreConfig('mpay24/mpay24as/old_merchantid') != Mage::getStoreConfig('mpay24/mpay24as/merchantid'))
63
+ Mage::getConfig()->saveConfig("mpay24/mpay24/ps_".$i, 1);
64
+ }
65
+
66
+ Mage::getConfig()->saveConfig("mpay24/mpay24/active_payments", implode(", ", $brands));
67
+ Mage::getConfig()->saveConfig("mpay24/mpay24/active_payment_types", substr($types, 0, -2));
68
+ Mage::getConfig()->reinit();
69
+ Mage::app()->reinitStores();
70
+ } else {
71
+ Mage::getConfig()->saveConfig("mpay24/mpay24/payments_error", $result->getGeneralResponse()->getReturnCode());
72
+ Mage::getConfig()->reinit();
73
+ Mage::app()->reinitStores();
74
+ }
75
+
76
+ if(Mage::getStoreConfig('mpay24/mpay24as/old_merchantid') != Mage::getStoreConfig('mpay24/mpay24as/merchantid'))
77
+ Mage::getConfig()->saveConfig("mpay24/mpay24as/old_merchantid", Mage::getStoreConfig('mpay24/mpay24as/merchantid'));
78
+ }
79
+ }
app/code/community/Mpay24/Mpay24/Model/Paybox.php DELETED
@@ -1,152 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Paybox extends Mpay24_Mpay24_Model_Method_Abstract {
22
- protected $_code = 'mpay24_paybox';
23
- protected $_formBlockType = 'mpay24/form_paybox';
24
- protected $_infoBlockType = 'mpay24/info_paybox';
25
- protected $_allowCurrencyCode = array('EUR');
26
-
27
- /**
28
- * Availability options
29
- */
30
- protected $_isGateway = false;
31
- protected $_canAuthorize = true;
32
- protected $_canCapture = true;
33
- protected $_canCapturePartial = false;
34
- protected $_canRefund = false;
35
- protected $_canVoid = false;
36
- protected $_canUseInternal = false;
37
- protected $_canUseCheckout = true;
38
- protected $_canUseForMultishipping = false;
39
- protected $_canSaveCc = false;
40
-
41
- public function assignData($data){
42
- if (!($data instanceof Varien_Object)) {
43
- $data = new Varien_Object($data);
44
- }
45
- $info = $this->getInfoInstance();
46
- $info->setMpayPbCountryCode($data->getMpayPbCountryCode());
47
- $info->setMpayPbAreaCode($data->getMpayPbAreaCode());
48
- $info->setMpayPbNumber($data->getMpayPbNumber());
49
- return $this;
50
- }
51
-
52
- public function validate(){
53
- parent::validate();
54
- if (!$this->getQuote()->getPayment()->getMpayPbNumber()) {
55
- Mage::throwException(Mage::helper('mpay24')->__('Please fill out the account number'));
56
- }
57
- $currency_code = $this->getQuote()->getBaseCurrencyCode();
58
- if (!in_array($currency_code,$this->_allowCurrencyCode)) {
59
- Mage::throwException(Mage::helper('mpay24')->__('Selected currency code ('.$currency_code.') is not compatible with paybox'));
60
- }
61
- return $this;
62
- }
63
-
64
- public function authorize(Varien_Object $payment, $amount){
65
- $this->clearSession();
66
- $error = false;
67
- if($amount>0){
68
- // $payment->setAnetTransType(self::REQUEST_TYPE_AUTH_ONLY);
69
- $payment->setAmount($amount);
70
-
71
- $request= $this->_buildRequest($payment);
72
- $result = $this->getApi()->authorize($request);
73
- switch ($result->getResponseCode()) {
74
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_APPROVED:
75
- $payment->setStatus(self::STATUS_APPROVED);
76
- $payment->setMpayTid($result->getTransactionId());
77
- break;
78
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_REDIRECT:
79
- $this->getPayment()->setAuth3DS(true);
80
- break;
81
- default:
82
- // $error = Mage::helper('mpay24')->__('Payment authorization error.');
83
- $error = urldecode($result->getData('RETURNCODE'));
84
- break;
85
- }
86
- }else{
87
- $error = Mage::helper('mpay24')->__('Invalid amount for authorization.');
88
- }
89
- if ($error !== false) {
90
- Mage::throwException($error);
91
- }
92
- return $this;
93
- }
94
-
95
- public function capture(Varien_Object $payment, $amount) {
96
- $this->clearSession();
97
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
98
- if($mpayTid != ''){
99
- $this->getApi()->charge($mpayTid, $amount);
100
- }else{
101
- Mage::log('capture not possible. mpaytid not exist');
102
- }
103
- return $this;
104
- }
105
-
106
- protected function _buildRequest(Varien_Object $payment){
107
- $order = $payment->getOrder();
108
- $this->setStore($order->getStoreId());
109
-
110
- $request = $this->getApi()->createBasicRequestObject('ACCEPTPAYMENT');
111
-
112
- if ($order && $order->getIncrementId()) {
113
- $request->setTid($order->getIncrementId()); // TID == OrderNR
114
- }
115
- $request->setPType('PB')
116
- ->setIdentifier($payment->getMpayPbCountryCode().$payment->getMpayPbAreaCode().$payment->getMpayPbNumber());
117
-
118
-
119
- if($payment->getAmount()){
120
- $request->setPrice($payment->getAmount()*100,2);
121
- $request->setCurrency($order->getBaseCurrencyCode());
122
- }
123
-
124
- $request->setSuccessUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::SUCCESS_URL,array('_secure' => true)));
125
- $request->setErrorUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::ERROR_URL,array('_secure' => true)));
126
- $request->setConfirmationUrl(Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::CONFIRMATION_URL,array('_secure' => true)));
127
-
128
- $billing = $order->getBillingAddress();
129
- if (!empty($billing)) {
130
- $request->setCustomer($billing->getFirstname()." ".$billing->getLastname()." [".$billing->getCustomerId()."]");
131
- }
132
- $request->setUserField($order->getIncrementId()); // do not change this -> it will be used as order id; USER_FIELD == OrderNR
133
- // $request->setProfile();
134
- // $request->setCustomerId();
135
- // $request->setCustomerEmail();
136
- // $request->setUserField();
137
-
138
- // Mage::log($request);
139
- return $request;
140
- }
141
-
142
- public function getOrderPlaceRedirectUrl() {
143
- //// if(!$this->getPayment()->getAuth3DS() && $this->getSession()->getMpayTid()){
144
- //// return Mage::getUrl('mpay24/payment/redirectpb',array('_secure' => true));
145
- //// }
146
- //// return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/redirect',array('_secure' => true)) : false;
147
- return ($this->getPayment()->getAuth3DS()) ? Mage::getUrl('mpay24/payment/payment',array('_secure' => true)) : false;
148
- // return false;
149
- }
150
-
151
- }
152
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Selectpayment.php CHANGED
@@ -0,0 +1,156 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+
21
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
22
+
23
+ class Mpay24_Mpay24_Model_Selectpayment extends Mpay24_Mpay24_Model_Method_Selectpayment {
24
+ protected $_code = 'mpay24';
25
+ protected $_formBlockType = 'mpay24/form_selectpayment';
26
+ protected $_infoBlockType = 'mpay24/info_selectpayment';
27
+
28
+ /**
29
+ * Availability options
30
+ */
31
+ protected $_isGateway = true;
32
+ protected $_canOrder = true;
33
+ protected $_canAuthorize = true;
34
+ protected $_canCapture = true;
35
+ protected $_canCapturePartial = true;
36
+ protected $_canRefund = true;
37
+ protected $_canRefundInvoicePartial = true;
38
+ protected $_canVoid = true;
39
+ protected $_canUseInternal = true;
40
+ protected $_canUseCheckout = true;
41
+
42
+ public function validate() {
43
+ parent::validate();
44
+ return $this;
45
+ }
46
+
47
+ public function authorize(Varien_Object $payment, $amount) {
48
+ parent::authorize($payment, $amount);
49
+ }
50
+
51
+ /**
52
+ * @abstract Capture payment
53
+ *
54
+ * @param Varien_Object $orderPayment
55
+ * @return Mpay24_Mpay24_Model_PaymentMethod
56
+ */
57
+ public function capture(Varien_Object $payment, $amount) {
58
+ if(((!$payment->getAdditionalInformation('MIFClear') && Mage::getStoreConfig('payment/mpay24/paid_payment_action') != MPay24MagentoShop::PAYMENT_TYPE_SALE) || $payment->getAdditionalInformation('mpay24AutoClearing')) && !$payment->getAdditionalInformation('error')) {
59
+ $this->clearSession();
60
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
61
+ $mPAY24Result = $mPay24MagentoShop->clearAmount($payment->getOrder()->getIncrementId(),$amount*100);
62
+
63
+ if($mPAY24Result->getGeneralResponse()->getStatus() != 'OK') {
64
+ Mage::log('The order was not captured: ' . $mPAY24Result->getGeneralResponse()->getReturnCode(), 10);
65
+ Mage::throwException(Mage::helper('mpay24')->__("The order could not be captured! For mor information see the log files!"));
66
+ return false;
67
+ }
68
+ }
69
+
70
+ parent::capture($payment, $amount);
71
+
72
+ if($payment->getOrder()->getIsNotVirtual()) {
73
+ $s = Mage::getStoreConfig('payment/mpay24/paid_order_status');
74
+ } else {
75
+ $s = Mage_Sales_Model_Order::STATE_COMPLETE;
76
+ }
77
+
78
+ if($payment->getOrder()->getState() != $s)
79
+ $payment->getOrder()->addStatusToHistory($s, Mage::helper('mpay24')->__("Payment ") . Mage::helper('mpay24')->__("BILLED") .' [ ' . $payment->getOrder()->getBaseCurrencyCode() . " " .$payment->getOrder()->formatPriceTxt($amount).' ]', true)->save();
80
+
81
+ return $this;
82
+ }
83
+
84
+ /**
85
+ * @abstract Refund money
86
+ *
87
+ * @param Varien_Object $invoicePayment
88
+ * @return Mpay24_Mpay24_Model_PaymentMethod
89
+ */
90
+ public function refund(Varien_Object $payment, $amount) {
91
+ $this->clearSession();
92
+ if(!$payment->getAdditionalInformation('MIFCredit') && !$payment->getAdditionalInformation('error')) {
93
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
94
+ $mPAY24Result = $mPay24MagentoShop->creditAmount($payment->getOrder()->getIncrementId(),$amount*100);
95
+
96
+ if($mPAY24Result->getGeneralResponse()->getStatus() != 'OK') {
97
+ Mage::log('The order was not refunded: ' . $mPAY24Result->getGeneralResponse()->getReturnCode(), 10);
98
+ Mage::throwException(Mage::helper('mpay24')->__("The order could not be refunded! For mor information see the log files!"));
99
+ return false;
100
+ }
101
+ }
102
+
103
+ parent::refund($payment, $amount);
104
+
105
+ return $this;
106
+ }
107
+
108
+ /**
109
+ * @abstract Void a payment
110
+ *
111
+ * @param Varien_Object $invoicePayment
112
+ * @return Mpay24_Mpay24_Model_PaymentMethod
113
+ */
114
+ public function void(Varien_Object $payment) {
115
+ $this->clearSession();
116
+ if(!$payment->getAdditionalInformation('MIFReverse') && !$payment->getAdditionalInformation('error')) {
117
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
118
+ $mPAY24Result = $mPay24MagentoShop->cancelTransaction($payment->getOrder()->getIncrementId());
119
+
120
+ if($mPAY24Result->getGeneralResponse()->getStatus() != 'OK') {
121
+ Mage::log('The order was not canceled: ' . $mPAY24Result->getGeneralResponse()->getReturnCode(), 10);
122
+ Mage::throwException(Mage::helper('mpay24')->__("The order could not be canceled! For mor information see the log files!"));
123
+ return false;
124
+ }
125
+ }
126
+
127
+ parent::void($payment);
128
+
129
+ return $this;
130
+ }
131
+
132
+ /**
133
+ * @abstract Cancel a payment
134
+ *
135
+ * @param Varien_Object $invoicePayment
136
+ * @return Mpay24_Mpay24_Model_PaymentMethod
137
+ */
138
+ public function cancel(Varien_Object $payment) {
139
+ $this->clearSession();
140
+ if(!$payment->getAdditionalInformation('cancelButton') && !$payment->getAdditionalInformation('error')) {
141
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
142
+ $mPAY24Result = $mPay24MagentoShop->cancelTransaction($payment->getOrder()->getIncrementId());
143
+
144
+ if($mPAY24Result->getGeneralResponse()->getStatus() != 'OK') {
145
+ Mage::log('The order was not canceled: ' . $mPAY24Result->getGeneralResponse()->getReturnCode(), 10);
146
+ Mage::throwException(Mage::helper('mpay24')->__("The order could not be canceled! For mor information see the log files!"));
147
+ return false;
148
+ }
149
+ }
150
+
151
+ parent::cancel($payment);
152
+
153
+ return $this;
154
+ }
155
+ }
156
+ ?>
app/code/community/Mpay24/Mpay24/Model/SelectpaymentCashTicket.php DELETED
@@ -1,79 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentCashTicket extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_cashTicket';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentCashTicket';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="CASH-TICKET"/>';
47
- }
48
-
49
- /**
50
- * Capture payment
51
- *
52
- * @param Varien_Object $orderPayment
53
- * @return Mpay24_Mpay24_Model_PaymentMethod
54
- */
55
- public function capture(Varien_Object $payment, $amount) {
56
- $this->clearSession();
57
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
58
- if($mpayTid != ''){
59
- $this->getApi()->charge($mpayTid, $amount);
60
- }else{
61
- Mage::log('capture not possible. mpaytid not exist');
62
- }
63
- return $this;
64
- }
65
-
66
- /**
67
- * Refund money
68
- *
69
- * @param Varien_Object $invoicePayment
70
- * @return Mpay24_Mpay24_Model_PaymentMethod
71
- */
72
- public function refund(Varien_Object $payment, $amount){
73
- $this->clearSession();
74
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
75
- $this->getApi()->refund($mpayTid, $amount);
76
- return $this;
77
- }
78
- }
79
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentCb.php DELETED
@@ -1,99 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentCb extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_cb';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentCb';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = true;
35
- protected $_canUseInternal = true;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- /**
46
- * Capture payment
47
- *
48
- * @param Varien_Object $orderPayment
49
- * @return Mpay24_Mpay24_Model_PaymentMethod
50
- */
51
- public function capture(Varien_Object $payment, $amount) {
52
- $this->clearSession();
53
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
54
- if($mpayTid != ''){
55
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
56
- $this->getApi()->charge($mpayTid, $amount);
57
- }else{
58
- Mage::log('capture not possible. mpaytid not exist');
59
- }
60
- return $this;
61
- }
62
-
63
- /**
64
- * Refund money
65
- *
66
- * @param Varien_Object $invoicePayment
67
- * @return Mpay24_Mpay24_Model_PaymentMethod
68
- */
69
- public function refund(Varien_Object $payment, $amount){
70
- $this->clearSession();
71
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
72
- if($mpayTid != ''){
73
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
74
- $this->getApi()->refund($mpayTid, $amount);
75
- }else{
76
- Mage::log('refund not possible. mpaytid not exist');
77
- }
78
- return $this;
79
- }
80
-
81
- public function void(Varien_Object $payment){
82
- $this->clearSession();
83
- $this->cancel($payment);
84
- return $this;
85
- }
86
-
87
- public function cancel(Varien_Object $payment){
88
- $this->clearSession();
89
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
90
- if($mpayTid != ''){
91
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
92
- $this->getApi()->cancel($mpayTid);
93
- }else{
94
- Mage::log('cancel not possible. mpaytid not exist');
95
- }
96
- return $this;
97
- }
98
- }
99
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentCc.php DELETED
@@ -1,99 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentCc extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_cc';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentCc';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = true;
35
- protected $_canUseInternal = true;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- /**
46
- * Capture payment
47
- *
48
- * @param Varien_Object $orderPayment
49
- * @return Mpay24_Mpay24_Model_PaymentMethod
50
- */
51
- public function capture(Varien_Object $payment, $amount) {
52
- $this->clearSession();
53
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
54
- if($mpayTid != ''){
55
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
56
- $this->getApi()->charge($mpayTid, $amount);
57
- }else{
58
- Mage::log('capture not possible. mpaytid not exist');
59
- }
60
- return $this;
61
- }
62
-
63
- /**
64
- * Refund money
65
- *
66
- * @param Varien_Object $invoicePayment
67
- * @return Mpay24_Mpay24_Model_PaymentMethod
68
- */
69
- public function refund(Varien_Object $payment, $amount){
70
- $this->clearSession();
71
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
72
- if($mpayTid != ''){
73
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
74
- $this->getApi()->refund($mpayTid, $amount);
75
- }else{
76
- Mage::log('refund not possible. mpaytid not exist');
77
- }
78
- return $this;
79
- }
80
-
81
- public function void(Varien_Object $payment){
82
- $this->clearSession();
83
- $this->cancel($payment);
84
- return $this;
85
- }
86
-
87
- public function cancel(Varien_Object $payment){
88
- $this->clearSession();
89
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
90
- if($mpayTid != ''){
91
- $payment->setTransactionId($payment->getOrder()->getIncrementId())->setIsTransactionClosed(0);
92
- $this->getApi()->cancel($mpayTid);
93
- }else{
94
- Mage::log('cancel not possible. mpaytid not exist');
95
- }
96
- return $this;
97
- }
98
- }
99
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentElv.php DELETED
@@ -1,80 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentElv extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_elv';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentElv';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="ELV" Brand="HOBEX-'.$this->getQuote()->getBillingAddress()->getCountry().'"/>';;
47
- }
48
-
49
- /**
50
- * Capture payment
51
- *
52
- * @param Varien_Object $orderPayment
53
- * @return Mpay24_Mpay24_Model_PaymentMethod
54
- */
55
- public function capture(Varien_Object $payment, $amount) {
56
- $this->clearSession();
57
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
58
- if($mpayTid != ''){
59
- $this->getApi()->charge($mpayTid, $amount);
60
- }else{
61
- Mage::log('capture not possible. mpaytid not exist');
62
- }
63
- return $this;
64
- }
65
-
66
- /**
67
- * Refund money
68
- *
69
- * @param Varien_Object $invoicePayment
70
- * @return Mpay24_Mpay24_Model_PaymentMethod
71
- */
72
- public function refund(Varien_Object $payment, $amount){
73
- $this->clearSession();
74
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
75
- $this->getApi()->refund($mpayTid, $amount);
76
- return $this;
77
- }
78
-
79
- }
80
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentEps.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentEps extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_eps';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentEps';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = false;
32
- protected $_canCapturePartial = false;
33
- protected $_canRefund = false;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- $ret = '';
47
- // foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_eps/epstypes')) as $brand):
48
- // $ret.= '<Payment Type="EPS" Brand="'.$brand.'"/>';
49
- // endforeach;
50
- $ret.= '<Payment Type="EPS"/>';
51
- return $ret;
52
- }
53
- }
54
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentGiropay.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentGiropay extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_giropay';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentGiropay';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = false;
32
- protected $_canCapturePartial = false;
33
- protected $_canRefund = false;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="GIROPAY"/>';
47
- }
48
- }
49
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentMaestro.php DELETED
@@ -1,61 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_SelectpaymentMaestro extends Mpay24_Mpay24_Model_Method_Selectpayment {
21
- protected $_code = 'mpay24_sp_maestro';
22
- protected $_formBlockType = 'mpay24/form_selectpaymentMaestro';
23
- protected $_infoBlockType = 'mpay24/info_selectpayment';
24
-
25
- /**
26
- * Availability options
27
- */
28
- protected $_isGateway = false;
29
- protected $_canAuthorize = true;
30
- protected $_canCapture = false;
31
- protected $_canCapturePartial = false;
32
- protected $_canRefund = true;
33
- protected $_canVoid = false;
34
- protected $_canUseInternal = false;
35
- protected $_canUseCheckout = true;
36
- protected $_canUseForMultishipping = false;
37
- protected $_canSaveCc = false;
38
-
39
- public function validate(){
40
- parent::validate();
41
- return $this;
42
- }
43
-
44
- public function getPaymentTypes(){
45
- return '<Payment Type="MAESTRO"/>';
46
- }
47
-
48
- /**
49
- * Refund money
50
- *
51
- * @param Varien_Object $invoicePayment
52
- * @return Mpay24_Mpay24_Model_PaymentMethod
53
- */
54
- public function refund(Varien_Object $payment, $amount){
55
- $this->clearSession();
56
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
57
- $this->getApi()->refund($mpayTid, $amount);
58
- return $this;
59
- }
60
- }
61
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentMia.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentMia extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_mia';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentMia';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = false;
32
- protected $_canCapturePartial = false;
33
- protected $_canRefund = false;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- $ret = '';
47
- // foreach(explode(',',Mage::getStoreConfig('payment/mpay24_sp_mia/miatypes')) as $brand):
48
- // $ret.= '<Payment Type="MIA" Brand="'.$brand.'"/>';
49
- // endforeach;
50
- $ret.= '<Payment Type="MIA" />';
51
- return $ret;
52
- }
53
- }
54
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentMpass.php DELETED
@@ -1,79 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentMpass extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_mpass';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentMpass';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="MPASS"/>';
47
- }
48
-
49
- /**
50
- * Capture payment
51
- *
52
- * @param Varien_Object $orderPayment
53
- * @return Mpay24_Mpay24_Model_PaymentMethod
54
- */
55
- public function capture(Varien_Object $payment, $amount) {
56
- $this->clearSession();
57
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
58
- if($mpayTid != ''){
59
- $this->getApi()->charge($mpayTid, $amount);
60
- }else{
61
- Mage::log('capture not possible. mpaytid not exist');
62
- }
63
- return $this;
64
- }
65
-
66
- /**
67
- * Refund money
68
- *
69
- * @param Varien_Object $invoicePayment
70
- * @return Mpay24_Mpay24_Model_PaymentMethod
71
- */
72
- public function refund(Varien_Object $payment, $amount){
73
- $this->clearSession();
74
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
75
- $this->getApi()->refund($mpayTid, $amount);
76
- return $this;
77
- }
78
- }
79
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentPaybox.php DELETED
@@ -1,78 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_SelectpaymentPaybox extends Mpay24_Mpay24_Model_Method_Selectpayment {
21
- protected $_code = 'mpay24_sp_paybox';
22
- protected $_formBlockType = 'mpay24/form_selectpaymentPaybox';
23
- protected $_infoBlockType = 'mpay24/info_selectpayment';
24
-
25
- /**
26
- * Availability options
27
- */
28
- protected $_isGateway = false;
29
- protected $_canAuthorize = true;
30
- protected $_canCapture = true;
31
- protected $_canCapturePartial = true;
32
- protected $_canRefund = true;
33
- protected $_canVoid = false;
34
- protected $_canUseInternal = false;
35
- protected $_canUseCheckout = true;
36
- protected $_canUseForMultishipping = false;
37
- protected $_canSaveCc = false;
38
-
39
- public function validate(){
40
- parent::validate();
41
- return $this;
42
- }
43
-
44
- public function getPaymentTypes(){
45
- return '<Payment Type="PB"/>';
46
- }
47
-
48
- /**
49
- * Capture payment
50
- *
51
- * @param Varien_Object $orderPayment
52
- * @return Mpay24_Mpay24_Model_PaymentMethod
53
- */
54
- public function capture(Varien_Object $payment, $amount) {
55
- $this->clearSession();
56
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
57
- if($mpayTid != ''){
58
- $this->getApi()->charge($mpayTid, $amount);
59
- }else{
60
- Mage::log('capture not possible. mpaytid not exist');
61
- }
62
- return $this;
63
- }
64
-
65
- /**
66
- * Refund money
67
- *
68
- * @param Varien_Object $invoicePayment
69
- * @return Mpay24_Mpay24_Model_PaymentMethod
70
- */
71
- public function refund(Varien_Object $payment, $amount){
72
- $this->clearSession();
73
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
74
- $this->getApi()->refund($mpayTid, $amount);
75
- return $this;
76
- }
77
- }
78
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentPaypal.php DELETED
@@ -1,79 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentPaypal extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_paypal';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentPaypal';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = true;
32
- protected $_canCapturePartial = true;
33
- protected $_canRefund = true;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="PAYPAL"/>';
47
- }
48
-
49
- /**
50
- * Capture payment
51
- *
52
- * @param Varien_Object $orderPayment
53
- * @return Mpay24_Mpay24_Model_PaymentMethod
54
- */
55
- public function capture(Varien_Object $payment, $amount) {
56
- $this->clearSession();
57
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
58
- if($mpayTid != ''){
59
- $this->getApi()->charge($mpayTid, $amount);
60
- }else{
61
- Mage::log('capture not possible. mpaytid not exist');
62
- }
63
- return $this;
64
- }
65
-
66
- /**
67
- * Refund money
68
- *
69
- * @param Varien_Object $invoicePayment
70
- * @return Mpay24_Mpay24_Model_PaymentMethod
71
- */
72
- public function refund(Varien_Object $payment, $amount){
73
- $this->clearSession();
74
- $mpayTid = $this->getApi()->getMpayTid($payment->getOrder()->getIncrementId());
75
- $this->getApi()->refund($mpayTid, $amount);
76
- return $this;
77
- }
78
- }
79
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentPsc.php DELETED
@@ -1,48 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_SelectpaymentPsc extends Mpay24_Mpay24_Model_Method_Selectpayment {
21
- protected $_code = 'mpay24_sp_psc';
22
- protected $_formBlockType = 'mpay24/form_selectpaymentPsc';
23
- protected $_infoBlockType = 'mpay24/info_selectpayment';
24
-
25
- /**
26
- * Availability options
27
- */
28
- protected $_isGateway = false;
29
- protected $_canAuthorize = true;
30
- protected $_canCapture = false;
31
- protected $_canCapturePartial = false;
32
- protected $_canRefund = false;
33
- protected $_canVoid = false;
34
- protected $_canUseInternal = false;
35
- protected $_canUseCheckout = true;
36
- protected $_canUseForMultishipping = false;
37
- protected $_canSaveCc = false;
38
-
39
- public function validate(){
40
- parent::validate();
41
- return $this;
42
- }
43
-
44
- public function getPaymentTypes(){
45
- return '<Payment Type="PSC"/>';
46
- }
47
- }
48
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/SelectpaymentQuick.php DELETED
@@ -1,49 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_SelectpaymentQuick extends Mpay24_Mpay24_Model_Method_Selectpayment {
22
- protected $_code = 'mpay24_sp_quick';
23
- protected $_formBlockType = 'mpay24/form_selectpaymentQuick';
24
- protected $_infoBlockType = 'mpay24/info_selectpayment';
25
-
26
- /**
27
- * Availability options
28
- */
29
- protected $_isGateway = false;
30
- protected $_canAuthorize = true;
31
- protected $_canCapture = false;
32
- protected $_canCapturePartial = false;
33
- protected $_canRefund = false;
34
- protected $_canVoid = false;
35
- protected $_canUseInternal = false;
36
- protected $_canUseCheckout = true;
37
- protected $_canUseForMultishipping = false;
38
- protected $_canSaveCc = false;
39
-
40
- public function validate(){
41
- parent::validate();
42
- return $this;
43
- }
44
-
45
- public function getPaymentTypes(){
46
- return '<Payment Type="QUICK"/>';
47
- }
48
- }
49
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Session.php CHANGED
@@ -12,16 +12,14 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
- class Mpay24_Mpay24_Model_Session extends Mage_Core_Model_Session_Abstract
22
- {
23
- public function __construct()
24
- {
25
  $this->init('mpay24');
26
  }
27
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
+ class Mpay24_Mpay24_Model_Session extends Mage_Core_Model_Session_Abstract {
22
+ public function __construct() {
 
 
23
  $this->init('mpay24');
24
  }
25
  }
app/code/community/Mpay24/Mpay24/Model/Source/BillAddr.php CHANGED
@@ -12,25 +12,23 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
- class Mpay24_Mpay24_Model_Source_BillAddr
21
- {
22
 
23
  /**
24
- * Options getter
25
  *
26
- * @return array
27
  */
28
- public function toOptionArray()
29
- {
30
  return array(
31
  array('value' => 'ReadWrite', 'label'=>Mage::helper('adminhtml')->__('ReadWrite')),
32
  array('value' => 'ReadOnly', 'label'=>Mage::helper('adminhtml')->__('ReadOnly')),
33
  );
34
  }
35
-
36
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
+
21
+ class Mpay24_Mpay24_Model_Source_BillAddr {
22
 
23
  /**
24
+ * @abstract Options getter
25
  *
26
+ * @return Array
27
  */
28
+ public function toOptionArray() {
 
29
  return array(
30
  array('value' => 'ReadWrite', 'label'=>Mage::helper('adminhtml')->__('ReadWrite')),
31
  array('value' => 'ReadOnly', 'label'=>Mage::helper('adminhtml')->__('ReadOnly')),
32
  );
33
  }
34
+ }
 
app/code/community/Mpay24/Mpay24/Model/Source/Cctype.php DELETED
@@ -1,47 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Source_Cctype {
22
-
23
- public function getAllowedTypes() {
24
- return array('VI', 'MC', 'AE', 'DC', 'JC');
25
- }
26
-
27
- public function toOptionArray(){
28
- /**
29
- * making filter by allowed cards
30
- */
31
- $allowed = $this->getAllowedTypes();
32
- $options = array();
33
-
34
- foreach (Mage::getSingleton('mpay24/config')->getCcTypes() as $code => $name) {
35
- if (in_array($code, $allowed) || !count($allowed)) {
36
- if(($name == 'JCB' && Mage::getStoreConfig('currency/options/base') == 'EUR') || $name != 'JCB'){
37
- $options[] = array(
38
- 'value' => $code,
39
- 'label' => $name
40
- );
41
- }
42
- }
43
- }
44
-
45
- return $options;
46
- }
47
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/ClearingAction.php CHANGED
@@ -12,18 +12,19 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
- class Mpay24_Mpay24_Model_Source_ClearingAction
21
- {
22
- public function toOptionArray()
23
- {
 
24
  return array(
25
- array('value' => Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_AUTH, 'label' => Mage::helper('mpay24')->__('Authorize')),
26
- array('value' => Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_SALE, 'label' => Mage::helper('mpay24')->__('Sale')),
27
  );
28
  }
29
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
+
21
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
22
+
23
+ class Mpay24_Mpay24_Model_Source_ClearingAction {
24
+ public function toOptionArray() {
25
  return array(
26
+ array('value' => MPay24MagentoShop::PAYMENT_TYPE_AUTH, 'label' => Mage::helper('mpay24')->__('Authorization')),
27
+ array('value' => MPay24MagentoShop::PAYMENT_TYPE_SALE, 'label' => Mage::helper('mpay24')->__('Billing')),
28
  );
29
  }
30
  }
app/code/community/Mpay24/Mpay24/Model/Source/ElvCountryAction.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_ElvCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- $elvTypes = Mpay24_Mpay24_Block_Form_SelectpaymentCc::mPAYPaymentMethodsOrBrands('elv');
25
- $alreadyDE = false;
26
- $reurnElvTypes = array();
27
-
28
- foreach($elvTypes as $e):
29
- $e = strtoupper($e);
30
- if($e === 'HOBEX-AT'):
31
- $at = array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria'));
32
- array_push($reurnElvTypes, $at);
33
- elseif(($e === 'HOBEX-DE' || $e === 'ATOS') && !$alreadyDE):
34
- $de = array('value' => 'DE', 'label' => Mage::helper('mpay24')->__('Germany'));
35
- array_push($reurnElvTypes, $de);
36
- $alreadyDE = true;
37
- elseif($e === 'HOBEX-NL'):
38
- $nl = array('value' => 'NL', 'label' => Mage::helper('mpay24')->__('Netherland'));
39
- array_push($reurnElvTypes, $nl);
40
- endif;
41
- endforeach;
42
-
43
- return $reurnElvTypes;
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/Elvtype.php DELETED
@@ -1,45 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_Model_Source_Elvtype {
22
-
23
- public function getAllowedTypes() {
24
- return array('HOBEX-AT', 'HOBEX-DE', 'HOBEX-NL');
25
- }
26
-
27
- public function toOptionArray(){
28
- /**
29
- * making filter by allowed cards
30
- */
31
- $allowed = $this->getAllowedTypes();
32
- $options = array();
33
-
34
- foreach (Mage::getSingleton('mpay24/config')->getElvTypes() as $code => $name) {
35
- if (in_array($code, $allowed) || !count($allowed)) {
36
- $options[] = array(
37
- 'value' => $code,
38
- 'label' => $name
39
- );
40
- }
41
- }
42
-
43
- return $options;
44
- }
45
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/EpsTypesAction.php DELETED
@@ -1,54 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_EpsTypesAction
21
- {
22
- public function toOptionArray()
23
- {
24
- $epsTypes = Mpay24_Mpay24_Block_Form_SelectpaymentCc::mPAYPaymentMethodsOrBrands('eps');
25
-
26
- $reurnEpsTypes = array();
27
-
28
- foreach($epsTypes as $e):
29
- $e = strtoupper($e);
30
- if($e === 'ARZ'):
31
- $arz = array('value' => 'ARZ', 'label' => Mage::helper('mpay24')->__('Ärztebank'));
32
- array_push($reurnEpsTypes, $arz);
33
- elseif($e === 'BA'):
34
- $ba = array('value' => 'BA', 'label' => Mage::helper('mpay24')->__('Bank Austria Creditanstalt'));
35
- array_push($reurnEpsTypes, $ba);
36
- elseif($e === 'BAWAG'):
37
- $bawag = array('value' => 'BAWAG', 'label' => Mage::helper('mpay24')->__('BAWAG P.S.K. Gruppe'));
38
- array_push($reurnEpsTypes, $bawag);
39
- elseif($e === 'ERSTE'):
40
- $erste = array('value' => 'ERSTE', 'label' => Mage::helper('mpay24')->__('Erste Bank/Sparkassengruppe'));
41
- array_push($reurnEpsTypes, $erste);
42
- elseif($e === 'HYPO'):
43
- $hypo = array('value' => 'HYPO', 'label' => Mage::helper('mpay24')->__('Hypotekenbanken'));
44
- array_push($reurnEpsTypes, $hypo);
45
- elseif($e === 'RZB'):
46
- $rzb = array('value' => 'RZB', 'label' => Mage::helper('mpay24')->__('Raiffeisen Bankengruppe'));
47
- array_push($reurnEpsTypes, $rzb);
48
- endif;
49
-
50
- endforeach;
51
-
52
- return $reurnEpsTypes;
53
- }
54
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/{sql/mpay24_setup/mysql4-uninstall-1.2.2.php → Model/Source/FormTemplate.php} RENAMED
@@ -1,29 +1,33 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
 
20
 
21
- $code = 'mpay24';
22
- $installer = $this;
23
-
24
- $installer->startSetup();
25
- $installer->run("
26
- DROP TABLE if exists {$this->getTable('mpay24_debug')};
27
- ");
28
- $installer->endSetup();
29
- ?>
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ class Mpay24_Mpay24_Model_Source_FormTemplate {
21
 
22
+ /**
23
+ * @abstract Options getter
24
+ *
25
+ * @return Array
26
+ */
27
+ public function toOptionArray() {
28
+ return array(
29
+ array('value' => 'dropDown.phtml', 'label'=>'Drop-Down'),
30
+ array('value' => 'area.phtml', 'label'=>'Icons'),
31
+ );
32
+ }
33
+ }
app/code/community/Mpay24/Mpay24/Model/Source/GiropayCountryAction.php DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_GiropayCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'DE', 'label' => Mage::helper('mpay24')->__('Germany')),
26
- );
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/MaestroCountryAction.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_MaestroCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria')),
26
- array('value' => 'UK', 'label' => Mage::helper('mpay24')->__('UK'))
27
- );
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/MiaCountryAction.php DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_MiaCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria'))
26
- );
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/MiaTypesAction.php DELETED
@@ -1,29 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_MiaTypesAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'ORANGE', 'label' => Mage::helper('mpay24')->__('ORANGE')),
26
- array('value' => 'T-MOBILE', 'label' => Mage::helper('mpay24')->__('T-MOBILE'))
27
- );
28
- }
29
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/PaidOrder.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ class Mpay24_Mpay24_Model_Source_PaidOrder {
21
+
22
+ /**
23
+ * @abstract Options getter
24
+ *
25
+ * @return Array
26
+ */
27
+ public function toOptionArray() {
28
+ return array(
29
+ array('value' => Mage_Sales_Model_Order::STATE_PROCESSING, 'label'=>'Processing'),
30
+ array('value' => Mage_Sales_Model_Order::STATE_COMPLETE, 'label'=>'Complete'),
31
+ );
32
+ }
33
+ }
app/code/community/Mpay24/Mpay24/Model/Source/PayboxCountryAction.php DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_PayboxCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria'))
26
- );
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/PaymentsActive.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ class Mpay24_Mpay24_Model_Source_PaymentsActive {
21
+
22
+ /**
23
+ * @abstract Options getter
24
+ *
25
+ * @return Array
26
+ */
27
+ public function toOptionArray() {
28
+ return array(
29
+ array('value' => 'false', 'label'=>Mage::helper('mpay24')->__("Default mPAY24 configuration")),
30
+ array('value' => 'true', 'label'=>Mage::helper('mpay24')->__("Custom configuration"))
31
+ );
32
+ }
33
+ }
app/code/community/Mpay24/Mpay24/Model/Source/PaysafecardCountryAction.php DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- class Mpay24_Mpay24_Model_Source_PaysafecardCountryAction
21
- {
22
- public function toOptionArray()
23
- {
24
- return array(
25
- array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria'))
26
- );
27
- }
28
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/Model/Source/Request.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Source_Request extends Varien_Object {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Source_Request extends Varien_Object {
app/code/community/Mpay24/Mpay24/Model/Source/Result.php CHANGED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Source_Result extends Varien_Object {
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_Model_Source_Result extends Varien_Object {
app/code/community/Mpay24/Mpay24/Model/Source/ShoppingCartRowsAction.php CHANGED
@@ -12,15 +12,13 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
- class Mpay24_Mpay24_Model_Source_ShoppingCartRowsAction
21
- {
22
- public function toOptionArray()
23
- {
24
  return array(
25
  array('value' => 'Number', 'label' => Mage::helper('mpay24')->__('Number')),
26
  array('value' => 'ProductNr', 'label' => Mage::helper('mpay24')->__('ProductNr')),
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
+ class Mpay24_Mpay24_Model_Source_ShoppingCartRowsAction {
21
+ public function toOptionArray() {
 
 
22
  return array(
23
  array('value' => 'Number', 'label' => Mage::helper('mpay24')->__('Number')),
24
  array('value' => 'ProductNr', 'label' => Mage::helper('mpay24')->__('ProductNr')),
app/code/community/Mpay24/Mpay24/Model/Source/{EpsCountryAction.php → System.php} RENAMED
@@ -12,17 +12,22 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
- class Mpay24_Mpay24_Model_Source_EpsCountryAction
21
- {
22
- public function toOptionArray()
23
- {
 
 
 
 
24
  return array(
25
- array('value' => 'AT', 'label' => Mage::helper('mpay24')->__('Austria'))
 
26
  );
27
  }
28
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
+ class Mpay24_Mpay24_Model_Source_System {
21
+
22
+ /**
23
+ * @abstract Options getter
24
+ *
25
+ * @return Array
26
+ */
27
+ public function toOptionArray() {
28
  return array(
29
+ array('value' => true, 'label'=>Mage::helper('adminhtml')->__('Test')),
30
+ array('value' => false, 'label'=>Mage::helper('adminhtml')->__('Live')),
31
  );
32
  }
33
  }
app/code/community/Mpay24/Mpay24/Model/System/Config/Backend/Encrypted.php CHANGED
@@ -12,42 +12,26 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category Mage
22
- * @package Mage_Adminhtml
23
- * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
  */
26
 
27
-
28
- /**
29
- * Encrypted config field backend model
30
- *
31
- * @category Mage
32
- * @package Mage_Adminhtml
33
- */
34
- class Mpay24_Mpay24_Model_System_Config_Backend_Encrypted extends Mage_Core_Model_Config_Data
35
- {
36
  /**
37
- * Decrypt value after loading
38
  *
39
  */
40
- protected function _afterLoad()
41
- {
42
  $value = (string)$this->getValue();
43
  if (!empty($value) && ($decrypted = Mage::helper('core')->decrypt($value))) {
44
  $this->setValue($decrypted);
45
  }
46
  }
47
 
48
-
49
- protected function _beforeSave()
50
- {
51
  $value = (string)$this->getValue();
52
 
53
  // don't change value, if an obscured value came
@@ -60,12 +44,11 @@ class Mpay24_Mpay24_Model_System_Config_Backend_Encrypted extends Mage_Core_Mode
60
  }
61
 
62
  /**
63
- * Get & decrypt old value from configuration
64
  *
65
- * @return string
66
  */
67
- public function getOldValue()
68
- {
69
  return Mage::helper('core')->decrypt(parent::getOldValue());
70
  }
71
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
 
 
 
 
 
 
19
  */
20
 
21
+ class Mpay24_Mpay24_Model_System_Config_Backend_Encrypted extends Mage_Core_Model_Config_Data {
22
+
 
 
 
 
 
 
 
23
  /**
24
+ * @abstract Decrypt value after loading
25
  *
26
  */
27
+ protected function _afterLoad() {
 
28
  $value = (string)$this->getValue();
29
  if (!empty($value) && ($decrypted = Mage::helper('core')->decrypt($value))) {
30
  $this->setValue($decrypted);
31
  }
32
  }
33
 
34
+ protected function _beforeSave() {
 
 
35
  $value = (string)$this->getValue();
36
 
37
  // don't change value, if an obscured value came
44
  }
45
 
46
  /**
47
+ * @abstract Get & decrypt old value from configuration
48
  *
49
+ * @return String
50
  */
51
+ public function getOldValue() {
 
52
  return Mage::helper('core')->decrypt(parent::getOldValue());
53
  }
54
+ }
app/code/community/Mpay24/Mpay24/controllers/AdminhtmlController.php DELETED
@@ -1,74 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
-
21
- class Mpay24_Mpay24_AdminhtmlController extends Mage_Core_Controller_Front_Action {
22
-
23
- public function indexAction() {
24
- Mage::getModel('mpay24/update')->listPaymentMethods();
25
- $this->_redirect('adminhtml/system_config/edit/section/mpay24');
26
- }
27
-
28
- public function exportAction() {
29
- $filename = "export_".date("Y-m-d_H-i",time());
30
- $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
31
- $tables = $connection->listTables();
32
- $columns = array();
33
- $i = 0;
34
- $sql_output = "SET SQL_MODE=\"NO_AUTO_VALUE_ON_ZERO\";
35
- CREATE TABLE IF NOT EXISTS `mpay24_debug` (
36
- `debug_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
37
- `request_body` text,
38
- `response_body` text,
39
- `request_serialized` text,
40
- `result_serialized` text,
41
- `request_dump` text,
42
- `result_dump` text,
43
- `time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
44
- PRIMARY KEY (`debug_id`)
45
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
46
-
47
- INSERT INTO `mpay24_debug` (`debug_id`, `request_body`, `response_body`, `request_serialized`, `result_serialized`, `request_dump`, `result_dump`, `time_stamp`) VALUES
48
- ";
49
- if(in_array("mpay24_debug", $tables)){
50
- foreach ($connection->fetchAll("SHOW COLUMNS FROM mpay24_debug") as $col) {
51
- $columns[$i] = $col['Field'];
52
- $i++;
53
- }
54
-
55
- foreach ($connection->fetchAll("SELECT * FROM mpay24_debug") as $row) {
56
- $sql_output.= "(";
57
- for ($j=0;$j<$i;$j++) {
58
- $colName = $columns[$j];
59
- $sql_output .= "'" . $row[$colName] . "',";
60
- }
61
- $sql_output = substr($sql_output, 0, -1);
62
- $sql_output .= "),";
63
- }
64
-
65
- header("Content-type: application/vnd.ms-excel");
66
- header("Content-disposition: sql" . date("Y-m-d") . ".sql");
67
- header( "Content-disposition: filename=".$filename.".sql");
68
-
69
- print substr($sql_output, 0, -1) . ";";
70
- } else {
71
- $this->_redirect('adminhtml/system_config/edit/section/mpay24');
72
- }
73
- }
74
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/Mpay24/Mpay24/controllers/IndexController.php CHANGED
@@ -12,14 +12,14 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_IndexController extends Mage_Core_Controller_Front_Action {
22
  public function indexAction() {
23
  $this->_redirect('/');
24
  }
25
- }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  class Mpay24_Mpay24_IndexController extends Mage_Core_Controller_Front_Action {
22
  public function indexAction() {
23
  $this->_redirect('/');
24
  }
25
+ }
app/code/community/Mpay24/Mpay24/controllers/PaymentController.php CHANGED
@@ -12,11 +12,12 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
 
20
 
21
  class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action {
22
 
@@ -27,122 +28,37 @@ class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action
27
  }
28
  }
29
 
30
- public function redirectccAction() {
 
 
 
31
  $order = $this->getOrder();
32
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Reserved').' [ '.($order->formatPriceTxt($order->getGrandTotal())).' ]');
33
  $order->save();
34
- if(Mage::getModel('mpay24/cc')->getConfigData('clearing') == Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_SALE){
35
- if($this->_createInvoice($order, true)){
36
- $this->getApi()->charge($order->getPayment()->getMpayTid(), $order->getGrandTotal());
37
- }
38
- }
39
- $this->_redirect('checkout/onepage/success', array('_secure'=>true));
40
- }
41
-
42
- public function redirectpbAction() {
43
- $order = $this->getOrder();
44
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Reserved').' [ '.($order->formatPriceTxt($order->getGrandTotal())).' ]');
45
- $order->save();
46
- if(Mage::getModel('mpay24/paybox')->getConfigData('clearing') == Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_SALE){
47
- if($this->_createInvoice($order, true)){
48
- $this->getApi()->charge($order->getPayment()->getMpayTid(), $order->getGrandTotal());
49
- }
50
- }
51
- $this->_redirect('checkout/onepage/success', array('_secure'=>true));
52
- }
53
-
54
- public function redirectAction() {
55
- $this->getOrder()->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT)->save();
56
- $this->getOrder()->setData('status',Mage_Sales_Model_Order::STATE_PENDING_PAYMENT)->save();
57
- $this->_redirectedTo3DSUrl();
58
- $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/redirect")->toHtml());
59
  }
60
 
 
 
 
61
  public function confirmationAction() {
62
- Mage::log('confirmation called');
63
- $this->getResponse()->setBody("OK:received");
64
-
65
- $result = $this->getRequest()->getParams();
66
- Mage::log($result);
67
- switch($result['OPERATION']){
68
- case 'CONFIRMATION':
69
- $order = Mage::getModel('sales/order');
70
- switch($result['STATUS']){
71
- case 'RESERVED':
72
- $this->_paymentSuccess();
73
- $order->loadByIncrementId($result['USER_FIELD']);
74
- if($order->getId()){
75
- $order->getPayment()->setMpayTid($result['MPAYTID']);
76
- $order->getPayment()->setAmountAuthorized($result['PRICE']/100);
77
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Reserved').' [ '.$order->formatPriceTxt($result['PRICE']/100).' ]');
78
- $order->save();
79
- $this->_sendNewOrderEmail();
80
- switch($result['P_TYPE']){
81
- case 'CC':
82
- if(Mage::getModel('mpay24/cc')->getConfigData('clearing') == Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_SALE){
83
- $this->_createInvoice($order, true);
84
- }
85
- break;
86
- case 'PB':
87
- if(Mage::getModel('mpay24/paybox')->getConfigData('clearing') == Mpay24_Mpay24_Model_Api_Mpay24::PAYMENT_TYPE_SALE){
88
- $this->_createInvoice($order, true);
89
- }
90
- break;
91
- default:
92
- break;
93
- }
94
- }
95
- break;
96
- case 'BILLED':
97
- $order->loadByIncrementId($result['USER_FIELD']);
98
- foreach ($order->getInvoiceCollection() as $orderInvoice) {
99
- $open = Mage_Sales_Model_Order_Invoice::STATE_OPEN;
100
- $paid = Mage_Sales_Model_Order_Invoice::STATE_PAID;
101
- if ($orderInvoice->getState() == $open && $orderInvoice->getGrandTotal() == ($result['PRICE']/100)) {
102
- $orderInvoice->pay();
103
- $orderInvoice->save();
104
- }
105
- }
106
- $order->addStatusToHistory(Mage_Sales_Model_Order::STATE_PROCESSING, Mage::helper('mpay24')->__('Payment Billed').' [ '.$order->formatPriceTxt($result['PRICE']/100).' ]');
107
- $order->save();
108
- break;
109
- case 'REVERSED':
110
-
111
- break;
112
- case 'CREDITED':
113
- $order->loadByIncrementId($result['USER_FIELD']);
114
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Credited'));
115
- $order->save();
116
- break;
117
- case 'ERROR':
118
- $order->loadByIncrementId($result['USER_FIELD']);
119
- if(!$order->getPayment()->getMpayTid()) $order->getPayment()->setMpayTid($result['MPAYTID']);
120
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Customer cancled payment or payment error'));
121
- $order->save();
122
- break;
123
- }
124
- break;
125
- default:
126
- break;
127
- }
128
- }
129
-
130
- public function confirmationSPAction() {
131
- Mage::log('confirmationSP called');
132
 
133
- $this->getResponse()->setBody("OK:received");
134
 
135
  $result = $this->getRequest()->getParams();
136
 
137
  $order = Mage::getModel('sales/order');
138
  $order->loadByIncrementId($result['TID']);
139
 
140
- Mage::log('RESULT from confirmationSP:'."\n");
141
  Mage::log($result);
 
142
  switch($result['OPERATION']){
143
  case 'CONFIRMATION':
144
- $this->getTransactionStatus($result['TID']);
145
  break;
 
146
  default:
147
  break;
148
  }
@@ -159,29 +75,35 @@ class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action
159
  $this->renderLayout();
160
  }
161
 
 
 
 
162
  public function successAction() {
163
  $order = $this->getOrder($_REQUEST['TID']);
164
- Mage::log('success called for order '.$order->getData('increment_id'));
165
  $order->getPayment()->setAdditionalInformation('success', true)->save();
 
166
  $this->_redirect('sales/order/view/order_id/'.$order->getId().'/');
167
  }
168
 
 
 
 
169
  public function guestsuccessAction() {
170
  $order = $this->getOrder($_REQUEST['TID']);
171
- Mage::log('success called for order '.$order->getData('increment_id'));
172
  $order->getPayment()->setAdditionalInformation('success', true)->save();
173
- $this->getTransactionStatus();
174
  $this->_redirect('checkout/onepage/success/');
175
  }
176
 
 
 
 
177
  public function errorAction() {
178
- Mage::getSingleton('mpay24/session')->setParentRedirectUrl('mpay24/payment/errormsg');
179
- $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/parentRedirect")->toHtml());
180
- }
181
-
182
- public function errorSPAction() {
183
  $order = $this->getOrder($_REQUEST['TID']);
184
- Mage::log('errorSP called for order '.$order->getData('increment_id'));
 
185
  $order->getPayment()->setAdditionalInformation('error', true)->save();
186
  $this->getTransactionStatus();
187
 
@@ -189,71 +111,29 @@ class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action
189
  $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/parentRedirect")->toHtml());
190
  }
191
 
192
- public function cancelSPAction() {
 
 
 
193
  $order = $this->getOrder($_REQUEST['TID']);
194
- Mage::log('cancelSP called for order '.$order->getData('increment_id'));
195
- $order->getPayment()->setAdditionalInformation('cancel', true)->save();
196
- $this->getTransactionStatus();
 
 
197
  Mage::getSingleton('mpay24/session')->setParentRedirectUrl('sales/order/view/order_id/'.$order->getId().'/');
198
  $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/parentRedirect")->toHtml());
199
  }
200
 
201
- public function errormsgAction(){
202
- $this->loadLayout();
203
- $this->renderLayout();
204
- }
205
-
206
- private function _redirectedTo3DSUrl(){
207
- $order = $this->getOrder();
208
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Redirected to a 3D secure form'));
209
- $order->save();
210
- }
211
-
212
- private function _paymentError(){
213
- $session = $this->getCheckout();
214
- $session->getQuote()->setIsActive(false)->save();
215
- $order = $this->getOrder();
216
- $order->cancel();
217
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Customer cancled payment or payment error'));
218
- $order->save();
219
- }
220
-
221
- public function _paymentSuccess() {
222
- $session = $this->getCheckout();
223
- $session->getQuote()->setIsActive(false)->save();
224
- }
225
-
226
- public function _createInvoice($order, $capture = false){
227
- if ($order->canInvoice()) {
228
- $invoice = $order->prepareInvoice();
229
-
230
- if($capture){
231
- $invoice->register()->capture();
232
- }else{
233
- $invoice->register();
234
- }
235
- Mage::getModel('core/resource_transaction')
236
- ->addObject($invoice)
237
- ->addObject($invoice->getOrder())
238
- ->save();
239
-
240
- $invoice->sendEmail(true, '');
241
- return true;
242
- }
243
- return false;
244
- }
245
-
246
- public function _sendNewOrderEmail(){
247
- $order = $this->getOrder();
248
- if($order->getId()){
249
- $order->sendNewOrderEmail();
250
- }
251
- }
252
-
253
  public function getCheckout() {
254
  return Mage::getSingleton('checkout/session');
255
  }
256
 
 
 
 
 
 
257
  public function getOrder($tid=null) {
258
  $order = Mage::getSingleton('sales/order');
259
  if($tid == null)
@@ -262,362 +142,366 @@ class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action
262
  return $order->loadByIncrementId($tid);
263
  }
264
 
265
- public function getSession() {
266
- return Mage::getSingleton('mpay24/session');
267
- }
268
-
269
- public function getApi(){
270
- return Mage::getSingleton('mpay24/api_mpay24');
271
- }
272
-
273
- public function getTransactionStatus($tid=null){
274
- $updateResult = "";
275
- $order = $this->getOrder($tid);
276
-
277
  Mage::log('getTransactionStatus called for order '.$order->getData('increment_id'));
 
 
 
 
 
278
 
279
  $incrementId = $order->getData('increment_id');
280
  $tid = $order->getId();
281
 
282
  if($order->getPayment()){
283
- if($order->getPayment()->getAdditionalInformation('mpay_tid') != '' && !$order->getPayment()->getAdditionalInformation('error') && $tid == null){
284
- $soapTransactionStatusRequest = Mage::getSingleton('mpay24/api_mpay24')->createBasicSoapRequestObject('MPAYTID_TRANSACTIONSTATUS');
285
- $soapTransactionStatusRequest->setMpaytid($order->getPayment()->getAdditionalInformation('mpay_tid'));
286
- } else{
287
- $soapTransactionStatusRequest = Mage::getSingleton('mpay24/api_mpay24')->createBasicSoapRequestObject('TID_TRANSACTIONSTATUS');
288
- $soapTransactionStatusRequest->setTid($incrementId);
289
- }
290
- $soapTransactionStatusResult = Mage::getSingleton('mpay24/api_mpay24')->authorize($soapTransactionStatusRequest);
291
 
292
- Mage::log('RESULT from getTransactionStatus:'."\n");
293
- Mage::log($soapTransactionStatusResult);
294
- if($soapTransactionStatusResult->getData('APPR_CODE') == '')
295
  $apprCode = 'N/A';
296
  else
297
- $apprCode = $soapTransactionStatusResult->getData('APPR_CODE');
298
-
299
- switch ($soapTransactionStatusResult->getResponseCode()) {
300
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_STATUS_GETTED:
301
- $updateResult = "The transaction status was succesfully updated!";
302
- $type = '';
303
-
304
- if($soapTransactionStatusResult->getData('P_TYPE') === "PB"):
305
- $type = 'mpay24_sp_paybox';
306
- elseif($soapTransactionStatusResult->getData('P_TYPE') === "CASH-TICKET"):
307
- $type = 'mpay24_sp_cashTicket';
308
- else:
309
- $type = 'mpay24_sp_'.strtolower($soapTransactionStatusResult->getData('P_TYPE'));
310
- endif;
311
- $order->getPayment()->setMethod($type)->save();
312
- $order->getPayment()->setCcType($soapTransactionStatusResult->getData('BRAND'))->save();
313
  $order->getPayment()->setAdditionalInformation('status', true)->save();
314
- $updateResult .= "\n\nActual status: " . $soapTransactionStatusResult->getData('TRANSACTION_STATUS');
315
- $updateResult .= "\nAmount: " . number_format($soapTransactionStatusResult->getData('PRICE')/100, 2, '.', '') . " " . $soapTransactionStatusResult->getData('CURRENCY');
316
- $updateResult .= "\nMPAYTID: " . $soapTransactionStatusResult->getData('MPAYTID');
317
  $updateResult .= "\nAppr_code: " . $apprCode;
318
 
319
- switch($soapTransactionStatusResult->getData('TRANSACTION_STATUS')){
320
- case 'CREDITED':
321
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
322
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
323
- //$order->cancel();
324
- $order->setState(Mage_Sales_Model_Order::STATE_CANCELED)->save();
325
- $order->setData('status',Mage_Sales_Model_Order::STATE_CANCELED)->save();
326
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Credited'))->save();
327
- $order->getPayment()->setAdditionalInformation('error', false)->save();
328
- $order->save();
329
- break;
330
- case 'BILLED':
331
- if($order->getInvoiceCollection()->count() == 0){
332
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
333
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
334
- $order->getPayment()->setAmountAuthorized($soapTransactionStatusResult->getData('PRICE')/100)->save();
335
- $order->getPayment()->setAmountCharged($soapTransactionStatusResult->getData('PRICE')/100)->save();
336
- $order->getPayment()->setAdditionalInformation('error', false)->save();
337
- $this->_sendNewOrderEmail();
338
- $this->_createInvoice($order, false);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
339
  $order->save();
340
- }
341
- foreach ($order->getInvoiceCollection() as $orderInvoice) {
342
- $paid = Mage_Sales_Model_Order::STATE_COMPLETE;
343
- if ($order->getState() != $paid && $orderInvoice->getGrandTotal() == ($soapTransactionStatusResult->getData('PRICE')/100)) {
344
- $orderInvoice->pay();
345
- $orderInvoice->save();
346
- $order->getPayment()->capture($orderInvoice);
347
- }
348
- }
349
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
350
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
351
- if($order->getIsNotVirtual()){
352
- $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING)->save();
353
- $order->setData('status',Mage_Sales_Model_Order::STATE_PROCESSING)->save();
354
- } else {
355
- $order->setState(Mage_Sales_Model_Order::STATE_COMPLETE)->save();
356
- $order->setData('status',Mage_Sales_Model_Order::STATE_COMPLETE)->save();
357
- }
358
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Billed').' [ '.$order->formatPriceTxt($soapTransactionStatusResult->getData('PRICE')/100).' ]')->save();
359
- $order->save();
360
- break;
361
- case 'REVERSED':
362
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
363
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
364
- //$order->cancel();
365
- foreach ($order->getCreditmemosCollection() as $creditMemo) {
366
- $open = Mage_Sales_Model_Order_Creditmemo::STATE_OPEN;
367
- $paid = Mage_Sales_Model_Order_Invoice::STATE_PAID;
368
- if ($creditMemo->getState() == $open && $creditMemo->getGrandTotal() == ($soapTransactionStatusResult->getData('PRICE')/100)) {
369
- $order->getPayment()->refund($creditMemo);
370
- $creditMemo->save();
371
- }
372
- }
373
- $order->setState(Mage_Sales_Model_Order::STATE_CANCELED)->save();
374
- $order->getPayment()->setAdditionalInformation('error', false)->save();
375
- $order->setData('status',Mage_Sales_Model_Order::STATE_CANCELED)->save();
376
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Credited'))->save();
377
- $order->save();
378
- break;
379
- case 'RESERVED':
380
- if($order->getId()){
381
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
382
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
383
- $order->getPayment()->setAmountAuthorized($soapTransactionStatusResult->getData('PRICE')/100)->save();
384
- $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING)->save();
385
- $order->getPayment()->setAdditionalInformation('error', false)->save();
386
- $order->setData('status',Mage_Sales_Model_Order::STATE_PROCESSING)->save();
387
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Reserved').' [ '.$order->formatPriceTxt($soapTransactionStatusResult->getData('PRICE')/100).' ]');
388
- $this->_sendNewOrderEmail();
389
- $this->_createInvoice($order, false);
390
- }
391
- $order->save();
392
- break;
393
- case 'SUSPENDED':
394
- if($order->getId()){
395
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
396
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
397
- $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT)->save();
398
- $order->setData('status',Mage_Sales_Model_Order::STATE_PENDING_PAYMENT)->save();
399
- $order->getPayment()->setAdditionalInformation('error', false)->save();
400
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment Suspended').' [ '.$order->formatPriceTxt($soapTransactionStatusResult->getData('PRICE')/100).' ]');
401
- }
402
- $order->save();
403
- break;
404
- case 'ERROR':
405
- $order->setState(Mage_Sales_Model_Order::STATE_CANCELED);
406
- $order->setData('status', Mage_Sales_Model_Order::STATE_CANCELED);
407
- $order->save();
408
- $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
409
- $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
410
- $order->getPayment()->setAdditionalInformation('error', true)->save();
411
- //$order->getPayment()->cancel();
412
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment error'));
413
- $order->save();
414
- break;
415
- default:
416
- break;
417
-
418
- }
419
- break;
420
- case Mpay24_Mpay24_Model_Api_Mpay24::RESPONSE_CODE_STATUS_UNKNOWN:
421
- $updateResult = "The transaction was not found!";
422
- $order->getPayment()->setAdditionalInformation('status', true)->save();
423
- $order->getPayment()->setAdditionalInformation('mpay_tid', 'N/A')->save();
424
- $order->getPayment()->setAdditionalInformation('appr_code', 'N/A')->save();
425
- //$order->cancel();
426
- $order->setState(Mage_Sales_Model_Order::STATE_CANCELED)->save();
427
- $order->setData('status',Mage_Sales_Model_Order::STATE_CANCELED)->save();
428
- $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__('Payment canceled'));
429
- $order->save();
430
- break;
431
- default:
432
- break;
433
- }
434
-
435
- if(Mage::getStoreConfig('mpay24/mpay24as/billingAddressMode') == "ReadWrite"){
436
- if($soapTransactionStatusResult->getData('BILLING_ADDR') == ''){
437
-
438
- $request = $this->getRequest();
439
- $id = $this->getRequest()->getParam('id');
440
-
441
- $template = $this->_initTemplate('id');
442
-
443
- $template->setTemplateSubject('ACHTUNG!')
444
- ->setTemplateCode('ADDR_MODE')
445
- ->setTemplateText('<table>
446
- <thead>
447
- <tr>
448
- <th>Die Rechnungsadresse wurde von mPAY24 nicht zurückgeliefert!</th>
449
- </tr>
450
- </thead>
451
- <tbody>
452
- <tr>
453
- <td>
454
- <p>
455
- {{var reason}}
456
- </p>
457
- </td>
458
- </tr>
459
- </tbody>
460
- </table>');
461
-
462
- // The Id you just marked...
463
- if (!$template->getId()) {
464
- $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_HTML);
465
- }
466
-
467
- if($request->getParam('_change_type_flag')) {
468
- $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_TEXT);
469
- $template->setTemplateStyles('');
470
- }
471
-
472
- $template->save();
473
-
474
-
475
- // Define the sender, here we query Magento default email (in the configuration)
476
- // For customer support email, use : 'trans_email/ident_support/...'
477
- $sender = Array('name' => Mage::getStoreConfig('trans_email/ident_general/name'),
478
- 'email' => Mage::getStoreConfig('trans_email/ident_general/email'));
479
-
480
- // Set you store
481
- // This information may be taken from the current logged in user
482
- $store = Mage::app()->getStore();
483
-
484
- // In this array, you set the variables you use in your template
485
- $vars = Array(
486
- 'reason' => "ACHTUNG! - M�glicherweise wurde die Rechnungsadresse f�r die Bestellung mit ID '" .
487
- $order->getId() . "' vom Kunden in der mPAY24-Bezahlseite ge�ndert, jedoch in Ihrem Shop nicht gespeichert!
488
- Der Rechnungsadresse-Modus wurde auf 'ReadOnly' zur�ckgesetzt! Damit Sie den Modus 'ReadWrite' benutzen
489
- k�nnen, muss die Variable 'BILLING_ADDR' im 'TRANSACTIONSTATUS'-Request bei mPAY24 freigeschalten werden.
490
- Bitte wenden Sie sich mit Ihrer MerchantID '" . Mage::getStoreConfig('mpay24/mpay24as/merchantid')
491
- . "' an mPAY24 (support@mpay24.com)!");
492
-
493
- // You don't care about this...
494
- $translate = Mage::getSingleton('core/translate');
495
-
496
- // Send your email
497
- Mage::getModel('core/email_template')->sendTransactional($template->getId(),
498
- $sender,
499
- Mage::getStoreConfig('trans_email/ident_general/email'),
500
- Mage::getStoreConfig('trans_email/ident_general/name'),
501
- $vars,
502
- $store->getId());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
 
504
- // You don't care as well
505
- $translate->setTranslateInline(true);
 
 
 
 
 
 
 
 
506
 
507
- $template->delete();
508
-
509
- $billingAddressMode = new Mage_Core_Model_Config();
510
- $billingAddressMode->saveConfig('mpay24/mpay24as/billingAddressMode', 'ReadOnly', 'default', "");
511
- } else{
512
- $billingAddress = new DOMDocument();
513
- $billingAddress->loadXML(trim($soapTransactionStatusResult->getData('BILLING_ADDR')));
514
- $billingAddress->saveXML();
515
-
516
- $name = $billingAddress->getElementsByTagName("Name")->item(0)->nodeValue;
517
- $street = $billingAddress->getElementsByTagName("Street")->item(0)->nodeValue;
518
- $street2 = $billingAddress->getElementsByTagName("Street2")->item(0)->nodeValue;
519
- $zip = $billingAddress->getElementsByTagName("Zip")->item(0)->nodeValue;
520
- $city = $billingAddress->getElementsByTagName("City")->item(0)->nodeValue;
521
- $email = $billingAddress->getElementsByTagName("Email")->item(0)->nodeValue;
522
- $countryCode = $billingAddress->getElementsByTagName("Country")->item(0)->getAttribute("code");
523
-
524
- //Build billing and shipping address for customer, for checkout
525
- if(strpos($name, " ")){
526
- $_billing_address = array (
527
- 'firstname' => substr($name, 0, strpos($name, " ")),
528
- 'lastname' => substr($name, strpos($name, " ")+1),
529
- 'street' => array (
530
- '0' => $street,
531
- '1' => $street2,
532
- ),
533
-
534
- 'city' => $city,
535
- 'postcode' => $zip,
536
- 'country_id' => $countryCode,
537
- 'prefix' => '',
538
- 'middlename' => '',
539
- 'suffix' => '',
540
- 'company' => '',
541
- 'region' => '',
542
- 'region_id' => '',
543
- 'telephone' => '',
544
- 'fax' => ''
545
- );
546
- } else{
547
- $_billing_address = array (
548
- 'firstname' => $name,
549
- 'lastname' => '',
550
- 'street' => array (
551
- '0' => $street,
552
- '1' => $street2,
553
- ),
554
-
555
- 'city' => $city,
556
- 'postcode' => $zip,
557
- 'country_id' => $countryCode,
558
- 'prefix' => '',
559
- 'middlename' => '',
560
- 'suffix' => '',
561
- 'company' => '',
562
- 'region' => '',
563
- 'region_id' => '',
564
- 'telephone' => '',
565
- 'fax' => ''
566
- );
567
- }
568
 
569
- $addressId = $order->getBillingAddress()->getId();
570
- $address = Mage::getModel('sales/order_address')->load($addressId);
571
- $address->addData($_billing_address);
572
- $address->implodeStreetAddress()->save();
573
-
574
- $order->setBillingAddress($address);
575
- $order->save();
576
 
577
- if(Mage::helper('customer')->isLoggedIn()){
578
- $addressAlreadySaved = false;
579
- foreach(Mage::getSingleton('customer/session')->getCustomer()->getAddressesCollection() as $a){
580
- if($a->getFirstname() == substr($name, 0, strpos($name, " ")) && $a->getLastname() == substr($name, strpos($name, " ")+1)
581
- && $a->getStreet1() == $street && $a->getStreet2() == $street2 && $a->getCity() == $city
582
- && $a->getPostcode() == $zip && $a->getCountry() == $countryCode){
583
- $addressAlreadySaved = true;
584
- }
585
- }
586
- if(!$addressAlreadySaved){
587
- $billAddress = Mage::getModel('customer/address');
588
- $billAddress->setData($_billing_address)
589
- ->setCustomerId(Mage::getSingleton('customer/session')->getCustomer()->getId())
590
- ->setIsDefaultBilling('0')
591
- ->setIsDefaultShipping('0')
592
- ->setSaveInAddressBook('1');
593
-
594
- $billAddress->save();
595
- }
596
- }
597
- }
598
- }
599
  }
 
600
  return $updateResult;
601
  }
602
-
603
- public function calledBESPAction() {
604
- $order = $this->getOrder($_REQUEST['TID']);
605
- Mage::log('calledSP from backend called for order '.$order->getData('increment_id'));
606
- $this->getTransactionStatus($_REQUEST['TID']);
607
- $this->_redirect('adminhtml/sales_order/view/order_id/'.$order->getId().'/');
608
- Mage::log('redirected to '.'index.php/admin/sales_order/view/order_id/'.$order->getId().'/');
609
- }
610
-
611
- public function calledFESPAction() {
612
- $order = $this->getOrder($_REQUEST['TID']);
613
- Mage::log('calledSP from frontend called for order '.$order->getData('increment_id'));
614
- $this->getTransactionStatus($_REQUEST['TID']);
615
- $this->_redirect('sales/order/view/order_id/'.$order->getId().'/');
616
- Mage::log('redirected to '.'sales/order/view/order_id/'.$order->getId().'/');
617
- }
618
 
619
- protected function _initTemplate($idFieldName = 'template_id')
620
- {
621
  $this->_title($this->__('System'))->_title($this->__('Transactional Emails'));
622
 
623
  $id = (int)$this->getRequest()->getParam($idFieldName);
@@ -634,28 +518,70 @@ class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action
634
  return $model;
635
  }
636
 
637
- public function updateAction() {
638
- $order = $this->getOrder($_REQUEST['TID']);
639
- Mage::log('calledUpdateAction from backend; called for order '.$order->getData('increment_id'));
640
- echo $this->getTransactionStatus($_REQUEST['TID']);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  }
642
 
643
- public function connectAction() {
644
- $result = Mage::getModel('mpay24/source_result');
645
- $soapPass = $_REQUEST['soapPass'];
646
- $merchantID = $_REQUEST['merchantID'];
647
- $request = Mage::getSingleton('mpay24/api_mpay24')->createBasicSoapRequestObject('LISTPAYMENTMETHODS', $merchantID, $soapPass);
648
- try{
649
- $result = Mage::getSingleton('mpay24/api_mpay24')->authorize($request);
650
- } catch(Exception $e){
651
- $result->setData('STATUS', "ERROR");
652
- $result->setData('RETURNCODE', "Authorization required!");
653
- }
654
- Mage::log("RESULT from connectAction:");
655
- Mage::log($result);
656
- if($result->getData('STATUS') == 'OK'){
657
- echo "The payment systems was successfully updated!";
658
- } else
659
- echo $result->getData('STATUS') . " - " . $result->getData('RETURNCODE');
 
 
 
 
 
 
 
 
 
 
 
660
  }
661
  }
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
+ include_once "app/code/community/Mpay24/Mpay24/Model/Api/MPay24MagentoShop.php";
21
 
22
  class Mpay24_Mpay24_PaymentController extends Mage_Core_Controller_Front_Action {
23
 
28
  }
29
  }
30
 
31
+ /**
32
+ * @abstract Redirect to mPAY24 pay page
33
+ */
34
+ public function redirectAction() {
35
  $order = $this->getOrder();
36
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__("Redirected to mPAY24 pay page"));
37
  $order->save();
38
+ $this->_redirectUrl(urldecode(Mage::getSingleton('mpay24/session')->getUrl()));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
39
  }
40
 
41
+ /**
42
+ * @abstract Is called from mPAY24 as Confirmation-URL. Send TRANSACTION-STATUS request to mPAY24
43
+ */
44
  public function confirmationAction() {
45
+ Mage::log('confirmation action called');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
 
47
+ $this->getResponse()->setBody("OK: " . MPay24MagentoShop::MAGENTO_VERSION . " - confirmation received");
48
 
49
  $result = $this->getRequest()->getParams();
50
 
51
  $order = Mage::getModel('sales/order');
52
  $order->loadByIncrementId($result['TID']);
53
 
54
+ Mage::log('RESULT from confirmation action:'."\n");
55
  Mage::log($result);
56
+
57
  switch($result['OPERATION']){
58
  case 'CONFIRMATION':
59
+ $this->getTransactionStatus($result['TID'], true);
60
  break;
61
+
62
  default:
63
  break;
64
  }
75
  $this->renderLayout();
76
  }
77
 
78
+ /**
79
+ * @abstract Is called from mPAY24 as Success-URL. Send TRANSACTION-STATUS request to mPAY24
80
+ */
81
  public function successAction() {
82
  $order = $this->getOrder($_REQUEST['TID']);
83
+ Mage::log('success action called for order '.$order->getData('increment_id'));
84
  $order->getPayment()->setAdditionalInformation('success', true)->save();
85
+ $this->getTransactionStatus($_REQUEST['TID']);
86
  $this->_redirect('sales/order/view/order_id/'.$order->getId().'/');
87
  }
88
 
89
+ /**
90
+ * @abstract Is called from mPAY24 as Success-URL for not registered customers. Send TRANSACTION-STATUS request to mPAY24
91
+ */
92
  public function guestsuccessAction() {
93
  $order = $this->getOrder($_REQUEST['TID']);
94
+ Mage::log('success guest action called for order '.$order->getData('increment_id'));
95
  $order->getPayment()->setAdditionalInformation('success', true)->save();
96
+ $this->getTransactionStatus($_REQUEST['TID']);
97
  $this->_redirect('checkout/onepage/success/');
98
  }
99
 
100
+ /**
101
+ * @abstract Is called from mPAY24 as Error-URL. Send TRANSACTION-STATUS request to mPAY24
102
+ */
103
  public function errorAction() {
 
 
 
 
 
104
  $order = $this->getOrder($_REQUEST['TID']);
105
+ Mage::log('error action called for order '.$order->getData('increment_id'));
106
+ $order->getPayment()->setAdditionalInformation('error_text', utf8_encode($_REQUEST['ERROR']))->save();
107
  $order->getPayment()->setAdditionalInformation('error', true)->save();
108
  $this->getTransactionStatus();
109
 
111
  $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/parentRedirect")->toHtml());
112
  }
113
 
114
+ /**
115
+ * @abstract Is called from mPAY24 as Cancel-URL. Send TRANSACTION-STATUS request to mPAY24
116
+ */
117
+ public function cancelAction() {
118
  $order = $this->getOrder($_REQUEST['TID']);
119
+ Mage::log('cancel action called for order '.$order->getData('increment_id'));
120
+ $order->getPayment()->setAdditionalInformation('cancelButton', true)->save();
121
+
122
+ $this->getTransactionStatus($_REQUEST['TID']);
123
+
124
  Mage::getSingleton('mpay24/session')->setParentRedirectUrl('sales/order/view/order_id/'.$order->getId().'/');
125
  $this->getResponse()->setBody($this->getLayout()->createBlock("mpay24/parentRedirect")->toHtml());
126
  }
127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  public function getCheckout() {
129
  return Mage::getSingleton('checkout/session');
130
  }
131
 
132
+ /**
133
+ * @abstract Get the order for a tid
134
+ * @param String $tid
135
+ * @return Mage_Sales_Model_Order The order with the $tid
136
+ */
137
  public function getOrder($tid=null) {
138
  $order = Mage::getSingleton('sales/order');
139
  if($tid == null)
142
  return $order->loadByIncrementId($tid);
143
  }
144
 
145
+ /**
146
+ * @abstract Synchronize the transaction status with mPAY24
147
+ * @param String $tid
148
+ * @param Boolean $confirmation
149
+ * @return String
150
+ */
151
+ public function getTransactionStatus($tid=null, $confirmation=false){
152
+ $auth_refund = array("CC", "CB", "MAESTRO", "PAYPAL", "ELV", "PB", "MPASS", "INVOICE", "HP", "SAFETYPAY");
153
+ $updateResult = "";
154
+ $order = $this->getOrder($tid);
 
 
155
  Mage::log('getTransactionStatus called for order '.$order->getData('increment_id'));
156
+ $confirmationCalled = "Payment ";
157
+
158
+ if($confirmation)
159
+ $confirmationCalled = "Confirmation URL called: Payment ";
160
+
161
 
162
  $incrementId = $order->getData('increment_id');
163
  $tid = $order->getId();
164
 
165
  if($order->getPayment()){
166
+ $mPay24MagentoShop = MPay24MagentoShop::getMPay24Api();
167
+ $mPAY24Result = $mPay24MagentoShop->updateTransactionStatus($incrementId);
 
 
 
 
 
 
168
 
169
+ if($mPAY24Result->getGeneralResponse()->getStatus() != 'OK' || $mPAY24Result->getParam('APPR_CODE') == '')
 
 
170
  $apprCode = 'N/A';
171
  else
172
+ $apprCode = $mPAY24Result->getParam('APPR_CODE');
173
+
174
+ switch ($mPAY24Result->getGeneralResponse()->getStatus()) {
175
+ case "OK":
176
+ if($order->getPayment()->getAdditionalInformation('user_field') == $mPAY24Result->getParam('USER_FIELD')) {
177
+ $updateResult = "The transaction status was succesfully updated!";
178
+
179
+ $order->getPayment()->setAdditionalData($mPAY24Result->getParam("P_TYPE"))->save();
180
+ $order->getPayment()->setCcType($mPAY24Result->getParam('BRAND'))->save();
 
 
 
 
 
 
 
181
  $order->getPayment()->setAdditionalInformation('status', true)->save();
182
+ $updateResult .= "\n\nActual status: " . $mPAY24Result->getParam('STATUS ');
183
+ $updateResult .= "\nAmount: " . number_format($mPAY24Result->getParam('PRICE')/100, 2, '.', '') . " " . $mPAY24Result->getParam('CURRENCY');
184
+ $updateResult .= "\nMPAYTID: " . $mPAY24Result->getParam('MPAYTID');
185
  $updateResult .= "\nAppr_code: " . $apprCode;
186
 
187
+ switch($mPAY24Result->getParam('TSTATUS')){
188
+ case 'RESERVED':
189
+ if($order->getId()){
190
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $mPAY24Result->getParam('MPAYTID'))->save();
191
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
192
+ $order->getPayment()->setAmountAuthorized($mPAY24Result->getParam('PRICE')/100)->save();
193
+ $order->getPayment()->setAdditionalInformation('error', false)->save();
194
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("RESERVED") . ' [ ' . $mPAY24Result->getParam('CURRENCY') . " " .$order->formatPriceTxt($mPAY24Result->getParam('PRICE')/100).' ]');
195
+ $order->sendNewOrderEmail();
196
+
197
+ if($order->getInvoiceCollection()->count() == 0) {
198
+ if(Mage::getStoreConfig('payment/mpay24/paid_payment_action') == MPay24MagentoShop::PAYMENT_TYPE_SALE) {
199
+ $order->getPayment()->setAdditionalInformation('mpay24AutoClearing', true)->save();
200
+ $this->_createInvoice($order, true);
201
+ } else
202
+ $this->_createInvoice($order);
203
+ }
204
+ }
205
+ $order->save();
206
+ break;
207
+ case 'BILLED':
208
+ if($order->getInvoiceCollection()->count() == 0) {
209
+ if(in_array($mPAY24Result->getParam('P_TYPE'), MPay24MagentoShop::getAllowedAuth())) {
210
+ $onlineCapture = false;
211
+ $mif = true;
212
+ } else {
213
+ $onlineCapture = true;
214
+ $mif = false;
215
+ }
216
+
217
+ $order->getPayment()->setAmountCharged($mPAY24Result->getParam('PRICE')/100)->save();
218
+ $order->getPayment()->setAdditionalInformation('error', false)->save();
219
+ $order->sendOrderUpdateEmail();
220
+ if($confirmation) {
221
+ $order->getPayment()->setAdditionalInformation('mpay24AutoClearing', false)->save();
222
+ $this->_createInvoice($order, true, true, $onlineCapture);
223
+ } else
224
+ $this->_createInvoice($order, true, $mif, $onlineCapture);
225
+ $order->save();
226
+ }
227
+
228
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $mPAY24Result->getParam('MPAYTID'))->save();
229
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
230
+
231
+ if($order->getIsNotVirtual()) {
232
+ $s = Mage::getStoreConfig('payment/mpay24/paid_order_status');
233
+ } else {
234
+ $s = Mage_Sales_Model_Order::STATE_COMPLETE;
235
+ }
236
+
237
+ $order->addStatusToHistory($s, Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("BILLED") .' [ ' . $mPAY24Result->getParam('CURRENCY') . " " .$order->formatPriceTxt($mPAY24Result->getParam('PRICE')/100).' ]', true)->save();
238
  $order->save();
239
+ break;
240
+
241
+ case 'CREDITED':
242
+ if ($order->getTotalOnlineRefunded() == 0.00) {
243
+ $creditmemo = Mage::getModel('sales/service_order', $order)
244
+ ->prepareCreditmemo()
245
+ ->setPaymentRefundDisallowed(true)
246
+ ->setAutomaticallyCreated(true)
247
+ ->register();
248
+
249
+ $creditmemo->addComment(Mage::helper('mpay24')->__("Credit memo has been created automatically through of MI/F crediting!"));
250
+ $creditmemo->save();
251
+
252
+ $order->getPayment()->refund($creditmemo)->save();
253
+
254
+ $order->sendOrderUpdateEmail();
255
+ }
256
+
257
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $mPAY24Result->getParam('MPAYTID'))->save();
258
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
259
+
260
+ $this->_addChildTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND,
261
+ Mage_Sales_Model_Order_Payment_Transaction::TYPE_CAPTURE);
262
+
263
+ $order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE, Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("CREDITED") . ' [ ' . $mPAY24Result->getParam('CURRENCY') . " " .$order->formatPriceTxt($mPAY24Result->getParam('PRICE')/100).' ]')->save();
264
+ $order->save();
265
+
266
+ break;
267
+ case 'SUSPENDED':
268
+ if($order->getId()){
269
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $soapTransactionStatusResult->getData('MPAYTID'))->save();
270
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
271
+ $order->getPayment()->setAdditionalInformation('error', false)->save();
272
+ $order->addStatusToHistory(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("SUSPENDED") . ' [ '.$order->formatPriceTxt($mPAY24Result->getParam('PRICE')/100).' ]');
273
+ }
274
+ $order->save();
275
+ break;
276
+
277
+ case 'REVERSED':
278
+ if($order->getState() != Mage_Sales_Model_Order::STATE_CANCELED)
279
+ foreach ($order->getInvoiceCollection() as $orderInvoice) {
280
+ $order->getPayment()->setAdditionalInformation('MIFReverse', true)->save();
281
+ $order->getPayment()->void($orderInvoice)->save();
282
+ }
283
+
284
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $mPAY24Result->getParam('MPAYTID'))->save();
285
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
286
+
287
+ $order->sendOrderUpdateEmail();
288
+ $order->addStatusToHistory($order->getState(), Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("REVERSED") .' [ ' . $mPAY24Result->getParam('CURRENCY') . " " .$order->formatPriceTxt($mPAY24Result->getParam('PRICE')/100).' ]', true)->save();
289
+ $order->save();
290
+ break;
291
+
292
+ case 'ERROR':
293
+ $order->getPayment()->setAdditionalInformation('mpay_tid', $mPAY24Result->getParam('MPAYTID'))->save();
294
+ $order->getPayment()->setAdditionalInformation('appr_code', $apprCode)->save();
295
+ $order->getPayment()->setAdditionalInformation('error', true)->save();
296
+
297
+ if($order->canCancel() && $order->getState() != Mage_Sales_Model_Order::STATE_CANCELED && $order->getData('status') != Mage_Sales_Model_Order::STATE_CANCELED)
298
+ $order->cancel($order->getPayment())->save();
299
+
300
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__("$confirmationCalled") . Mage::helper('mpay24')->__("ERROR") . " " . $order->getPayment()->getAdditionalInformation('error_text'));
301
+ $order->save();
302
+
303
+ break;
304
+ default:
305
+ break;
306
+ }
307
+
308
+ if(in_array($mPAY24Result->getParam('TSTATUS'), array("RESERVED", "BILLED", "CREDITED")) && Mage::getStoreConfig('mpay24/mpay24/billingAddressMode') == "ReadWrite"){
309
+ if(!$mPAY24Result->getParam('BILLING_ADDR') || $mPAY24Result->getParam('BILLING_ADDR') == ''){
310
+ $billingAddressMode = new Mage_Core_Model_Config();
311
+ $billingAddressMode->saveConfig('mpay24/mpay24/billingAddressMode', 'ReadOnly', 'default', "");
312
+
313
+ $request = $this->getRequest();
314
+
315
+ $template = $this->_initTemplate('id');
316
+
317
+ $template->setTemplateSubject(Mage::helper('mpay24')->__("ATTENTION!"))
318
+ ->setTemplateCode('ADDR_MODE')
319
+ ->setTemplateText('<table>
320
+ <thead>
321
+ <tr>
322
+ <th>'.Mage::helper('mpay24')->__("The billing address las not returned by mPAY24!").'</th>
323
+ </tr>
324
+ </thead>
325
+ <tbody>
326
+ <tr>
327
+ <td>
328
+ <p>
329
+ {{var reason}}
330
+ </p>
331
+ </td>
332
+ </tr>
333
+ </tbody>
334
+ </table>');
335
+
336
+ // The Id you just marked...
337
+ if (!$template->getId()) {
338
+ $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_HTML);
339
+ }
340
+
341
+ if($request->getParam('_change_type_flag')) {
342
+ $template->setTemplateType(Mage_Core_Model_Email_Template::TYPE_TEXT);
343
+ $template->setTemplateStyles('');
344
+ }
345
+
346
+ $template->save();
347
+
348
+
349
+ // Define the sender, here we query Magento default email (in the configuration)
350
+ // For customer support email, use : 'trans_email/ident_support/...'
351
+ $sender = Array('name' => Mage::getStoreConfig('trans_email/ident_general/name'),
352
+ 'email' => Mage::getStoreConfig('trans_email/ident_general/email'));
353
+
354
+ // Set you store
355
+ // This information may be taken from the current logged in user
356
+ $store = Mage::app()->getStore();
357
+
358
+ // In this array, you set the variables you use in your template
359
+ $vars = Array(
360
+ 'reason' => Mage::helper('mpay24')->__("ATTENTION! - It is possible that the billing address for the order ID '") .
361
+ $order->getIncrementId() . Mage::helper('mpay24')->__("was changed by the customer, but not in your shop! The billing address mode was set back to 'ReadOnly'! If you want to use the mode 'ReadWrite', the variable 'BILLING_ADDR' has to be activated for the 'TRANSACTIONSTATUS' request by mPAY24. Please contact (including your merchant ID '") . Mage::getStoreConfig('mpay24/mpay24as/merchantid')
362
+ . Mage::helper('mpay24')->__("') mPAY24 (support@mpay24.com)!"));
363
+
364
+ // You don't care about this...
365
+ $translate = Mage::getSingleton('core/translate');
366
+
367
+ // Send your email
368
+ Mage::getModel('core/email_template')->sendTransactional($template->getId(),
369
+ $sender,
370
+ Mage::getStoreConfig('trans_email/ident_general/email'),
371
+ Mage::getStoreConfig('trans_email/ident_general/name'),
372
+ $vars,
373
+ $store->getId());
374
+
375
+ // You don't care as well
376
+ $translate->setTranslateInline(true);
377
+
378
+ $template->delete();
379
+ } else {
380
+ $billingAddress = new DOMDocument();
381
+ $billingAddress->loadXML(trim($mPAY24Result->getParam('BILLING_ADDR')));
382
+ $billingAddress->saveXML();
383
+
384
+ $name = $billingAddress->getElementsByTagName("Name")->item(0)->nodeValue;
385
+ $street = $billingAddress->getElementsByTagName("Street")->item(0)->nodeValue;
386
+ $street2 = $billingAddress->getElementsByTagName("Street2")->item(0)->nodeValue;
387
+ $zip = $billingAddress->getElementsByTagName("Zip")->item(0)->nodeValue;
388
+ $city = $billingAddress->getElementsByTagName("City")->item(0)->nodeValue;
389
+ $countryCode = $billingAddress->getElementsByTagName("Country")->item(0)->getAttribute("code");
390
+
391
+ //Build billing address for customer, for checkout
392
+ if(strpos($name, " ")) {
393
+ $_billing_address = array (
394
+ 'firstname' => substr($name, 0, strpos($name, " ")),
395
+ 'lastname' => substr($name, strpos($name, " ")+1),
396
+ 'street' => array (
397
+ '0' => $street,
398
+ '1' => $street2,
399
+ ),
400
+
401
+ 'city' => $city,
402
+ 'postcode' => $zip,
403
+ 'country_id' => $countryCode,
404
+ 'prefix' => '',
405
+ 'middlename' => '',
406
+ 'suffix' => '',
407
+ 'company' => '',
408
+ 'region' => '',
409
+ 'region_id' => '',
410
+ 'telephone' => '',
411
+ 'fax' => ''
412
+ );
413
+ } else {
414
+ $_billing_address = array (
415
+ 'firstname' => $name,
416
+ 'lastname' => '',
417
+ 'street' => array (
418
+ '0' => $street,
419
+ '1' => $street2,
420
+ ),
421
+
422
+ 'city' => $city,
423
+ 'postcode' => $zip,
424
+ 'country_id' => $countryCode,
425
+ 'prefix' => '',
426
+ 'middlename' => '',
427
+ 'suffix' => '',
428
+ 'company' => '',
429
+ 'region' => '',
430
+ 'region_id' => '',
431
+ 'telephone' => '',
432
+ 'fax' => ''
433
+ );
434
+ }
435
+
436
+ if(Mage::helper('customer')->isLoggedIn()){
437
+ $addressAlreadySaved = false;
438
+ foreach(Mage::getSingleton('customer/session')->getCustomer()->getAddressesCollection() as $a){
439
+ if($a->getFirstname() == substr($name, 0, strpos($name, " ")) && $a->getLastname() == substr($name, strpos($name, " ")+1)
440
+ && $a->getStreet1() == $street && $a->getStreet2() == $street2 && $a->getCity() == $city
441
+ && $a->getPostcode() == $zip && $a->getCountry() == $countryCode){
442
+ $addressAlreadySaved = true;
443
+ }
444
+ }
445
+ if(!$addressAlreadySaved){
446
+ $billAddress = Mage::getModel('customer/address');
447
+ $billAddress->setData($_billing_address)
448
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomer()->getId())
449
+ ->setIsDefaultBilling('0')
450
+ ->setIsDefaultShipping('0')
451
+ ->setSaveInAddressBook('1');
452
+
453
+ $billAddress->save();
454
+ }
455
+ }
456
+
457
+ // set Billing Address
458
+ $addressId = $order->getBillingAddress()->getId();
459
+ $address = Mage::getModel('sales/order_address')->load($addressId);
460
+ $address->addData($_billing_address);
461
+ $address->implodeStreetAddress()->save();Mage::log($_billing_address);
462
+
463
+ $order->setBillingAddress($address);
464
+ $order->save();
465
+ }
466
+ }
467
+
468
+ } else {
469
+ if($order->canCancel() && $order->getState() != Mage_Sales_Model_Order::STATE_CANCELED && $order->getData('status') != Mage_Sales_Model_Order::STATE_CANCELED)
470
+ $order->cancel($order->getPayment())->save();
471
+
472
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__("The transaction was canceled by the customer"), true)->save();
473
+ $order->getPayment()->setAdditionalInformation('status', true)->save();
474
+ $order->getPayment()->setAdditionalInformation('mpay_tid', 'N/A')->save();
475
+ $order->getPayment()->setAdditionalInformation('appr_code', 'N/A')->save();
476
+ }
477
 
478
+ break;
479
+
480
+ case "ERROR":
481
+ if($mPAY24Result->getReturnCode() == 'NOT_FOUND' && $order->getPayment()->getAdditionalInformation('cancelButton'))
482
+ $updateResult = 'The order was canceled by the customer';
483
+ else
484
+ $updateResult = Mage::helper('mpay24')->__("The transaction was not found!");
485
+
486
+ if($order->canCancel() && $order->getState() != Mage_Sales_Model_Order::STATE_CANCELED && $order->getData('status') != Mage_Sales_Model_Order::STATE_CANCELED)
487
+ $order->cancel($order->getPayment())->save();
488
 
489
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('mpay24')->__($updateResult), true)->save();
490
+ $order->getPayment()->setAdditionalInformation('status', true)->save();
491
+ $order->getPayment()->setAdditionalInformation('mpay_tid', 'N/A')->save();
492
+ $order->getPayment()->setAdditionalInformation('appr_code', 'N/A')->save();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
 
494
+ break;
 
 
 
 
 
 
495
 
496
+ default:
497
+ break;
498
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
499
  }
500
+
501
  return $updateResult;
502
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
503
 
504
+ protected function _initTemplate($idFieldName = 'template_id') {
 
505
  $this->_title($this->__('System'))->_title($this->__('Transactional Emails'));
506
 
507
  $id = (int)$this->getRequest()->getParam($idFieldName);
518
  return $model;
519
  }
520
 
521
+ public function _createInvoice($order, $capture=false, $mif=false, $onlineCapture=true) {
522
+ if ($order->canInvoice()) {
523
+ $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice();
524
+ if (!$invoice->getTotalQty()) {
525
+ Mage::throwException(Mage::helper('core')->__('Cannot create an invoice without products.'));
526
+ }
527
+ if($capture && $onlineCapture)
528
+ $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_ONLINE);
529
+
530
+ $invoice->register();
531
+
532
+ Mage::getModel('core/resource_transaction')
533
+ ->addObject($invoice)
534
+ ->addObject($invoice->getOrder())
535
+ ->save();
536
+
537
+ $order->save();
538
+
539
+ if($capture) {
540
+ foreach ($order->getInvoiceCollection() as $orderInvoice) {
541
+ if ($order->getTotalPaid() == 0.00) {
542
+ $orderInvoice->pay();
543
+ $orderInvoice->save();
544
+ if($mif)
545
+ $order->getPayment()->setAdditionalInformation('MIFClear', true)->save();
546
+ $order->getPayment()->capture($orderInvoice)->save();
547
+ }
548
+ }
549
+ }
550
+
551
+ $invoice->sendEmail(true, '');
552
+ return true;
553
+ } else {
554
+ Mage::throwException(Mage::helper('core')->__('Cannot create an invoice.'));
555
+ }
556
  }
557
 
558
+ /**
559
+ * @abstract Add transaction to payment with defined type
560
+ *
561
+ * @param String $typeTarget
562
+ * @param String $typeParent
563
+ */
564
+ protected function _addChildTransaction($typeTarget, $typeParent = Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH) {
565
+ $payment = $this->getOrder()->getPayment();
566
+ $parentTransactionId = $this->getOrder()->getIncrementId();
567
+
568
+ if ($typeParent != Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH) {
569
+ $parentTransactionId .= '-' . $typeParent;
570
+ } else {
571
+ $payment->setIsTransactionClosed(false);
572
+ }
573
+
574
+ $parentTransaction = $payment->getTransaction($parentTransactionId);
575
+
576
+ if ($parentTransaction) {
577
+ $payment->setParentTransactionId($parentTransactionId)
578
+ ->setTransactionId($parentTransactionId . '-' . $typeTarget)
579
+ ->addTransaction($typeTarget);
580
+
581
+ if ($this->getOrder()->getTotalDue() < .0001) {
582
+ $parentTransaction->setIsClosed(true)
583
+ ->save();
584
+ }
585
+ }
586
  }
587
  }
app/code/community/Mpay24/Mpay24/etc/config.xml CHANGED
@@ -2,40 +2,28 @@
2
  <config>
3
  <modules>
4
  <Mpay24_Mpay24>
5
- <version>1.2.2</version>
6
  </Mpay24_Mpay24>
7
  </modules>
8
 
9
  <global>
10
- <fieldsets>
11
- <sales_convert_quote_payment>
12
- <mpay_account_number><to_order_payment>*</to_order_payment></mpay_account_number>
13
- <mpay_bank_code><to_order_payment>*</to_order_payment></mpay_bank_code>
14
- <mpay_holder><to_order_payment>*</to_order_payment></mpay_holder>
15
- <mpay_pb_country_code><to_order_payment>*</to_order_payment></mpay_pb_country_code>
16
- <mpay_pb_area_code><to_order_payment>*</to_order_payment></mpay_pb_area_code>
17
- <mpay_pb_number><to_order_payment>*</to_order_payment></mpay_pb_number>
18
- </sales_convert_quote_payment>
19
-
20
- <sales_convert_order_payment>
21
- <mpay_account_number><to_quote_payment>*</to_quote_payment></mpay_account_number>
22
- <mpay_bank_code><to_quote_payment>*</to_quote_payment></mpay_bank_code>
23
- <mpay_holder><to_quote_payment>*</to_quote_payment></mpay_holder>
24
- <mpay_pb_country_code><to_quote_payment>*</to_quote_payment></mpay_pb_country_code>
25
- <mpay_pb_area_code><to_quote_payment>*</to_quote_payment></mpay_pb_area_code>
26
- <mpay_pb_number><to_quote_payment>*</to_quote_payment></mpay_pb_number>
27
- </sales_convert_order_payment>
28
- </fieldsets>
29
  <models>
30
  <mpay24>
31
  <class>Mpay24_Mpay24_Model</class>
32
  <resourceModel>mpay24_mysql4</resourceModel>
33
  </mpay24>
34
- <mpay24a>
35
- <class>Mpay24_Mpay24_Model</class>
36
- <resourceModel>mpay24_entity</resourceModel>
37
- </mpay24a>
38
-
39
  <mpay24_mysql4>
40
  <class>Mpay24_Mpay24_Model_Mysql4</class>
41
  <entities>
@@ -46,16 +34,19 @@
46
  <class>Mpay24_Mpay24_Model_Entity</class>
47
  </mpay24_entity>
48
  </models>
 
49
  <blocks>
50
  <mpay24>
51
  <class>Mpay24_Mpay24_Block</class>
52
  </mpay24>
53
  </blocks>
 
54
  <helpers>
55
  <mpay24>
56
  <class>Mpay24_Mpay24_Helper</class>
57
  </mpay24>
58
  </helpers>
 
59
  <resources>
60
  <mpay24_setup>
61
  <setup>
@@ -77,97 +68,7 @@
77
  <use>core_read</use>
78
  </connection>
79
  </mpay24_read>
80
- <mpay24a_write>
81
- <connection>
82
- <use>core_write</use>
83
- </connection>
84
- </mpay24a_write>
85
- <mpay24a_read>
86
- <connection>
87
- <use>core_read</use>
88
- </connection>
89
- </mpay24a_read>
90
- </resources>
91
-
92
- <payment>
93
- <cc>
94
- <types>
95
- <DN>
96
- <code>DC</code>
97
- <name>Diners Club</name>
98
- <order>39</order>
99
- </DN>
100
- <JC>
101
- <code>JC</code>
102
- <name>JCB</name>
103
- <order>40</order>
104
- </JC>
105
- </types>
106
- </cc>
107
- <elv>
108
- <types>
109
- <HOBEX-AT>
110
- <code>HOBEX-AT</code>
111
- <name>HOBEX-AT</name>
112
- <order>1</order>
113
- </HOBEX-AT>
114
- <HOBEX-DE>
115
- <code>HOBEX-DE</code>
116
- <name>HOBEX-DE</name>
117
- <order>1</order>
118
- </HOBEX-DE>
119
- <HOBEX-NL>
120
- <code>HOBEX-NL</code>
121
- <name>HOBEX-NL</name>
122
- <order>1</order>
123
- </HOBEX-NL>
124
- </types>
125
- </elv>
126
- <paybox>
127
- <area_code>
128
- <CD0664>
129
- <code>664</code>
130
- <name>664</name>
131
- <order>1</order>
132
- </CD0664>
133
- <CD0676>
134
- <code>676</code>
135
- <name>676</name>
136
- <order>2</order>
137
- </CD0676>
138
- <CD0699>
139
- <code>699</code>
140
- <name>699</name>
141
- <order>3</order>
142
- </CD0699>
143
- <CD0650>
144
- <code>650</code>
145
- <name>650</name>
146
- <order>4</order>
147
- </CD0650>
148
- <CD0660>
149
- <code>660</code>
150
- <name>660</name>
151
- <order>5</order>
152
- </CD0660>
153
- <CD0688>
154
- <code>688</code>
155
- <name>688</name>
156
- <order>6</order>
157
- </CD0688>
158
- <CD0680>
159
- <code>680</code>
160
- <name>680</name>
161
- <order>7</order>
162
- </CD0680>
163
- <CD0681>
164
- <code>681</code>
165
- <name>681</name>
166
- <order>8</order>
167
- </CD0681>
168
- </area_code>
169
- </paybox>
170
- </payment>
171
 
172
  <payment>
173
  <groups>
@@ -190,6 +91,7 @@
190
  </args>
191
  </mpay24>
192
  </routers>
 
193
  <layout>
194
  <updates>
195
  <mpay24>
@@ -197,6 +99,7 @@
197
  </mpay24>
198
  </updates>
199
  </layout>
 
200
  <translate>
201
  <modules>
202
  <Mpay24_Mpay24>
@@ -252,13 +155,6 @@
252
  </Mpay24_Mpay24>
253
  </modules>
254
  </translate>
255
- <layout>
256
- <updates>
257
- <jquery>
258
- <file>mpay24.xml</file>
259
- </jquery>
260
- </updates>
261
- </layout>
262
  </adminhtml>
263
 
264
 
@@ -266,15 +162,16 @@
266
  <mpay24>
267
  <mpay24as>
268
  <active>1</active>
269
- <titel>mPAY24</titel>
270
- <soap_url>https://www.mpay24.com/soap/etp/1.4/ETP.wsdl</soap_url>
271
  <merchantid backend_model="adminhtml/system_config_backend_encrypted"/>
272
- <payment_methods/>
 
 
273
  <use_proxy>0</use_proxy>
274
- <billingAddressMode>ReadOnly</billingAddressMode>
275
  </mpay24as>
276
  <mpay24sporder>
277
- <style></style>
278
  <logostyle></logostyle>
279
  <pageheaderstyle></pageheaderstyle>
280
  <pagecaptionstyle></pagecaptionstyle>
@@ -323,92 +220,23 @@
323
  <subtotal_headerstyle></subtotal_headerstyle>
324
  <subtotal_style></subtotal_style>
325
  </mpay24spsc>
 
 
 
 
 
326
  </mpay24>
327
  <payment>
328
- <mpay24_sp_cc>
329
- <in_use>1</in_use>
330
- <model>mpay24/selectpaymentCc</model>
331
- <cctypes>VI</cctypes>
332
- <useccv>1</useccv>
333
- <payment_action>authorize</payment_action>
334
- <order_status>processing</order_status>
335
- <group>mpay24</group>
336
- </mpay24_sp_cc>
337
- <mpay24_sp_elv>
338
- <in_use>0</in_use>
339
- <model>mpay24/selectpaymentElv</model>
340
- <payment_action>authorize</payment_action>
341
- <order_status>processing</order_status>
342
- <specificcountry>AT,DE,NL</specificcountry>
343
- <group>mpay24</group>
344
- </mpay24_sp_elv>
345
- <mpay24_sp_eps>
346
- <in_use>0</in_use>
347
- <model>mpay24/selectpaymentEps</model>
348
- <payment_action>authorize</payment_action>
349
- <epstypes>ARZ,BA,BAWAG,ERSTE,HYPO,RZB</epstypes>
350
- <order_status>processing</order_status>
351
- <specificcountry>AT</specificcountry>
352
- <group>mpay24</group>
353
- </mpay24_sp_eps>
354
- <mpay24_sp_giropay>
355
- <in_use>0</in_use>
356
- <model>mpay24/selectpaymentGiropay</model>
357
- <payment_action>authorize</payment_action>
358
- <order_status>processing</order_status>
359
- <group>mpay24</group>
360
- </mpay24_sp_giropay>
361
- <mpay24_sp_maestro>
362
- <in_use>0</in_use>
363
- <model>mpay24/selectpaymentMaestro</model>
364
- <payment_action>authorize</payment_action>
365
- <order_status>processing</order_status>
366
- <specificcountry>AT,UK</specificcountry>
367
- <group>mpay24</group>
368
- </mpay24_sp_maestro>
369
- <mpay24_sp_paybox>
370
- <in_use>0</in_use>
371
- <model>mpay24/selectpaymentPaybox</model>
372
- <payment_action>authorize</payment_action>
373
- <order_status>processing</order_status>
374
- <specificcountry>AT</specificcountry>
375
- <group>mpay24</group>
376
- </mpay24_sp_paybox>
377
- <mpay24_sp_psc>
378
- <in_use>0</in_use>
379
- <model>mpay24/selectpaymentPsc</model>
380
- <payment_action>authorize</payment_action>
381
- <order_status>processing</order_status>
382
- <group>mpay24</group>
383
- </mpay24_sp_psc>
384
- <mpay24_sp_paypal>
385
- <in_use>0</in_use>
386
- <model>mpay24/selectpaymentPaypal</model>
387
- <payment_action>authorize</payment_action>
388
- <order_status>processing</order_status>
389
- <group>mpay24</group>
390
- </mpay24_sp_paypal>
391
- <mpay24_sp_mpass>
392
- <in_use>0</in_use>
393
- <model>mpay24/selectpaymentMpass</model>
394
- <payment_action>authorize</payment_action>
395
- <order_status>processing</order_status>
396
- <group>mpay24</group>
397
- </mpay24_sp_mpass>
398
- <mpay24_sp_cashTicket>
399
- <in_use>0</in_use>
400
- <model>mpay24/selectpaymentCashTicket</model>
401
  <payment_action>authorize</payment_action>
402
- <order_status>processing</order_status>
403
  <group>mpay24</group>
404
- </mpay24_sp_cashTicket>
405
- <mpay24_sp_cb>
406
- <in_use>0</in_use>
407
- <model>mpay24/selectpaymentCb</model>
408
- <payment_action>authorize</payment_action>
409
- <order_status>processing</order_status>
410
- <group>mpay24</group>
411
- </mpay24_sp_cb>
412
  </payment>
413
  </default>
414
- </config>
2
  <config>
3
  <modules>
4
  <Mpay24_Mpay24>
5
+ <version>1.3.0</version>
6
  </Mpay24_Mpay24>
7
  </modules>
8
 
9
  <global>
10
+ <events>
11
+ <controller_action_postdispatch_adminhtml_system_config_save>
12
+ <observers>
13
+ <mpay24>
14
+ <type>singleton</type>
15
+ <class>mpay24/observer</class>
16
+ <method>afterSave</method>
17
+ </mpay24>
18
+ </observers>
19
+ </controller_action_postdispatch_adminhtml_system_config_save>
20
+ </events>
21
+
 
 
 
 
 
 
 
22
  <models>
23
  <mpay24>
24
  <class>Mpay24_Mpay24_Model</class>
25
  <resourceModel>mpay24_mysql4</resourceModel>
26
  </mpay24>
 
 
 
 
 
27
  <mpay24_mysql4>
28
  <class>Mpay24_Mpay24_Model_Mysql4</class>
29
  <entities>
34
  <class>Mpay24_Mpay24_Model_Entity</class>
35
  </mpay24_entity>
36
  </models>
37
+
38
  <blocks>
39
  <mpay24>
40
  <class>Mpay24_Mpay24_Block</class>
41
  </mpay24>
42
  </blocks>
43
+
44
  <helpers>
45
  <mpay24>
46
  <class>Mpay24_Mpay24_Helper</class>
47
  </mpay24>
48
  </helpers>
49
+
50
  <resources>
51
  <mpay24_setup>
52
  <setup>
68
  <use>core_read</use>
69
  </connection>
70
  </mpay24_read>
71
+ </resources>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  <payment>
74
  <groups>
91
  </args>
92
  </mpay24>
93
  </routers>
94
+
95
  <layout>
96
  <updates>
97
  <mpay24>
99
  </mpay24>
100
  </updates>
101
  </layout>
102
+
103
  <translate>
104
  <modules>
105
  <Mpay24_Mpay24>
155
  </Mpay24_Mpay24>
156
  </modules>
157
  </translate>
 
 
 
 
 
 
 
158
  </adminhtml>
159
 
160
 
162
  <mpay24>
163
  <mpay24as>
164
  <active>1</active>
165
+ <title>mPAY24</title>
166
+ <system>Test</system>
167
  <merchantid backend_model="adminhtml/system_config_backend_encrypted"/>
168
+ <old_merchantid />
169
+ <soap_pass backend_model="adminhtml/system_config_backend_encrypted"/>
170
+ <debug>1</debug>
171
  <use_proxy>0</use_proxy>
 
172
  </mpay24as>
173
  <mpay24sporder>
174
+ <style>margin-left: auto; margin-right: auto; width: 600px;</style>
175
  <logostyle></logostyle>
176
  <pageheaderstyle></pageheaderstyle>
177
  <pagecaptionstyle></pagecaptionstyle>
220
  <subtotal_headerstyle></subtotal_headerstyle>
221
  <subtotal_style></subtotal_style>
222
  </mpay24spsc>
223
+ <mpay24>
224
+ <payments_active>false</payments_active>
225
+ <billingAddressMode>ReadOnly</billingAddressMode>
226
+ <show_free_products>0</show_free_products>
227
+ </mpay24>
228
  </mpay24>
229
  <payment>
230
+ <mpay24>
231
+ <model>mpay24/selectpayment</model>
232
+ <active_payments></active_payments>
233
+ <active_payment_types></active_payment_types>
234
+ <payments_count>0</payments_count>
235
+ <payments_error></payments_error>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
236
  <payment_action>authorize</payment_action>
237
+ <paid_order_status>processing</paid_order_status>
238
  <group>mpay24</group>
239
+ </mpay24>
 
 
 
 
 
 
 
240
  </payment>
241
  </default>
242
+ </config>
app/code/community/Mpay24/Mpay24/etc/system.xml CHANGED
@@ -10,1271 +10,1030 @@
10
  <show_in_website>1</show_in_website>
11
  <show_in_store>1</show_in_store>
12
  <groups>
13
- <mpay24as translate="label">
14
- <label>mPAY24 Account Settings</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  <frontend_type>text</frontend_type>
16
- <sort_order>1</sort_order>
17
- <expanded>1</expanded>
18
  <show_in_default>1</show_in_default>
19
  <show_in_website>1</show_in_website>
20
- <show_in_store>1</show_in_store>
21
- <fields>
22
- <active translate="label">
23
- <label>mPAY24 enabled</label>
24
- <frontend_type>select</frontend_type>
25
- <source_model>adminhtml/system_config_source_yesno</source_model>
26
- <config_path>payment/mpay24_sp_cc/active</config_path>
27
- <sort_order>0</sort_order>
28
- <show_in_default>1</show_in_default>
29
- <show_in_website>1</show_in_website>
30
- </active>
31
- <title translate="label">
32
- <label>Title</label>
33
- <config_path>payment/mpay24_sp_cc/title</config_path>
34
- <frontend_type>text</frontend_type>
35
- <sort_order>1</sort_order>
36
- <show_in_default>1</show_in_default>
37
- <show_in_website>1</show_in_website>
38
- </title>
39
- <soap_url translate="label comment">
40
- <label>mPAY24 Webservices (SOAP) URL</label>
41
- <frontend_type>text</frontend_type>
42
- <sort_order>2</sort_order>
43
- <show_in_default>1</show_in_default>
44
- <show_in_website>1</show_in_website>
45
- <comment><![CDATA[Example: <b>https://test.mpay24.com/soap/etp/1.4/ETP-test.wsdl</b>]]></comment>
46
- </soap_url>
47
- <merchantid translate="label">
48
- <label>Merchant ID</label>
49
- <frontend_type>text</frontend_type>
50
- <backend_model>mpay24/system_config_backend_encrypted</backend_model>
51
- <sort_order>3</sort_order>
52
- <show_in_default>1</show_in_default>
53
- <show_in_website>1</show_in_website>
54
- <comment><![CDATA[The Merchant ID provided by mPAY24]]></comment>
55
- </merchantid>
56
- <soap_pass translate="label">
57
- <label>SOAP password</label>
58
- <frontend_type>password</frontend_type>
59
- <sort_order>4</sort_order>
60
- <show_in_default>1</show_in_default>
61
- <show_in_website>1</show_in_website>
62
- <comment><![CDATA[The SOAP password provided by mPAY24]]></comment>
63
- </soap_pass>
64
- <payment_methods translate="label comment">
65
- <label>Active Payment Methods</label>
66
- <frontend_type>text</frontend_type>
67
- <config_path>mpay24/mpay24as/payment_methods</config_path>
68
- <sort_order>5</sort_order>
69
- </payment_methods>
70
- <use_proxy translate="label">
71
- <label>API uses proxy</label>
72
- <frontend_type>select</frontend_type>
73
- <source_model>adminhtml/system_config_source_yesno</source_model>
74
- <sort_order>7</sort_order>
75
- <show_in_default>1</show_in_default>
76
- <show_in_website>1</show_in_website>
77
- </use_proxy>
78
- <proxy_host translate="label">
79
- <label>Proxy Host</label>
80
- <frontend_type>text</frontend_type>
81
- <sort_order>8</sort_order>
82
- <show_in_default>1</show_in_default>
83
- <show_in_website>1</show_in_website>
84
- <depends><use_proxy>1</use_proxy></depends>
85
- </proxy_host>
86
- <proxy_port translate="label">
87
- <label>Proxy Port</label>
88
- <frontend_type>text</frontend_type>
89
- <sort_order>9</sort_order>
90
- <show_in_default>1</show_in_default>
91
- <show_in_website>1</show_in_website>
92
- <depends><use_proxy>1</use_proxy></depends>
93
- </proxy_port>
94
- <billingAddressMode translate="label">
95
- <label>Billing address mode</label>
96
- <frontend_type>select</frontend_type>
97
- <source_model>mpay24/source_billAddr</source_model>
98
- <sort_order>8</sort_order>
99
- <show_in_default>1</show_in_default>
100
- <show_in_website>1</show_in_website>
101
- </billingAddressMode>
102
- </fields>
103
- </mpay24as>
104
- <mpay24sporder>
105
- <label>mPAY24 Selectpayment Order Design</label>
106
  <frontend_type>text</frontend_type>
107
- <sort_order>2</sort_order>
108
- <expanded>0</expanded>
109
  <show_in_default>1</show_in_default>
110
  <show_in_website>1</show_in_website>
111
- <show_in_store>1</show_in_store>
112
- <fields>
113
- <style translate="label">
114
- <label>Style</label>
115
- <frontend_type>text</frontend_type>
116
- <sort_order>101</sort_order>
117
- <show_in_default>1</show_in_default>
118
- <show_in_website>1</show_in_website>
119
- <show_in_store>0</show_in_store>
120
- </style>
121
- <logostyle translate="label">
122
- <label>LogoStyle</label>
123
- <frontend_type>text</frontend_type>
124
- <sort_order>102</sort_order>
125
- <show_in_default>1</show_in_default>
126
- <show_in_website>1</show_in_website>
127
- <show_in_store>0</show_in_store>
128
- </logostyle>
129
- <pageheaderstyle translate="label">
130
- <label>PageHeaderStyle</label>
131
- <frontend_type>text</frontend_type>
132
- <sort_order>103</sort_order>
133
- <show_in_default>1</show_in_default>
134
- <show_in_website>1</show_in_website>
135
- <show_in_store>0</show_in_store>
136
- </pageheaderstyle>
137
- <pagecaptionstyle translate="label">
138
- <label>PageCaptionStyle</label>
139
- <frontend_type>text</frontend_type>
140
- <sort_order>104</sort_order>
141
- <show_in_default>1</show_in_default>
142
- <show_in_website>1</show_in_website>
143
- <show_in_store>0</show_in_store>
144
- </pagecaptionstyle>
145
- <pagestyle translate="label">
146
- <label>PageStyle</label>
147
- <frontend_type>text</frontend_type>
148
- <sort_order>105</sort_order>
149
- <show_in_default>1</show_in_default>
150
- <show_in_website>1</show_in_website>
151
- <show_in_store>0</show_in_store>
152
- </pagestyle>
153
- <inputfieldsstyle translate="label">
154
- <label>InputFieldsStyle</label>
155
- <frontend_type>text</frontend_type>
156
- <sort_order>106</sort_order>
157
- <show_in_default>1</show_in_default>
158
- <show_in_website>1</show_in_website>
159
- <show_in_store>0</show_in_store>
160
- </inputfieldsstyle>
161
- <dropdownlistsstyle translate="label">
162
- <label>DropDownListsStyle</label>
163
- <frontend_type>text</frontend_type>
164
- <sort_order>107</sort_order>
165
- <show_in_default>1</show_in_default>
166
- <show_in_website>1</show_in_website>
167
- <show_in_store>0</show_in_store>
168
- </dropdownlistsstyle>
169
- <buttonsstyle translate="label">
170
- <label>ButtonsStyle</label>
171
- <frontend_type>text</frontend_type>
172
- <sort_order>108</sort_order>
173
- <show_in_default>1</show_in_default>
174
- <show_in_website>1</show_in_website>
175
- <show_in_store>0</show_in_store>
176
- </buttonsstyle>
177
- <errorsstyle translate="label">
178
- <label>ErrorsStyle</label>
179
- <frontend_type>text</frontend_type>
180
- <sort_order>109</sort_order>
181
- <show_in_default>1</show_in_default>
182
- <show_in_website>1</show_in_website>
183
- <show_in_store>0</show_in_store>
184
- </errorsstyle>
185
- <successtitlestyle translate="label">
186
- <label>SuccessTitleStyle</label>
187
- <frontend_type>text</frontend_type>
188
- <sort_order>110</sort_order>
189
- <show_in_default>1</show_in_default>
190
- <show_in_website>1</show_in_website>
191
- <show_in_store>0</show_in_store>
192
- </successtitlestyle>
193
- <errortitlestyle translate="label">
194
- <label>ErrorTitleStyle</label>
195
- <frontend_type>text</frontend_type>
196
- <sort_order>111</sort_order>
197
- <show_in_default>1</show_in_default>
198
- <show_in_website>1</show_in_website>
199
- <show_in_store>0</show_in_store>
200
- </errortitlestyle>
201
- <footerstyle translate="label">
202
- <label>FooterStyle</label>
203
- <frontend_type>text</frontend_type>
204
- <sort_order>112</sort_order>
205
- <show_in_default>1</show_in_default>
206
- <show_in_website>1</show_in_website>
207
- <show_in_store>0</show_in_store>
208
- </footerstyle>
209
- </fields>
210
- </mpay24sporder>
211
- <mpay24spsc translate="label">
212
- <label>mPAY24 Selectpayment ShoppingCart Design</label>
213
  <frontend_type>text</frontend_type>
214
- <sort_order>3</sort_order>
215
- <expanded>0</expanded>
216
  <show_in_default>1</show_in_default>
217
  <show_in_website>1</show_in_website>
218
- <show_in_store>1</show_in_store>
219
- <fields>
220
- <sc_row translate="label">
221
- <label>ShoppingCart Rows</label>
222
- <frontend_type>multiselect</frontend_type>
223
- <sort_order>50</sort_order>
224
- <source_model>mpay24/source_shoppingCartRowsAction</source_model>
225
- <show_in_default>1</show_in_default>
226
- <show_in_website>1</show_in_website>
227
- <show_in_store>0</show_in_store>
228
- </sc_row>
229
- <sc_style translate="label">
230
- <label>Style</label>
231
- <frontend_type>text</frontend_type>
232
- <sort_order>101</sort_order>
233
- <show_in_default>1</show_in_default>
234
- <show_in_website>1</show_in_website>
235
- <show_in_store>0</show_in_store>
236
- </sc_style>
237
- <sc_header translate="label">
238
- <label>Header</label>
239
- <frontend_type>text</frontend_type>
240
- <sort_order>102</sort_order>
241
- <show_in_default>1</show_in_default>
242
- <show_in_website>1</show_in_website>
243
- <show_in_store>0</show_in_store>
244
- </sc_header>
245
- <sc_headerstyle translate="label">
246
- <label>HeaderStyle</label>
247
- <frontend_type>text</frontend_type>
248
- <sort_order>103</sort_order>
249
- <show_in_default>1</show_in_default>
250
- <show_in_website>1</show_in_website>
251
- <show_in_store>0</show_in_store>
252
- </sc_headerstyle>
253
- <sc_captionstyle translate="label">
254
- <label>CaptionStyle</label>
255
- <frontend_type>text</frontend_type>
256
- <sort_order>104</sort_order>
257
- <show_in_default>1</show_in_default>
258
- <show_in_website>1</show_in_website>
259
- <show_in_store>0</show_in_store>
260
- </sc_captionstyle>
261
- <sc_numberheader translate="label">
262
- <label>NumberHeader</label>
263
- <frontend_type>text</frontend_type>
264
- <sort_order>105</sort_order>
265
- <show_in_default>1</show_in_default>
266
- <show_in_website>1</show_in_website>
267
- <show_in_store>0</show_in_store>
268
- </sc_numberheader>
269
- <sc_numberstyle translate="label">
270
- <label>NumberStyle</label>
271
- <frontend_type>text</frontend_type>
272
- <sort_order>106</sort_order>
273
- <show_in_default>1</show_in_default>
274
- <show_in_website>1</show_in_website>
275
- <show_in_store>0</show_in_store>
276
- </sc_numberstyle>
277
- <sc_productnrheader translate="label">
278
- <label>ProductNrHeader</label>
279
- <frontend_type>text</frontend_type>
280
- <sort_order>107</sort_order>
281
- <show_in_default>1</show_in_default>
282
- <show_in_website>1</show_in_website>
283
- <show_in_store>0</show_in_store>
284
- </sc_productnrheader>
285
- <sc_productnrstyle translate="label">
286
- <label>ProductNrStyle</label>
287
- <frontend_type>text</frontend_type>
288
- <sort_order>108</sort_order>
289
- <show_in_default>1</show_in_default>
290
- <show_in_website>1</show_in_website>
291
- <show_in_store>0</show_in_store>
292
- </sc_productnrstyle>
293
- <sc_descriptionheader translate="label">
294
- <label>DescriptionHeader</label>
295
- <frontend_type>text</frontend_type>
296
- <sort_order>109</sort_order>
297
- <show_in_default>1</show_in_default>
298
- <show_in_website>1</show_in_website>
299
- <show_in_store>0</show_in_store>
300
- </sc_descriptionheader>
301
- <sc_descriptionstyle translate="label">
302
- <label>DescriptionStyle</label>
303
- <frontend_type>text</frontend_type>
304
- <sort_order>110</sort_order>
305
- <show_in_default>1</show_in_default>
306
- <show_in_website>1</show_in_website>
307
- <show_in_store>0</show_in_store>
308
- </sc_descriptionstyle>
309
- <sc_packageheader translate="label">
310
- <label>PackageHeader</label>
311
- <frontend_type>text</frontend_type>
312
- <sort_order>111</sort_order>
313
- <show_in_default>1</show_in_default>
314
- <show_in_website>1</show_in_website>
315
- <show_in_store>0</show_in_store>
316
- </sc_packageheader>
317
- <sc_packagestyle translate="label">
318
- <label>PackageStyle</label>
319
- <frontend_type>text</frontend_type>
320
- <sort_order>112</sort_order>
321
- <show_in_default>1</show_in_default>
322
- <show_in_website>1</show_in_website>
323
- <show_in_store>0</show_in_store>
324
- </sc_packagestyle>
325
- <sc_quantityheader translate="label">
326
- <label>QuantityHeader</label>
327
- <frontend_type>text</frontend_type>
328
- <sort_order>113</sort_order>
329
- <show_in_default>1</show_in_default>
330
- <show_in_website>1</show_in_website>
331
- <show_in_store>0</show_in_store>
332
- </sc_quantityheader>
333
- <sc_quantitystyle translate="label">
334
- <label>QuantityStyle</label>
335
- <frontend_type>text</frontend_type>
336
- <sort_order>114</sort_order>
337
- <show_in_default>1</show_in_default>
338
- <show_in_website>1</show_in_website>
339
- <show_in_store>0</show_in_store>
340
- </sc_quantitystyle>
341
- <sc_itempriceheader translate="label">
342
- <label>ItemPriceHeader</label>
343
- <frontend_type>text</frontend_type>
344
- <sort_order>115</sort_order>
345
- <show_in_default>1</show_in_default>
346
- <show_in_website>1</show_in_website>
347
- <show_in_store>0</show_in_store>
348
- </sc_itempriceheader>
349
- <sc_itempricestyle translate="label">
350
- <label>ItemPriceStyle</label>
351
- <frontend_type>text</frontend_type>
352
- <sort_order>116</sort_order>
353
- <show_in_default>1</show_in_default>
354
- <show_in_website>1</show_in_website>
355
- <show_in_store>0</show_in_store>
356
- </sc_itempricestyle>
357
- <sc_priceheader translate="label">
358
- <label>PriceHeader</label>
359
- <frontend_type>text</frontend_type>
360
- <sort_order>117</sort_order>
361
- <show_in_default>1</show_in_default>
362
- <show_in_website>1</show_in_website>
363
- <show_in_store>0</show_in_store>
364
- </sc_priceheader>
365
- <sc_pricestyle translate="label">
366
- <label>PriceStyle</label>
367
- <frontend_type>text</frontend_type>
368
- <sort_order>118</sort_order>
369
- <show_in_default>1</show_in_default>
370
- <show_in_website>1</show_in_website>
371
- <show_in_store>0</show_in_store>
372
- </sc_pricestyle>
373
- <description translate="label">
374
- <label>Description</label>
375
- <frontend_type>text</frontend_type>
376
- <sort_order>119</sort_order>
377
- <show_in_default>1</show_in_default>
378
- <show_in_website>1</show_in_website>$value == 'JCB'
379
- <show_in_store>0</show_in_store>
380
- </description>
381
- <item_style1 translate="label">
382
- <label>ItemStyle Line 1</label>
383
- <frontend_type>text</frontend_type>
384
- <sort_order>120</sort_order>
385
- <show_in_default>1</show_in_default>
386
- <show_in_website>1</show_in_website>
387
- <show_in_store>0</show_in_store>
388
- </item_style1>
389
- <item_style2 translate="label">
390
- <label>ItemStyle Line 2</label>
391
- <frontend_type>text</frontend_type>
392
- <sort_order>121</sort_order>
393
- <show_in_default>1</show_in_default>
394
- <show_in_website>1</show_in_website>
395
- <show_in_store>0</show_in_store>
396
- </item_style2>
397
- <discount_headerstyle translate="label">
398
- <label>Discount HeaderStyle</label>
399
- <frontend_type>text</frontend_type>
400
- <sort_order>123</sort_order>
401
- <show_in_default>1</show_in_default>
402
- <show_in_website>1</show_in_website>
403
- <show_in_store>0</show_in_store>
404
- </discount_headerstyle>
405
- <discount_style translate="label">
406
- <label>Discount Style</label>
407
- <frontend_type>text</frontend_type>
408
- <sort_order>124</sort_order>
409
- <show_in_default>1</show_in_default>
410
- <show_in_website>1</show_in_website>
411
- <show_in_store>0</show_in_store>
412
- </discount_style>
413
- <shipping_costs_headerstyle translate="label">
414
- <label>Ship.Costs HeaderStyle</label>
415
- <frontend_type>text</frontend_type>
416
- <sort_order>126</sort_order>
417
- <show_in_default>1</show_in_default>
418
- <show_in_website>1</show_in_website>
419
- <show_in_store>0</show_in_store>
420
- </shipping_costs_headerstyle>
421
- <shipping_costs_style translate="label">
422
- <label>Ship.Costs Style</label>
423
- <frontend_type>text</frontend_type>
424
- <sort_order>127</sort_order>
425
- <show_in_default>1</show_in_default>
426
- <show_in_website>1</show_in_website>
427
- <show_in_store>0</show_in_store>
428
- </shipping_costs_style>
429
- <tax_headerstyle translate="label">
430
- <label>Tax HeaderStyle</label>
431
- <frontend_type>text</frontend_type>
432
- <sort_order>129</sort_order>
433
- <show_in_default>1</show_in_default>
434
- <show_in_website>1</show_in_website>
435
- <show_in_store>0</show_in_store>
436
- </tax_headerstyle>
437
- <tax_style translate="label">
438
- <label>Tax Style</label>
439
- <frontend_type>text</frontend_type>
440
- <sort_order>130</sort_order>
441
- <show_in_default>1</show_in_default>
442
- <show_in_website>1</show_in_website>
443
- <show_in_store>0</show_in_store>
444
- </tax_style>
445
- <price_header translate="label">
446
- <label>Price Header</label>
447
- <frontend_type>text</frontend_type>
448
- <sort_order>132</sort_order>
449
- <show_in_default>1</show_in_default>
450
- <show_in_website>1</show_in_website>
451
- <show_in_store>0</show_in_store>
452
- </price_header>
453
- <price_headerstyle translate="label">
454
- <label>Price HeaderStyle</label>
455
- <frontend_type>text</frontend_type>
456
- <sort_order>133</sort_order>
457
- <show_in_default>1</show_in_default>
458
- <show_in_website>1</show_in_website>
459
- <show_in_store>0</show_in_store>
460
- </price_headerstyle>
461
- <price_style translate="label">
462
- <label>Price Style</label>
463
- <frontend_type>text</frontend_type>
464
- <sort_order>134</sort_order>
465
- <show_in_default>1</show_in_default>
466
- <show_in_website>1</show_in_website>
467
- <show_in_store>0</show_in_store>
468
- </price_style>
469
- <subtotal_header translate="label">
470
- <label>Subtotal Header</label>
471
- <frontend_type>text</frontend_type>
472
- <sort_order>135</sort_order>
473
- <show_in_default>1</show_in_default>
474
- <show_in_website>1</show_in_website>
475
- <show_in_store>0</show_in_store>
476
- </subtotal_header>
477
- <subtotal_headerstyle translate="label">
478
- <label>Subtotal HeaderStyle</label>
479
- <frontend_type>text</frontend_type>
480
- <sort_order>136</sort_order>
481
- <show_in_default>1</show_in_default>
482
- <show_in_website>1</show_in_website>
483
- <show_in_store>0</show_in_store>
484
- </subtotal_headerstyle>
485
- <subtotal_style translate="label">
486
- <label>Subtotal Style</label>
487
- <frontend_type>text</frontend_type>
488
- <sort_order>137</sort_order>
489
- <show_in_default>1</show_in_default>
490
- <show_in_website>1</show_in_website>
491
- <show_in_store>0</show_in_store>
492
- </subtotal_style>
493
- </fields>
494
- </mpay24spsc>
495
-
496
- <update translate="label">
497
- <label>Connect</label>
498
  <frontend_type>text</frontend_type>
499
- <frontend_model>mpay24/update</frontend_model>
500
- <sort_order>20</sort_order>
501
  <show_in_default>1</show_in_default>
502
  <show_in_website>1</show_in_website>
503
- <fields>
504
- <run>
505
- <frontend_type>button</frontend_type>
506
- <sort_order>0</sort_order>
507
- <show_in_default>1</show_in_default>
508
- <show_in_website>1</show_in_website>
509
- <show_in_store>1</show_in_store>
510
- </run>
511
- </fields>
512
- </update>
513
-
514
- <global translate="label">
515
- <label>Turn off a mPAY24 Solution</label>
516
  <frontend_type>text</frontend_type>
517
- <frontend_model>mpay24/adminhtml_system_config_fieldset_global</frontend_model>
518
- <sort_order>4</sort_order>
519
  <show_in_default>1</show_in_default>
520
  <show_in_website>1</show_in_website>
521
- <fields>
522
- <mpay24_sp_active translate="label">
523
- <frontend_type>button</frontend_type>
524
- <sort_order>0</sort_order>
525
- <show_in_default>1</show_in_default>
526
- <show_in_website>1</show_in_website>
527
- </mpay24_sp_active>
528
- <mpay24_sp_cc translate="label">
529
- <label>Credit Cards</label>
530
- <config_path>payment/mpay24_sp_cc/in_use</config_path>
531
- <frontend_type>checkbox</frontend_type>
532
- <sort_order>1</sort_order>
533
- <show_in_default>1</show_in_default>
534
- <show_in_website>1</show_in_website>
535
- </mpay24_sp_cc>
536
- <mpay24_sp_eps translate="label">
537
- <label>eps Online Bank Transfer</label>
538
- <config_path>payment/mpay24_sp_eps/in_use</config_path>
539
- <frontend_type>checkbox</frontend_type>
540
- <sort_order>2</sort_order>
541
- <show_in_default>1</show_in_default>
542
- <show_in_website>1</show_in_website>
543
- </mpay24_sp_eps>
544
- <mpay24_sp_maestro>
545
- <label>MAESTRO</label>
546
- <config_path>payment/mpay24_sp_maestro/in_use</config_path>
547
- <frontend_type>checkbox</frontend_type>
548
- <sort_order>3</sort_order>
549
- <show_in_default>1</show_in_default>
550
- <show_in_website>1</show_in_website>
551
- </mpay24_sp_maestro>
552
- <mpay24_sp_psc>
553
- <label>paysafecard</label>
554
- <config_path>payment/mpay24_sp_psc/in_use</config_path>
555
- <frontend_type>checkbox</frontend_type>
556
- <sort_order>4</sort_order>
557
- <show_in_default>1</show_in_default>
558
- <show_in_website>1</show_in_website>
559
- </mpay24_sp_psc>
560
- <mpay24_sp_giropay>
561
- <label>giropay (Online-Überweisung für DE)</label>
562
- <config_path>payment/mpay24_sp_giropay/in_use</config_path>
563
- <frontend_type>checkbox</frontend_type>
564
- <sort_order>5</sort_order>
565
- <show_in_default>1</show_in_default>
566
- <show_in_website>1</show_in_website>
567
- </mpay24_sp_giropay>
568
- <mpay24_sp_paypal translate="label comment">
569
- <label>PayPal</label>
570
- <config_path>payment/mpay24_sp_paypal/in_use</config_path>
571
- <frontend_type>checkbox</frontend_type>
572
- <sort_order>6</sort_order>
573
- <show_in_default>1</show_in_default>
574
- <show_in_website>1</show_in_website>
575
- </mpay24_sp_paypal>
576
- <mpay24_sp_cashTicket translate="label comment">
577
- <label>Cash-Ticket</label>
578
- <config_path>payment/mpay24_sp_cashTicket/in_use</config_path>
579
- <frontend_type>checkbox</frontend_type>
580
- <sort_order>7</sort_order>
581
- <show_in_default>1</show_in_default>
582
- <show_in_website>1</show_in_website>
583
- </mpay24_sp_cashTicket>
584
- <mpay24_sp_cb translate="label comment">
585
- <label>Carte Bleue</label>
586
- <config_path>payment/mpay24_sp_cb/in_use</config_path>
587
- <frontend_type>checkbox</frontend_type>
588
- <sort_order>8</sort_order>
589
- <show_in_default>1</show_in_default>
590
- <show_in_website>1</show_in_website>
591
- </mpay24_sp_cb>
592
- <mpay24_sp_mpass>
593
- <label>mpass</label>
594
- <config_path>payment/mpay24_sp_mpass/in_use</config_path>
595
- <frontend_type>checkbox</frontend_type>
596
- <sort_order>9</sort_order>
597
- <show_in_default>1</show_in_default>
598
- <show_in_website>1</show_in_website>
599
- </mpay24_sp_mpass>
600
- <mpay24_sp_paybox translate="label comment">
601
- <label>paybox - Pay with mobile phone</label>
602
- <config_path>payment/mpay24_sp_paybox/in_use</config_path>
603
- <frontend_type>checkbox</frontend_type>
604
- <sort_order>10</sort_order>
605
- <show_in_default>1</show_in_default>
606
- <show_in_website>1</show_in_website>
607
- </mpay24_sp_paybox>
608
- <mpay24_sp_elv>
609
- <label>Elektronisches Lastschriftverfahren (ELV) über hobex</label>
610
- <config_path>payment/mpay24_sp_elv/in_use</config_path>
611
- <frontend_type>checkbox</frontend_type>
612
- <sort_order>11</sort_order>
613
- <show_in_default>1</show_in_default>
614
- <show_in_website>1</show_in_website>
615
- </mpay24_sp_elv>
616
- </fields>
617
- </global>
618
- <mpay24_sp_cc translate="label" module="mpay24">
619
- <label>Credit Cards</label>
620
  <frontend_type>text</frontend_type>
621
  <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
622
  <sort_order>5</sort_order>
623
  <show_in_default>1</show_in_default>
624
  <show_in_website>1</show_in_website>
625
  <fields>
626
- <payment_action translate="label">
627
- <label>Payment Action</label>
628
- <frontend_type>select</frontend_type>
629
- <source_model>mpay24/source_clearingAction</source_model>
630
- <config_path>payment/mpay24_sp_cc/payment_action</config_path>
631
- <sort_order>2</sort_order>
632
- </payment_action>
633
- <order_status translate="label">
634
- <label>New order status</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
635
  <frontend_type>select</frontend_type>
636
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
637
- <config_path>payment/mpay24_sp_cc/order_status</config_path>
638
- <sort_order>3</sort_order>
639
  <show_in_default>1</show_in_default>
640
  <show_in_website>1</show_in_website>
641
- </order_status>
642
- <cctypes translate="label">
643
- <label>Credit Card Types</label>
644
- <frontend_type>multiselect</frontend_type>
645
- <source_model>mpay24/source_cctype</source_model>
646
- <config_path>payment/mpay24_sp_cc/cctypes</config_path>
647
- <sort_order>4</sort_order>
648
- <show_in_default>1</show_in_default>
649
- <show_in_website>1</show_in_website>
650
- </cctypes>
651
- <allowspecific translate="label">
652
- <label>Payment from applicable countries</label>
653
- <frontend_type>select</frontend_type>
654
- <config_path>payment/mpay24_sp_cc/allowspecific</config_path>
655
- <sort_order>5</sort_order>
656
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
657
- <show_in_default>1</show_in_default>
658
- <show_in_website>1</show_in_website>
659
- </allowspecific>
660
- <specificcountry translate="label">
661
- <label>Payment from Specific countries</label>
662
- <frontend_type>multiselect</frontend_type>
663
- <config_path>payment/mpay24_sp_cc/specificcountry</config_path>
664
- <sort_order>6</sort_order>
665
- <source_model>adminhtml/system_config_source_country</source_model>
666
- <show_in_default>1</show_in_default>
667
- <show_in_website>1</show_in_website>
668
- <depends><allowspecific>1</allowspecific></depends>
669
- </specificcountry>
670
- <min_order_total translate="label">
671
- <label>Minimum Order Total</label>
672
- <frontend_type>text</frontend_type>
673
- <config_path>payment/mpay24_sp_cc/min_order_total</config_path>
674
- <sort_order>7</sort_order>
675
- <show_in_default>1</show_in_default>
676
- <show_in_website>1</show_in_website>
677
- </min_order_total>
678
- <max_order_total translate="label">
679
- <label>Maximum Order Total</label>
680
- <frontend_type>text</frontend_type>
681
- <config_path>payment/mpay24_sp_cc/max_order_total</config_path>
682
- <sort_order>8</sort_order>
683
- <show_in_default>1</show_in_default>
684
- <show_in_website>1</show_in_website>
685
- </max_order_total>
686
- </fields>
687
- </mpay24_sp_cc>
688
- <mpay24_sp_elv translate="label" module="mpay24">
689
- <label>Elektronisches Lastschriftverfahren (ELV) über hobex</label>
690
- <frontend_type>text</frontend_type>
691
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
692
- <sort_order>14</sort_order>
693
- <show_in_default>1</show_in_default>
694
- <show_in_website>1</show_in_website>
695
- <fields>
696
- <payment_action translate="label">
697
- <label>Payment Action</label>
698
- <frontend_type>select</frontend_type>
699
- <config_path>payment/mpay24_sp_elv/payment_action</config_path>
700
- <source_model>mpay24/source_clearingAction</source_model>
701
- <sort_order>3</sort_order>
702
- </payment_action>
703
- <order_status translate="label">
704
- <label>New order status</label>
705
  <frontend_type>select</frontend_type>
706
- <config_path>payment/mpay24_sp_elv/order_status</config_path>
707
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
708
  <sort_order>2</sort_order>
709
  <show_in_default>1</show_in_default>
710
  <show_in_website>1</show_in_website>
711
- </order_status>
712
- <allowspecific translate="label">
713
- <label>Payment from applicable countries</label>
714
- <frontend_type>select</frontend_type>
715
- <config_path>payment/mpay24_sp_elv/allowspecific</config_path>
716
- <sort_order>3</sort_order>
717
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
718
- <show_in_default>1</show_in_default>
719
- <show_in_website>1</show_in_website>
720
- </allowspecific>
721
- <specificcountry translate="label">
722
- <label>Payment from Specific countries</label>
723
- <frontend_type>multiselect</frontend_type>
724
- <config_path>payment/mpay24_sp_elv/specificcountry</config_path>
725
- <sort_order>4</sort_order>
726
- <source_model>mpay24/source_elvCountryAction</source_model>
727
- <show_in_default>1</show_in_default>
728
- <show_in_website>1</show_in_website>
729
- <depends><allowspecific>1</allowspecific></depends>
730
- </specificcountry>
731
- <min_order_total translate="label">
732
- <label>Minimum Order Total</label>
733
- <frontend_type>text</frontend_type>
734
- <config_path>payment/mpay24_sp_elv/min_order_total</config_path>
735
- <sort_order>5</sort_order>
736
- <show_in_default>1</show_in_default>
737
- <show_in_website>1</show_in_website>
738
- </min_order_total>
739
- <max_order_total translate="label">
740
- <label>Maximum Order Total</label>
741
- <frontend_type>text</frontend_type>
742
- <config_path>payment/mpay24_sp_elv/max_order_total</config_path>
743
- <sort_order>6</sort_order>
744
- <show_in_default>1</show_in_default>
745
- <show_in_website>1</show_in_website>
746
- </max_order_total>
747
- </fields>
748
- </mpay24_sp_elv>
749
- <mpay24_sp_eps translate="label" module="mpay24">
750
- <label>eps Online Bank Transfer</label>
751
- <frontend_type>text</frontend_type>
752
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
753
- <sort_order>6</sort_order>
754
- <show_in_default>1</show_in_default>
755
- <show_in_website>1</show_in_website>
756
- <fields>
757
- <payment_action translate="label">
758
- <label>Payment Action</label>
759
- <frontend_type>select</frontend_type>
760
- <config_path>payment/mpay24_sp_eps/payment_action</config_path>
761
- <source_model>mpay24/source_clearingAction</source_model>
762
- <sort_order>2</sort_order>
763
- </payment_action>
764
- <order_status translate="label">
765
- <label>New order status</label>
766
  <frontend_type>select</frontend_type>
767
- <config_path>payment/mpay24_sp_eps/order_status</config_path>
768
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
769
  <sort_order>5</sort_order>
770
  <show_in_default>1</show_in_default>
771
  <show_in_website>1</show_in_website>
772
- </order_status>
773
- <epstypes translate="label">
774
- <label>Brand</label>
775
- <frontend_type>multiselect</frontend_type>
776
- <config_path>payment/mpay24_sp_eps/epstypes</config_path>
777
- <sort_order>3</sort_order>
778
- <source_model>mpay24/source_epsTypesAction</source_model>
779
- <show_in_default>1</show_in_default>
780
  <show_in_website>1</show_in_website>
781
- </epstypes>
782
- <allowspecific translate="label">
783
- <label>Payment from applicable countries</label>
784
- <frontend_type>select</frontend_type>
785
- <config_path>payment/mpay24_sp_eps/allowspecific</config_path>
786
- <sort_order>4</sort_order>
787
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
788
- <show_in_default>1</show_in_default>
789
- <show_in_website>1</show_in_website>
790
- </allowspecific>
791
- <specificcountry translate="label">
792
- <label>Payment from Specific countries</label>
793
- <frontend_type>multiselect</frontend_type>
794
- <config_path>payment/mpay24_sp_eps/specificcountry</config_path>
795
- <sort_order>5</sort_order>
796
- <source_model>mpay24/source_epsCountryAction</source_model>
797
- <show_in_default>1</show_in_default>
798
- <show_in_website>1</show_in_website>
799
- <depends><allowspecific>1</allowspecific></depends>
800
- </specificcountry>
801
- <min_order_total translate="label">
802
- <label>Minimum Order Total</label>
803
- <frontend_type>text</frontend_type>
804
- <config_path>payment/mpay24_sp_eps/min_order_total</config_path>
805
- <sort_order>6</sort_order>
806
- <show_in_default>1</show_in_default>
807
- <show_in_website>1</show_in_website>
808
- </min_order_total>
809
- <max_order_total translate="label">
810
- <label>Maximum Order Total</label>
811
- <frontend_type>text</frontend_type>
812
- <config_path>payment/mpay24_sp_eps/max_order_total</config_path>
813
- <sort_order>7</sort_order>
814
- <show_in_default>1</show_in_default>
815
- <show_in_website>1</show_in_website>
816
- </max_order_total>
817
- </fields>
818
- </mpay24_sp_eps>
819
- <mpay24_sp_giropay module="mpay24">
820
- <label>giropay (Online-Überweisung für DE)</label>
821
- <frontend_type>text</frontend_type>
822
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
823
- <sort_order>9</sort_order>
824
- <show_in_default>1</show_in_default>
825
- <show_in_website>1</show_in_website>
826
- <fields>
827
- <allowspecific translate="label">
828
- <label>Payment from applicable countries</label>
829
- <frontend_type>select</frontend_type>
830
- <config_path>payment/mpay24_sp_giropay/allowspecific</config_path>
831
- <sort_order>2</sort_order>
832
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
833
- <show_in_default>1</show_in_default>
834
- <show_in_website>1</show_in_website>
835
- </allowspecific>
836
- <specificcountry translate="label">
837
- <label>Payment from Specific countries</label>
838
- <frontend_type>multiselect</frontend_type>
839
- <config_path>payment/mpay24_sp_giropay/specificcountry</config_path>
840
- <sort_order>3</sort_order>
841
- <source_model>adminhtml/system_config_source_country</source_model>
842
- <show_in_default>1</show_in_default>
843
- <show_in_website>1</show_in_website>
844
- <depends><allowspecific>1</allowspecific></depends>
845
- </specificcountry>
846
- <min_order_total translate="label">
847
- <label>Minimum Order Total</label>
848
- <frontend_type>text</frontend_type>
849
- <config_path>payment/mpay24_sp_giropay/min_order_total</config_path>
850
- <sort_order>4</sort_order>
851
- <show_in_default>1</show_in_default>
852
- <show_in_website>1</show_in_website>
853
- </min_order_total>
854
- <max_order_total translate="label">
855
- <label>Maximum Order Total</label>
856
- <frontend_type>text</frontend_type>
857
- <config_path>payment/mpay24_sp_giropay/max_order_total</config_path>
858
- <sort_order>5</sort_order>
859
- <show_in_default>1</show_in_default>
860
- <show_in_website>1</show_in_website>
861
- </max_order_total>
862
- </fields>
863
- </mpay24_sp_giropay>
864
- <mpay24_sp_maestro module="mpay24">
865
- <label>MAESTRO</label>
866
- <frontend_type>text</frontend_type>
867
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
868
- <sort_order>7</sort_order>
869
- <show_in_default>1</show_in_default>
870
- <show_in_website>1</show_in_website>
871
- <fields>
872
- <order_status translate="label">
873
- <label>New order status</label>
874
  <frontend_type>select</frontend_type>
875
- <config_path>payment/mpay24_sp_maestro/order_status</config_path>
876
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
877
- <sort_order>2</sort_order>
878
  <show_in_default>1</show_in_default>
879
  <show_in_website>1</show_in_website>
880
- </order_status>
881
- <allowspecific translate="label">
882
- <label>Payment from applicable countries</label>
883
- <frontend_type>select</frontend_type>
884
- <config_path>payment/mpay24_sp_maestro/allowspecific</config_path>
885
- <sort_order>3</sort_order>
886
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
887
- <show_in_default>1</show_in_default>
888
- <show_in_website>1</show_in_website>
889
- </allowspecific>
890
- <specificcountry translate="label">
891
- <label>Payment from Specific countries</label>
892
- <frontend_type>multiselect</frontend_type>
893
- <config_path>payment/mpay24_sp_maestro/specificcountry</config_path>
894
- <sort_order>4</sort_order>
895
- <source_model>mpay24/source_maestroCountryAction</source_model>
896
- <show_in_default>1</show_in_default>
897
- <show_in_website>1</show_in_website>
898
- <depends><allowspecific>1</allowspecific></depends>
899
- </specificcountry>
900
- <min_order_total translate="label">
901
- <label>Minimum Order Total</label>
902
- <frontend_type>text</frontend_type>
903
- <config_path>payment/mpay24_sp_maestro/min_order_total</config_path>
904
- <sort_order>5</sort_order>
905
- <show_in_default>1</show_in_default>
906
- <show_in_website>1</show_in_website>
907
- </min_order_total>
908
- <max_order_total translate="label">
909
- <label>Maximum Order Total</label>
910
- <frontend_type>text</frontend_type>
911
- <config_path>payment/mpay24_sp_maestro/max_order_total</config_path>
912
- <sort_order>6</sort_order>
913
- <show_in_default>1</show_in_default>
914
- <show_in_website>1</show_in_website>
915
- </max_order_total>
916
- </fields>
917
- </mpay24_sp_maestro>
918
- <mpay24_sp_paybox translate="label" module="mpay24">
919
- <label>paybox - Pay with mobile phone</label>
920
- <frontend_type>text</frontend_type>
921
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
922
- <sort_order>13</sort_order>
923
- <show_in_default>1</show_in_default>
924
- <show_in_website>1</show_in_website>
925
- <fields>
926
- <payment_action translate="label">
927
- <label>Payment Action</label>
928
- <frontend_type>select</frontend_type>
929
- <config_path>payment/mpay24_sp_paybox/payment_action</config_path>
930
- <source_model>mpay24/source_clearingAction</source_model>
931
- <sort_order>2</sort_order>
932
- </payment_action>
933
- <order_status translate="label">
934
- <label>New order status</label>
935
  <frontend_type>select</frontend_type>
936
- <config_path>payment/mpay24_sp_paybox/order_status</config_path>
937
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
938
- <sort_order>3</sort_order>
939
  <show_in_default>1</show_in_default>
940
  <show_in_website>1</show_in_website>
941
- </order_status>
942
- <allowspecific translate="label">
943
- <label>Payment from applicable countries</label>
944
- <frontend_type>select</frontend_type>
945
- <config_path>payment/mpay24_sp_paybox/allowspecific</config_path>
946
- <sort_order>4</sort_order>
947
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
948
- <show_in_default>1</show_in_default>
949
- <show_in_website>1</show_in_website>
950
- </allowspecific>
951
- <specificcountry translate="label">
952
- <label>Payment from Specific countries</label>
953
- <frontend_type>multiselect</frontend_type>
954
- <config_path>payment/mpay24_sp_paybox/specificcountry</config_path>
955
- <sort_order>5</sort_order>
956
- <source_model>mpay24/source_payboxCountryAction</source_model>
957
- <show_in_default>1</show_in_default>
958
- <show_in_website>1</show_in_website>
959
- <depends><allowspecific>1</allowspecific></depends>
960
- </specificcountry>
961
- <min_order_total translate="label">
962
- <label>Minimum Order Total</label>
963
- <frontend_type>text</frontend_type>
964
- <config_path>payment/mpay24_sp_paybox/min_order_total</config_path>
965
- <sort_order>6</sort_order>
966
- <show_in_default>1</show_in_default>
967
- <show_in_website>1</show_in_website>
968
- </min_order_total>
969
- <max_order_total translate="label">
970
- <label>Maximum Order Total</label>
971
- <frontend_type>text</frontend_type>
972
- <config_path>payment/mpay24_sp_paybox/max_order_total</config_path>
973
- <sort_order>7</sort_order>
974
- <show_in_default>1</show_in_default>
975
- <show_in_website>1</show_in_website>
976
- </max_order_total>
977
- </fields>
978
- </mpay24_sp_paybox>
979
- <mpay24_sp_psc module="mpay24">
980
- <label>paysafecard</label>
981
- <frontend_type>text</frontend_type>
982
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
983
- <sort_order>8</sort_order>
984
- <show_in_default>1</show_in_default>
985
- <show_in_website>1</show_in_website>
986
- <fields>
987
- <order_status translate="label">
988
- <label>New order status</label>
989
  <frontend_type>select</frontend_type>
990
- <config_path>payment/mpay24_sp_psc/order_status</config_path>
991
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
992
- <sort_order>2</sort_order>
993
  <show_in_default>1</show_in_default>
994
  <show_in_website>1</show_in_website>
995
- </order_status>
996
- <allowspecific translate="label">
997
- <label>Payment from applicable countries</label>
998
- <frontend_type>select</frontend_type>
999
- <config_path>payment/mpay24_sp_psc/allowspecific</config_path>
1000
- <sort_order>3</sort_order>
1001
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
1002
- <show_in_default>1</show_in_default>
1003
- <show_in_website>1</show_in_website>
1004
- </allowspecific>
1005
- <specificcountry translate="label">
1006
- <label>Payment from Specific countries</label>
1007
- <frontend_type>multiselect</frontend_type>
1008
- <config_path>payment/mpay24_sp_psc/specificcountry</config_path>
1009
- <sort_order>4</sort_order>
1010
- <source_model>adminhtml/system_config_source_country</source_model>
1011
- <show_in_default>1</show_in_default>
1012
- <show_in_website>1</show_in_website>
1013
- <depends><allowspecific>1</allowspecific></depends>
1014
- </specificcountry>
1015
- <min_order_total translate="label">
1016
- <label>Minimum Order Total</label>
1017
- <frontend_type>text</frontend_type>
1018
- <config_path>payment/mpay24_sp_psc/min_order_total</config_path>
1019
- <sort_order>5</sort_order>
1020
- <show_in_default>1</show_in_default>
1021
- <show_in_website>1</show_in_website>
1022
- </min_order_total>
1023
- <max_order_total translate="label">
1024
- <label>Maximum Order Total</label>
1025
- <frontend_type>text</frontend_type>
1026
- <config_path>payment/mpay24_sp_psc/max_order_total</config_path>
1027
- <sort_order>6</sort_order>
1028
- <show_in_default>1</show_in_default>
1029
- <show_in_website>1</show_in_website>
1030
- </max_order_total>
1031
- </fields>
1032
- </mpay24_sp_psc>
1033
- <mpay24_sp_paypal module="mpay24">
1034
- <label>PayPal</label>
1035
- <frontend_type>text</frontend_type>
1036
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
1037
- <sort_order>10</sort_order>
1038
- <show_in_default>1</show_in_default>
1039
- <show_in_website>1</show_in_website>
1040
- <fields>
1041
- <payment_action translate="label">
1042
- <label>Payment Action</label>
1043
- <frontend_type>select</frontend_type>
1044
- <source_model>mpay24/source_clearingAction</source_model>
1045
- <config_path>payment/mpay24_sp_paypal/payment_action</config_path>
1046
- <sort_order>2</sort_order>
1047
- </payment_action>
1048
- <order_status translate="label">
1049
- <label>New order status</label>
1050
  <frontend_type>select</frontend_type>
1051
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
1052
- <config_path>payment/mpay24_sp_paypal/order_status</config_path>
1053
- <sort_order>3</sort_order>
1054
  <show_in_default>1</show_in_default>
1055
  <show_in_website>1</show_in_website>
1056
- </order_status>
1057
- <allowspecific translate="label">
1058
- <label>Payment from applicable countries</label>
1059
- <frontend_type>select</frontend_type>
1060
- <config_path>payment/mpay24_sp_paypal/allowspecific</config_path>
1061
- <sort_order>5</sort_order>
1062
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
1063
- <show_in_default>1</show_in_default>
1064
- <show_in_website>1</show_in_website>
1065
- </allowspecific>
1066
- <specificcountry translate="label">
1067
- <label>Payment from Specific countries</label>
1068
- <frontend_type>multiselect</frontend_type>
1069
- <config_path>payment/mpay24_sp_paypal/specificcountry</config_path>
1070
- <sort_order>6</sort_order>
1071
- <source_model>adminhtml/system_config_source_country</source_model>
1072
- <show_in_default>1</show_in_default>
1073
- <show_in_website>1</show_in_website>
1074
- <depends><allowspecific>1</allowspecific></depends>
1075
- </specificcountry>
1076
- <min_order_total translate="label">
1077
- <label>Minimum Order Total</label>
1078
- <frontend_type>text</frontend_type>
1079
- <config_path>payment/mpay24_sp_paypal/min_order_total</config_path>
1080
- <sort_order>7</sort_order>
1081
- <show_in_default>1</show_in_default>
1082
- <show_in_website>1</show_in_website>
1083
- </min_order_total>
1084
- <max_order_total translate="label">
1085
- <label>Maximum Order Total</label>
1086
- <frontend_type>text</frontend_type>
1087
- <config_path>payment/mpay24_sp_paypal/max_order_total</config_path>
1088
- <sort_order>8</sort_order>
1089
- <show_in_default>1</show_in_default>
1090
- <show_in_website>1</show_in_website>
1091
- </max_order_total>
1092
- </fields>
1093
- </mpay24_sp_paypal>
1094
- <mpay24_sp_mpass module="mpay24">
1095
- <label>mpass</label>
1096
- <frontend_type>text</frontend_type>
1097
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
1098
- <sort_order>12</sort_order>
1099
- <show_in_default>1</show_in_default>
1100
- <show_in_website>1</show_in_website>
1101
- <fields>
1102
- <payment_action translate="label">
1103
- <label>Payment Action</label>
1104
- <frontend_type>select</frontend_type>
1105
- <source_model>mpay24/source_clearingAction</source_model>
1106
- <config_path>payment/mpay24_sp_mpass/payment_action</config_path>
1107
- <sort_order>2</sort_order>
1108
- </payment_action>
1109
- <order_status translate="label">
1110
- <label>New order status</label>
1111
  <frontend_type>select</frontend_type>
1112
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
1113
- <config_path>payment/mpay24_sp_mpass/order_status</config_path>
1114
- <sort_order>3</sort_order>
1115
  <show_in_default>1</show_in_default>
1116
  <show_in_website>1</show_in_website>
1117
- </order_status>
1118
- <allowspecific translate="label">
1119
- <label>Payment from applicable countries</label>
1120
- <frontend_type>select</frontend_type>
1121
- <config_path>payment/mpay24_sp_mpass/allowspecific</config_path>
1122
- <sort_order>5</sort_order>
1123
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
1124
- <show_in_default>1</show_in_default>
1125
- <show_in_website>1</show_in_website>
1126
- </allowspecific>
1127
- <specificcountry translate="label">
1128
- <label>Payment from Specific countries</label>
1129
- <frontend_type>multiselect</frontend_type>
1130
- <config_path>payment/mpay24_sp_mpass/specificcountry</config_path>
1131
- <sort_order>6</sort_order>
1132
- <source_model>adminhtml/system_config_source_country</source_model>
1133
- <show_in_default>1</show_in_default>
1134
- <show_in_website>1</show_in_website>
1135
- <depends><allowspecific>1</allowspecific></depends>
1136
- </specificcountry>
1137
- <min_order_total translate="label">
1138
- <label>Minimum Order Total</label>
1139
- <frontend_type>text</frontend_type>
1140
- <config_path>payment/mpay24_sp_mpass/min_order_total</config_path>
1141
- <sort_order>7</sort_order>
1142
- <show_in_default>1</show_in_default>
1143
- <show_in_website>1</show_in_website>
1144
- </min_order_total>
1145
- <max_order_total translate="label">
1146
- <label>Maximum Order Total</label>
1147
- <frontend_type>text</frontend_type>
1148
- <config_path>payment/mpay24_sp_mpass/max_order_total</config_path>
1149
- <sort_order>8</sort_order>
1150
- <show_in_default>1</show_in_default>
1151
- <show_in_website>1</show_in_website>
1152
- </max_order_total>
1153
- </fields>
1154
- </mpay24_sp_mpass>
1155
- <mpay24_sp_cashTicket module="mpay24">
1156
- <label>Cash-Ticket</label>
1157
- <frontend_type>text</frontend_type>
1158
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
1159
- <sort_order>11</sort_order>
1160
- <show_in_default>1</show_in_default>
1161
- <show_in_website>1</show_in_website>
1162
- <fields>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1163
  <payment_action translate="label">
1164
- <label>Payment Action</label>
1165
- <frontend_type>select</frontend_type>
1166
- <source_model>mpay24/source_clearingAction</source_model>
1167
- <config_path>payment/mpay24_sp_cashTicket/payment_action</config_path>
1168
- <sort_order>2</sort_order>
1169
- </payment_action>
1170
- <order_status translate="label">
1171
- <label>New order status</label>
1172
  <frontend_type>select</frontend_type>
1173
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
1174
- <config_path>payment/mpay24_sp_cashTicket/order_status</config_path>
1175
- <sort_order>3</sort_order>
1176
  <show_in_default>1</show_in_default>
1177
  <show_in_website>1</show_in_website>
1178
- </order_status>
1179
- <allowspecific translate="label">
1180
- <label>Payment from applicable countries</label>
1181
- <frontend_type>select</frontend_type>
1182
- <config_path>payment/mpay24_sp_cashTicket/allowspecific</config_path>
1183
- <sort_order>5</sort_order>
1184
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
1185
- <show_in_default>1</show_in_default>
1186
- <show_in_website>1</show_in_website>
1187
- </allowspecific>
1188
- <specificcountry translate="label">
1189
- <label>Payment from Specific countries</label>
1190
- <frontend_type>multiselect</frontend_type>
1191
- <config_path>payment/mpay24_sp_cashTicket/specificcountry</config_path>
1192
- <sort_order>6</sort_order>
1193
- <source_model>adminhtml/system_config_source_country</source_model>
1194
- <show_in_default>1</show_in_default>
1195
- <show_in_website>1</show_in_website>
1196
- <depends><allowspecific>1</allowspecific></depends>
1197
- </specificcountry>
1198
- <min_order_total translate="label">
1199
- <label>Minimum Order Total</label>
1200
- <frontend_type>text</frontend_type>
1201
- <config_path>payment/mpay24_sp_cashTicket/min_order_total</config_path>
1202
- <sort_order>7</sort_order>
1203
- <show_in_default>1</show_in_default>
1204
- <show_in_website>1</show_in_website>
1205
- </min_order_total>
1206
- <max_order_total translate="label">
1207
- <label>Maximum Order Total</label>
1208
- <frontend_type>text</frontend_type>
1209
- <config_path>payment/mpay24_sp_cashTicket/max_order_total</config_path>
1210
- <sort_order>8</sort_order>
1211
- <show_in_default>1</show_in_default>
1212
- <show_in_website>1</show_in_website>
1213
- </max_order_total>
1214
- </fields>
1215
- </mpay24_sp_cashTicket>
1216
- <mpay24_sp_cb module="mpay24">
1217
- <label>Carte Bleue</label>
1218
- <frontend_type>text</frontend_type>
1219
- <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
1220
- <sort_order>12</sort_order>
1221
- <show_in_default>1</show_in_default>
1222
- <show_in_website>1</show_in_website>
1223
- <fields>
1224
- <payment_action translate="label">
1225
- <label>Payment Action</label>
1226
- <frontend_type>select</frontend_type>
1227
- <source_model>mpay24/source_clearingAction</source_model>
1228
- <config_path>payment/mpay24_sp_cb/payment_action</config_path>
1229
- <sort_order>2</sort_order>
1230
- </payment_action>
1231
- <order_status translate="label">
1232
- <label>New order status</label>
1233
  <frontend_type>select</frontend_type>
1234
- <source_model>adminhtml/system_config_source_order_status_processing</source_model>
1235
- <config_path>payment/mpay24_sp_cb/order_status</config_path>
1236
- <sort_order>3</sort_order>
1237
  <show_in_default>1</show_in_default>
1238
  <show_in_website>1</show_in_website>
1239
- </order_status>
1240
- <allowspecific translate="label">
1241
- <label>Payment from applicable countries</label>
1242
- <frontend_type>select</frontend_type>
1243
- <config_path>payment/mpay24_sp_cb/allowspecific</config_path>
1244
- <sort_order>5</sort_order>
1245
- <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
1246
- <show_in_default>1</show_in_default>
1247
- <show_in_website>1</show_in_website>
1248
- </allowspecific>
1249
- <specificcountry translate="label">
1250
- <label>Payment from Specific countries</label>
1251
- <frontend_type>multiselect</frontend_type>
1252
- <config_path>payment/mpay24_sp_cb/specificcountry</config_path>
1253
- <sort_order>6</sort_order>
1254
- <source_model>adminhtml/system_config_source_country</source_model>
1255
- <show_in_default>1</show_in_default>
1256
- <show_in_website>1</show_in_website>
1257
- <depends><allowspecific>1</allowspecific></depends>
1258
- </specificcountry>
1259
- <min_order_total translate="label">
1260
- <label>Minimum Order Total</label>
1261
- <frontend_type>text</frontend_type>
1262
- <config_path>payment/mpay24_sp_cb/min_order_total</config_path>
1263
- <sort_order>7</sort_order>
1264
- <show_in_default>1</show_in_default>
1265
- <show_in_website>1</show_in_website>
1266
- </min_order_total>
1267
- <max_order_total translate="label">
1268
- <label>Maximum Order Total</label>
1269
- <frontend_type>text</frontend_type>
1270
- <config_path>payment/mpay24_sp_cb/max_order_total</config_path>
1271
- <sort_order>8</sort_order>
1272
- <show_in_default>1</show_in_default>
1273
- <show_in_website>1</show_in_website>
1274
- </max_order_total>
1275
- </fields>
1276
- </mpay24_sp_cb>
1277
- </groups>
1278
- </mpay24>
1279
  </sections>
1280
  </config>
10
  <show_in_website>1</show_in_website>
11
  <show_in_store>1</show_in_store>
12
  <groups>
13
+ <mpay24as translate="label">
14
+ <label>mPAY24 Account Settings</label>
15
+ <frontend_type>text</frontend_type>
16
+ <sort_order>1</sort_order>
17
+ <expanded>1</expanded>
18
+ <show_in_default>1</show_in_default>
19
+ <show_in_website>1</show_in_website>
20
+ <show_in_store>1</show_in_store>
21
+ <fields>
22
+ <active translate="label comment">
23
+ <label>mPAY24 enabled</label>
24
+ <frontend_type>select</frontend_type>
25
+ <source_model>adminhtml/system_config_source_yesno</source_model>
26
+ <config_path>payment/mpay24/active</config_path>
27
+ <sort_order>0</sort_order>
28
+ <show_in_default>1</show_in_default>
29
+ <show_in_website>1</show_in_website>
30
+ </active>
31
+ <title translate="label">
32
+ <label>Title</label>
33
+ <config_path>payment/mpay24/title</config_path>
34
+ <frontend_type>text</frontend_type>
35
+ <sort_order>1</sort_order>
36
+ <show_in_default>1</show_in_default>
37
+ <show_in_website>1</show_in_website>
38
+ <depends><active>1</active></depends>
39
+ </title>
40
+ <system translate="comment">
41
+ <label>System</label>
42
+ <frontend_type>select</frontend_type>
43
+ <source_model>mpay24/source_system</source_model>
44
+ <sort_order>2</sort_order>
45
+ <show_in_default>1</show_in_default>
46
+ <show_in_website>1</show_in_website>
47
+ <depends><active>1</active></depends>
48
+ <comment>When switching the system, please set the right merchant ID and SOAP password!</comment>
49
+ </system>
50
+ <merchantid translate="label">
51
+ <label>Merchant ID</label>
52
+ <frontend_type>text</frontend_type>
53
+ <backend_model>mpay24/system_config_backend_encrypted</backend_model>
54
+ <sort_order>3</sort_order>
55
+ <show_in_default>1</show_in_default>
56
+ <show_in_website>1</show_in_website>
57
+ <depends><active>1</active></depends>
58
+ <comment>The Merchant ID provided by mPAY24</comment>
59
+ </merchantid>
60
+ <old_merchantid>
61
+ <label>OLD Merchant ID</label>
62
+ <frontend_type>text</frontend_type>
63
+ <sort_order>3</sort_order>
64
+ </old_merchantid>
65
+ <soap_pass translate="label">
66
+ <label>SOAP password</label>
67
+ <frontend_type>password</frontend_type>
68
+ <backend_model>mpay24/system_config_backend_encrypted</backend_model>
69
+ <sort_order>4</sort_order>
70
+ <show_in_default>1</show_in_default>
71
+ <show_in_website>1</show_in_website>
72
+ <depends><active>1</active></depends>
73
+ <comment>The SOAP password provided by mPAY24</comment>
74
+ </soap_pass>
75
+ <debug>
76
+ <label>Debug</label>
77
+ <frontend_type>select</frontend_type>
78
+ <source_model>adminhtml/system_config_source_yesno</source_model>
79
+ <sort_order>5</sort_order>
80
+ <show_in_default>1</show_in_default>
81
+ <show_in_website>1</show_in_website>
82
+ <depends><active>1</active></depends>
83
+ </debug>
84
+ <use_proxy translate="label">
85
+ <label>API uses proxy</label>
86
+ <frontend_type>select</frontend_type>
87
+ <source_model>adminhtml/system_config_source_yesno</source_model>
88
+ <sort_order>7</sort_order>
89
+ <show_in_default>1</show_in_default>
90
+ <show_in_website>1</show_in_website>
91
+ <depends><active>1</active></depends>
92
+ </use_proxy>
93
+ <proxy_host translate="label">
94
+ <label>Proxy Host</label>
95
+ <frontend_type>text</frontend_type>
96
+ <sort_order>8</sort_order>
97
+ <show_in_default>1</show_in_default>
98
+ <show_in_website>1</show_in_website>
99
+ <depends><use_proxy>1</use_proxy></depends>
100
+ </proxy_host>
101
+ <proxy_port translate="label">
102
+ <label>Proxy Port</label>
103
+ <frontend_type>text</frontend_type>
104
+ <sort_order>9</sort_order>
105
+ <show_in_default>1</show_in_default>
106
+ <show_in_website>1</show_in_website>
107
+ <depends><use_proxy>1</use_proxy></depends>
108
+ </proxy_port>
109
+ </fields>
110
+ </mpay24as>
111
+
112
+ <mpay24sporder>
113
+ <label>mPAY24 Selectpayment Order Design</label>
114
+ <frontend_type>text</frontend_type>
115
+ <sort_order>2</sort_order>
116
+ <expanded>0</expanded>
117
+ <show_in_default>1</show_in_default>
118
+ <show_in_website>1</show_in_website>
119
+ <show_in_store>1</show_in_store>
120
+ <fields>
121
+ <style translate="label">
122
+ <label>Style</label>
123
+ <frontend_type>text</frontend_type>
124
+ <sort_order>101</sort_order>
125
+ <show_in_default>1</show_in_default>
126
+ <show_in_website>1</show_in_website>
127
+ <show_in_store>0</show_in_store>
128
+ </style>
129
+ <logostyle translate="label">
130
+ <label>LogoStyle</label>
131
+ <frontend_type>text</frontend_type>
132
+ <sort_order>102</sort_order>
133
+ <show_in_default>1</show_in_default>
134
+ <show_in_website>1</show_in_website>
135
+ <show_in_store>0</show_in_store>
136
+ </logostyle>
137
+ <pageheaderstyle translate="label">
138
+ <label>PageHeaderStyle</label>
139
+ <frontend_type>text</frontend_type>
140
+ <sort_order>103</sort_order>
141
+ <show_in_default>1</show_in_default>
142
+ <show_in_website>1</show_in_website>
143
+ <show_in_store>0</show_in_store>
144
+ </pageheaderstyle>
145
+ <pagecaptionstyle translate="label">
146
+ <label>PageCaptionStyle</label>
147
+ <frontend_type>text</frontend_type>
148
+ <sort_order>104</sort_order>
149
+ <show_in_default>1</show_in_default>
150
+ <show_in_website>1</show_in_website>
151
+ <show_in_store>0</show_in_store>
152
+ </pagecaptionstyle>
153
+ <pagestyle translate="label">
154
+ <label>PageStyle</label>
155
+ <frontend_type>text</frontend_type>
156
+ <sort_order>105</sort_order>
157
+ <show_in_default>1</show_in_default>
158
+ <show_in_website>1</show_in_website>
159
+ <show_in_store>0</show_in_store>
160
+ </pagestyle>
161
+ <inputfieldsstyle translate="label">
162
+ <label>InputFieldsStyle</label>
163
+ <frontend_type>text</frontend_type>
164
+ <sort_order>106</sort_order>
165
+ <show_in_default>1</show_in_default>
166
+ <show_in_website>1</show_in_website>
167
+ <show_in_store>0</show_in_store>
168
+ </inputfieldsstyle>
169
+ <dropdownlistsstyle translate="label">
170
+ <label>DropDownListsStyle</label>
171
+ <frontend_type>text</frontend_type>
172
+ <sort_order>107</sort_order>
173
+ <show_in_default>1</show_in_default>
174
+ <show_in_website>1</show_in_website>
175
+ <show_in_store>0</show_in_store>
176
+ </dropdownlistsstyle>
177
+ <buttonsstyle translate="label">
178
+ <label>ButtonsStyle</label>
179
+ <frontend_type>text</frontend_type>
180
+ <sort_order>108</sort_order>
181
+ <show_in_default>1</show_in_default>
182
+ <show_in_website>1</show_in_website>
183
+ <show_in_store>0</show_in_store>
184
+ </buttonsstyle>
185
+ <errorsstyle translate="label">
186
+ <label>ErrorsStyle</label>
187
+ <frontend_type>text</frontend_type>
188
+ <sort_order>109</sort_order>
189
+ <show_in_default>1</show_in_default>
190
+ <show_in_website>1</show_in_website>
191
+ <show_in_store>0</show_in_store>
192
+ </errorsstyle>
193
+ <successtitlestyle translate="label">
194
+ <label>SuccessTitleStyle</label>
195
+ <frontend_type>text</frontend_type>
196
+ <sort_order>110</sort_order>
197
+ <show_in_default>1</show_in_default>
198
+ <show_in_website>1</show_in_website>
199
+ <show_in_store>0</show_in_store>
200
+ </successtitlestyle>
201
+ <errortitlestyle translate="label">
202
+ <label>ErrorTitleStyle</label>
203
+ <frontend_type>text</frontend_type>
204
+ <sort_order>111</sort_order>
205
+ <show_in_default>1</show_in_default>
206
+ <show_in_website>1</show_in_website>
207
+ <show_in_store>0</show_in_store>
208
+ </errortitlestyle>
209
+ <footerstyle translate="label">
210
+ <label>FooterStyle</label>
211
+ <frontend_type>text</frontend_type>
212
+ <sort_order>112</sort_order>
213
+ <show_in_default>1</show_in_default>
214
+ <show_in_website>1</show_in_website>
215
+ <show_in_store>0</show_in_store>
216
+ </footerstyle>
217
+ </fields>
218
+ </mpay24sporder>
219
+ <mpay24spsc translate="label">
220
+ <label>mPAY24 Selectpayment ShoppingCart Design</label>
221
+ <frontend_type>text</frontend_type>
222
+ <sort_order>3</sort_order>
223
+ <expanded>0</expanded>
224
+ <show_in_default>1</show_in_default>
225
+ <show_in_website>1</show_in_website>
226
+ <show_in_store>1</show_in_store>
227
+ <fields>
228
+ <sc_row translate="label">
229
+ <label>ShoppingCart Rows</label>
230
+ <frontend_type>multiselect</frontend_type>
231
+ <sort_order>50</sort_order>
232
+ <source_model>mpay24/source_shoppingCartRowsAction</source_model>
233
+ <show_in_default>1</show_in_default>
234
+ <show_in_website>1</show_in_website>
235
+ <show_in_store>0</show_in_store>
236
+ </sc_row>
237
+ <sc_style translate="label">
238
+ <label>Style</label>
239
+ <frontend_type>text</frontend_type>
240
+ <sort_order>101</sort_order>
241
+ <show_in_default>1</show_in_default>
242
+ <show_in_website>1</show_in_website>
243
+ <show_in_store>0</show_in_store>
244
+ </sc_style>
245
+ <sc_header translate="label">
246
+ <label>Header</label>
247
+ <frontend_type>text</frontend_type>
248
+ <sort_order>102</sort_order>
249
+ <show_in_default>1</show_in_default>
250
+ <show_in_website>1</show_in_website>
251
+ <show_in_store>0</show_in_store>
252
+ </sc_header>
253
+ <sc_headerstyle translate="label">
254
+ <label>HeaderStyle</label>
255
+ <frontend_type>text</frontend_type>
256
+ <sort_order>103</sort_order>
257
+ <show_in_default>1</show_in_default>
258
+ <show_in_website>1</show_in_website>
259
+ <show_in_store>0</show_in_store>
260
+ </sc_headerstyle>
261
+ <sc_captionstyle translate="label">
262
+ <label>CaptionStyle</label>
263
+ <frontend_type>text</frontend_type>
264
+ <sort_order>104</sort_order>
265
+ <show_in_default>1</show_in_default>
266
+ <show_in_website>1</show_in_website>
267
+ <show_in_store>0</show_in_store>
268
+ </sc_captionstyle>
269
+ <sc_numberheader translate="label">
270
+ <label>NumberHeader</label>
271
+ <frontend_type>text</frontend_type>
272
+ <sort_order>105</sort_order>
273
+ <show_in_default>1</show_in_default>
274
+ <show_in_website>1</show_in_website>
275
+ <show_in_store>0</show_in_store>
276
+ </sc_numberheader>
277
+ <sc_numberstyle translate="label">
278
+ <label>NumberStyle</label>
279
+ <frontend_type>text</frontend_type>
280
+ <sort_order>106</sort_order>
281
+ <show_in_default>1</show_in_default>
282
+ <show_in_website>1</show_in_website>
283
+ <show_in_store>0</show_in_store>
284
+ </sc_numberstyle>
285
+ <sc_productnrheader translate="label">
286
+ <label>ProductNrHeader</label>
287
+ <frontend_type>text</frontend_type>
288
+ <sort_order>107</sort_order>
289
+ <show_in_default>1</show_in_default>
290
+ <show_in_website>1</show_in_website>
291
+ <show_in_store>0</show_in_store>
292
+ </sc_productnrheader>
293
+ <sc_productnrstyle translate="label">
294
+ <label>ProductNrStyle</label>
295
+ <frontend_type>text</frontend_type>
296
+ <sort_order>108</sort_order>
297
+ <show_in_default>1</show_in_default>
298
+ <show_in_website>1</show_in_website>
299
+ <show_in_store>0</show_in_store>
300
+ </sc_productnrstyle>
301
+ <sc_descriptionheader translate="label">
302
+ <label>DescriptionHeader</label>
303
+ <frontend_type>text</frontend_type>
304
+ <sort_order>109</sort_order>
305
+ <show_in_default>1</show_in_default>
306
+ <show_in_website>1</show_in_website>
307
+ <show_in_store>0</show_in_store>
308
+ </sc_descriptionheader>
309
+ <sc_descriptionstyle translate="label">
310
+ <label>DescriptionStyle</label>
311
+ <frontend_type>text</frontend_type>
312
+ <sort_order>110</sort_order>
313
+ <show_in_default>1</show_in_default>
314
+ <show_in_website>1</show_in_website>
315
+ <show_in_store>0</show_in_store>
316
+ </sc_descriptionstyle>
317
+ <sc_packageheader translate="label">
318
+ <label>PackageHeader</label>
319
+ <frontend_type>text</frontend_type>
320
+ <sort_order>111</sort_order>
321
+ <show_in_default>1</show_in_default>
322
+ <show_in_website>1</show_in_website>
323
+ <show_in_store>0</show_in_store>
324
+ </sc_packageheader>
325
+ <sc_packagestyle translate="label">
326
+ <label>PackageStyle</label>
327
+ <frontend_type>text</frontend_type>
328
+ <sort_order>112</sort_order>
329
+ <show_in_default>1</show_in_default>
330
+ <show_in_website>1</show_in_website>
331
+ <show_in_store>0</show_in_store>
332
+ </sc_packagestyle>
333
+ <sc_quantityheader translate="label">
334
+ <label>QuantityHeader</label>
335
+ <frontend_type>text</frontend_type>
336
+ <sort_order>113</sort_order>
337
+ <show_in_default>1</show_in_default>
338
+ <show_in_website>1</show_in_website>
339
+ <show_in_store>0</show_in_store>
340
+ </sc_quantityheader>
341
+ <sc_quantitystyle translate="label">
342
+ <label>QuantityStyle</label>
343
+ <frontend_type>text</frontend_type>
344
+ <sort_order>114</sort_order>
345
+ <show_in_default>1</show_in_default>
346
+ <show_in_website>1</show_in_website>
347
+ <show_in_store>0</show_in_store>
348
+ </sc_quantitystyle>
349
+ <sc_itempriceheader translate="label">
350
+ <label>ItemPriceHeader</label>
351
+ <frontend_type>text</frontend_type>
352
+ <sort_order>115</sort_order>
353
+ <show_in_default>1</show_in_default>
354
+ <show_in_website>1</show_in_website>
355
+ <show_in_store>0</show_in_store>
356
+ </sc_itempriceheader>
357
+ <sc_itempricestyle translate="label">
358
+ <label>ItemPriceStyle</label>
359
+ <frontend_type>text</frontend_type>
360
+ <sort_order>116</sort_order>
361
+ <show_in_default>1</show_in_default>
362
+ <show_in_website>1</show_in_website>
363
+ <show_in_store>0</show_in_store>
364
+ </sc_itempricestyle>
365
+ <sc_priceheader translate="label">
366
+ <label>PriceHeader</label>
367
+ <frontend_type>text</frontend_type>
368
+ <sort_order>117</sort_order>
369
+ <show_in_default>1</show_in_default>
370
+ <show_in_website>1</show_in_website>
371
+ <show_in_store>0</show_in_store>
372
+ </sc_priceheader>
373
+ <sc_pricestyle translate="label">
374
+ <label>PriceStyle</label>
375
+ <frontend_type>text</frontend_type>
376
+ <sort_order>118</sort_order>
377
+ <show_in_default>1</show_in_default>
378
+ <show_in_website>1</show_in_website>
379
+ <show_in_store>0</show_in_store>
380
+ </sc_pricestyle>
381
+ <description translate="label">
382
+ <label>Description</label>
383
+ <frontend_type>text</frontend_type>
384
+ <sort_order>119</sort_order>
385
+ <show_in_default>1</show_in_default>
386
+ <show_in_website>1</show_in_website>$value == 'JCB'
387
+ <show_in_store>0</show_in_store>
388
+ </description>
389
+ <item_style1 translate="label">
390
+ <label>ItemStyle Line 1</label>
391
  <frontend_type>text</frontend_type>
392
+ <sort_order>120</sort_order>
 
393
  <show_in_default>1</show_in_default>
394
  <show_in_website>1</show_in_website>
395
+ <show_in_store>0</show_in_store>
396
+ </item_style1>
397
+ <item_style2 translate="label">
398
+ <label>ItemStyle Line 2</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
399
  <frontend_type>text</frontend_type>
400
+ <sort_order>121</sort_order>
 
401
  <show_in_default>1</show_in_default>
402
  <show_in_website>1</show_in_website>
403
+ <show_in_store>0</show_in_store>
404
+ </item_style2>
405
+ <discount_headerstyle translate="label">
406
+ <label>Discount HeaderStyle</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
407
  <frontend_type>text</frontend_type>
408
+ <sort_order>123</sort_order>
 
409
  <show_in_default>1</show_in_default>
410
  <show_in_website>1</show_in_website>
411
+ <show_in_store>0</show_in_store>
412
+ </discount_headerstyle>
413
+ <discount_style translate="label">
414
+ <label>Discount Style</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
415
  <frontend_type>text</frontend_type>
416
+ <sort_order>124</sort_order>
 
417
  <show_in_default>1</show_in_default>
418
  <show_in_website>1</show_in_website>
419
+ <show_in_store>0</show_in_store>
420
+ </discount_style>
421
+ <shipping_costs_headerstyle translate="label">
422
+ <label>Ship.Costs HeaderStyle</label>
 
 
 
 
 
 
 
 
 
423
  <frontend_type>text</frontend_type>
424
+ <sort_order>126</sort_order>
 
425
  <show_in_default>1</show_in_default>
426
  <show_in_website>1</show_in_website>
427
+ <show_in_store>0</show_in_store>
428
+ </shipping_costs_headerstyle>
429
+ <shipping_costs_style translate="label">
430
+ <label>Ship.Costs Style</label>
431
+ <frontend_type>text</frontend_type>
432
+ <sort_order>127</sort_order>
433
+ <show_in_default>1</show_in_default>
434
+ <show_in_website>1</show_in_website>
435
+ <show_in_store>0</show_in_store>
436
+ </shipping_costs_style>
437
+ <tax_headerstyle translate="label">
438
+ <label>Tax HeaderStyle</label>
439
+ <frontend_type>text</frontend_type>
440
+ <sort_order>129</sort_order>
441
+ <show_in_default>1</show_in_default>
442
+ <show_in_website>1</show_in_website>
443
+ <show_in_store>0</show_in_store>
444
+ </tax_headerstyle>
445
+ <tax_style translate="label">
446
+ <label>Tax Style</label>
447
+ <frontend_type>text</frontend_type>
448
+ <sort_order>130</sort_order>
449
+ <show_in_default>1</show_in_default>
450
+ <show_in_website>1</show_in_website>
451
+ <show_in_store>0</show_in_store>
452
+ </tax_style>
453
+ <price_header translate="label">
454
+ <label>Price Header</label>
455
+ <frontend_type>text</frontend_type>
456
+ <sort_order>132</sort_order>
457
+ <show_in_default>1</show_in_default>
458
+ <show_in_website>1</show_in_website>
459
+ <show_in_store>0</show_in_store>
460
+ </price_header>
461
+ <price_headerstyle translate="label">
462
+ <label>Price HeaderStyle</label>
463
+ <frontend_type>text</frontend_type>
464
+ <sort_order>133</sort_order>
465
+ <show_in_default>1</show_in_default>
466
+ <show_in_website>1</show_in_website>
467
+ <show_in_store>0</show_in_store>
468
+ </price_headerstyle>
469
+ <price_style translate="label">
470
+ <label>Price Style</label>
471
+ <frontend_type>text</frontend_type>
472
+ <sort_order>134</sort_order>
473
+ <show_in_default>1</show_in_default>
474
+ <show_in_website>1</show_in_website>
475
+ <show_in_store>0</show_in_store>
476
+ </price_style>
477
+ <subtotal_header translate="label">
478
+ <label>Subtotal Header</label>
479
+ <frontend_type>text</frontend_type>
480
+ <sort_order>135</sort_order>
481
+ <show_in_default>1</show_in_default>
482
+ <show_in_website>1</show_in_website>
483
+ <show_in_store>0</show_in_store>
484
+ </subtotal_header>
485
+ <subtotal_headerstyle translate="label">
486
+ <label>Subtotal HeaderStyle</label>
487
+ <frontend_type>text</frontend_type>
488
+ <sort_order>136</sort_order>
489
+ <show_in_default>1</show_in_default>
490
+ <show_in_website>1</show_in_website>
491
+ <show_in_store>0</show_in_store>
492
+ </subtotal_headerstyle>
493
+ <subtotal_style translate="label">
494
+ <label>Subtotal Style</label>
495
+ <frontend_type>text</frontend_type>
496
+ <sort_order>137</sort_order>
497
+ <show_in_default>1</show_in_default>
498
+ <show_in_website>1</show_in_website>
499
+ <show_in_store>0</show_in_store>
500
+ </subtotal_style>
501
+ </fields>
502
+ </mpay24spsc>
503
+
504
+ <mpay24 translate="label" module="mpay24">
505
+ <label>Payment systems</label>
506
+ <expanded>1</expanded>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
507
  <frontend_type>text</frontend_type>
508
  <frontend_model>mpay24/adminhtml_system_config_fieldset_fieldset</frontend_model>
509
  <sort_order>5</sort_order>
510
  <show_in_default>1</show_in_default>
511
  <show_in_website>1</show_in_website>
512
  <fields>
513
+ <active_payments>
514
+ <label>Active payments</label>
515
+ <frontend_type>text</frontend_type>
516
+ </active_payments>
517
+ <active_payment_types>
518
+ <label>Active payment types</label>
519
+ <frontend_type>text</frontend_type>
520
+ </active_payment_types>
521
+ <payments_count>
522
+ <label>Payments count</label>
523
+ <frontend_type>text</frontend_type>
524
+ </payments_count>
525
+ <payments_error>
526
+ <label>Payments error</label>
527
+ <frontend_type>text</frontend_type>
528
+ </payments_error>
529
+ <payments_active transalte="label comment">
530
+ <label>Payment systems</label>
531
+ <frontend_type>select</frontend_type>
532
+ <source_model>mpay24/source_paymentsActive</source_model>
533
+ <sort_order>0</sort_order>
534
+ <show_in_default>1</show_in_default>
535
+ <show_in_website>1</show_in_website>
536
+ <comment>Your customers can choose the payment system in the shop only by 'Custom configuration'! The payment systems will be synchronized when the settings are saved!</comment>
537
+ </payments_active>
538
+ <form_template translate="label comment">
539
+ <label>Payment system selection</label>
540
+ <frontend_type>select</frontend_type>
541
+ <source_model>mpay24/source_formTemplate</source_model>
542
+ <sort_order>0</sort_order>
543
+ <show_in_default>1</show_in_default>
544
+ <show_in_website>1</show_in_website>
545
+ <comment>Choose the way the mPAY24 systems are shown in the fronend (checkout)</comment>
546
+ <depends><payments_active>true</payments_active></depends>
547
+ </form_template>
548
+ <ps_1>
549
+ <label>PS_1</label>
550
  <frontend_type>select</frontend_type>
551
+ <source_model>adminhtml/system_config_source_yesno</source_model>
552
+ <sort_order>1</sort_order>
 
553
  <show_in_default>1</show_in_default>
554
  <show_in_website>1</show_in_website>
555
+ <depends><payments_active>true</payments_active></depends>
556
+ </ps_1>
557
+ <ps_2>
558
+ <label>PS_2</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  <frontend_type>select</frontend_type>
560
+ <source_model>adminhtml/system_config_source_yesno</source_model>
 
561
  <sort_order>2</sort_order>
562
  <show_in_default>1</show_in_default>
563
  <show_in_website>1</show_in_website>
564
+ <depends><payments_active>true</payments_active></depends>
565
+ </ps_2>
566
+ <ps_3>
567
+ <label>PS_3</label>
568
+ <frontend_type>select</frontend_type>
569
+ <source_model>adminhtml/system_config_source_yesno</source_model>
570
+ <sort_order>3</sort_order>
571
+ <show_in_default>1</show_in_default>
572
+ <show_in_website>1</show_in_website>
573
+ <depends><payments_active>true</payments_active></depends>
574
+ </ps_3>
575
+ <ps_4>
576
+ <label>PS_4</label>
577
+ <frontend_type>select</frontend_type>
578
+ <source_model>adminhtml/system_config_source_yesno</source_model>
579
+ <sort_order>4</sort_order>
580
+ <show_in_default>1</show_in_default>
581
+ <show_in_website>1</show_in_website>
582
+ <depends><payments_active>true</payments_active></depends>
583
+ </ps_4>
584
+ <ps_5>
585
+ <label>PS_5</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
586
  <frontend_type>select</frontend_type>
587
+ <source_model>adminhtml/system_config_source_yesno</source_model>
 
588
  <sort_order>5</sort_order>
589
  <show_in_default>1</show_in_default>
590
  <show_in_website>1</show_in_website>
591
+ <depends><payments_active>true</payments_active></depends>
592
+ </ps_5>
593
+ <ps_6>
594
+ <label>PS_6</label>
595
+ <frontend_type>select</frontend_type>
596
+ <source_model>adminhtml/system_config_source_yesno</source_model>
597
+ <sort_order>6</sort_order>
598
+ <show_in_default>1</show_in_default>
599
  <show_in_website>1</show_in_website>
600
+ <depends><payments_active>true</payments_active></depends>
601
+ </ps_6>
602
+ <ps_7>
603
+ <label>PS_7</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
604
  <frontend_type>select</frontend_type>
605
+ <source_model>adminhtml/system_config_source_yesno</source_model>
606
+ <sort_order>7</sort_order>
 
607
  <show_in_default>1</show_in_default>
608
  <show_in_website>1</show_in_website>
609
+ <depends><payments_active>true</payments_active></depends>
610
+ </ps_7>
611
+ <ps_8>
612
+ <label>PS_8</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
613
  <frontend_type>select</frontend_type>
614
+ <source_model>adminhtml/system_config_source_yesno</source_model>
615
+ <sort_order>8</sort_order>
 
616
  <show_in_default>1</show_in_default>
617
  <show_in_website>1</show_in_website>
618
+ <depends><payments_active>true</payments_active></depends>
619
+ </ps_8>
620
+ <ps_9>
621
+ <label>PS_9</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  <frontend_type>select</frontend_type>
623
+ <source_model>adminhtml/system_config_source_yesno</source_model>
624
+ <sort_order>9</sort_order>
 
625
  <show_in_default>1</show_in_default>
626
  <show_in_website>1</show_in_website>
627
+ <depends><payments_active>true</payments_active></depends>
628
+ </ps_9>
629
+ <ps_10>
630
+ <label>PS_10</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
631
  <frontend_type>select</frontend_type>
632
+ <source_model>adminhtml/system_config_source_yesno</source_model>
633
+ <sort_order>10</sort_order>
 
634
  <show_in_default>1</show_in_default>
635
  <show_in_website>1</show_in_website>
636
+ <depends><payments_active>true</payments_active></depends>
637
+ </ps_10>
638
+ <ps_11>
639
+ <label>PS_11</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
640
  <frontend_type>select</frontend_type>
641
+ <source_model>adminhtml/system_config_source_yesno</source_model>
642
+ <sort_order>11</sort_order>
 
643
  <show_in_default>1</show_in_default>
644
  <show_in_website>1</show_in_website>
645
+ <depends><payments_active>true</payments_active></depends>
646
+ </ps_11>
647
+ <ps_12>
648
+ <label>PS_12</label>
649
+ <frontend_type>select</frontend_type>
650
+ <source_model>adminhtml/system_config_source_yesno</source_model>
651
+ <sort_order>12</sort_order>
652
+ <show_in_default>1</show_in_default>
653
+ <show_in_website>1</show_in_website>
654
+ <depends><payments_active>true</payments_active></depends>
655
+ </ps_12>
656
+ <ps_13>
657
+ <label>PS_13</label>
658
+ <frontend_type>select</frontend_type>
659
+ <source_model>adminhtml/system_config_source_yesno</source_model>
660
+ <sort_order>13</sort_order>
661
+ <show_in_default>1</show_in_default>
662
+ <show_in_website>1</show_in_website>
663
+ <depends><payments_active>true</payments_active></depends>
664
+ </ps_13>
665
+ <ps_14>
666
+ <label>PS_14</label>
667
+ <frontend_type>select</frontend_type>
668
+ <source_model>adminhtml/system_config_source_yesno</source_model>
669
+ <sort_order>14</sort_order>
670
+ <show_in_default>1</show_in_default>
671
+ <show_in_website>1</show_in_website>
672
+ <depends><payments_active>true</payments_active></depends>
673
+ </ps_14>
674
+ <ps_15>
675
+ <label>PS_15</label>
676
+ <frontend_type>select</frontend_type>
677
+ <source_model>adminhtml/system_config_source_yesno</source_model>
678
+ <sort_order>15</sort_order>
679
+ <show_in_default>1</show_in_default>
680
+ <show_in_website>1</show_in_website>
681
+ <depends><payments_active>true</payments_active></depends>
682
+ </ps_15>
683
+ <ps_16>
684
+ <label>PS_16</label>
685
+ <frontend_type>select</frontend_type>
686
+ <source_model>adminhtml/system_config_source_yesno</source_model>
687
+ <sort_order>16</sort_order>
688
+ <show_in_default>1</show_in_default>
689
+ <show_in_website>1</show_in_website>
690
+ <depends><payments_active>true</payments_active></depends>
691
+ </ps_16>
692
+ <ps_17>
693
+ <label>PS_17</label>
694
+ <frontend_type>select</frontend_type>
695
+ <source_model>adminhtml/system_config_source_yesno</source_model>
696
+ <sort_order>17</sort_order>
697
+ <show_in_default>1</show_in_default>
698
+ <show_in_website>1</show_in_website>
699
+ <depends><payments_active>true</payments_active></depends>
700
+ </ps_17>
701
+ <ps_18>
702
+ <label>PS_18</label>
703
+ <frontend_type>select</frontend_type>
704
+ <source_model>adminhtml/system_config_source_yesno</source_model>
705
+ <sort_order>18</sort_order>
706
+ <show_in_default>1</show_in_default>
707
+ <show_in_website>1</show_in_website>
708
+ <depends><payments_active>true</payments_active></depends>
709
+ </ps_18>
710
+ <ps_19>
711
+ <label>PS_19</label>
712
+ <frontend_type>select</frontend_type>
713
+ <source_model>adminhtml/system_config_source_yesno</source_model>
714
+ <sort_order>19</sort_order>
715
+ <show_in_default>1</show_in_default>
716
+ <show_in_website>1</show_in_website>
717
+ <depends><payments_active>true</payments_active></depends>
718
+ </ps_19>
719
+ <ps_20>
720
+ <label>PS_20</label>
721
+ <frontend_type>select</frontend_type>
722
+ <source_model>adminhtml/system_config_source_yesno</source_model>
723
+ <sort_order>20</sort_order>
724
+ <show_in_default>1</show_in_default>
725
+ <show_in_website>1</show_in_website>
726
+ <depends><payments_active>true</payments_active></depends>
727
+ </ps_20>
728
+ <ps_21>
729
+ <label>PS_21</label>
730
+ <frontend_type>select</frontend_type>
731
+ <source_model>adminhtml/system_config_source_yesno</source_model>
732
+ <sort_order>21</sort_order>
733
+ <show_in_default>1</show_in_default>
734
+ <show_in_website>1</show_in_website>
735
+ <depends><payments_active>true</payments_active></depends>
736
+ </ps_21>
737
+ <ps_22>
738
+ <label>PS_22</label>
739
+ <frontend_type>select</frontend_type>
740
+ <source_model>adminhtml/system_config_source_yesno</source_model>
741
+ <sort_order>22</sort_order>
742
+ <show_in_default>1</show_in_default>
743
+ <show_in_website>1</show_in_website>
744
+ <depends><payments_active>true</payments_active></depends>
745
+ </ps_22>
746
+ <ps_23>
747
+ <label>PS_23</label>
748
+ <frontend_type>select</frontend_type>
749
+ <source_model>adminhtml/system_config_source_yesno</source_model>
750
+ <sort_order>23</sort_order>
751
+ <show_in_default>1</show_in_default>
752
+ <show_in_website>1</show_in_website>
753
+ <depends><payments_active>true</payments_active></depends>
754
+ </ps_23>
755
+ <ps_24>
756
+ <label>PS_24</label>
757
+ <frontend_type>select</frontend_type>
758
+ <source_model>adminhtml/system_config_source_yesno</source_model>
759
+ <sort_order>24</sort_order>
760
+ <show_in_default>1</show_in_default>
761
+ <show_in_website>1</show_in_website>
762
+ <depends><payments_active>true</payments_active></depends>
763
+ </ps_24>
764
+ <ps_25>
765
+ <label>PS_25</label>
766
+ <frontend_type>select</frontend_type>
767
+ <source_model>adminhtml/system_config_source_yesno</source_model>
768
+ <sort_order>25</sort_order>
769
+ <show_in_default>1</show_in_default>
770
+ <show_in_website>1</show_in_website>
771
+ <depends><payments_active>true</payments_active></depends>
772
+ </ps_25>
773
+ <ps_26>
774
+ <label>PS_26</label>
775
+ <frontend_type>select</frontend_type>
776
+ <source_model>adminhtml/system_config_source_yesno</source_model>
777
+ <sort_order>26</sort_order>
778
+ <show_in_default>1</show_in_default>
779
+ <show_in_website>1</show_in_website>
780
+ <depends><payments_active>true</payments_active></depends>
781
+ </ps_26>
782
+ <ps_27>
783
+ <label>PS_27</label>
784
+ <frontend_type>select</frontend_type>
785
+ <source_model>adminhtml/system_config_source_yesno</source_model>
786
+ <sort_order>27</sort_order>
787
+ <show_in_default>1</show_in_default>
788
+ <show_in_website>1</show_in_website>
789
+ <depends><payments_active>true</payments_active></depends>
790
+ </ps_27>
791
+ <ps_28>
792
+ <label>PS_28</label>
793
+ <frontend_type>select</frontend_type>
794
+ <source_model>adminhtml/system_config_source_yesno</source_model>
795
+ <sort_order>28</sort_order>
796
+ <show_in_default>1</show_in_default>
797
+ <show_in_website>1</show_in_website>
798
+ <depends><payments_active>true</payments_active></depends>
799
+ </ps_28>
800
+ <ps_29>
801
+ <label>PS_29</label>
802
+ <frontend_type>select</frontend_type>
803
+ <source_model>adminhtml/system_config_source_yesno</source_model>
804
+ <sort_order>29</sort_order>
805
+ <show_in_default>1</show_in_default>
806
+ <show_in_website>1</show_in_website>
807
+ <depends><payments_active>true</payments_active></depends>
808
+ </ps_29>
809
+ <ps_30>
810
+ <label>PS_30</label>
811
+ <frontend_type>select</frontend_type>
812
+ <source_model>adminhtml/system_config_source_yesno</source_model>
813
+ <sort_order>30</sort_order>
814
+ <show_in_default>1</show_in_default>
815
+ <show_in_website>1</show_in_website>
816
+ <depends><payments_active>true</payments_active></depends>
817
+ </ps_30>
818
+ <ps_31>
819
+ <label>PS_31</label>
820
+ <frontend_type>select</frontend_type>
821
+ <source_model>adminhtml/system_config_source_yesno</source_model>
822
+ <sort_order>31</sort_order>
823
+ <show_in_default>1</show_in_default>
824
+ <show_in_website>1</show_in_website>
825
+ <depends><payments_active>true</payments_active></depends>
826
+ </ps_31>
827
+ <ps_32>
828
+ <label>PS_32</label>
829
+ <frontend_type>select</frontend_type>
830
+ <source_model>adminhtml/system_config_source_yesno</source_model>
831
+ <sort_order>32</sort_order>
832
+ <show_in_default>1</show_in_default>
833
+ <show_in_website>1</show_in_website>
834
+ <depends><payments_active>true</payments_active></depends>
835
+ </ps_32>
836
+ <ps_33>
837
+ <label>PS_33</label>
838
+ <frontend_type>select</frontend_type>
839
+ <source_model>adminhtml/system_config_source_yesno</source_model>
840
+ <sort_order>33</sort_order>
841
+ <show_in_default>1</show_in_default>
842
+ <show_in_website>1</show_in_website>
843
+ <depends><payments_active>true</payments_active></depends>
844
+ </ps_33>
845
+ <ps_34>
846
+ <label>PS_34</label>
847
+ <frontend_type>select</frontend_type>
848
+ <source_model>adminhtml/system_config_source_yesno</source_model>
849
+ <sort_order>34</sort_order>
850
+ <show_in_default>1</show_in_default>
851
+ <show_in_website>1</show_in_website>
852
+ <depends><payments_active>true</payments_active></depends>
853
+ </ps_34>
854
+ <ps_35>
855
+ <label>PS_35</label>
856
+ <frontend_type>select</frontend_type>
857
+ <source_model>adminhtml/system_config_source_yesno</source_model>
858
+ <sort_order>35</sort_order>
859
+ <show_in_default>1</show_in_default>
860
+ <show_in_website>1</show_in_website>
861
+ <depends><payments_active>true</payments_active></depends>
862
+ </ps_35>
863
+ <ps_36>
864
+ <label>PS_36</label>
865
+ <frontend_type>select</frontend_type>
866
+ <source_model>adminhtml/system_config_source_yesno</source_model>
867
+ <sort_order>36</sort_order>
868
+ <show_in_default>1</show_in_default>
869
+ <show_in_website>1</show_in_website>
870
+ <depends><payments_active>true</payments_active></depends>
871
+ </ps_36>
872
+ <ps_37>
873
+ <label>PS_37</label>
874
+ <frontend_type>select</frontend_type>
875
+ <source_model>adminhtml/system_config_source_yesno</source_model>
876
+ <sort_order>37</sort_order>
877
+ <show_in_default>1</show_in_default>
878
+ <show_in_website>1</show_in_website>
879
+ <depends><payments_active>true</payments_active></depends>
880
+ </ps_37>
881
+ <ps_38>
882
+ <label>PS_38</label>
883
+ <frontend_type>select</frontend_type>
884
+ <source_model>adminhtml/system_config_source_yesno</source_model>
885
+ <sort_order>38</sort_order>
886
+ <show_in_default>1</show_in_default>
887
+ <show_in_website>1</show_in_website>
888
+ <depends><payments_active>true</payments_active></depends>
889
+ </ps_38>
890
+ <ps_39>
891
+ <label>PS_39</label>
892
+ <frontend_type>select</frontend_type>
893
+ <source_model>adminhtml/system_config_source_yesno</source_model>
894
+ <sort_order>39</sort_order>
895
+ <show_in_default>1</show_in_default>
896
+ <show_in_website>1</show_in_website>
897
+ <depends><payments_active>true</payments_active></depends>
898
+ </ps_39>
899
+ <ps_40>
900
+ <label>PS_40</label>
901
+ <frontend_type>select</frontend_type>
902
+ <source_model>adminhtml/system_config_source_yesno</source_model>
903
+ <sort_order>40</sort_order>
904
+ <show_in_default>1</show_in_default>
905
+ <show_in_website>1</show_in_website>
906
+ <depends><payments_active>true</payments_active></depends>
907
+ </ps_40>
908
+ <ps_41>
909
+ <label>PS_41</label>
910
+ <frontend_type>select</frontend_type>
911
+ <source_model>adminhtml/system_config_source_yesno</source_model>
912
+ <sort_order>41</sort_order>
913
+ <show_in_default>1</show_in_default>
914
+ <show_in_website>1</show_in_website>
915
+ <depends><payments_active>true</payments_active></depends>
916
+ </ps_41>
917
+ <ps_42>
918
+ <label>PS_42</label>
919
+ <frontend_type>select</frontend_type>
920
+ <source_model>adminhtml/system_config_source_yesno</source_model>
921
+ <sort_order>42</sort_order>
922
+ <show_in_default>1</show_in_default>
923
+ <show_in_website>1</show_in_website>
924
+ <depends><payments_active>true</payments_active></depends>
925
+ </ps_42>
926
+ <ps_43>
927
+ <label>PS_43</label>
928
+ <frontend_type>select</frontend_type>
929
+ <source_model>adminhtml/system_config_source_yesno</source_model>
930
+ <sort_order>43</sort_order>
931
+ <show_in_default>1</show_in_default>
932
+ <show_in_website>1</show_in_website>
933
+ <depends><payments_active>true</payments_active></depends>
934
+ </ps_43>
935
+ <ps_44>
936
+ <label>PS_44</label>
937
+ <frontend_type>select</frontend_type>
938
+ <source_model>adminhtml/system_config_source_yesno</source_model>
939
+ <sort_order>44</sort_order>
940
+ <show_in_default>1</show_in_default>
941
+ <show_in_website>1</show_in_website>
942
+ <depends><payments_active>true</payments_active></depends>
943
+ </ps_44>
944
+ <ps_45>
945
+ <label>PS_45</label>
946
+ <frontend_type>select</frontend_type>
947
+ <source_model>adminhtml/system_config_source_yesno</source_model>
948
+ <sort_order>45</sort_order>
949
+ <show_in_default>1</show_in_default>
950
+ <show_in_website>1</show_in_website>
951
+ <depends><payments_active>true</payments_active></depends>
952
+ </ps_45>
953
+ <ps_46>
954
+ <label>PS_46</label>
955
+ <frontend_type>select</frontend_type>
956
+ <source_model>adminhtml/system_config_source_yesno</source_model>
957
+ <sort_order>46</sort_order>
958
+ <show_in_default>1</show_in_default>
959
+ <show_in_website>1</show_in_website>
960
+ <depends><payments_active>true</payments_active></depends>
961
+ </ps_46>
962
+ <ps_47>
963
+ <label>PS_47</label>
964
+ <frontend_type>select</frontend_type>
965
+ <source_model>adminhtml/system_config_source_yesno</source_model>
966
+ <sort_order>47</sort_order>
967
+ <show_in_default>1</show_in_default>
968
+ <show_in_website>1</show_in_website>
969
+ <depends><payments_active>true</payments_active></depends>
970
+ </ps_47>
971
+ <ps_48>
972
+ <label>PS_48</label>
973
+ <frontend_type>select</frontend_type>
974
+ <source_model>adminhtml/system_config_source_yesno</source_model>
975
+ <sort_order>48</sort_order>
976
+ <show_in_default>1</show_in_default>
977
+ <show_in_website>1</show_in_website>
978
+ <depends><payments_active>true</payments_active></depends>
979
+ </ps_48>
980
+ <ps_49>
981
+ <label>PS_49</label>
982
+ <frontend_type>select</frontend_type>
983
+ <source_model>adminhtml/system_config_source_yesno</source_model>
984
+ <sort_order>49</sort_order>
985
+ <show_in_default>1</show_in_default>
986
+ <show_in_website>1</show_in_website>
987
+ <depends><payments_active>true</payments_active></depends>
988
+ </ps_49>
989
+ <ps_50>
990
+ <label>PS_50</label>
991
+ <frontend_type>select</frontend_type>
992
+ <source_model>adminhtml/system_config_source_yesno</source_model>
993
+ <sort_order>50</sort_order>
994
+ <show_in_default>1</show_in_default>
995
+ <show_in_website>1</show_in_website>
996
+ <depends><payments_active>true</payments_active></depends>
997
+ </ps_50>
998
  <payment_action translate="label">
999
+ <label>Automatic clearing for credit card payments</label>
 
 
 
 
 
 
 
1000
  <frontend_type>select</frontend_type>
1001
+ <source_model>mpay24/source_clearingAction</source_model>
1002
+ <config_path>payment/mpay24/paid_payment_action</config_path>
1003
+ <sort_order>106</sort_order>
1004
  <show_in_default>1</show_in_default>
1005
  <show_in_website>1</show_in_website>
1006
+ </payment_action>
1007
+ <paid_order_status translate="label">
1008
+ <label>Status of paid orders</label>
1009
+ <frontend_type>select</frontend_type>
1010
+ <source_model>mpay24/source_paidOrder</source_model>
1011
+ <config_path>payment/mpay24/paid_order_status</config_path>
1012
+ <sort_order>107</sort_order>
1013
+ <show_in_default>1</show_in_default>
1014
+ <show_in_website>1</show_in_website>
1015
+ </paid_order_status>
1016
+ <billingAddressMode translate="label comment">
1017
+ <label>Billing address mode</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1018
  <frontend_type>select</frontend_type>
1019
+ <source_model>mpay24/source_billAddr</source_model>
1020
+ <sort_order>108</sort_order>
 
1021
  <show_in_default>1</show_in_default>
1022
  <show_in_website>1</show_in_website>
1023
+ <comment>The mode 'ReadWrite' will only work if the parameter 'BILLING_ADDR' was set by mPAY24. Please contact the mPAY24 Support: support@mpay24.com!</comment>
1024
+ </billingAddressMode>
1025
+ <show_free_products translate="label comment">
1026
+ <label>Show free products</label>
1027
+ <frontend_type>select</frontend_type>
1028
+ <source_model>adminhtml/system_config_source_yesno</source_model>
1029
+ <sort_order>109</sort_order>
1030
+ <show_in_default>1</show_in_default>
1031
+ <show_in_website>1</show_in_website>
1032
+ <comment>Show the free 'children' products of configurable products in the mPAY24 shopping cart</comment>
1033
+ </show_free_products>
1034
+ </fields>
1035
+ </mpay24>
1036
+ </groups>
1037
+ </mpay24>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1038
  </sections>
1039
  </config>
app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-install-1.2.2.php → mysql4-install-1.3.0.php} RENAMED
@@ -12,14 +12,16 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $this->startSetup();
22
 
 
 
23
  $this->run("
24
 
25
  -- DROP TABLE if exists {$this->getTable('mpay24_debug')};
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $this->startSetup();
22
 
23
+ $this->run("DELETE FROM {$this->getTable('core_config_data')} WHERE `path` LIKE '%mpay%'");
24
+
25
  $this->run("
26
 
27
  -- DROP TABLE if exists {$this->getTable('mpay24_debug')};
app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-upgrade-0.6.3-1.2.2.php → mysql4-upgrade-0.6.2-1.3.0.php} RENAMED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $code = 'mpay24';
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $code = 'mpay24';
app/code/community/Mpay24/Mpay24/sql/mpay24_setup/{mysql4-upgrade-0.6.2-1.2.2.php → mysql4-upgrade-0.6.3-1.3.0.php} RENAMED
@@ -12,10 +12,10 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $code = 'mpay24';
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
 
21
  $code = 'mpay24';
app/design/adminhtml/default/default/template/mpay24/info/ajaxRequest.txt DELETED
@@ -1 +0,0 @@
1
- tid = 100000037
 
app/design/adminhtml/default/default/template/mpay24/info/cc.phtml DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <!--<p><b><?php echo $this->getMethod()->getTitle() ?></b><br/> -->
22
- <!--<?php echo Mage::helper('mpay24')->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?><br/>-->
23
- <?php echo Mage::helper('mpay24')->__('Credit Card Type: %s', $this->htmlEscape($this->getCcTypeName())) ?><br/>
24
- <?php echo Mage::helper('mpay24')->__('Credit Card Number: xxxx-%s', $this->htmlEscape($this->getInfo()->getCcLast4())) ?><br/>
25
- <?php echo Mage::helper('mpay24')->__('Expiration Date: %s/%s', $this->htmlEscape($this->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?><br/>
26
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/elv.phtml DELETED
@@ -1,25 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <p><b><?php echo $this->getMethod()->getTitle() ?></b><br/>
22
- <?php echo $this->__('Account holder: %s', $this->getInfo()->getMpayHolder())?><br/>
23
- <?php echo $this->__('Account number: %s', 'xxxx'.substr($this->getInfo()->getMpayAccountNumber(),4,strlen($this->getInfo()->getMpayAccountNumber())))?><br/>
24
- <?php echo $this->__('Bank code: %s', $this->getInfo()->getMpayBankCode())?><br/>
25
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/giropay.phtml DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <p><b><?php echo $this->getMethod()->getTitle() ?></b><br/>
23
- <?php echo $this->__('Account holder: %s', $this->getInfo()->getMpayHolder())?><br/>
24
- <?php echo $this->__('Account number: %s', 'xxxx'.substr($this->getInfo()->getMpayAccountNumber(),4,strlen($this->getInfo()->getMpayAccountNumber())))?><br/>
25
- <?php echo $this->__('Bank code: %s', $this->getInfo()->getMpayBankCode())?><br/>
26
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/mia.phtml DELETED
@@ -1,24 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <p><b><?php echo $this->getMethod()->getTitle() ?></b><br/>
23
- <?php echo $this->__('MIA Nr: %s', substr($this->getMiaNr(),0,strlen($this->getMiaNr())-3).'xxx')?><br/>
24
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/paybox.phtml DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <p><b><?php echo $this->getMethod()->getTitle() ?></b><br/>
22
- <?php echo $this->__('Paybox Nr: %s', substr($this->getPayboxNr(),0,strlen($this->getPayboxNr())-3).'xxx')?><br/>
23
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/paysafecard.phtml DELETED
@@ -1,23 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <p><b><?php echo $this->getMethod()->getTitle() ?></b><br/>
23
- <?php echo Mage::helper('mpay24')->__('mPAY24 TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getMpayTid())) ?><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/cc.phtml DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <?php echo Mage::helper('payment')->__('Name on the Card: %s', $this->htmlEscape($this->getInfo()->getCcOwner())) ?>
22
- {{pdf_row_separator}}
23
- <?php echo Mage::helper('payment')->__('Credit Card Type: %s', $this->htmlEscape($this->getCcTypeName())) ?>
24
- {{pdf_row_separator}}
25
- <?php echo Mage::helper('payment')->__('Credit Card Number: xxxx-%s', $this->htmlEscape($this->getInfo()->getCcLast4())) ?>
26
- {{pdf_row_separator}}
27
- <?php echo Mage::helper('payment')->__('Expiration Date: %s/%s', $this->htmlEscape($this->getCcExpMonth()), $this->htmlEscape($this->getInfo()->getCcExpYear())) ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/elv.phtml DELETED
@@ -1,26 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <?php echo $this->__('Account holder: %s', $this->getInfo()->getMpayHolder())?>
22
- {{pdf_row_separator}}
23
- <?php echo $this->__('Account number: %s', 'xxxx'.substr($this->getInfo()->getMpayAccountNumber(),4,strlen($this->getInfo()->getMpayAccountNumber())))?>
24
- {{pdf_row_separator}}
25
- <?php echo $this->__('Bank code: %s', $this->getInfo()->getMpayBankCode())?>
26
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/giropay.phtml DELETED
@@ -1,27 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <?php echo $this->__('Account holder: %s', $this->getInfo()->getMpayHolder())?>
23
- {{pdf_row_separator}}
24
- <?php echo $this->__('Account number: %s', 'xxxx'.substr($this->getInfo()->getMpayAccountNumber(),4,strlen($this->getInfo()->getMpayAccountNumber())))?>
25
- {{pdf_row_separator}}
26
- <?php echo $this->__('Bank code: %s', $this->getInfo()->getMpayBankCode())?>
27
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/mia.phtml DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <?php echo $this->__('MIA Nr: %s', substr($this->getMiaNr(),0,strlen($this->getMiaNr())-3).'xxx')?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/paybox.phtml DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <?php echo $this->__('Paybox Nr: %s', substr($this->getPayboxNr(),0,strlen($this->getPayboxNr())-3).'xxx')?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/paysafecard.phtml DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @copyright Copyright (c) 2009 mPAY24 (http://www.mpay24.com)
18
- * @author Filipp Akinfiev
19
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
- */
21
- ?>
22
- <?php echo $this->__('Paysafecard')?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/pdf/selectpayment.phtml DELETED
@@ -1,22 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <?php echo $this->htmlEscape($this->getMethod()->getTitle()) ?>
22
- {{pdf_row_separator}}
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/info/selectpayment.phtml CHANGED
@@ -12,78 +12,17 @@
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
  ?>
21
- <?php
22
- $add_info = $this->getInfo()->getData('additional_information');
23
- if(!empty($add_info)):
24
- if(!array_key_exists('status', $add_info) || $add_info['status'] == false):
25
- $this->redirectToCalled('backend', $this->getInfo()->getData('last_trans_id'));
26
- endif;
27
- endif;
28
- ?>
29
- <p><b><?php if(strtoupper($this->getMethod()->getTitle()) !== $this->getBrand().' ('.Mage::getStoreConfig('payment/mpay24_sp_cc/title').')' && $this->getMethod()->getTitle() !== Mage::getStoreConfig('payment/mpay24_sp_cc/title')): ?>
30
- <?php echo substr($this->getMethod()->getTitle(), 0, strlen($this->getMethod()->getTitle())-9) ?>
31
- <?php elseif($this->getMethod()->getTitle() === Mage::getStoreConfig('payment/mpay24_sp_cc/title') && $this->getBrand() !== ''): ?>
32
- <?php echo 'Credit Card ' ?>
33
- <?php elseif($this->getMethod()->getTitle() === Mage::getStoreConfig('payment/mpay24_sp_cc/title') && $this->getBrand() === ''): ?>
34
- <?php echo Mage::getStoreConfig('payment/mpay24_sp_cc/title')?>
35
- <?php endif; ?>
36
- <?php echo $this->getBrand().' ('.Mage::getStoreConfig('payment/mpay24_sp_cc/title').')' ?></b><br/>
37
- <?php echo Mage::helper('mpay24')->__(Mage::getStoreConfig('payment/mpay24_sp_cc/title').' TID: %s', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getAdditionalInformation('mpay_tid'))) ?><br/>
38
-
39
  <?php if($this->getMethod()->getData('info_instance')->getOrder() !== null): ?>
40
- <?php echo 'Approval Code: ', $this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getAdditionalInformation('appr_code')) ?><br/>
 
41
  <?php endif; ?>
42
-
43
- <script type="text/javascript" src="../prototype.js"></script>
44
- <script type="text/javascript">
45
- function ajaxRequest(){
46
- var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //activeX versions to check for in IE
47
- if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
48
- for (var i=0; i<activexmodes.length; i++){
49
- try{
50
- return new ActiveXObject(activexmodes[i]);
51
- }
52
- catch(e){
53
- alert("error: " + e);
54
- }
55
- }
56
- }
57
- else if (window.XMLHttpRequest) // if Mozilla, Safari etc
58
- return new XMLHttpRequest();
59
- else
60
- return false;
61
- }
62
-
63
- function sendRequest(tid, url, buttonId) {
64
- var button = document.getElementById(buttonId);
65
- button.disabled = true;
66
-
67
- var mypostrequest=new ajaxRequest();
68
- mypostrequest.onreadystatechange=function(){
69
- if (mypostrequest.readyState==4){
70
- if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
71
- alert(mypostrequest.responseText);
72
- window.location.reload();
73
- }
74
- else{
75
- alert("An error has occured making the request: " + mypostrequest.responseText);
76
- }
77
- button.disabled = false;
78
- }
79
- }
80
- var parameters="TID="+tid
81
- mypostrequest.open("POST", url, true);
82
- mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
83
- mypostrequest.send(parameters);
84
- }
85
- </script>
86
-
87
- <p>
88
- <input id="mpay24_updateStatus" class="scalable scalable" onClick="sendRequest('<?php echo $this->getInfo()->getData('last_trans_id');?>', '<?php echo Mage::getUrl(Mpay24_Mpay24_Model_Api_Mpay24::UPDATE_URL,array('_secure' => true));?>', 'mpay24_updateStatus');" type="submit" value="Update transaction status" />
89
- </p>
12
  * obtain it through the world-wide-web, please send an email
13
  * to license@magentocommerce.com so we can send you a copy immediately.
14
  *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
  * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
  */
20
  ?>
21
+ <p><b>
22
+ <?php echo "<label for='brand'>".Mage::helper('mpay24')->__("Payment method")."</label><span name='brand' style='float: right; margin-right: 400px;'><img src='https://www.mpay24.com/web/img/logos/brands/small/".$this->getBrand().".png' alt='".$this->getBrand()."' title='".$this->getBrand()."'>".' ('.Mage::getStoreConfig('payment/mpay24/title').')'."</span>"; ?></b><br/>
23
+ <br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  <?php if($this->getMethod()->getData('info_instance')->getOrder() !== null): ?>
25
+ <b><?php echo "<label for='mpaytid'>MPAYTID</label><span name='mpaytid' style='float: right; margin-right: 400px;'>".$this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getAdditionalInformation('mpay_tid'))."</span>"; ?></b>
26
+ <br/><b><?php echo "<label for='appr_code'>".Mage::helper('mpay24')->__("Approval code")."</label><span name='appr_code' style='float: right; margin-right: 400px;'>".$this->htmlEscape($this->getInfo()->getOrder()->getPayment()->getAdditionalInformation('appr_code'))."</span>"; ?></b>
27
  <?php endif; ?>
28
+ </p><br/>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/prototype.js DELETED
@@ -1,3277 +0,0 @@
1
- /* Prototype JavaScript framework, version 1.5.1.1
2
- * (c) 2005-2007 Sam Stephenson
3
- *
4
- * Prototype is freely distributable under the terms of an MIT-style license.
5
- * For details, see the Prototype web site: http://www.prototypejs.org/
6
- *
7
- /*--------------------------------------------------------------------------*/
8
-
9
- var Prototype = {
10
- Version: '1.5.1.1',
11
-
12
- Browser: {
13
- IE: !!(window.attachEvent && !window.opera),
14
- Opera: !!window.opera,
15
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
16
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1
17
- },
18
-
19
- BrowserFeatures: {
20
- XPath: !!document.evaluate,
21
- ElementExtensions: !!window.HTMLElement,
22
- SpecificElementExtensions:
23
- (document.createElement('div').__proto__ !==
24
- document.createElement('form').__proto__)
25
- },
26
-
27
- ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
28
- JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
29
-
30
- emptyFunction: function() { },
31
- K: function(x) { return x }
32
- }
33
-
34
- var Class = {
35
- create: function() {
36
- return function() {
37
- this.initialize.apply(this, arguments);
38
- }
39
- }
40
- }
41
-
42
- var Abstract = new Object();
43
-
44
- Object.extend = function(destination, source) {
45
- for (var property in source) {
46
- destination[property] = source[property];
47
- }
48
- return destination;
49
- }
50
-
51
- Object.extend(Object, {
52
- inspect: function(object) {
53
- try {
54
- if (object === undefined) return 'undefined';
55
- if (object === null) return 'null';
56
- return object.inspect ? object.inspect() : object.toString();
57
- } catch (e) {
58
- if (e instanceof RangeError) return '...';
59
- throw e;
60
- }
61
- },
62
-
63
- toJSON: function(object) {
64
- var type = typeof object;
65
- switch(type) {
66
- case 'undefined':
67
- case 'function':
68
- case 'unknown': return;
69
- case 'boolean': return object.toString();
70
- }
71
- if (object === null) return 'null';
72
- if (object.toJSON) return object.toJSON();
73
- if (object.ownerDocument === document) return;
74
- var results = [];
75
- for (var property in object) {
76
- var value = Object.toJSON(object[property]);
77
- if (value !== undefined)
78
- results.push(property.toJSON() + ': ' + value);
79
- }
80
- return '{' + results.join(', ') + '}';
81
- },
82
-
83
- keys: function(object) {
84
- var keys = [];
85
- for (var property in object)
86
- keys.push(property);
87
- return keys;
88
- },
89
-
90
- values: function(object) {
91
- var values = [];
92
- for (var property in object)
93
- values.push(object[property]);
94
- return values;
95
- },
96
-
97
- clone: function(object) {
98
- return Object.extend({}, object);
99
- }
100
- });
101
-
102
- Function.prototype.bind = function() {
103
- var __method = this, args = $A(arguments), object = args.shift();
104
- return function() {
105
- return __method.apply(object, args.concat($A(arguments)));
106
- }
107
- }
108
-
109
- Function.prototype.bindAsEventListener = function(object) {
110
- var __method = this, args = $A(arguments), object = args.shift();
111
- return function(event) {
112
- return __method.apply(object, [event || window.event].concat(args));
113
- }
114
- }
115
-
116
- Object.extend(Number.prototype, {
117
- toColorPart: function() {
118
- return this.toPaddedString(2, 16);
119
- },
120
-
121
- succ: function() {
122
- return this + 1;
123
- },
124
-
125
- times: function(iterator) {
126
- $R(0, this, true).each(iterator);
127
- return this;
128
- },
129
-
130
- toPaddedString: function(length, radix) {
131
- var string = this.toString(radix || 10);
132
- return '0'.times(length - string.length) + string;
133
- },
134
-
135
- toJSON: function() {
136
- return isFinite(this) ? this.toString() : 'null';
137
- }
138
- });
139
-
140
- Date.prototype.toJSON = function() {
141
- return '"' + this.getFullYear() + '-' +
142
- (this.getMonth() + 1).toPaddedString(2) + '-' +
143
- this.getDate().toPaddedString(2) + 'T' +
144
- this.getHours().toPaddedString(2) + ':' +
145
- this.getMinutes().toPaddedString(2) + ':' +
146
- this.getSeconds().toPaddedString(2) + '"';
147
- };
148
-
149
- var Try = {
150
- these: function() {
151
- var returnValue;
152
-
153
- for (var i = 0, length = arguments.length; i < length; i++) {
154
- var lambda = arguments[i];
155
- try {
156
- returnValue = lambda();
157
- break;
158
- } catch (e) {}
159
- }
160
-
161
- return returnValue;
162
- }
163
- }
164
-
165
- /*--------------------------------------------------------------------------*/
166
-
167
- var PeriodicalExecuter = Class.create();
168
- PeriodicalExecuter.prototype = {
169
- initialize: function(callback, frequency) {
170
- this.callback = callback;
171
- this.frequency = frequency;
172
- this.currentlyExecuting = false;
173
-
174
- this.registerCallback();
175
- },
176
-
177
- registerCallback: function() {
178
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
179
- },
180
-
181
- stop: function() {
182
- if (!this.timer) return;
183
- clearInterval(this.timer);
184
- this.timer = null;
185
- },
186
-
187
- onTimerEvent: function() {
188
- if (!this.currentlyExecuting) {
189
- try {
190
- this.currentlyExecuting = true;
191
- this.callback(this);
192
- } finally {
193
- this.currentlyExecuting = false;
194
- }
195
- }
196
- }
197
- }
198
- Object.extend(String, {
199
- interpret: function(value) {
200
- return value == null ? '' : String(value);
201
- },
202
- specialChar: {
203
- '\b': '\\b',
204
- '\t': '\\t',
205
- '\n': '\\n',
206
- '\f': '\\f',
207
- '\r': '\\r',
208
- '\\': '\\\\'
209
- }
210
- });
211
-
212
- Object.extend(String.prototype, {
213
- gsub: function(pattern, replacement) {
214
- var result = '', source = this, match;
215
- replacement = arguments.callee.prepareReplacement(replacement);
216
-
217
- while (source.length > 0) {
218
- if (match = source.match(pattern)) {
219
- result += source.slice(0, match.index);
220
- result += String.interpret(replacement(match));
221
- source = source.slice(match.index + match[0].length);
222
- } else {
223
- result += source, source = '';
224
- }
225
- }
226
- return result;
227
- },
228
-
229
- sub: function(pattern, replacement, count) {
230
- replacement = this.gsub.prepareReplacement(replacement);
231
- count = count === undefined ? 1 : count;
232
-
233
- return this.gsub(pattern, function(match) {
234
- if (--count < 0) return match[0];
235
- return replacement(match);
236
- });
237
- },
238
-
239
- scan: function(pattern, iterator) {
240
- this.gsub(pattern, iterator);
241
- return this;
242
- },
243
-
244
- truncate: function(length, truncation) {
245
- length = length || 30;
246
- truncation = truncation === undefined ? '...' : truncation;
247
- return this.length > length ?
248
- this.slice(0, length - truncation.length) + truncation : this;
249
- },
250
-
251
- strip: function() {
252
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
253
- },
254
-
255
- stripTags: function() {
256
- return this.replace(/<\/?[^>]+>/gi, '');
257
- },
258
-
259
- stripScripts: function() {
260
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
261
- },
262
-
263
- extractScripts: function() {
264
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
265
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
266
- return (this.match(matchAll) || []).map(function(scriptTag) {
267
- return (scriptTag.match(matchOne) || ['', ''])[1];
268
- });
269
- },
270
-
271
- evalScripts: function() {
272
- return this.extractScripts().map(function(script) { return eval(script) });
273
- },
274
-
275
- escapeHTML: function() {
276
- var self = arguments.callee;
277
- self.text.data = this;
278
- return self.div.innerHTML;
279
- },
280
-
281
- unescapeHTML: function() {
282
- var div = document.createElement('div');
283
- div.innerHTML = this.stripTags();
284
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
285
- $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
286
- div.childNodes[0].nodeValue) : '';
287
- },
288
-
289
- toQueryParams: function(separator) {
290
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
291
- if (!match) return {};
292
-
293
- return match[1].split(separator || '&').inject({}, function(hash, pair) {
294
- if ((pair = pair.split('='))[0]) {
295
- var key = decodeURIComponent(pair.shift());
296
- var value = pair.length > 1 ? pair.join('=') : pair[0];
297
- if (value != undefined) value = decodeURIComponent(value);
298
-
299
- if (key in hash) {
300
- if (hash[key].constructor != Array) hash[key] = [hash[key]];
301
- hash[key].push(value);
302
- }
303
- else hash[key] = value;
304
- }
305
- return hash;
306
- });
307
- },
308
-
309
- toArray: function() {
310
- return this.split('');
311
- },
312
-
313
- succ: function() {
314
- return this.slice(0, this.length - 1) +
315
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
316
- },
317
-
318
- times: function(count) {
319
- var result = '';
320
- for (var i = 0; i < count; i++) result += this;
321
- return result;
322
- },
323
-
324
- camelize: function() {
325
- var parts = this.split('-'), len = parts.length;
326
- if (len == 1) return parts[0];
327
-
328
- var camelized = this.charAt(0) == '-'
329
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
330
- : parts[0];
331
-
332
- for (var i = 1; i < len; i++)
333
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
334
-
335
- return camelized;
336
- },
337
-
338
- capitalize: function() {
339
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
340
- },
341
-
342
- underscore: function() {
343
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
344
- },
345
-
346
- dasherize: function() {
347
- return this.gsub(/_/,'-');
348
- },
349
-
350
- inspect: function(useDoubleQuotes) {
351
- var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
352
- var character = String.specialChar[match[0]];
353
- return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
354
- });
355
- if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
356
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
357
- },
358
-
359
- toJSON: function() {
360
- return this.inspect(true);
361
- },
362
-
363
- unfilterJSON: function(filter) {
364
- return this.sub(filter || Prototype.JSONFilter, '#{1}');
365
- },
366
-
367
- isJSON: function() {
368
- var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
369
- return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
370
- },
371
-
372
- evalJSON: function(sanitize) {
373
- var json = this.unfilterJSON();
374
- try {
375
- if (!sanitize || json.isJSON()) return eval('(' + json + ')');
376
- } catch (e) { }
377
- throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
378
- },
379
-
380
- include: function(pattern) {
381
- return this.indexOf(pattern) > -1;
382
- },
383
-
384
- startsWith: function(pattern) {
385
- return this.indexOf(pattern) === 0;
386
- },
387
-
388
- endsWith: function(pattern) {
389
- var d = this.length - pattern.length;
390
- return d >= 0 && this.lastIndexOf(pattern) === d;
391
- },
392
-
393
- empty: function() {
394
- return this == '';
395
- },
396
-
397
- blank: function() {
398
- return /^\s*$/.test(this);
399
- }
400
- });
401
-
402
- if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
403
- escapeHTML: function() {
404
- return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
405
- },
406
- unescapeHTML: function() {
407
- return this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
408
- }
409
- });
410
-
411
- String.prototype.gsub.prepareReplacement = function(replacement) {
412
- if (typeof replacement == 'function') return replacement;
413
- var template = new Template(replacement);
414
- return function(match) { return template.evaluate(match) };
415
- }
416
-
417
- String.prototype.parseQuery = String.prototype.toQueryParams;
418
-
419
- Object.extend(String.prototype.escapeHTML, {
420
- div: document.createElement('div'),
421
- text: document.createTextNode('')
422
- });
423
-
424
- with (String.prototype.escapeHTML) div.appendChild(text);
425
-
426
- var Template = Class.create();
427
- Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
428
- Template.prototype = {
429
- initialize: function(template, pattern) {
430
- this.template = template.toString();
431
- this.pattern = pattern || Template.Pattern;
432
- },
433
-
434
- evaluate: function(object) {
435
- return this.template.gsub(this.pattern, function(match) {
436
- var before = match[1];
437
- if (before == '\\') return match[2];
438
- return before + String.interpret(object[match[3]]);
439
- });
440
- }
441
- }
442
-
443
- var $break = {}, $continue = new Error('"throw $continue" is deprecated, use "return" instead');
444
-
445
- var Enumerable = {
446
- each: function(iterator) {
447
- var index = 0;
448
- try {
449
- this._each(function(value) {
450
- iterator(value, index++);
451
- });
452
- } catch (e) {
453
- if (e != $break) throw e;
454
- }
455
- return this;
456
- },
457
-
458
- eachSlice: function(number, iterator) {
459
- var index = -number, slices = [], array = this.toArray();
460
- while ((index += number) < array.length)
461
- slices.push(array.slice(index, index+number));
462
- return slices.map(iterator);
463
- },
464
-
465
- all: function(iterator) {
466
- var result = true;
467
- this.each(function(value, index) {
468
- result = result && !!(iterator || Prototype.K)(value, index);
469
- if (!result) throw $break;
470
- });
471
- return result;
472
- },
473
-
474
- any: function(iterator) {
475
- var result = false;
476
- this.each(function(value, index) {
477
- if (result = !!(iterator || Prototype.K)(value, index))
478
- throw $break;
479
- });
480
- return result;
481
- },
482
-
483
- collect: function(iterator) {
484
- var results = [];
485
- this.each(function(value, index) {
486
- results.push((iterator || Prototype.K)(value, index));
487
- });
488
- return results;
489
- },
490
-
491
- detect: function(iterator) {
492
- var result;
493
- this.each(function(value, index) {
494
- if (iterator(value, index)) {
495
- result = value;
496
- throw $break;
497
- }
498
- });
499
- return result;
500
- },
501
-
502
- findAll: function(iterator) {
503
- var results = [];
504
- this.each(function(value, index) {
505
- if (iterator(value, index))
506
- results.push(value);
507
- });
508
- return results;
509
- },
510
-
511
- grep: function(pattern, iterator) {
512
- var results = [];
513
- this.each(function(value, index) {
514
- var stringValue = value.toString();
515
- if (stringValue.match(pattern))
516
- results.push((iterator || Prototype.K)(value, index));
517
- })
518
- return results;
519
- },
520
-
521
- include: function(object) {
522
- var found = false;
523
- this.each(function(value) {
524
- if (value == object) {
525
- found = true;
526
- throw $break;
527
- }
528
- });
529
- return found;
530
- },
531
-
532
- inGroupsOf: function(number, fillWith) {
533
- fillWith = fillWith === undefined ? null : fillWith;
534
- return this.eachSlice(number, function(slice) {
535
- while(slice.length < number) slice.push(fillWith);
536
- return slice;
537
- });
538
- },
539
-
540
- inject: function(memo, iterator) {
541
- this.each(function(value, index) {
542
- memo = iterator(memo, value, index);
543
- });
544
- return memo;
545
- },
546
-
547
- invoke: function(method) {
548
- var args = $A(arguments).slice(1);
549
- return this.map(function(value) {
550
- return value[method].apply(value, args);
551
- });
552
- },
553
-
554
- max: function(iterator) {
555
- var result;
556
- this.each(function(value, index) {
557
- value = (iterator || Prototype.K)(value, index);
558
- if (result == undefined || value >= result)
559
- result = value;
560
- });
561
- return result;
562
- },
563
-
564
- min: function(iterator) {
565
- var result;
566
- this.each(function(value, index) {
567
- value = (iterator || Prototype.K)(value, index);
568
- if (result == undefined || value < result)
569
- result = value;
570
- });
571
- return result;
572
- },
573
-
574
- partition: function(iterator) {
575
- var trues = [], falses = [];
576
- this.each(function(value, index) {
577
- ((iterator || Prototype.K)(value, index) ?
578
- trues : falses).push(value);
579
- });
580
- return [trues, falses];
581
- },
582
-
583
- pluck: function(property) {
584
- var results = [];
585
- this.each(function(value, index) {
586
- results.push(value[property]);
587
- });
588
- return results;
589
- },
590
-
591
- reject: function(iterator) {
592
- var results = [];
593
- this.each(function(value, index) {
594
- if (!iterator(value, index))
595
- results.push(value);
596
- });
597
- return results;
598
- },
599
-
600
- sortBy: function(iterator) {
601
- return this.map(function(value, index) {
602
- return {value: value, criteria: iterator(value, index)};
603
- }).sort(function(left, right) {
604
- var a = left.criteria, b = right.criteria;
605
- return a < b ? -1 : a > b ? 1 : 0;
606
- }).pluck('value');
607
- },
608
-
609
- toArray: function() {
610
- return this.map();
611
- },
612
-
613
- zip: function() {
614
- var iterator = Prototype.K, args = $A(arguments);
615
- if (typeof args.last() == 'function')
616
- iterator = args.pop();
617
-
618
- var collections = [this].concat(args).map($A);
619
- return this.map(function(value, index) {
620
- return iterator(collections.pluck(index));
621
- });
622
- },
623
-
624
- size: function() {
625
- return this.toArray().length;
626
- },
627
-
628
- inspect: function() {
629
- return '#<Enumerable:' + this.toArray().inspect() + '>';
630
- }
631
- }
632
-
633
- Object.extend(Enumerable, {
634
- map: Enumerable.collect,
635
- find: Enumerable.detect,
636
- select: Enumerable.findAll,
637
- member: Enumerable.include,
638
- entries: Enumerable.toArray
639
- });
640
- var $A = Array.from = function(iterable) {
641
- if (!iterable) return [];
642
- if (iterable.toArray) {
643
- return iterable.toArray();
644
- } else {
645
- var results = [];
646
- for (var i = 0, length = iterable.length; i < length; i++)
647
- results.push(iterable[i]);
648
- return results;
649
- }
650
- }
651
-
652
- if (Prototype.Browser.WebKit) {
653
- $A = Array.from = function(iterable) {
654
- if (!iterable) return [];
655
- if (!(typeof iterable == 'function' && iterable == '[object NodeList]') &&
656
- iterable.toArray) {
657
- return iterable.toArray();
658
- } else {
659
- var results = [];
660
- for (var i = 0, length = iterable.length; i < length; i++)
661
- results.push(iterable[i]);
662
- return results;
663
- }
664
- }
665
- }
666
-
667
- Object.extend(Array.prototype, Enumerable);
668
-
669
- if (!Array.prototype._reverse)
670
- Array.prototype._reverse = Array.prototype.reverse;
671
-
672
- Object.extend(Array.prototype, {
673
- _each: function(iterator) {
674
- for (var i = 0, length = this.length; i < length; i++)
675
- iterator(this[i]);
676
- },
677
-
678
- clear: function() {
679
- this.length = 0;
680
- return this;
681
- },
682
-
683
- first: function() {
684
- return this[0];
685
- },
686
-
687
- last: function() {
688
- return this[this.length - 1];
689
- },
690
-
691
- compact: function() {
692
- return this.select(function(value) {
693
- return value != null;
694
- });
695
- },
696
-
697
- flatten: function() {
698
- return this.inject([], function(array, value) {
699
- return array.concat(value && value.constructor == Array ?
700
- value.flatten() : [value]);
701
- });
702
- },
703
-
704
- without: function() {
705
- var values = $A(arguments);
706
- return this.select(function(value) {
707
- return !values.include(value);
708
- });
709
- },
710
-
711
- indexOf: function(object) {
712
- for (var i = 0, length = this.length; i < length; i++)
713
- if (this[i] == object) return i;
714
- return -1;
715
- },
716
-
717
- reverse: function(inline) {
718
- return (inline !== false ? this : this.toArray())._reverse();
719
- },
720
-
721
- reduce: function() {
722
- return this.length > 1 ? this : this[0];
723
- },
724
-
725
- uniq: function(sorted) {
726
- return this.inject([], function(array, value, index) {
727
- if (0 == index || (sorted ? array.last() != value : !array.include(value)))
728
- array.push(value);
729
- return array;
730
- });
731
- },
732
-
733
- clone: function() {
734
- return [].concat(this);
735
- },
736
-
737
- size: function() {
738
- return this.length;
739
- },
740
-
741
- inspect: function() {
742
- return '[' + this.map(Object.inspect).join(', ') + ']';
743
- },
744
-
745
- toJSON: function() {
746
- var results = [];
747
- this.each(function(object) {
748
- var value = Object.toJSON(object);
749
- if (value !== undefined) results.push(value);
750
- });
751
- return '[' + results.join(', ') + ']';
752
- }
753
- });
754
-
755
- Array.prototype.toArray = Array.prototype.clone;
756
-
757
- function $w(string) {
758
- string = string.strip();
759
- return string ? string.split(/\s+/) : [];
760
- }
761
-
762
- if (Prototype.Browser.Opera){
763
- Array.prototype.concat = function() {
764
- var array = [];
765
- for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
766
- for (var i = 0, length = arguments.length; i < length; i++) {
767
- if (arguments[i].constructor == Array) {
768
- for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
769
- array.push(arguments[i][j]);
770
- } else {
771
- array.push(arguments[i]);
772
- }
773
- }
774
- return array;
775
- }
776
- }
777
- var Hash = function(object) {
778
- if (object instanceof Hash) this.merge(object);
779
- else Object.extend(this, object || {});
780
- };
781
-
782
- Object.extend(Hash, {
783
- toQueryString: function(obj) {
784
- var parts = [];
785
- parts.add = arguments.callee.addPair;
786
-
787
- this.prototype._each.call(obj, function(pair) {
788
- if (!pair.key) return;
789
- var value = pair.value;
790
-
791
- if (value && typeof value == 'object') {
792
- if (value.constructor == Array) value.each(function(value) {
793
- parts.add(pair.key, value);
794
- });
795
- return;
796
- }
797
- parts.add(pair.key, value);
798
- });
799
-
800
- return parts.join('&');
801
- },
802
-
803
- toJSON: function(object) {
804
- var results = [];
805
- this.prototype._each.call(object, function(pair) {
806
- var value = Object.toJSON(pair.value);
807
- if (value !== undefined) results.push(pair.key.toJSON() + ': ' + value);
808
- });
809
- return '{' + results.join(', ') + '}';
810
- }
811
- });
812
-
813
- Hash.toQueryString.addPair = function(key, value, prefix) {
814
- key = encodeURIComponent(key);
815
- if (value === undefined) this.push(key);
816
- else this.push(key + '=' + (value == null ? '' : encodeURIComponent(value)));
817
- }
818
-
819
- Object.extend(Hash.prototype, Enumerable);
820
- Object.extend(Hash.prototype, {
821
- _each: function(iterator) {
822
- for (var key in this) {
823
- var value = this[key];
824
- if (value && value == Hash.prototype[key]) continue;
825
-
826
- var pair = [key, value];
827
- pair.key = key;
828
- pair.value = value;
829
- iterator(pair);
830
- }
831
- },
832
-
833
- keys: function() {
834
- return this.pluck('key');
835
- },
836
-
837
- values: function() {
838
- return this.pluck('value');
839
- },
840
-
841
- merge: function(hash) {
842
- return $H(hash).inject(this, function(mergedHash, pair) {
843
- mergedHash[pair.key] = pair.value;
844
- return mergedHash;
845
- });
846
- },
847
-
848
- remove: function() {
849
- var result;
850
- for(var i = 0, length = arguments.length; i < length; i++) {
851
- var value = this[arguments[i]];
852
- if (value !== undefined){
853
- if (result === undefined) result = value;
854
- else {
855
- if (result.constructor != Array) result = [result];
856
- result.push(value)
857
- }
858
- }
859
- delete this[arguments[i]];
860
- }
861
- return result;
862
- },
863
-
864
- toQueryString: function() {
865
- return Hash.toQueryString(this);
866
- },
867
-
868
- inspect: function() {
869
- return '#<Hash:{' + this.map(function(pair) {
870
- return pair.map(Object.inspect).join(': ');
871
- }).join(', ') + '}>';
872
- },
873
-
874
- toJSON: function() {
875
- return Hash.toJSON(this);
876
- }
877
- });
878
-
879
- function $H(object) {
880
- if (object instanceof Hash) return object;
881
- return new Hash(object);
882
- };
883
-
884
- // Safari iterates over shadowed properties
885
- if (function() {
886
- var i = 0, Test = function(value) { this.key = value };
887
- Test.prototype.key = 'foo';
888
- for (var property in new Test('bar')) i++;
889
- return i > 1;
890
- }()) Hash.prototype._each = function(iterator) {
891
- var cache = [];
892
- for (var key in this) {
893
- var value = this[key];
894
- if ((value && value == Hash.prototype[key]) || cache.include(key)) continue;
895
- cache.push(key);
896
- var pair = [key, value];
897
- pair.key = key;
898
- pair.value = value;
899
- iterator(pair);
900
- }
901
- };
902
- ObjectRange = Class.create();
903
- Object.extend(ObjectRange.prototype, Enumerable);
904
- Object.extend(ObjectRange.prototype, {
905
- initialize: function(start, end, exclusive) {
906
- this.start = start;
907
- this.end = end;
908
- this.exclusive = exclusive;
909
- },
910
-
911
- _each: function(iterator) {
912
- var value = this.start;
913
- while (this.include(value)) {
914
- iterator(value);
915
- value = value.succ();
916
- }
917
- },
918
-
919
- include: function(value) {
920
- if (value < this.start)
921
- return false;
922
- if (this.exclusive)
923
- return value < this.end;
924
- return value <= this.end;
925
- }
926
- });
927
-
928
- var $R = function(start, end, exclusive) {
929
- return new ObjectRange(start, end, exclusive);
930
- }
931
-
932
- var Ajax = {
933
- getTransport: function() {
934
- return Try.these(
935
- function() {return new XMLHttpRequest()},
936
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
937
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
938
- ) || false;
939
- },
940
-
941
- activeRequestCount: 0
942
- }
943
-
944
- Ajax.Responders = {
945
- responders: [],
946
-
947
- _each: function(iterator) {
948
- this.responders._each(iterator);
949
- },
950
-
951
- register: function(responder) {
952
- if (!this.include(responder))
953
- this.responders.push(responder);
954
- },
955
-
956
- unregister: function(responder) {
957
- this.responders = this.responders.without(responder);
958
- },
959
-
960
- dispatch: function(callback, request, transport, json) {
961
- this.each(function(responder) {
962
- if (typeof responder[callback] == 'function') {
963
- try {
964
- responder[callback].apply(responder, [request, transport, json]);
965
- } catch (e) {}
966
- }
967
- });
968
- }
969
- };
970
-
971
- Object.extend(Ajax.Responders, Enumerable);
972
-
973
- Ajax.Responders.register({
974
- onCreate: function() {
975
- Ajax.activeRequestCount++;
976
- },
977
- onComplete: function() {
978
- Ajax.activeRequestCount--;
979
- }
980
- });
981
-
982
- Ajax.Base = function() {};
983
- Ajax.Base.prototype = {
984
- setOptions: function(options) {
985
- this.options = {
986
- method: 'post',
987
- asynchronous: true,
988
- contentType: 'application/x-www-form-urlencoded',
989
- encoding: 'UTF-8',
990
- parameters: ''
991
- }
992
- Object.extend(this.options, options || {});
993
-
994
- this.options.method = this.options.method.toLowerCase();
995
- if (typeof this.options.parameters == 'string')
996
- this.options.parameters = this.options.parameters.toQueryParams();
997
- }
998
- }
999
-
1000
- Ajax.Request = Class.create();
1001
- Ajax.Request.Events =
1002
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
1003
-
1004
- Ajax.Request.prototype = Object.extend(new Ajax.Base(), {
1005
- _complete: false,
1006
-
1007
- initialize: function(url, options) {
1008
- this.transport = Ajax.getTransport();
1009
- this.setOptions(options);
1010
- this.request(url);
1011
- },
1012
-
1013
- request: function(url) {
1014
- this.url = url;
1015
- this.method = this.options.method;
1016
- var params = Object.clone(this.options.parameters);
1017
-
1018
- if (!['get', 'post'].include(this.method)) {
1019
- // simulate other verbs over post
1020
- params['_method'] = this.method;
1021
- this.method = 'post';
1022
- }
1023
-
1024
- this.parameters = params;
1025
-
1026
- if (params = Hash.toQueryString(params)) {
1027
- // when GET, append parameters to URL
1028
- if (this.method == 'get')
1029
- this.url += (this.url.include('?') ? '&' : '?') + params;
1030
- else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
1031
- params += '&_=';
1032
- }
1033
-
1034
- try {
1035
- if (this.options.onCreate) this.options.onCreate(this.transport);
1036
- Ajax.Responders.dispatch('onCreate', this, this.transport);
1037
-
1038
- this.transport.open(this.method.toUpperCase(), this.url,
1039
- this.options.asynchronous);
1040
-
1041
- if (this.options.asynchronous)
1042
- setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10);
1043
-
1044
- this.transport.onreadystatechange = this.onStateChange.bind(this);
1045
- this.setRequestHeaders();
1046
-
1047
- this.body = this.method == 'post' ? (this.options.postBody || params) : null;
1048
- this.transport.send(this.body);
1049
-
1050
- /* Force Firefox to handle ready state 4 for synchronous requests */
1051
- if (!this.options.asynchronous && this.transport.overrideMimeType)
1052
- this.onStateChange();
1053
-
1054
- }
1055
- catch (e) {
1056
- this.dispatchException(e);
1057
- }
1058
- },
1059
-
1060
- onStateChange: function() {
1061
- var readyState = this.transport.readyState;
1062
- if (readyState > 1 && !((readyState == 4) && this._complete))
1063
- this.respondToReadyState(this.transport.readyState);
1064
- },
1065
-
1066
- setRequestHeaders: function() {
1067
- var headers = {
1068
- 'X-Requested-With': 'XMLHttpRequest',
1069
- 'X-Prototype-Version': Prototype.Version,
1070
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
1071
- };
1072
-
1073
- if (this.method == 'post') {
1074
- headers['Content-type'] = this.options.contentType +
1075
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
1076
-
1077
- /* Force "Connection: close" for older Mozilla browsers to work
1078
- * around a bug where XMLHttpRequest sends an incorrect
1079
- * Content-length header. See Mozilla Bugzilla #246651.
1080
- */
1081
- if (this.transport.overrideMimeType &&
1082
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
1083
- headers['Connection'] = 'close';
1084
- }
1085
-
1086
- // user-defined headers
1087
- if (typeof this.options.requestHeaders == 'object') {
1088
- var extras = this.options.requestHeaders;
1089
-
1090
- if (typeof extras.push == 'function')
1091
- for (var i = 0, length = extras.length; i < length; i += 2)
1092
- headers[extras[i]] = extras[i+1];
1093
- else
1094
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
1095
- }
1096
-
1097
- for (var name in headers)
1098
- this.transport.setRequestHeader(name, headers[name]);
1099
- },
1100
-
1101
- success: function() {
1102
- return !this.transport.status
1103
- || (this.transport.status >= 200 && this.transport.status < 300);
1104
- },
1105
-
1106
- respondToReadyState: function(readyState) {
1107
- var state = Ajax.Request.Events[readyState];
1108
- var transport = this.transport, json = this.evalJSON();
1109
-
1110
- if (state == 'Complete') {
1111
- try {
1112
- this._complete = true;
1113
- (this.options['on' + this.transport.status]
1114
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
1115
- || Prototype.emptyFunction)(transport, json);
1116
- } catch (e) {
1117
- this.dispatchException(e);
1118
- }
1119
-
1120
- var contentType = this.getHeader('Content-type');
1121
- if (contentType && contentType.strip().
1122
- match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i))
1123
- this.evalResponse();
1124
- }
1125
-
1126
- try {
1127
- (this.options['on' + state] || Prototype.emptyFunction)(transport, json);
1128
- Ajax.Responders.dispatch('on' + state, this, transport, json);
1129
- } catch (e) {
1130
- this.dispatchException(e);
1131
- }
1132
-
1133
- if (state == 'Complete') {
1134
- // avoid memory leak in MSIE: clean up
1135
- this.transport.onreadystatechange = Prototype.emptyFunction;
1136
- }
1137
- },
1138
-
1139
- getHeader: function(name) {
1140
- try {
1141
- return this.transport.getResponseHeader(name);
1142
- } catch (e) { return null }
1143
- },
1144
-
1145
- evalJSON: function() {
1146
- try {
1147
- var json = this.getHeader('X-JSON');
1148
- return json ? json.evalJSON() : null;
1149
- } catch (e) { return null }
1150
- },
1151
-
1152
- evalResponse: function() {
1153
- try {
1154
- return eval((this.transport.responseText || '').unfilterJSON());
1155
- } catch (e) {
1156
- this.dispatchException(e);
1157
- }
1158
- },
1159
-
1160
- dispatchException: function(exception) {
1161
- (this.options.onException || Prototype.emptyFunction)(this, exception);
1162
- Ajax.Responders.dispatch('onException', this, exception);
1163
- }
1164
- });
1165
-
1166
- Ajax.Updater = Class.create();
1167
-
1168
- Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), {
1169
- initialize: function(container, url, options) {
1170
- this.container = {
1171
- success: (container.success || container),
1172
- failure: (container.failure || (container.success ? null : container))
1173
- }
1174
-
1175
- this.transport = Ajax.getTransport();
1176
- this.setOptions(options);
1177
-
1178
- var onComplete = this.options.onComplete || Prototype.emptyFunction;
1179
- this.options.onComplete = (function(transport, param) {
1180
- this.updateContent();
1181
- onComplete(transport, param);
1182
- }).bind(this);
1183
-
1184
- this.request(url);
1185
- },
1186
-
1187
- updateContent: function() {
1188
- var receiver = this.container[this.success() ? 'success' : 'failure'];
1189
- var response = this.transport.responseText;
1190
-
1191
- if (!this.options.evalScripts) response = response.stripScripts();
1192
-
1193
- if (receiver = $(receiver)) {
1194
- if (this.options.insertion)
1195
- new this.options.insertion(receiver, response);
1196
- else
1197
- receiver.update(response);
1198
- }
1199
-
1200
- if (this.success()) {
1201
- if (this.onComplete)
1202
- setTimeout(this.onComplete.bind(this), 10);
1203
- }
1204
- }
1205
- });
1206
-
1207
- Ajax.PeriodicalUpdater = Class.create();
1208
- Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), {
1209
- initialize: function(container, url, options) {
1210
- this.setOptions(options);
1211
- this.onComplete = this.options.onComplete;
1212
-
1213
- this.frequency = (this.options.frequency || 2);
1214
- this.decay = (this.options.decay || 1);
1215
-
1216
- this.updater = {};
1217
- this.container = container;
1218
- this.url = url;
1219
-
1220
- this.start();
1221
- },
1222
-
1223
- start: function() {
1224
- this.options.onComplete = this.updateComplete.bind(this);
1225
- this.onTimerEvent();
1226
- },
1227
-
1228
- stop: function() {
1229
- this.updater.options.onComplete = undefined;
1230
- clearTimeout(this.timer);
1231
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
1232
- },
1233
-
1234
- updateComplete: function(request) {
1235
- if (this.options.decay) {
1236
- this.decay = (request.responseText == this.lastText ?
1237
- this.decay * this.options.decay : 1);
1238
-
1239
- this.lastText = request.responseText;
1240
- }
1241
- this.timer = setTimeout(this.onTimerEvent.bind(this),
1242
- this.decay * this.frequency * 1000);
1243
- },
1244
-
1245
- onTimerEvent: function() {
1246
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
1247
- }
1248
- });
1249
- function $(element) {
1250
- if (arguments.length > 1) {
1251
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
1252
- elements.push($(arguments[i]));
1253
- return elements;
1254
- }
1255
- if (typeof element == 'string')
1256
- element = document.getElementById(element);
1257
- return Element.extend(element);
1258
- }
1259
-
1260
- if (Prototype.BrowserFeatures.XPath) {
1261
- document._getElementsByXPath = function(expression, parentElement) {
1262
- var results = [];
1263
- var query = document.evaluate(expression, $(parentElement) || document,
1264
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
1265
- for (var i = 0, length = query.snapshotLength; i < length; i++)
1266
- results.push(query.snapshotItem(i));
1267
- return results;
1268
- };
1269
-
1270
- document.getElementsByClassName = function(className, parentElement) {
1271
- var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]";
1272
- return document._getElementsByXPath(q, parentElement);
1273
- }
1274
-
1275
- } else document.getElementsByClassName = function(className, parentElement) {
1276
- var children = ($(parentElement) || document.body).getElementsByTagName('*');
1277
- var elements = [], child, pattern = new RegExp("(^|\\s)" + className + "(\\s|$)");
1278
- for (var i = 0, length = children.length; i < length; i++) {
1279
- child = children[i];
1280
- var elementClassName = child.className;
1281
- if (elementClassName.length == 0) continue;
1282
- if (elementClassName == className || elementClassName.match(pattern))
1283
- elements.push(Element.extend(child));
1284
- }
1285
- return elements;
1286
- };
1287
-
1288
- /*--------------------------------------------------------------------------*/
1289
-
1290
- if (!window.Element) var Element = {};
1291
-
1292
- Element.extend = function(element) {
1293
- var F = Prototype.BrowserFeatures;
1294
- if (!element || !element.tagName || element.nodeType == 3 ||
1295
- element._extended || F.SpecificElementExtensions || element == window)
1296
- return element;
1297
-
1298
- var methods = {}, tagName = element.tagName, cache = Element.extend.cache,
1299
- T = Element.Methods.ByTag;
1300
-
1301
- // extend methods for all tags (Safari doesn't need this)
1302
- if (!F.ElementExtensions) {
1303
- Object.extend(methods, Element.Methods),
1304
- Object.extend(methods, Element.Methods.Simulated);
1305
- }
1306
-
1307
- // extend methods for specific tags
1308
- if (T[tagName]) Object.extend(methods, T[tagName]);
1309
-
1310
- for (var property in methods) {
1311
- var value = methods[property];
1312
- if (typeof value == 'function' && !(property in element))
1313
- element[property] = cache.findOrStore(value);
1314
- }
1315
-
1316
- element._extended = Prototype.emptyFunction;
1317
- return element;
1318
- };
1319
-
1320
- Element.extend.cache = {
1321
- findOrStore: function(value) {
1322
- return this[value] = this[value] || function() {
1323
- return value.apply(null, [this].concat($A(arguments)));
1324
- }
1325
- }
1326
- };
1327
-
1328
- Element.Methods = {
1329
- visible: function(element) {
1330
- return $(element).style.display != 'none';
1331
- },
1332
-
1333
- toggle: function(element) {
1334
- element = $(element);
1335
- Element[Element.visible(element) ? 'hide' : 'show'](element);
1336
- return element;
1337
- },
1338
-
1339
- hide: function(element) {
1340
- $(element).style.display = 'none';
1341
- return element;
1342
- },
1343
-
1344
- show: function(element) {
1345
- $(element).style.display = '';
1346
- return element;
1347
- },
1348
-
1349
- remove: function(element) {
1350
- element = $(element);
1351
- element.parentNode.removeChild(element);
1352
- return element;
1353
- },
1354
-
1355
- update: function(element, html) {
1356
- html = typeof html == 'undefined' ? '' : html.toString();
1357
- $(element).innerHTML = html.stripScripts();
1358
- setTimeout(function() {html.evalScripts()}, 10);
1359
- return element;
1360
- },
1361
-
1362
- replace: function(element, html) {
1363
- element = $(element);
1364
- html = typeof html == 'undefined' ? '' : html.toString();
1365
- if (element.outerHTML) {
1366
- element.outerHTML = html.stripScripts();
1367
- } else {
1368
- var range = element.ownerDocument.createRange();
1369
- range.selectNodeContents(element);
1370
- element.parentNode.replaceChild(
1371
- range.createContextualFragment(html.stripScripts()), element);
1372
- }
1373
- setTimeout(function() {html.evalScripts()}, 10);
1374
- return element;
1375
- },
1376
-
1377
- inspect: function(element) {
1378
- element = $(element);
1379
- var result = '<' + element.tagName.toLowerCase();
1380
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
1381
- var property = pair.first(), attribute = pair.last();
1382
- var value = (element[property] || '').toString();
1383
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
1384
- });
1385
- return result + '>';
1386
- },
1387
-
1388
- recursivelyCollect: function(element, property) {
1389
- element = $(element);
1390
- var elements = [];
1391
- while (element = element[property])
1392
- if (element.nodeType == 1)
1393
- elements.push(Element.extend(element));
1394
- return elements;
1395
- },
1396
-
1397
- ancestors: function(element) {
1398
- return $(element).recursivelyCollect('parentNode');
1399
- },
1400
-
1401
- descendants: function(element) {
1402
- return $A($(element).getElementsByTagName('*')).each(Element.extend);
1403
- },
1404
-
1405
- firstDescendant: function(element) {
1406
- element = $(element).firstChild;
1407
- while (element && element.nodeType != 1) element = element.nextSibling;
1408
- return $(element);
1409
- },
1410
-
1411
- immediateDescendants: function(element) {
1412
- if (!(element = $(element).firstChild)) return [];
1413
- while (element && element.nodeType != 1) element = element.nextSibling;
1414
- if (element) return [element].concat($(element).nextSiblings());
1415
- return [];
1416
- },
1417
-
1418
- previousSiblings: function(element) {
1419
- return $(element).recursivelyCollect('previousSibling');
1420
- },
1421
-
1422
- nextSiblings: function(element) {
1423
- return $(element).recursivelyCollect('nextSibling');
1424
- },
1425
-
1426
- siblings: function(element) {
1427
- element = $(element);
1428
- return element.previousSiblings().reverse().concat(element.nextSiblings());
1429
- },
1430
-
1431
- match: function(element, selector) {
1432
- if (typeof selector == 'string')
1433
- selector = new Selector(selector);
1434
- return selector.match($(element));
1435
- },
1436
-
1437
- up: function(element, expression, index) {
1438
- element = $(element);
1439
- if (arguments.length == 1) return $(element.parentNode);
1440
- var ancestors = element.ancestors();
1441
- return expression ? Selector.findElement(ancestors, expression, index) :
1442
- ancestors[index || 0];
1443
- },
1444
-
1445
- down: function(element, expression, index) {
1446
- element = $(element);
1447
- if (arguments.length == 1) return element.firstDescendant();
1448
- var descendants = element.descendants();
1449
- return expression ? Selector.findElement(descendants, expression, index) :
1450
- descendants[index || 0];
1451
- },
1452
-
1453
- previous: function(element, expression, index) {
1454
- element = $(element);
1455
- if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
1456
- var previousSiblings = element.previousSiblings();
1457
- return expression ? Selector.findElement(previousSiblings, expression, index) :
1458
- previousSiblings[index || 0];
1459
- },
1460
-
1461
- next: function(element, expression, index) {
1462
- element = $(element);
1463
- if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
1464
- var nextSiblings = element.nextSiblings();
1465
- return expression ? Selector.findElement(nextSiblings, expression, index) :
1466
- nextSiblings[index || 0];
1467
- },
1468
-
1469
- getElementsBySelector: function() {
1470
- var args = $A(arguments), element = $(args.shift());
1471
- return Selector.findChildElements(element, args);
1472
- },
1473
-
1474
- getElementsByClassName: function(element, className) {
1475
- return document.getElementsByClassName(className, element);
1476
- },
1477
-
1478
- readAttribute: function(element, name) {
1479
- element = $(element);
1480
- if (Prototype.Browser.IE) {
1481
- if (!element.attributes) return null;
1482
- var t = Element._attributeTranslations;
1483
- if (t.values[name]) return t.values[name](element, name);
1484
- if (t.names[name]) name = t.names[name];
1485
- var attribute = element.attributes[name];
1486
- return attribute ? attribute.nodeValue : null;
1487
- }
1488
- return element.getAttribute(name);
1489
- },
1490
-
1491
- getHeight: function(element) {
1492
- return $(element).getDimensions().height;
1493
- },
1494
-
1495
- getWidth: function(element) {
1496
- return $(element).getDimensions().width;
1497
- },
1498
-
1499
- classNames: function(element) {
1500
- return new Element.ClassNames(element);
1501
- },
1502
-
1503
- hasClassName: function(element, className) {
1504
- if (!(element = $(element))) return;
1505
- var elementClassName = element.className;
1506
- if (elementClassName.length == 0) return false;
1507
- if (elementClassName == className ||
1508
- elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
1509
- return true;
1510
- return false;
1511
- },
1512
-
1513
- addClassName: function(element, className) {
1514
- if (!(element = $(element))) return;
1515
- Element.classNames(element).add(className);
1516
- return element;
1517
- },
1518
-
1519
- removeClassName: function(element, className) {
1520
- if (!(element = $(element))) return;
1521
- Element.classNames(element).remove(className);
1522
- return element;
1523
- },
1524
-
1525
- toggleClassName: function(element, className) {
1526
- if (!(element = $(element))) return;
1527
- Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className);
1528
- return element;
1529
- },
1530
-
1531
- observe: function() {
1532
- Event.observe.apply(Event, arguments);
1533
- return $A(arguments).first();
1534
- },
1535
-
1536
- stopObserving: function() {
1537
- Event.stopObserving.apply(Event, arguments);
1538
- return $A(arguments).first();
1539
- },
1540
-
1541
- // removes whitespace-only text node children
1542
- cleanWhitespace: function(element) {
1543
- element = $(element);
1544
- var node = element.firstChild;
1545
- while (node) {
1546
- var nextNode = node.nextSibling;
1547
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
1548
- element.removeChild(node);
1549
- node = nextNode;
1550
- }
1551
- return element;
1552
- },
1553
-
1554
- empty: function(element) {
1555
- return $(element).innerHTML.blank();
1556
- },
1557
-
1558
- descendantOf: function(element, ancestor) {
1559
- element = $(element), ancestor = $(ancestor);
1560
- while (element = element.parentNode)
1561
- if (element == ancestor) return true;
1562
- return false;
1563
- },
1564
-
1565
- scrollTo: function(element) {
1566
- element = $(element);
1567
- var pos = Position.cumulativeOffset(element);
1568
- window.scrollTo(pos[0], pos[1]);
1569
- return element;
1570
- },
1571
-
1572
- getStyle: function(element, style) {
1573
- element = $(element);
1574
- style = style == 'float' ? 'cssFloat' : style.camelize();
1575
- var value = element.style[style];
1576
- if (!value) {
1577
- var css = document.defaultView.getComputedStyle(element, null);
1578
- value = css ? css[style] : null;
1579
- }
1580
- if (style == 'opacity') return value ? parseFloat(value) : 1.0;
1581
- return value == 'auto' ? null : value;
1582
- },
1583
-
1584
- getOpacity: function(element) {
1585
- return $(element).getStyle('opacity');
1586
- },
1587
-
1588
- setStyle: function(element, styles, camelized) {
1589
- element = $(element);
1590
- var elementStyle = element.style;
1591
-
1592
- for (var property in styles)
1593
- if (property == 'opacity') element.setOpacity(styles[property])
1594
- else
1595
- elementStyle[(property == 'float' || property == 'cssFloat') ?
1596
- (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
1597
- (camelized ? property : property.camelize())] = styles[property];
1598
-
1599
- return element;
1600
- },
1601
-
1602
- setOpacity: function(element, value) {
1603
- element = $(element);
1604
- element.style.opacity = (value == 1 || value === '') ? '' :
1605
- (value < 0.00001) ? 0 : value;
1606
- return element;
1607
- },
1608
-
1609
- getDimensions: function(element) {
1610
- element = $(element);
1611
- var display = $(element).getStyle('display');
1612
- if (display != 'none' && display != null) // Safari bug
1613
- return {width: element.offsetWidth, height: element.offsetHeight};
1614
-
1615
- // All *Width and *Height properties give 0 on elements with display none,
1616
- // so enable the element temporarily
1617
- var els = element.style;
1618
- var originalVisibility = els.visibility;
1619
- var originalPosition = els.position;
1620
- var originalDisplay = els.display;
1621
- els.visibility = 'hidden';
1622
- els.position = 'absolute';
1623
- els.display = 'block';
1624
- var originalWidth = element.clientWidth;
1625
- var originalHeight = element.clientHeight;
1626
- els.display = originalDisplay;
1627
- els.position = originalPosition;
1628
- els.visibility = originalVisibility;
1629
- return {width: originalWidth, height: originalHeight};
1630
- },
1631
-
1632
- makePositioned: function(element) {
1633
- element = $(element);
1634
- var pos = Element.getStyle(element, 'position');
1635
- if (pos == 'static' || !pos) {
1636
- element._madePositioned = true;
1637
- element.style.position = 'relative';
1638
- // Opera returns the offset relative to the positioning context, when an
1639
- // element is position relative but top and left have not been defined
1640
- if (window.opera) {
1641
- element.style.top = 0;
1642
- element.style.left = 0;
1643
- }
1644
- }
1645
- return element;
1646
- },
1647
-
1648
- undoPositioned: function(element) {
1649
- element = $(element);
1650
- if (element._madePositioned) {
1651
- element._madePositioned = undefined;
1652
- element.style.position =
1653
- element.style.top =
1654
- element.style.left =
1655
- element.style.bottom =
1656
- element.style.right = '';
1657
- }
1658
- return element;
1659
- },
1660
-
1661
- makeClipping: function(element) {
1662
- element = $(element);
1663
- if (element._overflow) return element;
1664
- element._overflow = element.style.overflow || 'auto';
1665
- if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden')
1666
- element.style.overflow = 'hidden';
1667
- return element;
1668
- },
1669
-
1670
- undoClipping: function(element) {
1671
- element = $(element);
1672
- if (!element._overflow) return element;
1673
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
1674
- element._overflow = null;
1675
- return element;
1676
- }
1677
- };
1678
-
1679
- Object.extend(Element.Methods, {
1680
- childOf: Element.Methods.descendantOf,
1681
- childElements: Element.Methods.immediateDescendants
1682
- });
1683
-
1684
- if (Prototype.Browser.Opera) {
1685
- Element.Methods._getStyle = Element.Methods.getStyle;
1686
- Element.Methods.getStyle = function(element, style) {
1687
- switch(style) {
1688
- case 'left':
1689
- case 'top':
1690
- case 'right':
1691
- case 'bottom':
1692
- if (Element._getStyle(element, 'position') == 'static') return null;
1693
- default: return Element._getStyle(element, style);
1694
- }
1695
- };
1696
- }
1697
- else if (Prototype.Browser.IE) {
1698
- Element.Methods.getStyle = function(element, style) {
1699
- element = $(element);
1700
- style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();
1701
- var value = element.style[style];
1702
- if (!value && element.currentStyle) value = element.currentStyle[style];
1703
-
1704
- if (style == 'opacity') {
1705
- if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))
1706
- if (value[1]) return parseFloat(value[1]) / 100;
1707
- return 1.0;
1708
- }
1709
-
1710
- if (value == 'auto') {
1711
- if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))
1712
- return element['offset'+style.capitalize()] + 'px';
1713
- return null;
1714
- }
1715
- return value;
1716
- };
1717
-
1718
- Element.Methods.setOpacity = function(element, value) {
1719
- element = $(element);
1720
- var filter = element.getStyle('filter'), style = element.style;
1721
- if (value == 1 || value === '') {
1722
- style.filter = filter.replace(/alpha\([^\)]*\)/gi,'');
1723
- return element;
1724
- } else if (value < 0.00001) value = 0;
1725
- style.filter = filter.replace(/alpha\([^\)]*\)/gi, '') +
1726
- 'alpha(opacity=' + (value * 100) + ')';
1727
- return element;
1728
- };
1729
-
1730
- // IE is missing .innerHTML support for TABLE-related elements
1731
- Element.Methods.update = function(element, html) {
1732
- element = $(element);
1733
- html = typeof html == 'undefined' ? '' : html.toString();
1734
- var tagName = element.tagName.toUpperCase();
1735
- if (['THEAD','TBODY','TR','TD'].include(tagName)) {
1736
- var div = document.createElement('div');
1737
- switch (tagName) {
1738
- case 'THEAD':
1739
- case 'TBODY':
1740
- div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>';
1741
- depth = 2;
1742
- break;
1743
- case 'TR':
1744
- div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>';
1745
- depth = 3;
1746
- break;
1747
- case 'TD':
1748
- div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>';
1749
- depth = 4;
1750
- }
1751
- $A(element.childNodes).each(function(node) { element.removeChild(node) });
1752
- depth.times(function() { div = div.firstChild });
1753
- $A(div.childNodes).each(function(node) { element.appendChild(node) });
1754
- } else {
1755
- element.innerHTML = html.stripScripts();
1756
- }
1757
- setTimeout(function() { html.evalScripts() }, 10);
1758
- return element;
1759
- }
1760
- }
1761
- else if (Prototype.Browser.Gecko) {
1762
- Element.Methods.setOpacity = function(element, value) {
1763
- element = $(element);
1764
- element.style.opacity = (value == 1) ? 0.999999 :
1765
- (value === '') ? '' : (value < 0.00001) ? 0 : value;
1766
- return element;
1767
- };
1768
- }
1769
-
1770
- Element._attributeTranslations = {
1771
- names: {
1772
- colspan: "colSpan",
1773
- rowspan: "rowSpan",
1774
- valign: "vAlign",
1775
- datetime: "dateTime",
1776
- accesskey: "accessKey",
1777
- tabindex: "tabIndex",
1778
- enctype: "encType",
1779
- maxlength: "maxLength",
1780
- readonly: "readOnly",
1781
- longdesc: "longDesc"
1782
- },
1783
- values: {
1784
- _getAttr: function(element, attribute) {
1785
- return element.getAttribute(attribute, 2);
1786
- },
1787
- _flag: function(element, attribute) {
1788
- return $(element).hasAttribute(attribute) ? attribute : null;
1789
- },
1790
- style: function(element) {
1791
- return element.style.cssText.toLowerCase();
1792
- },
1793
- title: function(element) {
1794
- var node = element.getAttributeNode('title');
1795
- return node.specified ? node.nodeValue : null;
1796
- }
1797
- }
1798
- };
1799
-
1800
- (function() {
1801
- Object.extend(this, {
1802
- href: this._getAttr,
1803
- src: this._getAttr,
1804
- type: this._getAttr,
1805
- disabled: this._flag,
1806
- checked: this._flag,
1807
- readonly: this._flag,
1808
- multiple: this._flag
1809
- });
1810
- }).call(Element._attributeTranslations.values);
1811
-
1812
- Element.Methods.Simulated = {
1813
- hasAttribute: function(element, attribute) {
1814
- var t = Element._attributeTranslations, node;
1815
- attribute = t.names[attribute] || attribute;
1816
- node = $(element).getAttributeNode(attribute);
1817
- return node && node.specified;
1818
- }
1819
- };
1820
-
1821
- Element.Methods.ByTag = {};
1822
-
1823
- Object.extend(Element, Element.Methods);
1824
-
1825
- if (!Prototype.BrowserFeatures.ElementExtensions &&
1826
- document.createElement('div').__proto__) {
1827
- window.HTMLElement = {};
1828
- window.HTMLElement.prototype = document.createElement('div').__proto__;
1829
- Prototype.BrowserFeatures.ElementExtensions = true;
1830
- }
1831
-
1832
- Element.hasAttribute = function(element, attribute) {
1833
- if (element.hasAttribute) return element.hasAttribute(attribute);
1834
- return Element.Methods.Simulated.hasAttribute(element, attribute);
1835
- };
1836
-
1837
- Element.addMethods = function(methods) {
1838
- var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;
1839
-
1840
- if (!methods) {
1841
- Object.extend(Form, Form.Methods);
1842
- Object.extend(Form.Element, Form.Element.Methods);
1843
- Object.extend(Element.Methods.ByTag, {
1844
- "FORM": Object.clone(Form.Methods),
1845
- "INPUT": Object.clone(Form.Element.Methods),
1846
- "SELECT": Object.clone(Form.Element.Methods),
1847
- "TEXTAREA": Object.clone(Form.Element.Methods)
1848
- });
1849
- }
1850
-
1851
- if (arguments.length == 2) {
1852
- var tagName = methods;
1853
- methods = arguments[1];
1854
- }
1855
-
1856
- if (!tagName) Object.extend(Element.Methods, methods || {});
1857
- else {
1858
- if (tagName.constructor == Array) tagName.each(extend);
1859
- else extend(tagName);
1860
- }
1861
-
1862
- function extend(tagName) {
1863
- tagName = tagName.toUpperCase();
1864
- if (!Element.Methods.ByTag[tagName])
1865
- Element.Methods.ByTag[tagName] = {};
1866
- Object.extend(Element.Methods.ByTag[tagName], methods);
1867
- }
1868
-
1869
- function copy(methods, destination, onlyIfAbsent) {
1870
- onlyIfAbsent = onlyIfAbsent || false;
1871
- var cache = Element.extend.cache;
1872
- for (var property in methods) {
1873
- var value = methods[property];
1874
- if (!onlyIfAbsent || !(property in destination))
1875
- destination[property] = cache.findOrStore(value);
1876
- }
1877
- }
1878
-
1879
- function findDOMClass(tagName) {
1880
- var klass;
1881
- var trans = {
1882
- "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
1883
- "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",
1884
- "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",
1885
- "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
1886
- "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":
1887
- "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":
1888
- "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":
1889
- "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
1890
- "FrameSet", "IFRAME": "IFrame"
1891
- };
1892
- if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';
1893
- if (window[klass]) return window[klass];
1894
- klass = 'HTML' + tagName + 'Element';
1895
- if (window[klass]) return window[klass];
1896
- klass = 'HTML' + tagName.capitalize() + 'Element';
1897
- if (window[klass]) return window[klass];
1898
-
1899
- window[klass] = {};
1900
- window[klass].prototype = document.createElement(tagName).__proto__;
1901
- return window[klass];
1902
- }
1903
-
1904
- if (F.ElementExtensions) {
1905
- copy(Element.Methods, HTMLElement.prototype);
1906
- copy(Element.Methods.Simulated, HTMLElement.prototype, true);
1907
- }
1908
-
1909
- if (F.SpecificElementExtensions) {
1910
- for (var tag in Element.Methods.ByTag) {
1911
- var klass = findDOMClass(tag);
1912
- if (typeof klass == "undefined") continue;
1913
- copy(T[tag], klass.prototype);
1914
- }
1915
- }
1916
-
1917
- Object.extend(Element, Element.Methods);
1918
- delete Element.ByTag;
1919
- };
1920
-
1921
- var Toggle = { display: Element.toggle };
1922
-
1923
- /*--------------------------------------------------------------------------*/
1924
-
1925
- Abstract.Insertion = function(adjacency) {
1926
- this.adjacency = adjacency;
1927
- }
1928
-
1929
- Abstract.Insertion.prototype = {
1930
- initialize: function(element, content) {
1931
- this.element = $(element);
1932
- this.content = content.stripScripts();
1933
-
1934
- if (this.adjacency && this.element.insertAdjacentHTML) {
1935
- try {
1936
- this.element.insertAdjacentHTML(this.adjacency, this.content);
1937
- } catch (e) {
1938
- var tagName = this.element.tagName.toUpperCase();
1939
- if (['TBODY', 'TR'].include(tagName)) {
1940
- this.insertContent(this.contentFromAnonymousTable());
1941
- } else {
1942
- throw e;
1943
- }
1944
- }
1945
- } else {
1946
- this.range = this.element.ownerDocument.createRange();
1947
- if (this.initializeRange) this.initializeRange();
1948
- this.insertContent([this.range.createContextualFragment(this.content)]);
1949
- }
1950
-
1951
- setTimeout(function() {content.evalScripts()}, 10);
1952
- },
1953
-
1954
- contentFromAnonymousTable: function() {
1955
- var div = document.createElement('div');
1956
- div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>';
1957
- return $A(div.childNodes[0].childNodes[0].childNodes);
1958
- }
1959
- }
1960
-
1961
- var Insertion = new Object();
1962
-
1963
- Insertion.Before = Class.create();
1964
- Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), {
1965
- initializeRange: function() {
1966
- this.range.setStartBefore(this.element);
1967
- },
1968
-
1969
- insertContent: function(fragments) {
1970
- fragments.each((function(fragment) {
1971
- this.element.parentNode.insertBefore(fragment, this.element);
1972
- }).bind(this));
1973
- }
1974
- });
1975
-
1976
- Insertion.Top = Class.create();
1977
- Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), {
1978
- initializeRange: function() {
1979
- this.range.selectNodeContents(this.element);
1980
- this.range.collapse(true);
1981
- },
1982
-
1983
- insertContent: function(fragments) {
1984
- fragments.reverse(false).each((function(fragment) {
1985
- this.element.insertBefore(fragment, this.element.firstChild);
1986
- }).bind(this));
1987
- }
1988
- });
1989
-
1990
- Insertion.Bottom = Class.create();
1991
- Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), {
1992
- initializeRange: function() {
1993
- this.range.selectNodeContents(this.element);
1994
- this.range.collapse(this.element);
1995
- },
1996
-
1997
- insertContent: function(fragments) {
1998
- fragments.each((function(fragment) {
1999
- this.element.appendChild(fragment);
2000
- }).bind(this));
2001
- }
2002
- });
2003
-
2004
- Insertion.After = Class.create();
2005
- Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), {
2006
- initializeRange: function() {
2007
- this.range.setStartAfter(this.element);
2008
- },
2009
-
2010
- insertContent: function(fragments) {
2011
- fragments.each((function(fragment) {
2012
- this.element.parentNode.insertBefore(fragment,
2013
- this.element.nextSibling);
2014
- }).bind(this));
2015
- }
2016
- });
2017
-
2018
- /*--------------------------------------------------------------------------*/
2019
-
2020
- Element.ClassNames = Class.create();
2021
- Element.ClassNames.prototype = {
2022
- initialize: function(element) {
2023
- this.element = $(element);
2024
- },
2025
-
2026
- _each: function(iterator) {
2027
- this.element.className.split(/\s+/).select(function(name) {
2028
- return name.length > 0;
2029
- })._each(iterator);
2030
- },
2031
-
2032
- set: function(className) {
2033
- this.element.className = className;
2034
- },
2035
-
2036
- add: function(classNameToAdd) {
2037
- if (this.include(classNameToAdd)) return;
2038
- this.set($A(this).concat(classNameToAdd).join(' '));
2039
- },
2040
-
2041
- remove: function(classNameToRemove) {
2042
- if (!this.include(classNameToRemove)) return;
2043
- this.set($A(this).without(classNameToRemove).join(' '));
2044
- },
2045
-
2046
- toString: function() {
2047
- return $A(this).join(' ');
2048
- }
2049
- };
2050
-
2051
- Object.extend(Element.ClassNames.prototype, Enumerable);
2052
- /* Portions of the Selector class are derived from Jack Slocum’s DomQuery,
2053
- * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style
2054
- * license. Please see http://www.yui-ext.com/ for more information. */
2055
-
2056
- var Selector = Class.create();
2057
-
2058
- Selector.prototype = {
2059
- initialize: function(expression) {
2060
- this.expression = expression.strip();
2061
- this.compileMatcher();
2062
- },
2063
-
2064
- compileMatcher: function() {
2065
- // Selectors with namespaced attributes can't use the XPath version
2066
- if (Prototype.BrowserFeatures.XPath && !(/\[[\w-]*?:/).test(this.expression))
2067
- return this.compileXPathMatcher();
2068
-
2069
- var e = this.expression, ps = Selector.patterns, h = Selector.handlers,
2070
- c = Selector.criteria, le, p, m;
2071
-
2072
- if (Selector._cache[e]) {
2073
- this.matcher = Selector._cache[e]; return;
2074
- }
2075
- this.matcher = ["this.matcher = function(root) {",
2076
- "var r = root, h = Selector.handlers, c = false, n;"];
2077
-
2078
- while (e && le != e && (/\S/).test(e)) {
2079
- le = e;
2080
- for (var i in ps) {
2081
- p = ps[i];
2082
- if (m = e.match(p)) {
2083
- this.matcher.push(typeof c[i] == 'function' ? c[i](m) :
2084
- new Template(c[i]).evaluate(m));
2085
- e = e.replace(m[0], '');
2086
- break;
2087
- }
2088
- }
2089
- }
2090
-
2091
- this.matcher.push("return h.unique(n);\n}");
2092
- eval(this.matcher.join('\n'));
2093
- Selector._cache[this.expression] = this.matcher;
2094
- },
2095
-
2096
- compileXPathMatcher: function() {
2097
- var e = this.expression, ps = Selector.patterns,
2098
- x = Selector.xpath, le, m;
2099
-
2100
- if (Selector._cache[e]) {
2101
- this.xpath = Selector._cache[e]; return;
2102
- }
2103
-
2104
- this.matcher = ['.//*'];
2105
- while (e && le != e && (/\S/).test(e)) {
2106
- le = e;
2107
- for (var i in ps) {
2108
- if (m = e.match(ps[i])) {
2109
- this.matcher.push(typeof x[i] == 'function' ? x[i](m) :
2110
- new Template(x[i]).evaluate(m));
2111
- e = e.replace(m[0], '');
2112
- break;
2113
- }
2114
- }
2115
- }
2116
-
2117
- this.xpath = this.matcher.join('');
2118
- Selector._cache[this.expression] = this.xpath;
2119
- },
2120
-
2121
- findElements: function(root) {
2122
- root = root || document;
2123
- if (this.xpath) return document._getElementsByXPath(this.xpath, root);
2124
- return this.matcher(root);
2125
- },
2126
-
2127
- match: function(element) {
2128
- return this.findElements(document).include(element);
2129
- },
2130
-
2131
- toString: function() {
2132
- return this.expression;
2133
- },
2134
-
2135
- inspect: function() {
2136
- return "#<Selector:" + this.expression.inspect() + ">";
2137
- }
2138
- };
2139
-
2140
- Object.extend(Selector, {
2141
- _cache: {},
2142
-
2143
- xpath: {
2144
- descendant: "//*",
2145
- child: "/*",
2146
- adjacent: "/following-sibling::*[1]",
2147
- laterSibling: '/following-sibling::*',
2148
- tagName: function(m) {
2149
- if (m[1] == '*') return '';
2150
- return "[local-name()='" + m[1].toLowerCase() +
2151
- "' or local-name()='" + m[1].toUpperCase() + "']";
2152
- },
2153
- className: "[contains(concat(' ', @class, ' '), ' #{1} ')]",
2154
- id: "[@id='#{1}']",
2155
- attrPresence: "[@#{1}]",
2156
- attr: function(m) {
2157
- m[3] = m[5] || m[6];
2158
- return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
2159
- },
2160
- pseudo: function(m) {
2161
- var h = Selector.xpath.pseudos[m[1]];
2162
- if (!h) return '';
2163
- if (typeof h === 'function') return h(m);
2164
- return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
2165
- },
2166
- operators: {
2167
- '=': "[@#{1}='#{3}']",
2168
- '!=': "[@#{1}!='#{3}']",
2169
- '^=': "[starts-with(@#{1}, '#{3}')]",
2170
- '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']",
2171
- '*=': "[contains(@#{1}, '#{3}')]",
2172
- '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
2173
- '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
2174
- },
2175
- pseudos: {
2176
- 'first-child': '[not(preceding-sibling::*)]',
2177
- 'last-child': '[not(following-sibling::*)]',
2178
- 'only-child': '[not(preceding-sibling::* or following-sibling::*)]',
2179
- 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]",
2180
- 'checked': "[@checked]",
2181
- 'disabled': "[@disabled]",
2182
- 'enabled': "[not(@disabled)]",
2183
- 'not': function(m) {
2184
- var e = m[6], p = Selector.patterns,
2185
- x = Selector.xpath, le, m, v;
2186
-
2187
- var exclusion = [];
2188
- while (e && le != e && (/\S/).test(e)) {
2189
- le = e;
2190
- for (var i in p) {
2191
- if (m = e.match(p[i])) {
2192
- v = typeof x[i] == 'function' ? x[i](m) : new Template(x[i]).evaluate(m);
2193
- exclusion.push("(" + v.substring(1, v.length - 1) + ")");
2194
- e = e.replace(m[0], '');
2195
- break;
2196
- }
2197
- }
2198
- }
2199
- return "[not(" + exclusion.join(" and ") + ")]";
2200
- },
2201
- 'nth-child': function(m) {
2202
- return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
2203
- },
2204
- 'nth-last-child': function(m) {
2205
- return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
2206
- },
2207
- 'nth-of-type': function(m) {
2208
- return Selector.xpath.pseudos.nth("position() ", m);
2209
- },
2210
- 'nth-last-of-type': function(m) {
2211
- return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m);
2212
- },
2213
- 'first-of-type': function(m) {
2214
- m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m);
2215
- },
2216
- 'last-of-type': function(m) {
2217
- m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m);
2218
- },
2219
- 'only-of-type': function(m) {
2220
- var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m);
2221
- },
2222
- nth: function(fragment, m) {
2223
- var mm, formula = m[6], predicate;
2224
- if (formula == 'even') formula = '2n+0';
2225
- if (formula == 'odd') formula = '2n+1';
2226
- if (mm = formula.match(/^(\d+)$/)) // digit only
2227
- return '[' + fragment + "= " + mm[1] + ']';
2228
- if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
2229
- if (mm[1] == "-") mm[1] = -1;
2230
- var a = mm[1] ? Number(mm[1]) : 1;
2231
- var b = mm[2] ? Number(mm[2]) : 0;
2232
- predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " +
2233
- "((#{fragment} - #{b}) div #{a} >= 0)]";
2234
- return new Template(predicate).evaluate({
2235
- fragment: fragment, a: a, b: b });
2236
- }
2237
- }
2238
- }
2239
- },
2240
-
2241
- criteria: {
2242
- tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;',
2243
- className: 'n = h.className(n, r, "#{1}", c); c = false;',
2244
- id: 'n = h.id(n, r, "#{1}", c); c = false;',
2245
- attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;',
2246
- attr: function(m) {
2247
- m[3] = (m[5] || m[6]);
2248
- return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m);
2249
- },
2250
- pseudo: function(m) {
2251
- if (m[6]) m[6] = m[6].replace(/"/g, '\\"');
2252
- return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m);
2253
- },
2254
- descendant: 'c = "descendant";',
2255
- child: 'c = "child";',
2256
- adjacent: 'c = "adjacent";',
2257
- laterSibling: 'c = "laterSibling";'
2258
- },
2259
-
2260
- patterns: {
2261
- // combinators must be listed first
2262
- // (and descendant needs to be last combinator)
2263
- laterSibling: /^\s*~\s*/,
2264
- child: /^\s*>\s*/,
2265
- adjacent: /^\s*\+\s*/,
2266
- descendant: /^\s/,
2267
-
2268
- // selectors follow
2269
- tagName: /^\s*(\*|[\w\-]+)(\b|$)?/,
2270
- id: /^#([\w\-\*]+)(\b|$)/,
2271
- className: /^\.([\w\-\*]+)(\b|$)/,
2272
- pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|\s|(?=:))/,
2273
- attrPresence: /^\[([\w]+)\]/,
2274
- attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\]]*?)\4|([^'"][^\]]*?)))?\]/
2275
- },
2276
-
2277
- handlers: {
2278
- // UTILITY FUNCTIONS
2279
- // joins two collections
2280
- concat: function(a, b) {
2281
- for (var i = 0, node; node = b[i]; i++)
2282
- a.push(node);
2283
- return a;
2284
- },
2285
-
2286
- // marks an array of nodes for counting
2287
- mark: function(nodes) {
2288
- for (var i = 0, node; node = nodes[i]; i++)
2289
- node._counted = true;
2290
- return nodes;
2291
- },
2292
-
2293
- unmark: function(nodes) {
2294
- for (var i = 0, node; node = nodes[i]; i++)
2295
- node._counted = undefined;
2296
- return nodes;
2297
- },
2298
-
2299
- // mark each child node with its position (for nth calls)
2300
- // "ofType" flag indicates whether we're indexing for nth-of-type
2301
- // rather than nth-child
2302
- index: function(parentNode, reverse, ofType) {
2303
- parentNode._counted = true;
2304
- if (reverse) {
2305
- for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) {
2306
- node = nodes[i];
2307
- if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
2308
- }
2309
- } else {
2310
- for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++)
2311
- if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++;
2312
- }
2313
- },
2314
-
2315
- // filters out duplicates and extends all nodes
2316
- unique: function(nodes) {
2317
- if (nodes.length == 0) return nodes;
2318
- var results = [], n;
2319
- for (var i = 0, l = nodes.length; i < l; i++)
2320
- if (!(n = nodes[i])._counted) {
2321
- n._counted = true;
2322
- results.push(Element.extend(n));
2323
- }
2324
- return Selector.handlers.unmark(results);
2325
- },
2326
-
2327
- // COMBINATOR FUNCTIONS
2328
- descendant: function(nodes) {
2329
- var h = Selector.handlers;
2330
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2331
- h.concat(results, node.getElementsByTagName('*'));
2332
- return results;
2333
- },
2334
-
2335
- child: function(nodes) {
2336
- var h = Selector.handlers;
2337
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
2338
- for (var j = 0, children = [], child; child = node.childNodes[j]; j++)
2339
- if (child.nodeType == 1 && child.tagName != '!') results.push(child);
2340
- }
2341
- return results;
2342
- },
2343
-
2344
- adjacent: function(nodes) {
2345
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
2346
- var next = this.nextElementSibling(node);
2347
- if (next) results.push(next);
2348
- }
2349
- return results;
2350
- },
2351
-
2352
- laterSibling: function(nodes) {
2353
- var h = Selector.handlers;
2354
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2355
- h.concat(results, Element.nextSiblings(node));
2356
- return results;
2357
- },
2358
-
2359
- nextElementSibling: function(node) {
2360
- while (node = node.nextSibling)
2361
- if (node.nodeType == 1) return node;
2362
- return null;
2363
- },
2364
-
2365
- previousElementSibling: function(node) {
2366
- while (node = node.previousSibling)
2367
- if (node.nodeType == 1) return node;
2368
- return null;
2369
- },
2370
-
2371
- // TOKEN FUNCTIONS
2372
- tagName: function(nodes, root, tagName, combinator) {
2373
- tagName = tagName.toUpperCase();
2374
- var results = [], h = Selector.handlers;
2375
- if (nodes) {
2376
- if (combinator) {
2377
- // fastlane for ordinary descendant combinators
2378
- if (combinator == "descendant") {
2379
- for (var i = 0, node; node = nodes[i]; i++)
2380
- h.concat(results, node.getElementsByTagName(tagName));
2381
- return results;
2382
- } else nodes = this[combinator](nodes);
2383
- if (tagName == "*") return nodes;
2384
- }
2385
- for (var i = 0, node; node = nodes[i]; i++)
2386
- if (node.tagName.toUpperCase() == tagName) results.push(node);
2387
- return results;
2388
- } else return root.getElementsByTagName(tagName);
2389
- },
2390
-
2391
- id: function(nodes, root, id, combinator) {
2392
- var targetNode = $(id), h = Selector.handlers;
2393
- if (!nodes && root == document) return targetNode ? [targetNode] : [];
2394
- if (nodes) {
2395
- if (combinator) {
2396
- if (combinator == 'child') {
2397
- for (var i = 0, node; node = nodes[i]; i++)
2398
- if (targetNode.parentNode == node) return [targetNode];
2399
- } else if (combinator == 'descendant') {
2400
- for (var i = 0, node; node = nodes[i]; i++)
2401
- if (Element.descendantOf(targetNode, node)) return [targetNode];
2402
- } else if (combinator == 'adjacent') {
2403
- for (var i = 0, node; node = nodes[i]; i++)
2404
- if (Selector.handlers.previousElementSibling(targetNode) == node)
2405
- return [targetNode];
2406
- } else nodes = h[combinator](nodes);
2407
- }
2408
- for (var i = 0, node; node = nodes[i]; i++)
2409
- if (node == targetNode) return [targetNode];
2410
- return [];
2411
- }
2412
- return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : [];
2413
- },
2414
-
2415
- className: function(nodes, root, className, combinator) {
2416
- if (nodes && combinator) nodes = this[combinator](nodes);
2417
- return Selector.handlers.byClassName(nodes, root, className);
2418
- },
2419
-
2420
- byClassName: function(nodes, root, className) {
2421
- if (!nodes) nodes = Selector.handlers.descendant([root]);
2422
- var needle = ' ' + className + ' ';
2423
- for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) {
2424
- nodeClassName = node.className;
2425
- if (nodeClassName.length == 0) continue;
2426
- if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle))
2427
- results.push(node);
2428
- }
2429
- return results;
2430
- },
2431
-
2432
- attrPresence: function(nodes, root, attr) {
2433
- var results = [];
2434
- for (var i = 0, node; node = nodes[i]; i++)
2435
- if (Element.hasAttribute(node, attr)) results.push(node);
2436
- return results;
2437
- },
2438
-
2439
- attr: function(nodes, root, attr, value, operator) {
2440
- if (!nodes) nodes = root.getElementsByTagName("*");
2441
- var handler = Selector.operators[operator], results = [];
2442
- for (var i = 0, node; node = nodes[i]; i++) {
2443
- var nodeValue = Element.readAttribute(node, attr);
2444
- if (nodeValue === null) continue;
2445
- if (handler(nodeValue, value)) results.push(node);
2446
- }
2447
- return results;
2448
- },
2449
-
2450
- pseudo: function(nodes, name, value, root, combinator) {
2451
- if (nodes && combinator) nodes = this[combinator](nodes);
2452
- if (!nodes) nodes = root.getElementsByTagName("*");
2453
- return Selector.pseudos[name](nodes, value, root);
2454
- }
2455
- },
2456
-
2457
- pseudos: {
2458
- 'first-child': function(nodes, value, root) {
2459
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
2460
- if (Selector.handlers.previousElementSibling(node)) continue;
2461
- results.push(node);
2462
- }
2463
- return results;
2464
- },
2465
- 'last-child': function(nodes, value, root) {
2466
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
2467
- if (Selector.handlers.nextElementSibling(node)) continue;
2468
- results.push(node);
2469
- }
2470
- return results;
2471
- },
2472
- 'only-child': function(nodes, value, root) {
2473
- var h = Selector.handlers;
2474
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2475
- if (!h.previousElementSibling(node) && !h.nextElementSibling(node))
2476
- results.push(node);
2477
- return results;
2478
- },
2479
- 'nth-child': function(nodes, formula, root) {
2480
- return Selector.pseudos.nth(nodes, formula, root);
2481
- },
2482
- 'nth-last-child': function(nodes, formula, root) {
2483
- return Selector.pseudos.nth(nodes, formula, root, true);
2484
- },
2485
- 'nth-of-type': function(nodes, formula, root) {
2486
- return Selector.pseudos.nth(nodes, formula, root, false, true);
2487
- },
2488
- 'nth-last-of-type': function(nodes, formula, root) {
2489
- return Selector.pseudos.nth(nodes, formula, root, true, true);
2490
- },
2491
- 'first-of-type': function(nodes, formula, root) {
2492
- return Selector.pseudos.nth(nodes, "1", root, false, true);
2493
- },
2494
- 'last-of-type': function(nodes, formula, root) {
2495
- return Selector.pseudos.nth(nodes, "1", root, true, true);
2496
- },
2497
- 'only-of-type': function(nodes, formula, root) {
2498
- var p = Selector.pseudos;
2499
- return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root);
2500
- },
2501
-
2502
- // handles the an+b logic
2503
- getIndices: function(a, b, total) {
2504
- if (a == 0) return b > 0 ? [b] : [];
2505
- return $R(1, total).inject([], function(memo, i) {
2506
- if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i);
2507
- return memo;
2508
- });
2509
- },
2510
-
2511
- // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type
2512
- nth: function(nodes, formula, root, reverse, ofType) {
2513
- if (nodes.length == 0) return [];
2514
- if (formula == 'even') formula = '2n+0';
2515
- if (formula == 'odd') formula = '2n+1';
2516
- var h = Selector.handlers, results = [], indexed = [], m;
2517
- h.mark(nodes);
2518
- for (var i = 0, node; node = nodes[i]; i++) {
2519
- if (!node.parentNode._counted) {
2520
- h.index(node.parentNode, reverse, ofType);
2521
- indexed.push(node.parentNode);
2522
- }
2523
- }
2524
- if (formula.match(/^\d+$/)) { // just a number
2525
- formula = Number(formula);
2526
- for (var i = 0, node; node = nodes[i]; i++)
2527
- if (node.nodeIndex == formula) results.push(node);
2528
- } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
2529
- if (m[1] == "-") m[1] = -1;
2530
- var a = m[1] ? Number(m[1]) : 1;
2531
- var b = m[2] ? Number(m[2]) : 0;
2532
- var indices = Selector.pseudos.getIndices(a, b, nodes.length);
2533
- for (var i = 0, node, l = indices.length; node = nodes[i]; i++) {
2534
- for (var j = 0; j < l; j++)
2535
- if (node.nodeIndex == indices[j]) results.push(node);
2536
- }
2537
- }
2538
- h.unmark(nodes);
2539
- h.unmark(indexed);
2540
- return results;
2541
- },
2542
-
2543
- 'empty': function(nodes, value, root) {
2544
- for (var i = 0, results = [], node; node = nodes[i]; i++) {
2545
- // IE treats comments as element nodes
2546
- if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue;
2547
- results.push(node);
2548
- }
2549
- return results;
2550
- },
2551
-
2552
- 'not': function(nodes, selector, root) {
2553
- var h = Selector.handlers, selectorType, m;
2554
- var exclusions = new Selector(selector).findElements(root);
2555
- h.mark(exclusions);
2556
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2557
- if (!node._counted) results.push(node);
2558
- h.unmark(exclusions);
2559
- return results;
2560
- },
2561
-
2562
- 'enabled': function(nodes, value, root) {
2563
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2564
- if (!node.disabled) results.push(node);
2565
- return results;
2566
- },
2567
-
2568
- 'disabled': function(nodes, value, root) {
2569
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2570
- if (node.disabled) results.push(node);
2571
- return results;
2572
- },
2573
-
2574
- 'checked': function(nodes, value, root) {
2575
- for (var i = 0, results = [], node; node = nodes[i]; i++)
2576
- if (node.checked) results.push(node);
2577
- return results;
2578
- }
2579
- },
2580
-
2581
- operators: {
2582
- '=': function(nv, v) { return nv == v; },
2583
- '!=': function(nv, v) { return nv != v; },
2584
- '^=': function(nv, v) { return nv.startsWith(v); },
2585
- '$=': function(nv, v) { return nv.endsWith(v); },
2586
- '*=': function(nv, v) { return nv.include(v); },
2587
- '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); },
2588
- '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); }
2589
- },
2590
-
2591
- matchElements: function(elements, expression) {
2592
- var matches = new Selector(expression).findElements(), h = Selector.handlers;
2593
- h.mark(matches);
2594
- for (var i = 0, results = [], element; element = elements[i]; i++)
2595
- if (element._counted) results.push(element);
2596
- h.unmark(matches);
2597
- return results;
2598
- },
2599
-
2600
- findElement: function(elements, expression, index) {
2601
- if (typeof expression == 'number') {
2602
- index = expression; expression = false;
2603
- }
2604
- return Selector.matchElements(elements, expression || '*')[index || 0];
2605
- },
2606
-
2607
- findChildElements: function(element, expressions) {
2608
- var exprs = expressions.join(','), expressions = [];
2609
- exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
2610
- expressions.push(m[1].strip());
2611
- });
2612
- var results = [], h = Selector.handlers;
2613
- for (var i = 0, l = expressions.length, selector; i < l; i++) {
2614
- selector = new Selector(expressions[i].strip());
2615
- h.concat(results, selector.findElements(element));
2616
- }
2617
- return (l > 1) ? h.unique(results) : results;
2618
- }
2619
- });
2620
-
2621
- function $$() {
2622
- return Selector.findChildElements(document, $A(arguments));
2623
- }
2624
- var Form = {
2625
- reset: function(form) {
2626
- $(form).reset();
2627
- return form;
2628
- },
2629
-
2630
- serializeElements: function(elements, getHash) {
2631
- var data = elements.inject({}, function(result, element) {
2632
- if (!element.disabled && element.name) {
2633
- var key = element.name, value = $(element).getValue();
2634
- if (value != null) {
2635
- if (key in result) {
2636
- if (result[key].constructor != Array) result[key] = [result[key]];
2637
- result[key].push(value);
2638
- }
2639
- else result[key] = value;
2640
- }
2641
- }
2642
- return result;
2643
- });
2644
-
2645
- return getHash ? data : Hash.toQueryString(data);
2646
- }
2647
- };
2648
-
2649
- Form.Methods = {
2650
- serialize: function(form, getHash) {
2651
- return Form.serializeElements(Form.getElements(form), getHash);
2652
- },
2653
-
2654
- getElements: function(form) {
2655
- return $A($(form).getElementsByTagName('*')).inject([],
2656
- function(elements, child) {
2657
- if (Form.Element.Serializers[child.tagName.toLowerCase()])
2658
- elements.push(Element.extend(child));
2659
- return elements;
2660
- }
2661
- );
2662
- },
2663
-
2664
- getInputs: function(form, typeName, name) {
2665
- form = $(form);
2666
- var inputs = form.getElementsByTagName('input');
2667
-
2668
- if (!typeName && !name) return $A(inputs).map(Element.extend);
2669
-
2670
- for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {
2671
- var input = inputs[i];
2672
- if ((typeName && input.type != typeName) || (name && input.name != name))
2673
- continue;
2674
- matchingInputs.push(Element.extend(input));
2675
- }
2676
-
2677
- return matchingInputs;
2678
- },
2679
-
2680
- disable: function(form) {
2681
- form = $(form);
2682
- Form.getElements(form).invoke('disable');
2683
- return form;
2684
- },
2685
-
2686
- enable: function(form) {
2687
- form = $(form);
2688
- Form.getElements(form).invoke('enable');
2689
- return form;
2690
- },
2691
-
2692
- findFirstElement: function(form) {
2693
- return $(form).getElements().find(function(element) {
2694
- return element.type != 'hidden' && !element.disabled &&
2695
- ['input', 'select', 'textarea'].include(element.tagName.toLowerCase());
2696
- });
2697
- },
2698
-
2699
- focusFirstElement: function(form) {
2700
- form = $(form);
2701
- form.findFirstElement().activate();
2702
- return form;
2703
- },
2704
-
2705
- request: function(form, options) {
2706
- form = $(form), options = Object.clone(options || {});
2707
-
2708
- var params = options.parameters;
2709
- options.parameters = form.serialize(true);
2710
-
2711
- if (params) {
2712
- if (typeof params == 'string') params = params.toQueryParams();
2713
- Object.extend(options.parameters, params);
2714
- }
2715
-
2716
- if (form.hasAttribute('method') && !options.method)
2717
- options.method = form.method;
2718
-
2719
- return new Ajax.Request(form.readAttribute('action'), options);
2720
- }
2721
- }
2722
-
2723
- /*--------------------------------------------------------------------------*/
2724
-
2725
- Form.Element = {
2726
- focus: function(element) {
2727
- $(element).focus();
2728
- return element;
2729
- },
2730
-
2731
- select: function(element) {
2732
- $(element).select();
2733
- return element;
2734
- }
2735
- }
2736
-
2737
- Form.Element.Methods = {
2738
- serialize: function(element) {
2739
- element = $(element);
2740
- if (!element.disabled && element.name) {
2741
- var value = element.getValue();
2742
- if (value != undefined) {
2743
- var pair = {};
2744
- pair[element.name] = value;
2745
- return Hash.toQueryString(pair);
2746
- }
2747
- }
2748
- return '';
2749
- },
2750
-
2751
- getValue: function(element) {
2752
- element = $(element);
2753
- var method = element.tagName.toLowerCase();
2754
- return Form.Element.Serializers[method](element);
2755
- },
2756
-
2757
- clear: function(element) {
2758
- $(element).value = '';
2759
- return element;
2760
- },
2761
-
2762
- present: function(element) {
2763
- return $(element).value != '';
2764
- },
2765
-
2766
- activate: function(element) {
2767
- element = $(element);
2768
- try {
2769
- element.focus();
2770
- if (element.select && (element.tagName.toLowerCase() != 'input' ||
2771
- !['button', 'reset', 'submit'].include(element.type)))
2772
- element.select();
2773
- } catch (e) {}
2774
- return element;
2775
- },
2776
-
2777
- disable: function(element) {
2778
- element = $(element);
2779
- element.blur();
2780
- element.disabled = true;
2781
- return element;
2782
- },
2783
-
2784
- enable: function(element) {
2785
- element = $(element);
2786
- element.disabled = false;
2787
- return element;
2788
- }
2789
- }
2790
-
2791
- /*--------------------------------------------------------------------------*/
2792
-
2793
- var Field = Form.Element;
2794
- var $F = Form.Element.Methods.getValue;
2795
-
2796
- /*--------------------------------------------------------------------------*/
2797
-
2798
- Form.Element.Serializers = {
2799
- input: function(element) {
2800
- switch (element.type.toLowerCase()) {
2801
- case 'checkbox':
2802
- case 'radio':
2803
- return Form.Element.Serializers.inputSelector(element);
2804
- default:
2805
- return Form.Element.Serializers.textarea(element);
2806
- }
2807
- },
2808
-
2809
- inputSelector: function(element) {
2810
- return element.checked ? element.value : null;
2811
- },
2812
-
2813
- textarea: function(element) {
2814
- return element.value;
2815
- },
2816
-
2817
- select: function(element) {
2818
- return this[element.type == 'select-one' ?
2819
- 'selectOne' : 'selectMany'](element);
2820
- },
2821
-
2822
- selectOne: function(element) {
2823
- var index = element.selectedIndex;
2824
- return index >= 0 ? this.optionValue(element.options[index]) : null;
2825
- },
2826
-
2827
- selectMany: function(element) {
2828
- var values, length = element.length;
2829
- if (!length) return null;
2830
-
2831
- for (var i = 0, values = []; i < length; i++) {
2832
- var opt = element.options[i];
2833
- if (opt.selected) values.push(this.optionValue(opt));
2834
- }
2835
- return values;
2836
- },
2837
-
2838
- optionValue: function(opt) {
2839
- // extend element because hasAttribute may not be native
2840
- return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text;
2841
- }
2842
- }
2843
-
2844
- /*--------------------------------------------------------------------------*/
2845
-
2846
- Abstract.TimedObserver = function() {}
2847
- Abstract.TimedObserver.prototype = {
2848
- initialize: function(element, frequency, callback) {
2849
- this.frequency = frequency;
2850
- this.element = $(element);
2851
- this.callback = callback;
2852
-
2853
- this.lastValue = this.getValue();
2854
- this.registerCallback();
2855
- },
2856
-
2857
- registerCallback: function() {
2858
- setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
2859
- },
2860
-
2861
- onTimerEvent: function() {
2862
- var value = this.getValue();
2863
- var changed = ('string' == typeof this.lastValue && 'string' == typeof value
2864
- ? this.lastValue != value : String(this.lastValue) != String(value));
2865
- if (changed) {
2866
- this.callback(this.element, value);
2867
- this.lastValue = value;
2868
- }
2869
- }
2870
- }
2871
-
2872
- Form.Element.Observer = Class.create();
2873
- Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
2874
- getValue: function() {
2875
- return Form.Element.getValue(this.element);
2876
- }
2877
- });
2878
-
2879
- Form.Observer = Class.create();
2880
- Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), {
2881
- getValue: function() {
2882
- return Form.serialize(this.element);
2883
- }
2884
- });
2885
-
2886
- /*--------------------------------------------------------------------------*/
2887
-
2888
- Abstract.EventObserver = function() {}
2889
- Abstract.EventObserver.prototype = {
2890
- initialize: function(element, callback) {
2891
- this.element = $(element);
2892
- this.callback = callback;
2893
-
2894
- this.lastValue = this.getValue();
2895
- if (this.element.tagName.toLowerCase() == 'form')
2896
- this.registerFormCallbacks();
2897
- else
2898
- this.registerCallback(this.element);
2899
- },
2900
-
2901
- onElementEvent: function() {
2902
- var value = this.getValue();
2903
- if (this.lastValue != value) {
2904
- this.callback(this.element, value);
2905
- this.lastValue = value;
2906
- }
2907
- },
2908
-
2909
- registerFormCallbacks: function() {
2910
- Form.getElements(this.element).each(this.registerCallback.bind(this));
2911
- },
2912
-
2913
- registerCallback: function(element) {
2914
- if (element.type) {
2915
- switch (element.type.toLowerCase()) {
2916
- case 'checkbox':
2917
- case 'radio':
2918
- Event.observe(element, 'click', this.onElementEvent.bind(this));
2919
- break;
2920
- default:
2921
- Event.observe(element, 'change', this.onElementEvent.bind(this));
2922
- break;
2923
- }
2924
- }
2925
- }
2926
- }
2927
-
2928
- Form.Element.EventObserver = Class.create();
2929
- Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
2930
- getValue: function() {
2931
- return Form.Element.getValue(this.element);
2932
- }
2933
- });
2934
-
2935
- Form.EventObserver = Class.create();
2936
- Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), {
2937
- getValue: function() {
2938
- return Form.serialize(this.element);
2939
- }
2940
- });
2941
- if (!window.Event) {
2942
- var Event = new Object();
2943
- }
2944
-
2945
- Object.extend(Event, {
2946
- KEY_BACKSPACE: 8,
2947
- KEY_TAB: 9,
2948
- KEY_RETURN: 13,
2949
- KEY_ESC: 27,
2950
- KEY_LEFT: 37,
2951
- KEY_UP: 38,
2952
- KEY_RIGHT: 39,
2953
- KEY_DOWN: 40,
2954
- KEY_DELETE: 46,
2955
- KEY_HOME: 36,
2956
- KEY_END: 35,
2957
- KEY_PAGEUP: 33,
2958
- KEY_PAGEDOWN: 34,
2959
-
2960
- element: function(event) {
2961
- return $(event.target || event.srcElement);
2962
- },
2963
-
2964
- isLeftClick: function(event) {
2965
- return (((event.which) && (event.which == 1)) ||
2966
- ((event.button) && (event.button == 1)));
2967
- },
2968
-
2969
- pointerX: function(event) {
2970
- return event.pageX || (event.clientX +
2971
- (document.documentElement.scrollLeft || document.body.scrollLeft));
2972
- },
2973
-
2974
- pointerY: function(event) {
2975
- return event.pageY || (event.clientY +
2976
- (document.documentElement.scrollTop || document.body.scrollTop));
2977
- },
2978
-
2979
- stop: function(event) {
2980
- if (event.preventDefault) {
2981
- event.preventDefault();
2982
- event.stopPropagation();
2983
- } else {
2984
- event.returnValue = false;
2985
- event.cancelBubble = true;
2986
- }
2987
- },
2988
-
2989
- // find the first node with the given tagName, starting from the
2990
- // node the event was triggered on; traverses the DOM upwards
2991
- findElement: function(event, tagName) {
2992
- var element = Event.element(event);
2993
- while (element.parentNode && (!element.tagName ||
2994
- (element.tagName.toUpperCase() != tagName.toUpperCase())))
2995
- element = element.parentNode;
2996
- return element;
2997
- },
2998
-
2999
- observers: false,
3000
-
3001
- _observeAndCache: function(element, name, observer, useCapture) {
3002
- if (!this.observers) this.observers = [];
3003
- if (element.addEventListener) {
3004
- this.observers.push([element, name, observer, useCapture]);
3005
- element.addEventListener(name, observer, useCapture);
3006
- } else if (element.attachEvent) {
3007
- this.observers.push([element, name, observer, useCapture]);
3008
- element.attachEvent('on' + name, observer);
3009
- }
3010
- },
3011
-
3012
- unloadCache: function() {
3013
- if (!Event.observers) return;
3014
- for (var i = 0, length = Event.observers.length; i < length; i++) {
3015
- Event.stopObserving.apply(this, Event.observers[i]);
3016
- Event.observers[i][0] = null;
3017
- }
3018
- Event.observers = false;
3019
- },
3020
-
3021
- observe: function(element, name, observer, useCapture) {
3022
- element = $(element);
3023
- useCapture = useCapture || false;
3024
-
3025
- if (name == 'keypress' &&
3026
- (Prototype.Browser.WebKit || element.attachEvent))
3027
- name = 'keydown';
3028
-
3029
- Event._observeAndCache(element, name, observer, useCapture);
3030
- },
3031
-
3032
- stopObserving: function(element, name, observer, useCapture) {
3033
- element = $(element);
3034
- useCapture = useCapture || false;
3035
-
3036
- if (name == 'keypress' &&
3037
- (Prototype.Browser.WebKit || element.attachEvent))
3038
- name = 'keydown';
3039
-
3040
- if (element.removeEventListener) {
3041
- element.removeEventListener(name, observer, useCapture);
3042
- } else if (element.detachEvent) {
3043
- try {
3044
- element.detachEvent('on' + name, observer);
3045
- } catch (e) {}
3046
- }
3047
- }
3048
- });
3049
-
3050
- /* prevent memory leaks in IE */
3051
- if (Prototype.Browser.IE)
3052
- Event.observe(window, 'unload', Event.unloadCache, false);
3053
- var Position = {
3054
- // set to true if needed, warning: firefox performance problems
3055
- // NOT neeeded for page scrolling, only if draggable contained in
3056
- // scrollable elements
3057
- includeScrollOffsets: false,
3058
-
3059
- // must be called before calling withinIncludingScrolloffset, every time the
3060
- // page is scrolled
3061
- prepare: function() {
3062
- this.deltaX = window.pageXOffset
3063
- || document.documentElement.scrollLeft
3064
- || document.body.scrollLeft
3065
- || 0;
3066
- this.deltaY = window.pageYOffset
3067
- || document.documentElement.scrollTop
3068
- || document.body.scrollTop
3069
- || 0;
3070
- },
3071
-
3072
- realOffset: function(element) {
3073
- var valueT = 0, valueL = 0;
3074
- do {
3075
- valueT += element.scrollTop || 0;
3076
- valueL += element.scrollLeft || 0;
3077
- element = element.parentNode;
3078
- } while (element);
3079
- return [valueL, valueT];
3080
- },
3081
-
3082
- cumulativeOffset: function(element) {
3083
- var valueT = 0, valueL = 0;
3084
- do {
3085
- valueT += element.offsetTop || 0;
3086
- valueL += element.offsetLeft || 0;
3087
- element = element.offsetParent;
3088
- } while (element);
3089
- return [valueL, valueT];
3090
- },
3091
-
3092
- positionedOffset: function(element) {
3093
- var valueT = 0, valueL = 0;
3094
- do {
3095
- valueT += element.offsetTop || 0;
3096
- valueL += element.offsetLeft || 0;
3097
- element = element.offsetParent;
3098
- if (element) {
3099
- if(element.tagName=='BODY') break;
3100
- var p = Element.getStyle(element, 'position');
3101
- if (p == 'relative' || p == 'absolute') break;
3102
- }
3103
- } while (element);
3104
- return [valueL, valueT];
3105
- },
3106
-
3107
- offsetParent: function(element) {
3108
- if (element.offsetParent) return element.offsetParent;
3109
- if (element == document.body) return element;
3110
-
3111
- while ((element = element.parentNode) && element != document.body)
3112
- if (Element.getStyle(element, 'position') != 'static')
3113
- return element;
3114
-
3115
- return document.body;
3116
- },
3117
-
3118
- // caches x/y coordinate pair to use with overlap
3119
- within: function(element, x, y) {
3120
- if (this.includeScrollOffsets)
3121
- return this.withinIncludingScrolloffsets(element, x, y);
3122
- this.xcomp = x;
3123
- this.ycomp = y;
3124
- this.offset = this.cumulativeOffset(element);
3125
-
3126
- return (y >= this.offset[1] &&
3127
- y < this.offset[1] + element.offsetHeight &&
3128
- x >= this.offset[0] &&
3129
- x < this.offset[0] + element.offsetWidth);
3130
- },
3131
-
3132
- withinIncludingScrolloffsets: function(element, x, y) {
3133
- var offsetcache = this.realOffset(element);
3134
-
3135
- this.xcomp = x + offsetcache[0] - this.deltaX;
3136
- this.ycomp = y + offsetcache[1] - this.deltaY;
3137
- this.offset = this.cumulativeOffset(element);
3138
-
3139
- return (this.ycomp >= this.offset[1] &&
3140
- this.ycomp < this.offset[1] + element.offsetHeight &&
3141
- this.xcomp >= this.offset[0] &&
3142
- this.xcomp < this.offset[0] + element.offsetWidth);
3143
- },
3144
-
3145
- // within must be called directly before
3146
- overlap: function(mode, element) {
3147
- if (!mode) return 0;
3148
- if (mode == 'vertical')
3149
- return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
3150
- element.offsetHeight;
3151
- if (mode == 'horizontal')
3152
- return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
3153
- element.offsetWidth;
3154
- },
3155
-
3156
- page: function(forElement) {
3157
- var valueT = 0, valueL = 0;
3158
-
3159
- var element = forElement;
3160
- do {
3161
- valueT += element.offsetTop || 0;
3162
- valueL += element.offsetLeft || 0;
3163
-
3164
- // Safari fix
3165
- if (element.offsetParent == document.body)
3166
- if (Element.getStyle(element,'position')=='absolute') break;
3167
-
3168
- } while (element = element.offsetParent);
3169
-
3170
- element = forElement;
3171
- do {
3172
- if (!window.opera || element.tagName=='BODY') {
3173
- valueT -= element.scrollTop || 0;
3174
- valueL -= element.scrollLeft || 0;
3175
- }
3176
- } while (element = element.parentNode);
3177
-
3178
- return [valueL, valueT];
3179
- },
3180
-
3181
- clone: function(source, target) {
3182
- var options = Object.extend({
3183
- setLeft: true,
3184
- setTop: true,
3185
- setWidth: true,
3186
- setHeight: true,
3187
- offsetTop: 0,
3188
- offsetLeft: 0
3189
- }, arguments[2] || {})
3190
-
3191
- // find page position of source
3192
- source = $(source);
3193
- var p = Position.page(source);
3194
-
3195
- // find coordinate system to use
3196
- target = $(target);
3197
- var delta = [0, 0];
3198
- var parent = null;
3199
- // delta [0,0] will do fine with position: fixed elements,
3200
- // position:absolute needs offsetParent deltas
3201
- if (Element.getStyle(target,'position') == 'absolute') {
3202
- parent = Position.offsetParent(target);
3203
- delta = Position.page(parent);
3204
- }
3205
-
3206
- // correct by body offsets (fixes Safari)
3207
- if (parent == document.body) {
3208
- delta[0] -= document.body.offsetLeft;
3209
- delta[1] -= document.body.offsetTop;
3210
- }
3211
-
3212
- // set position
3213
- if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px';
3214
- if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px';
3215
- if(options.setWidth) target.style.width = source.offsetWidth + 'px';
3216
- if(options.setHeight) target.style.height = source.offsetHeight + 'px';
3217
- },
3218
-
3219
- absolutize: function(element) {
3220
- element = $(element);
3221
- if (element.style.position == 'absolute') return;
3222
- Position.prepare();
3223
-
3224
- var offsets = Position.positionedOffset(element);
3225
- var top = offsets[1];
3226
- var left = offsets[0];
3227
- var width = element.clientWidth;
3228
- var height = element.clientHeight;
3229
-
3230
- element._originalLeft = left - parseFloat(element.style.left || 0);
3231
- element._originalTop = top - parseFloat(element.style.top || 0);
3232
- element._originalWidth = element.style.width;
3233
- element._originalHeight = element.style.height;
3234
-
3235
- element.style.position = 'absolute';
3236
- element.style.top = top + 'px';
3237
- element.style.left = left + 'px';
3238
- element.style.width = width + 'px';
3239
- element.style.height = height + 'px';
3240
- },
3241
-
3242
- relativize: function(element) {
3243
- element = $(element);
3244
- if (element.style.position == 'relative') return;
3245
- Position.prepare();
3246
-
3247
- element.style.position = 'relative';
3248
- var top = parseFloat(element.style.top || 0) - (element._originalTop || 0);
3249
- var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0);
3250
-
3251
- element.style.top = top + 'px';
3252
- element.style.left = left + 'px';
3253
- element.style.height = element._originalHeight;
3254
- element.style.width = element._originalWidth;
3255
- }
3256
- }
3257
-
3258
- // Safari returns margins on body which is incorrect if the child is absolutely
3259
- // positioned. For performance reasons, redefine Position.cumulativeOffset for
3260
- // KHTML/WebKit only.
3261
- if (Prototype.Browser.WebKit) {
3262
- Position.cumulativeOffset = function(element) {
3263
- var valueT = 0, valueL = 0;
3264
- do {
3265
- valueT += element.offsetTop || 0;
3266
- valueL += element.offsetLeft || 0;
3267
- if (element.offsetParent == document.body)
3268
- if (Element.getStyle(element, 'position') == 'absolute') break;
3269
-
3270
- element = element.offsetParent;
3271
- } while (element);
3272
-
3273
- return [valueL, valueT];
3274
- }
3275
- }
3276
-
3277
- Element.addMethods();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/adminhtml/default/default/template/mpay24/system/config/fieldset/global.phtml DELETED
@@ -1,515 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Academic Free License (AFL 3.0)
8
- * that is bundled with this package in the file LICENSE_AFL.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/afl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * DISCLAIMER
16
- *
17
- * Do not edit or add to this file if you wish to upgrade Magento to newer
18
- * versions in the future. If you wish to customize Magento for your
19
- * needs please refer to http://www.magentocommerce.com for more information.
20
- *
21
- * @category design
22
- * @package default_default
23
- * @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
24
- * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
- */
26
- ?>
27
- <?php
28
- /**
29
- * @see Mpay24_Mpay24_Block_Adminhtml_System_Config_Fieldset_Global
30
- */
31
- ?>
32
- <?php echo "<h3>mPAY24 Payment Gateway Extension Version - " . $this->getMpay24ExtensionVersion() . "</h3>"?>
33
- <?php if(Mage::getStoreConfig('payment/mpay24_sp_cc/active')):?>
34
- <table class="mpay24-selection" id="mpay24_checkout" cellspacing="0">
35
- <col width="75%" />
36
- <col width="25%" />
37
- <thead>
38
- <tr>
39
- <th><?php echo $this->escapeHtml($this->getFieldsetLabel()) ?></th>
40
- </tr>
41
- </thead>
42
- <tbody>
43
- <?php $activeMethods = array();?>
44
- <?php foreach($this->getElements() as $htmlId => $element):?>
45
-
46
- <?php if($htmlId == 'mpay24_global_mpay24_sp_active'): ?>
47
-
48
- <input id="mpay24_global_mpay24_sp_active_value" name="groups[global][fields][mpay24_sp_active][value]" value="0" type="hidden"/>
49
- <input id='mpay24_global_mpay24_sp_active' value='Select/Deselect all' class='' type='button' name='groups[global][fields][mpay24_sp_active][value]' onclick='clickAll();'/>
50
-
51
- <?php endif;?>
52
-
53
- <?php foreach(explode(',', Mage::getStoreConfig('mpay24/mpay24as/payment_methods')) as $k => $brand):?>
54
- <?php if(($brand == 'AMEX' || $brand == 'DINERS' || $brand == 'JCB' || $brand == 'VISA' || $brand == 'MASTERCARD') &&
55
- !in_array('cc', $activeMethods)): ?>
56
- <?php $paymentMethod = 'cc'?>
57
- <?php elseif(($brand == 'ATOS' || $brand == 'HOBEX-AT' || $brand == 'HOBEX-DE' || $brand == 'HOBEX-NL') &&
58
- !in_array('elv', $activeMethods)): ?>
59
- <?php $paymentMethod = 'elv'?>
60
- <?php elseif(($brand == 'ARZ' || $brand == 'ERSTE' || $brand == 'HYPO' || $brand == 'BAWAG' || $brand == 'BA' || $brand == 'RZB') &&
61
- !in_array('eps', $activeMethods)): ?>
62
- <?php $paymentMethod = 'eps'?>
63
- <?php elseif($brand == 'CASH-TICKET'): ?>
64
- <?php $paymentMethod = 'cashTicket'?>
65
- <?php elseif($brand == 'PB'): ?>
66
- <?php $paymentMethod = 'paybox'?>
67
- <?php else: ?>
68
- <?php $paymentMethod = strtolower($brand) ?>
69
- <?php endif; ?>
70
-
71
- <?php if('mpay24_global_mpay24_sp_'.$paymentMethod == $htmlId): ?>
72
- <?php $activeMethods[$paymentMethod] = $paymentMethod ?>
73
- <tr>
74
- <td>
75
- <?php if($htmlId !== 'mpay24_global_mpay24_sp_active'): ?>
76
- <label for="<?php echo $htmlId?>">
77
- <?php echo $this->getElementHtml($element) ?>
78
- <strong><?php echo $this->escapeHtml($this->getElementLabel($element))?></strong>&nbsp;<?php echo $this->escapeHtml($this->getElementComment($element))?>
79
- </label>
80
- <?php endif; ?>
81
- </td>
82
- <td class="mpay24-selection-info">
83
- </td>
84
- </tr>
85
- <?php endif; ?>
86
- <?php endforeach;?>
87
- <?php endforeach;?>
88
- </tbody>
89
- </table>
90
-
91
-
92
- <?php endif;?>
93
- <script type="text/javascript" src="../../../prototype.js"></script>
94
- <script type="text/javascript">
95
- function ajaxRequest(){
96
- var activexmodes=["Msxml2.XMLHTTP", "Microsoft.XMLHTTP"]; //activeX versions to check for in IE
97
- if (window.ActiveXObject){ //Test for support for ActiveXObject in IE first (as XMLHttpRequest in IE7 is broken)
98
- for (var i=0; i<activexmodes.length; i++){
99
- try{
100
- return new ActiveXObject(activexmodes[i]);
101
- }
102
- catch(e){
103
- alert("error: " + e);
104
- }
105
- }
106
- }
107
- else if (window.XMLHttpRequest) // if Mozilla, Safari etc
108
- return new XMLHttpRequest();
109
- else
110
- return false;
111
- }
112
-
113
- function sendRequest(url, buttonId) {
114
- var button = document.getElementById(buttonId);
115
- button.disabled = true;
116
- var mypostrequest=new ajaxRequest();
117
- mypostrequest.onreadystatechange=function(){
118
- if (mypostrequest.readyState==4){
119
- if (mypostrequest.status==200 || window.location.href.indexOf("http")==-1){
120
- alert(mypostrequest.responseText);
121
- if(mypostrequest.responseText == "The payment systems was successfully updated!")
122
- configForm.submit();
123
- //window.location.reload();
124
- }
125
- else{
126
- alert("An error has occured making the request: " + mypostrequest.responseText);
127
- return false;
128
- }
129
- button.disabled = false;
130
- }
131
- }
132
- var merchantID = document.getElementById("mpay24_mpay24as_merchantid").value;
133
- var soapPass = document.getElementById("mpay24_mpay24as_soap_pass").value;
134
- var parameters="merchantID="+merchantID+"&soapPass="+encodeURIComponent(soapPass);
135
- mypostrequest.open("POST", url, true);
136
- mypostrequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
137
- mypostrequest.send(parameters);
138
- }
139
- </script>
140
-
141
- <script type="text/javascript">
142
-
143
-
144
- clicked = true;
145
-
146
- function clickAll(){
147
-
148
- if(document.getElementById('mpay24_global_mpay24_sp_cc') && document.getElementById('mpay24_global_mpay24_sp_cc').checked == clicked)
149
- document.getElementById('mpay24_global_mpay24_sp_cc').click();
150
- if(document.getElementById('mpay24_global_mpay24_sp_elv') && document.getElementById('mpay24_global_mpay24_sp_elv').checked == clicked)
151
- document.getElementById('mpay24_global_mpay24_sp_elv').click();
152
- if(document.getElementById('mpay24_global_mpay24_sp_eps') && document.getElementById('mpay24_global_mpay24_sp_eps').checked == clicked)
153
- document.getElementById('mpay24_global_mpay24_sp_eps').click();
154
- if(document.getElementById('mpay24_global_mpay24_sp_giropay') && document.getElementById('mpay24_global_mpay24_sp_giropay').checked == clicked)
155
- document.getElementById('mpay24_global_mpay24_sp_giropay').click();
156
- if(document.getElementById('mpay24_global_mpay24_sp_maestro') && document.getElementById('mpay24_global_mpay24_sp_maestro').checked == clicked)
157
- document.getElementById('mpay24_global_mpay24_sp_maestro').click();
158
- if(document.getElementById('mpay24_global_mpay24_sp_psc') && document.getElementById('mpay24_global_mpay24_sp_psc').checked == clicked)
159
- document.getElementById('mpay24_global_mpay24_sp_psc').click();
160
- if(document.getElementById('mpay24_global_mpay24_sp_paybox') && document.getElementById('mpay24_global_mpay24_sp_paybox').checked == clicked)
161
- document.getElementById('mpay24_global_mpay24_sp_paybox').click();
162
- if(document.getElementById('mpay24_global_mpay24_sp_paypal') && document.getElementById('mpay24_global_mpay24_sp_paypal').checked == clicked)
163
- document.getElementById('mpay24_global_mpay24_sp_paypal').click();
164
- if(document.getElementById('mpay24_global_mpay24_sp_mpass') && document.getElementById('mpay24_global_mpay24_sp_mpass').checked == clicked)
165
- document.getElementById('mpay24_global_mpay24_sp_mpass').click();
166
- if(document.getElementById('mpay24_global_mpay24_sp_cashTicket') && document.getElementById('mpay24_global_mpay24_sp_cashTicket').checked == clicked)
167
- document.getElementById('mpay24_global_mpay24_sp_cashTicket').click();
168
- if(document.getElementById('mpay24_global_mpay24_sp_cb') && document.getElementById('mpay24_global_mpay24_sp_cb').checked == clicked)
169
- document.getElementById('mpay24_global_mpay24_sp_cb').click();
170
- if(clicked == false)
171
- clicked = true;
172
- else
173
- clicked = false;
174
- }
175
-
176
- Event.observe(window, 'load', function() {
177
- var pConfig = new PaypalConfig;
178
-
179
- if(document.getElementById('mpay24_global_mpay24_sp_cc'))
180
- Element.observe('mpay24_global_mpay24_sp_cc', 'click', pConfig.trackCc.bind(pConfig));
181
- if(document.getElementById('mpay24_global_mpay24_sp_elv'))
182
- Element.observe('mpay24_global_mpay24_sp_elv', 'click', pConfig.trackElv.bind(pConfig));
183
- if(document.getElementById('mpay24_global_mpay24_sp_eps'))
184
- Element.observe('mpay24_global_mpay24_sp_eps', 'click', pConfig.trackEps.bind(pConfig));
185
- if(document.getElementById('mpay24_global_mpay24_sp_giropay'))
186
- Element.observe('mpay24_global_mpay24_sp_giropay', 'click', pConfig.trackGiropay.bind(pConfig));
187
- if(document.getElementById('mpay24_global_mpay24_sp_maestro'))
188
- Element.observe('mpay24_global_mpay24_sp_maestro', 'click', pConfig.trackMaestro.bind(pConfig));
189
- if(document.getElementById('mpay24_global_mpay24_sp_psc'))
190
- Element.observe('mpay24_global_mpay24_sp_psc', 'click', pConfig.trackPsc.bind(pConfig));
191
- if(document.getElementById('mpay24_global_mpay24_sp_paybox'))
192
- Element.observe('mpay24_global_mpay24_sp_paybox', 'click', pConfig.trackPaybox.bind(pConfig));
193
- if(document.getElementById('mpay24_global_mpay24_sp_paypal'))
194
- Element.observe('mpay24_global_mpay24_sp_paypal', 'click', pConfig.trackPaypal.bind(pConfig));
195
- if(document.getElementById('mpay24_global_mpay24_sp_mpass'))
196
- Element.observe('mpay24_global_mpay24_sp_mpass', 'click', pConfig.trackMpass.bind(pConfig));
197
- if(document.getElementById('mpay24_global_mpay24_sp_cashTicket'))
198
- Element.observe('mpay24_global_mpay24_sp_cashTicket', 'click', pConfig.trackCashTicket.bind(pConfig));
199
- if(document.getElementById('mpay24_global_mpay24_sp_cb'))
200
- Element.observe('mpay24_global_mpay24_sp_cb', 'click', pConfig.trackCb.bind(pConfig));
201
-
202
- pConfig.fastMode = true;
203
-
204
- if(document.getElementById('mpay24_global_mpay24_sp_cc'))
205
- pConfig.trackCc();
206
- if(document.getElementById('mpay24_global_mpay24_sp_elv'))
207
- pConfig.trackElv();
208
- if(document.getElementById('mpay24_global_mpay24_sp_eps'))
209
- pConfig.trackEps();
210
- if(document.getElementById('mpay24_global_mpay24_sp_maestro'))
211
- pConfig.trackMaestro();
212
- if(document.getElementById('mpay24_global_mpay24_sp_paybox'))
213
- pConfig.trackPaybox();
214
- if(document.getElementById('mpay24_global_mpay24_sp_psc'))
215
- pConfig.trackPsc();
216
- if(document.getElementById('mpay24_global_mpay24_sp_giropay'))
217
- pConfig.trackGiropay();
218
- if(document.getElementById('mpay24_global_mpay24_sp_paypal'))
219
- pConfig.trackPaypal();
220
- if(document.getElementById('mpay24_global_mpay24_sp_mpass'))
221
- pConfig.trackMpass();
222
- if(document.getElementById('mpay24_global_mpay24_sp_cashTicket'))
223
- pConfig.trackCashTicket();
224
- if(document.getElementById('mpay24_global_mpay24_sp_cb'))
225
- pConfig.trackCb();
226
-
227
- pConfig.fastMode = false;
228
- pConfig.destruct();
229
- });
230
-
231
- PaypalConfig = Class.create();
232
- PaypalConfig.prototype = {
233
- initialize: function(){
234
- this.methods = $H({
235
- mpay24spcc: $H({switcher: 'mpay24_sp_cc', fieldset: 'mpay24_sp_cc'}),
236
- mpay24paypal: $H({switcher: 'mpay24_sp_paypal', fieldset: 'mpay24_sp_paypal'}),
237
- mpay24spelv: $H({switcher: 'mpay24_sp_elv', fieldset: 'mpay24_sp_elv'}),
238
- mpay24speps: $H({switcher: 'mpay24_sp_eps', fieldset: 'mpay24_sp_eps'}),
239
- mpay24spgiropay: $H({switcher: 'mpay24_sp_giropay', fieldset: 'mpay24_sp_giropay'}),
240
- mpay24spmaestro: $H({switcher: 'mpay24_sp_maestro', fieldset: 'mpay24_sp_maestro'}),
241
- mpay24sppaybox: $H({switcher: 'mpay24_sp_paybox', fieldset: 'mpay24_sp_paybox'}),
242
- mpay24sppsc: $H({switcher: 'mpay24_sp_psc', fieldset: 'mpay24_sp_psc'}),
243
- mpay24mpass: $H({switcher: 'mpay24_sp_mpass', fieldset: 'mpay24_sp_mpass'}),
244
- mpay24cashticket: $H({switcher: 'mpay24_sp_cashTicket', fieldset: 'mpay24_sp_cashTicket'}),
245
- mpay24cb: $H({switcher: 'mpay24_sp_cb', fieldset: 'mpay24_sp_cb'})
246
- });
247
-
248
- this.disabledMethods = [];
249
- },
250
-
251
- getMethods: function()
252
- {
253
- return this.methods;
254
- },
255
-
256
- getMethod: function(method)
257
- {
258
- return this.methods.get(method);
259
- },
260
-
261
- isDisabled: function(method)
262
- {
263
- return this.disabledMethods.indexOf(method) != -1;
264
- },
265
-
266
- isHidden: function(method)
267
- {
268
- if (this.getMethod(method).get('hidden')) {
269
- return true;
270
- }
271
- return false;
272
- },
273
-
274
- getMethodFieldset: function(method)
275
- {
276
- var fieldsetId = 'mpay24_' + this.getMethod(method).get('fieldset');
277
- return $(fieldsetId);
278
-
279
- },
280
-
281
- getMethodSwitcher: function(method)
282
- {
283
- var switcherId = 'mpay24_global_' + this.getMethod(method).get('switcher');
284
- return $(switcherId);
285
- },
286
-
287
- getMethodSwitcherValue: function(method)
288
- {
289
- var switcherValueId = 'mpay24_global_' + this.getMethod(method).get('switcher') + '_value';
290
- return $(switcherValueId);
291
- },
292
-
293
- getMethodSwitcherInherit: function(method)
294
- {
295
- var inheritId = 'mpay24_global_' + this.getMethod(method).get('switcher') + '_inherit';
296
- return $(inheritId);
297
- },
298
-
299
- markMethodAsReadonly: function(method, readonly)
300
- {
301
- if (readonly == undefined) {
302
- readonly = true;
303
- }
304
- if (this.isDisabled(method) && !readonly || this.isHidden(method)) {
305
- return;
306
- }
307
- if (this.fastMode) {
308
- this.getMethod(method).set('readonly', readonly);
309
- return;
310
- }
311
- var inherit = this.getMethodSwitcherInherit(method);
312
- if (inherit != undefined) {
313
- inherit.disabled = readonly;
314
- if (!inherit.disabled && inherit.checked) {
315
- readonly = true;
316
- }
317
- }
318
- this.getMethodSwitcherValue(method).value = this.getMethodSwitcher(method).checked ? '1' : '0';
319
- this.getMethodSwitcher(method).disabled = readonly;
320
- },
321
-
322
- enableMethod: function(method, readonly)
323
- {
324
- if (this.isDisabled(method) || this.isHidden(method)) {
325
- return;
326
- }
327
- readonly = (readonly == undefined ? false : readonly);
328
- if (this.fastMode) {
329
- this.getMethod(method).set('disabled', false);
330
- this.getMethod(method).set('readonly', readonly);
331
- return;
332
- }
333
- this.getMethodSwitcher(method).checked = true;
334
- this.markMethodAsReadonly(method, readonly);
335
- this.toggleFieldset(this.getMethodFieldset(method), this.getMethodSwitcher(method));
336
- },
337
-
338
- disableMethod: function(method, readonly)
339
- {
340
- if (this.isHidden(method)) {
341
- return;
342
- }
343
- readonly = (readonly == undefined ? true : readonly);
344
- if (this.fastMode) {
345
- this.getMethod(method).set('disabled', true);
346
- this.getMethod(method).set('readonly', readonly);
347
- return;
348
- }
349
- this.getMethodSwitcher(method).checked = false;
350
- this.markMethodAsReadonly(method, readonly);
351
- this.toggleFieldset(this.getMethodFieldset(method), this.getMethodSwitcher(method));
352
- },
353
-
354
- toggleMethodVisibility: function(method, isHidden)
355
- {
356
- var selection = this.getMethodSwitcher(method).up('tr');
357
- var fieldset = this.getMethodFieldset(method);
358
- var fieldsetHead = fieldset.previous('div');
359
- [selection, fieldset, fieldsetHead].each(function(e) {
360
- isHidden ? e.hide() : e.show();
361
- });
362
- // do not show fieldset for turned off methods
363
- if (!isHidden && !this.getMethodSwitcher(method).checked) {
364
- fieldset.hide();
365
- }
366
- this.getMethod(method).set('hidden', isHidden);
367
- },
368
-
369
- hideMethod: function(method)
370
- {
371
- this.toggleMethodVisibility(method, true);
372
- },
373
-
374
- showMethod: function(method)
375
- {
376
- this.toggleMethodVisibility(method, false);
377
- },
378
-
379
- trackMethod: function(method)
380
- {
381
- var switcher = this.getMethodSwitcher(method);
382
- if (!switcher.checked && this.fastMode || !this.fastMode) {
383
- this.toggleFieldset(this.getMethodFieldset(method), switcher);
384
- }
385
- this.getMethodSwitcherValue(method).value = switcher.checked ? '1' : '0';
386
- },
387
-
388
- trackCc: function()
389
- {
390
- this.trackMethod('mpay24spcc');
391
- },
392
-
393
- trackPaypal: function()
394
- {
395
- this.trackMethod('mpay24paypal');
396
- },
397
-
398
- trackElv: function()
399
- {
400
- this.trackMethod('mpay24spelv');
401
- },
402
-
403
- trackEps: function()
404
- {
405
- this.trackMethod('mpay24speps');
406
- },
407
-
408
- trackGiropay: function()
409
- {
410
- this.trackMethod('mpay24spgiropay');
411
- },
412
-
413
- trackMaestro: function()
414
- {
415
- this.trackMethod('mpay24spmaestro');
416
- },
417
-
418
- trackPaybox: function()
419
- {
420
- this.trackMethod('mpay24sppaybox');
421
- },
422
-
423
- trackPsc: function()
424
- {
425
- this.trackMethod('mpay24sppsc');
426
- },
427
-
428
- trackMpass: function()
429
- {
430
- this.trackMethod('mpay24mpass');
431
- },
432
-
433
- trackCashTicket: function()
434
- {
435
- this.trackMethod('mpay24cashticket');
436
- },
437
-
438
- trackCb: function()
439
- {
440
- this.trackMethod('mpay24cb');
441
- },
442
-
443
- enableRow: function(rowId)
444
- {
445
- $(rowId).select('input','select').each(function(e) {
446
- e.disabled = false;
447
- });
448
- $(rowId).show();
449
- },
450
-
451
- disableRow: function(rowId)
452
- {
453
- $(rowId).select('input','select').each(function(e) {
454
- e.disabled = true;
455
- });
456
- $(rowId).hide();
457
- },
458
-
459
- toggleFieldset: function(fieldset, checkbox)
460
- {
461
- var isHidden = !checkbox.checked;
462
-
463
- this.toggleValueElements(checkbox, fieldset, isHidden);
464
- isHidden ? fieldset.hide() : fieldset.show();
465
- var heading = fieldset.previous('div');
466
- var headingLink = heading.down('a');
467
- isHidden ? heading.addClassName('disabled') : heading.removeClassName('disabled');
468
- if (isHidden) {
469
- headingLink.oldHref = headingLink.href;
470
- headingLink.oldOnclick = headingLink.onclick;
471
- headingLink.onclick = "return false;";
472
- headingLink.href = "javascript:void(0)";
473
- } else {
474
- if (headingLink.oldOnclick && headingLink.oldHref) {
475
- headingLink.onclick = headingLink.oldOnclick;
476
- headingLink.href = headingLink.oldHref;
477
- }
478
- }
479
- },
480
-
481
- toggleValueElements: function(checkbox, container, checked)
482
- {
483
- var isDisabled = (checked != undefined ? checked : $(checkbox).checked);
484
- var elemInherit, currIsDisabled;
485
- $(container).select('select', 'input', 'textarea', 'button').each (function(elem) {
486
- // avoid inherit checkbox functionality rewrite
487
- currIsDisabled = isDisabled;
488
- if (!currIsDisabled) {
489
- elemInherit = $(elem.id + '_inherit');
490
- if (elemInherit != undefined && elemInherit.checked) {
491
- currIsDisabled = true;
492
- }
493
- }
494
- elem.disabled=currIsDisabled;
495
- if (currIsDisabled) {
496
- elem.addClassName('disabled');
497
- } else {
498
- elem.removeClassName('disabled');
499
- }
500
- });
501
- },
502
-
503
- destruct: function()
504
- {
505
- this.getMethods().each(function(method) {
506
- if (method.value.get('disabled') != undefined) {
507
- method.value.get('disabled') ? this.disableMethod(method.key) : this.enableMethod(method.key);
508
- }
509
- if (method.value.get('readonly') != undefined) {
510
- this.markMethodAsReadonly(method.key, method.value.get('readonly'));
511
- }
512
- }.bind(this));
513
- }
514
- }
515
- </script>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/layout/mpay24.xml CHANGED
@@ -4,9 +4,9 @@
4
  <reference name="root">
5
  <action method="setTemplate"><template>page/1column.phtml</template></action>
6
  </reference>
7
- <reference name="content">
8
- <block type="mpay24/mpay24" name="payment_redirect" template="mpay24/payment.phtml"/>
9
- </reference>
10
 
11
 
12
  <!-- reference name="head">
4
  <reference name="root">
5
  <action method="setTemplate"><template>page/1column.phtml</template></action>
6
  </reference>
7
+ <!-- <reference name="content"> -->
8
+ <!-- <block type="mpay24/mpay24" name="payment_redirect" template="mpay24/payment.phtml"/> -->
9
+ <!-- </reference> -->
10
 
11
 
12
  <!-- reference name="head">
app/design/frontend/default/default/template/mpay24/error.phtml DELETED
@@ -1,5 +0,0 @@
1
- <?php
2
-
3
- ?><div>
4
- <h2><?php echo $this->__('Payment was not successfull. Checkout was cancelled.');?></h2>
5
- <h2><?php echo $this->__('Please check your payment details and try again.');?></h2></div>
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/area.phtml ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ ?>
21
+ <?php
22
+ $_code=$this->getMethodCode();
23
+
24
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true') {
25
+ $brandsAndTypes = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payment_types'));
26
+ $brands = array();
27
+ foreach($brandsAndTypes as $brandAndType)
28
+ $brands[substr($brandAndType, 0, strpos($brandAndType, "=>"))] = substr($brandAndType, strpos($brandAndType, "=>")+2);
29
+ }
30
+ ?>
31
+ <script>
32
+ function activate(input, brand) {
33
+ if(input.parentNode.getAttribute('style') == "border-width: 1px; border-style: inset; border-color: transparent;") {
34
+ var inputs = document.getElementById('mpay24_table').getElementsByTagName('input');
35
+
36
+ for(i=0; i<inputs.length; i++) {
37
+ inputs[i].parentNode.setAttribute('style', "border-width: 1px; border-style: inset; border-color: transparent;");
38
+ inputs[i].disabled = true;
39
+ }
40
+
41
+ document.getElementById('mpay24_table').disabled = true;
42
+
43
+ input.parentNode.setAttribute('style', "border-width: 1px; border-style: inset; border-color: blue;");
44
+ document.getElementById(brand).disabled = false;
45
+
46
+ payment.save();
47
+ } else {
48
+ input.parentNode.setAttribute('style', "border-width: 1px; border-style: inset; border-color: transparent;");
49
+ document.getElementById(brand).disabled = true;
50
+ document.getElementById('mpay24_table').disabled = false;
51
+ }
52
+ }
53
+ </script>
54
+ <ul id="payment_form_<?php echo $_code ?>" style="display:none;">
55
+ <li><b>
56
+ <?php if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true')
57
+ echo Mage::helper('mpay24')->__("You can choose the payment system you want to use now or do it when you are redirected to the mPAY24 pay page after placing the order.");
58
+ else
59
+ echo Mage::helper('mpay24')->__("You can choose the payment system you want to use after you are redirected to the mPAY24 pay page after placing the order.");
60
+ ?>
61
+ </b></li>
62
+
63
+ <?php if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true'):?>
64
+
65
+ <li>
66
+ <table style="padding:10px 15px 15px;">
67
+ <tr>
68
+ <td height="1" colspan="3"></td>
69
+ <td height="1" bgcolor="#b3b3b3"></td>
70
+ <td height="1" colspan="3"></td>
71
+ </tr>
72
+ <tr>
73
+ <td height="1" colspan="2"></td>
74
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
75
+ <td height="1" bgcolor="#ffffff"></td>
76
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
77
+ <td height="1" colspan="2"></td>
78
+ </tr>
79
+ <tr>
80
+ <td height="2" width="1"></td>
81
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
82
+ <td height="2" colspan="3" bgcolor="#ffffff"></td>
83
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
84
+ <td height="2" width="1"></td>
85
+ </tr>
86
+ <tr>
87
+ <td width="1" bgcolor="#b3b3b3"></td>
88
+ <td width="3" colspan="2" bgcolor="#ffffff"></td>
89
+ <td bgcolor="#ffffff">
90
+ <table id='mpay24_table' style="width: 100%;">
91
+ <colgroup>
92
+ <col width="70%">
93
+ <col width="30%">
94
+ </colgroup>
95
+ <tr>
96
+ <td colspan="2">
97
+ <div style="width: 500px;"><!-- 248 -->
98
+ <?php foreach ($this->getActiveMethods() as $brand => $description): ?>
99
+ <div style="border:5px solid transparent; float:left;">
100
+ <div style="border-width: 1px; border-style: inset; border-color: transparent;">
101
+ <a href="#" onclick="activate(this, '<?php echo $brand;?>')"><img src='https://www.mpay24.com/web/img/logos/brands/small/<?php echo $brand?>.png' alt='<?php echo $description?>' title='<?php echo $description?>' ></a>
102
+ <input type="hidden" id='<?php echo $brand;?>' name='mpay24_ps' value='<?php echo "mpay24_ps_" . $brand . "_" . $brands[$brand]; ?>' disabled />
103
+ </div>
104
+ </div>
105
+ <?php endforeach; ?>
106
+ <input type="hidden" id='mpay24_all' name='mpay24_ps' value='false' />
107
+ </div>
108
+ </td>
109
+ </tr>
110
+ <tr>
111
+ <td colspan="2">
112
+ <div style="padding-bottom: 2px; border-top: 1px solid #b3b3b3"></div>
113
+ </td>
114
+ </tr>
115
+ <tr>
116
+ <td></td>
117
+ <td>
118
+ <img style="float:right" src="https://www.mpay24.com/web/img/logos/payment-mpay24.png" alt="mPAY24" title="mPAY24" width="40%" height="40%">
119
+ </td>
120
+ </tr>
121
+ </table>
122
+ </td>
123
+ <td width="3" colspan="2" bgcolor="#ffffff"></td>
124
+ <td width="1" bgcolor="#b3b3b3"></td>
125
+ </tr>
126
+ <tr>
127
+ <td height="2" width="1"></td>
128
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
129
+ <td height="2" colspan="3" bgcolor="#ffffff"></td>
130
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
131
+ <td height="2" width="1"></td>
132
+ </tr>
133
+ <tr>
134
+ <td height="1" colspan="2"></td>
135
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
136
+ <td height="1" bgcolor="#ffffff"></td>
137
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
138
+ <td height="1" colspan="2"></td>
139
+ </tr>
140
+ <tr>
141
+ <td height="1" colspan="3"></td>
142
+ <td height="1" bgcolor="#b3b3b3"></td>
143
+ <td height="1" colspan="3"></td>
144
+ </tr>
145
+ </table>
146
+ </li>
147
+ <?php endif;?>
148
+ </ul>
app/design/frontend/default/default/template/mpay24/form/cc.phtml DELETED
@@ -1,94 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- /* JCB
21
- * 'JC', [new RegExp('^(35[0-9]{14}|(2131|1800)[0-9]{11})$'), new RegExp('^([0-9]{3})?$'), true]);
22
- * 'JC', [new RegExp('(^3[0-9]{15}$)|(^(2131|1800)[0-9]{11}$)'), new RegExp('^[0-9]{4}$'), true]
23
- * Diners Club
24
- * 'DC', [new RegExp('^3(?:0[0-5]|[68][0-9])[0-9]{11}$'), new RegExp('^[0-9]{3}$'), true]
25
- *
26
- *
27
- * # 6725/6726 - Maestro debit cards (Germany)
28
- * # 6759 - Maestro (formerly Switch) debit cards
29
- */
30
- ?>
31
- <fieldset class="form-list">
32
- <?php $_code=$this->getMethodCode() ?>
33
- <script type="text/javascript">
34
- Validation.creditCartTypes.set('JC', [new RegExp('(^3[0-9]{15}$)|(^(2131|1800)[0-9]{11}$)'), new RegExp('^[0-9]{4}$'), true]);
35
- Validation.creditCartTypes.set('DC', [new RegExp('^3(?:0[0-5]|[68][0-9])[0-9]{11}$'), new RegExp('^[0-9]{3}$'), true]);
36
- </script>
37
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
38
- <!--li>
39
- <div class="input-box">
40
- <label for="<?php echo $_code ?>_cc_owner"><?php echo $this->__('Name on Card') ?> <span class="required">*</span></label><br/>
41
- <input type="text" title="<?php echo $this->__('Name on Card') ?>" class="required-entry input-text" id="<?php echo $_code ?>_cc_owner" name="payment[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
42
- </div>
43
- </li-->
44
- <li>
45
- <div class="input-box">
46
- <label for="<?php echo $_code ?>_cc_type"><?php echo $this->__('Credit Card Type') ?> <span class="required">*</span></label><br />
47
- <select id="<?php echo $_code ?>_cc_type" name="payment[cc_type]" class="required-entry validate-cc-type-select">
48
- <option value=""><?php echo $this->__('--Please Select--')?></option>
49
- <?php $_ccType = $this->getInfoData('cc_type') ?>
50
- <?php foreach ($this->getCcAvailableTypes() as $_typeCode => $_typeName): ?>
51
- <option value="<?php echo $_typeCode ?>"<?php if($_typeCode==$_ccType): ?> selected="selected"<?php endif ?>><?php echo $_typeName ?></option>
52
- <?php endforeach ?>
53
- </select>
54
- </div>
55
- </li>
56
- <li>
57
- <div class="input-box">
58
- <label for="<?php echo $_code ?>_cc_number"><?php echo $this->__('Credit Card Number') ?> <span class="required">*</span></label><br/>
59
- <input type="text" id="<?php echo $_code ?>_cc_number" name="payment[cc_number]" title="<?php echo $this->__('Credit Card Number') ?>" class="input-text validate-cc-number validate-cc-type" value="" />
60
- </div>
61
- </li>
62
- <li>
63
- <div class="input-box">
64
- <label for="<?php echo $_code ?>_expiration"><?php echo $this->__('Expiration Date') ?> <span class="required">*</span></label><br />
65
- <div class="v-fix">
66
- <select id="<?php echo $_code ?>_expiration" style="width:140px;" name="payment[cc_exp_month]" class="required-entry">
67
- <?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
68
- <?php foreach ($this->getCcMonths() as $k=>$v): ?>
69
- <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
70
- <?php endforeach ?>
71
- </select>
72
- </div>
73
- <div class="v-fix" style="padding-left:5px;">
74
- <?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
75
- <select id="<?php echo $_code ?>_expiration_yr" style="width:103px;" name="payment[cc_exp_year]" class="required-entry">
76
- <?php foreach ($this->getCcYears() as $k=>$v): ?>
77
- <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
78
- <?php endforeach ?>
79
- </select>
80
- </div>
81
- </div>
82
- </li>
83
- <?php if($this->hasVerification()): ?>
84
- <li>
85
- <div class="input-box">
86
- <label for="<?php echo $_code ?>_cc_cid"><?php echo $this->__('Card Verification Number') ?> <span class="required">*</span></label><br />
87
- <div class="v-fix"><input type="text" title="<?php echo $this->__('Card Verification Number') ?>" class="required-entry input-text validate-cc-cvn" id="<?php echo $_code ?>_cc_cid" name="payment[cc_cid]" style="width:3em;" value="" /></div>
88
- &nbsp;
89
- <a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
90
- </div>
91
- </li>
92
- <?php endif; ?>
93
- </ul>
94
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/dropDown.phtml ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * @category Mpay24
16
+ * @package Mpay24_Mpay24
17
+ * @author Filipp Akinfiev
18
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
+ */
20
+ ?>
21
+ <?php
22
+ $_code=$this->getMethodCode();
23
+
24
+ if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true') {
25
+ $brandsAndTypes = explode(", ", Mage::getStoreConfig('mpay24/mpay24/active_payment_types'));
26
+ $brands = array();
27
+ foreach($brandsAndTypes as $brandAndType)
28
+ $brands[substr($brandAndType, 0, strpos($brandAndType, "=>"))] = substr($brandAndType, strpos($brandAndType, "=>")+2);
29
+
30
+ $temp_brand="";
31
+ }
32
+ ?>
33
+ <script type="text/javascript">
34
+ window.onload = function() {
35
+ var eSelect = document.getElementById('mpay24_ps');
36
+ var mpay24PsImg = document.getElementById('mpay24_img');
37
+ eSelect.onchange = function() {
38
+ if(eSelect.value != "false") {
39
+ mpay24PsImg.style.display = 'block';
40
+ } else {
41
+ mpay24PsImg.style.display = 'none';
42
+ }
43
+ }
44
+ }
45
+ </script>
46
+ <ul id="payment_form_<?php echo $_code ?>" style="display:none;">
47
+ <li><b>
48
+ <?php if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true')
49
+ echo Mage::helper('mpay24')->__("You can choose the payment system you want to use now or do it when you are redirected to the mPAY24 pay page after placing the order.");
50
+ else
51
+ echo Mage::helper('mpay24')->__("You can choose the payment system you want to use after you are redirected to the mPAY24 pay page after placing the order.");
52
+ ?>
53
+ </b></li>
54
+ <?php if(Mage::getStoreConfig('mpay24/mpay24/payments_active') == 'true'):?>
55
+
56
+ <li>
57
+ <div id="myDIV" style="min-height:100px; padding:10px 15px 15px;">
58
+
59
+ <table>
60
+ <tr>
61
+ <td height="1" colspan="3"></td>
62
+ <td height="1" bgcolor="#b3b3b3"></td>
63
+ <td height="1" colspan="3"></td>
64
+ </tr>
65
+ <tr>
66
+ <td height="1" colspan="2"></td>
67
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
68
+ <td height="1" bgcolor="#ffffff"></td>
69
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
70
+ <td height="1" colspan="2"></td>
71
+ </tr>
72
+ <tr>
73
+ <td height="2" width="1"></td>
74
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
75
+ <td height="2" colspan="3" bgcolor="#ffffff"></td>
76
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
77
+ <td height="2" width="1"></td>
78
+ </tr>
79
+ <tr>
80
+ <td width="1" bgcolor="#b3b3b3"></td>
81
+ <td width="3" colspan="2" bgcolor="#ffffff"></td>
82
+ <td bgcolor="#ffffff">
83
+ <table id='mpay24_table' style="width: 100%;">
84
+ <colgroup>
85
+ <col width="70%">
86
+ <col width="30%">
87
+ </colgroup>
88
+ <tr>
89
+ <td>
90
+ <select id="mpay24_ps" name="mpay24_ps" style="margin-top: 20px; margin-bottom:20px; width: 256px" title="mPAY24 <?php echo Mage::helper('mpay24')->__("Payment method");?>" onchange="document.getElementById('mpay24_img').style.display = (this.selectedIndex != 0) ? 'block' : 'none';
91
+ document.getElementById('mpay24_img').src='https://www.mpay24.com/app/checkout/img/brands/'+this.options[this.selectedIndex].value.substring(10, this.options[this.selectedIndex].value.indexOf('_', 10))+'.gif';
92
+ document.getElementById('mpay24_img').alt=this.options[this.selectedIndex].value.substring(10, this.options[this.selectedIndex].value.indexOf('_', 10));
93
+ document.getElementById('mpay24_img').title=this.options[this.selectedIndex].text;">
94
+ <option value="false">mPAY24 (<?php echo Mage::helper('mpay24')->__("All payment methods") ?>)</option>
95
+ <?php foreach ($this->getActiveMethods() as $brand => $description):
96
+ $changed = false;
97
+ if($temp_brand == "" || $temp_brand != $brands[$brand]) {
98
+ if($temp_brand == "")
99
+ echo "</optgroup>";
100
+ $temp_brand = $brands[$brand];
101
+ echo "<optgroup label='$temp_brand'>";
102
+ }
103
+ ?>
104
+
105
+ <option value="<?php echo "mpay24_ps_" . $brand . "_" . $brands[$brand]; ?>"><?php echo $description?></option>
106
+ <?php endforeach; ?>
107
+ </select>
108
+ </td>
109
+ <td>
110
+ <img id="mpay24_img" src='https://www.mpay24.com/app/checkout/img/brands/[brand].gif' alt='Description' title='Description' style="display: none; margin-top: 19px; margin-bottom: 19px;">
111
+ </td>
112
+ </tr>
113
+ <tr>
114
+ <td colspan="2">
115
+ <div style="padding-bottom: 2px; border-top: 1px solid #b3b3b3"></div>
116
+ </td>
117
+ </tr>
118
+ <tr>
119
+ <td></td>
120
+ <td>
121
+ <img style="float:right" src="https://www.mpay24.com/web/img/logos/payment-mpay24.png" alt="mPAY24" title="mPAY24" width="40%" height="40%">
122
+ </td>
123
+ </tr>
124
+ </table>
125
+ </td>
126
+ <td width="3" colspan="2" bgcolor="#ffffff"></td>
127
+ <td width="1" bgcolor="#b3b3b3"></td>
128
+ </tr>
129
+ <tr>
130
+ <td height="2" width="1"></td>
131
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
132
+ <td height="2" colspan="3" bgcolor="#ffffff"></td>
133
+ <td height="2" width="1" bgcolor="#b3b3b3"></td>
134
+ <td height="2" width="1"></td>
135
+ </tr>
136
+ <tr>
137
+ <td height="1" colspan="2"></td>
138
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
139
+ <td height="1" bgcolor="#ffffff"></td>
140
+ <td height="1" width="2" bgcolor="#b3b3b3"></td>
141
+ <td height="1" colspan="2"></td>
142
+ </tr>
143
+ <tr>
144
+ <td height="1" colspan="3"></td>
145
+ <td height="1" bgcolor="#b3b3b3"></td>
146
+ <td height="1" colspan="3"></td>
147
+ </tr>
148
+ </table>
149
+ </div>
150
+ </li>
151
+ <?php endif;?>
152
+ </ul>
app/design/frontend/default/default/template/mpay24/form/elv.phtml DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <div class="input-box">
26
- <label for="<?php echo $_code?>_bank_code"><?php echo $this->__('Holder')?> <span class="required">*</span></label><br/>
27
- <input type="text" title="<?php echo $this->__('Holder')?>" class="required-entry input-text" id="<?php echo $_code?>_holder" name="payment[mpay_holder]" value="<?php echo $this->getInfoData('mpay_holder')?>"/>
28
- </div>
29
- </li>
30
- <li>
31
- <div class="input-box">
32
- <label for="<?php echo $_code?>_account_number"><?php echo $this->__('Account number')?> <span class="required">*</span></label><br/>
33
- <input type="text" title="<?php echo $this->__('Account number')?>" class="required-entry input-text" id="<?php echo $_code?>_account_number" name="payment[mpay_account_number]" value="<?php echo $this->getInfoData('mpay_account_number')?>"/>
34
- </div>
35
- </li>
36
- <li>
37
- <div class="input-box">
38
- <label for="<?php echo $_code?>_bank_code"><?php echo $this->__('Bank code')?> <span class="required">*</span></label><br/>
39
- <input type="text" title="<?php echo $this->__('Bank code')?>" class="required-entry input-text" id="<?php echo $_code?>_bank_code" name="payment[mpay_bank_code]" value="<?php echo $this->getInfoData('mpay_bank_code')?>"/>
40
- </div>
41
- </li>
42
- <li>
43
- <div class="input-box">
44
- <label for="<?php echo $_code?>_bank_code"><?php echo $this->__('AGB Hobex AG')?> <span class="required">*</span></label><br/>
45
- <input type="checkbox" title="<?php echo $this->__('AGB Hobex AG')?>" class="required-entry" value=1 />
46
- </div>
47
- </li>
48
- <li>
49
- <textarea rows="5" cols="60" readonly="readonly"><?php echo $this->__('AGB HOBEX')?></textarea>
50
- </li>
51
- </ul>
52
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/giropay.phtml DELETED
@@ -1,43 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <div class="input-box">
26
- <label for="<?php echo $_code?>_bank_code"><?php echo $this->__('Holder')?> <span class="required">*</span></label><br/>
27
- <input type="text" title="<?php echo $this->__('Holder')?>" class="required-entry input-text" id="<?php echo $_code?>_holder" name="payment[mpay_holder]" value="<?php echo $this->getInfoData('mpay_holder')?>"/>
28
- </div>
29
- </li>
30
- <li>
31
- <div class="input-box">
32
- <label for="<?php echo $_code?>_account_number"><?php echo $this->__('Account number')?> <span class="required">*</span></label><br/>
33
- <input type="text" title="<?php echo $this->__('Account number')?>" class="required-entry input-text" id="<?php echo $_code?>_account_number" name="payment[mpay_account_number]" value="<?php echo $this->getInfoData('mpay_account_number')?>"/>
34
- </div>
35
- </li>
36
- <li>
37
- <div class="input-box">
38
- <label for="<?php echo $_code?>_bank_code"><?php echo $this->__('Bank code')?> <span class="required">*</span></label><br/>
39
- <input type="text" title="<?php echo $this->__('Bank code')?>" class="required-entry input-text" id="<?php echo $_code?>_bank_code" name="payment[mpay_bank_code]" value="<?php echo $this->getInfoData('mpay_bank_code')?>"/>
40
- </div>
41
- </li>
42
- </ul>
43
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/mia.phtml DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
-
24
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
25
- <li>
26
- <div class="input-box">
27
- <label for="<?php echo $_code?>_mia_account_number"><?php echo $this->__('MIA Number')?> <span class="required">*</span></label><br/>
28
- </div>
29
- </li>
30
- <li>
31
- <div class="input-box">
32
- <div class="v-fix">
33
- <select id="<?php echo $_code ?>_mia_country_code" name="payment[mpay_mia_country_code]" class="required-entry" style="width: 50px;">
34
- <option value="43">+43</option>
35
- </select>
36
- </div>
37
- <div class="v-fix" style="padding-left:5px;">
38
- <select id="<?php echo $_code ?>_mia_area_code" name="payment[mpay_mia_area_code]" class="required-entry" style="width: 50px;">
39
- <option value=""><?php echo $this->__('----')?></option>
40
- <?php $_areaCode = $this->getInfoData('mpay_mia_area_code') ?>
41
- <?php foreach ($this->getMiaAvailableAreaCodes() as $_typeCode => $_typeName): ?>
42
- <option value="<?php echo $_typeCode ?>"<?php if($_typeCode==$_areaCode): ?> selected="selected"<?php endif ?>><?php echo $_typeName ?></option>
43
- <?php endforeach ?>
44
- </select>
45
- </div>
46
- <div class="v-fix" style="padding-left:5px;">
47
- <input type="text" title="<?php echo $this->__('MIA Number')?>" class="required-entry input-text" id="<?php echo $_code?>_mia_account_number" name="payment[mpay_mia_number]" value="<?php echo $this->getInfoData('mpay_mia_number')?>" style="width: 150px;"/>
48
- </div>
49
- </div>
50
- </li>
51
- </ul>
52
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/paybox.phtml DELETED
@@ -1,52 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
-
24
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
25
- <li>
26
- <div class="input-box">
27
- <label for="<?php echo $_code?>_pb_account_number"><?php echo $this->__('Paybox Number')?> <span class="required">*</span></label><br/>
28
- </div>
29
- </li>
30
- <li>
31
- <div class="input-box">
32
- <div class="v-fix">
33
- <select id="<?php echo $_code ?>_pb_country_code" name="payment[mpay_pb_country_code]" class="required-entry" style="width: 50px;">
34
- <option value="43">+43</option>
35
- </select>
36
- </div>
37
- <div class="v-fix" style="padding-left:5px;">
38
- <select id="<?php echo $_code ?>_pb_area_code" name="payment[mpay_pb_area_code]" class="required-entry" style="width: 50px;">
39
- <option value=""><?php echo $this->__('----')?></option>
40
- <?php $_areaCode = $this->getInfoData('mpay_pb_area_code') ?>
41
- <?php foreach ($this->getPayboxAvailableAreaCodes() as $_typeCode => $_typeName): ?>
42
- <option value="<?php echo $_typeCode ?>"<?php if($_typeCode==$_areaCode): ?> selected="selected"<?php endif ?>><?php echo $_typeName ?></option>
43
- <?php endforeach ?>
44
- </select>
45
- </div>
46
- <div class="v-fix" style="padding-left:5px;">
47
- <input type="text" title="<?php echo $this->__('Paybox Number')?>" class="required-entry input-text" id="<?php echo $_code?>_pb_account_number" name="payment[mpay_pb_number]" value="<?php echo $this->getInfoData('mpay_pb_number')?>" style="width: 150px;"/>
48
- </div>
49
- </div>
50
- </li>
51
- </ul>
52
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/paysafecard.phtml DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- </ul>
28
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpayment.phtml DELETED
@@ -1,28 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- </ul>
28
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentCashTicket.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="CASH_TICKET" src="<?php echo $this->getSkinUrl('images/mpay24/cashTicket.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentCc.phtml DELETED
@@ -1,123 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <?php $_code=$this->getMethodCode() ?>
22
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
23
- <li>
24
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
25
- </li>
26
- </ul>
27
- <div style="padding:10px 15px 15px;">
28
- <table cellpadding="0" cellspacing="0" border="0">
29
- <tr>
30
- <td height="1" colspan="3"></td>
31
- <td height="1" bgcolor="#b3b3b3"></td>
32
- <td height="1" colspan="3"></td>
33
- </tr>
34
- <tr>
35
- <td height="1" colspan="2"></td>
36
- <td height="1" width="2" bgcolor="#b3b3b3"></td>
37
- <td height="1" bgcolor="#ffffff"></td>
38
- <td height="1" width="2" bgcolor="#b3b3b3"></td>
39
- <td height="1" colspan="2"></td>
40
- </tr>
41
- <tr>
42
- <td height="2" width="1"></td>
43
- <td height="2" width="1" bgcolor="#b3b3b3"></td>
44
- <td height="2" colspan="3" bgcolor="#ffffff"></td>
45
- <td height="2" width="1" bgcolor="#b3b3b3"></td>
46
- <td height="2" width="1"></td>
47
- </tr>
48
- <tr>
49
- <td width="1" bgcolor="#b3b3b3"></td>
50
- <td width="3" colspan="2" bgcolor="#ffffff"></td>
51
- <td bgcolor="#ffffff">
52
- <table>
53
- <tr>
54
- <td colspan="2">
55
- <div style="width: 248px;">
56
- <?php $hobex = false;?>
57
- <?php foreach ($this->getActiveMethods() as $_method): ?>
58
- <?php if($_method === 'PAYBOX'): ?>
59
- <div style="border:5px solid transparent; float:left;">
60
- <img src="<?php echo $this->getSkinUrl('images/mpay24/PB.gif')?>" hspace="2" vspace="2" alt="paybox">
61
- </div>
62
- <?php elseif($_method === 'MC'): ?>
63
- <div style="border:5px solid transparent; float:left;">
64
- <img src="<?php echo $this->getSkinUrl('images/mpay24/MASTERCARD.gif')?>" hspace="2" vspace="2" alt="MASTERCARD">
65
- </div>
66
- <?php elseif($_method === 'VI'): ?>
67
- <div style="border:5px solid transparent; float:left;">
68
- <img src="<?php echo $this->getSkinUrl('images/mpay24/VISA.gif')?>" hspace="2" vspace="2" alt="VISA">
69
- </div>
70
- <?php elseif(strstr($_method, 'HOBEX')): ?>
71
- <?php if($hobex === false):?>
72
- <?php $hobex = true;?>
73
- <div style="border:5px solid transparent; float:left;">
74
- <img src="<?php echo $this->getSkinUrl('images/mpay24/'.$_method.'.gif')?>" hspace="2" vspace="2" alt="<?php $_method ?>">
75
- </div>
76
- <?php endif; ?>
77
- <?php else: ?>
78
- <div style="border:5px solid transparent; float:left;">
79
- <img src="<?php echo $this->getSkinUrl('images/mpay24/'.$_method.'.gif')?>" hspace="2" vspace="2" alt="<?php $_method ?>">
80
- </div>
81
- <?php endif; ?>
82
- <?php endforeach; ?>
83
- </div>
84
- </td>
85
- </tr>
86
- <tr>
87
- <td colspan="3">
88
- <div style="padding-bottom: 2px; border-top: 1px solid #b3b3b3"></div>
89
- </td>
90
- </tr>
91
- <tr>
92
- <td></td>
93
- <td></td>
94
- <td>
95
- <img src="<?php echo $this->getSkinUrl('images/mpay24/mpay24_section.png')?>" alt="mPAY24">
96
- </td>
97
- </tr>
98
- </table>
99
- </td>
100
- <td width="3" colspan="2" bgcolor="#ffffff"></td>
101
- <td width="1" bgcolor="#b3b3b3"></td>
102
- </tr>
103
- <tr>
104
- <td height="2" width="1"></td>
105
- <td height="2" width="1" bgcolor="#b3b3b3"></td>
106
- <td height="2" colspan="3" bgcolor="#ffffff"></td>
107
- <td height="2" width="1" bgcolor="#b3b3b3"></td>
108
- <td height="2" width="1"></td>
109
- </tr>
110
- <tr>
111
- <td height="1" colspan="2"></td>
112
- <td height="1" width="2" bgcolor="#b3b3b3"></td>
113
- <td height="1" bgcolor="#ffffff"></td>
114
- <td height="1" width="2" bgcolor="#b3b3b3"></td>
115
- <td height="1" colspan="2"></td>
116
- </tr>
117
- <tr>
118
- <td height="1" colspan="3"></td>
119
- <td height="1" bgcolor="#b3b3b3"></td>
120
- <td height="1" colspan="3"></td>
121
- </tr>
122
- </table>
123
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentElv.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="HOBEX" src="<?php echo $this->getSkinUrl('images/mpay24/hobex.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentEps.phtml DELETED
@@ -1,34 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <?php foreach ($this->getBrands() as $brand):?>
29
- <img alt="<?php echo $brand ?>" src="<?php echo $this->getSkinUrl('images/mpay24/'.strtolower($brand).'.png')?>"/>
30
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
31
- <?php endforeach;?>
32
- </li>
33
- </ul>
34
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentGiropay.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="GIROPAY" src="<?php echo $this->getSkinUrl('images/mpay24/giropay.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentMaestro.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="maestro" src="<?php echo $this->getSkinUrl('images/mpay24/maestro.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentMia.phtml DELETED
@@ -1,33 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <?php foreach ($this->getBrands() as $brand):?>
29
- <img alt="<?php echo $brand ?>" src="<?php echo $this->getSkinUrl('images/mpay24/'.strtolower($brand).'.png')?>"/>
30
- <?php endforeach;?>
31
- </li>
32
- </ul>
33
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentMpass.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="MPASS" src="<?php echo $this->getSkinUrl('images/mpay24/mpass.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentPaybox.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="paybox" src="<?php echo $this->getSkinUrl('images/mpay24/pb.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentPaypal.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled with this package in the file LICENSE.txt.
9
- * It is also available through the world-wide-web at this URL:
10
- * http://opensource.org/licenses/osl-3.0.php
11
- * If you did not receive a copy of the license and are unable to
12
- * obtain it through the world-wide-web, please send an email
13
- * to license@magentocommerce.com so we can send you a copy immediately.
14
- *
15
- * @category Mpay24
16
- * @package Mpay24_Mpay24
17
- * @author Filipp Akinfiev
18
- * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
19
- */
20
- ?>
21
- <fieldset class="form-list">
22
- <?php $_code=$this->getMethodCode() ?>
23
- <ul id="payment_form_<?php echo $_code ?>" style="display:none">
24
- <li>
25
- <?php echo $this->__('You will be redirected to our secure payment page when you place an order.') ?>
26
- </li>
27
- <li>
28
- <img alt="PAYPAL" src="<?php echo $this->getSkinUrl('images/mpay24/paypal.png')?>"/>
29
- </li>
30
- </ul>
31
- </fieldset>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/default/default/template/mpay24/form/selectpaymentPsc.phtml DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
- /**
3
- * Magento
4
- *
5
- * NOTICE OF LICENSE
6
- *
7
- * This source file is subject to the Open Software License (OSL 3.0)
8
- * that is bundled wi