Paymill_Paymill - Version 4.0.0

Version Notes

* Integration of PayFrame to enable use of SAQ A for easier PCI DSS 3.0 compliance.

Download this release

Release Info

Developer PayIntelligent
Extension Paymill_Paymill
Version 4.0.0
Comparing to
See all releases


Code changes from version 3.9.2 to 4.0.0

Files changed (39) hide show
  1. app/code/community/Paymill/Paymill/Block/Payment/Form/PaymentFormAbstract.php +4 -3
  2. app/code/community/Paymill/Paymill/Block/Payment/Form/PaymentFormCreditcard.php +5 -2
  3. app/code/community/Paymill/Paymill/Helper/OptionHelper.php +9 -0
  4. app/code/community/Paymill/Paymill/Model/Method/MethodModelAbstract.php +1 -1
  5. app/code/community/Paymill/Paymill/Model/Source/Creditcard/Pci.php +41 -0
  6. app/code/community/Paymill/Paymill/etc/config.xml +1 -1
  7. app/code/community/Paymill/Paymill/etc/system.xml +12 -3
  8. app/design/frontend/base/default/layout/paymill.xml +1 -1
  9. app/design/frontend/base/default/template/paymill/payment/form/creditcard.phtml +2 -1
  10. app/design/frontend/base/default/template/paymill/payment/form/creditcard_form.phtml +73 -0
  11. app/design/frontend/base/default/template/paymill/payment/form/directdebit.phtml +1 -1
  12. app/locale/de_AT/Paymill_Paymill.csv +6 -1
  13. app/locale/de_CH/Paymill_Paymill.csv +6 -1
  14. app/locale/de_DE/Paymill_Paymill.csv +6 -1
  15. app/locale/en_AU/Paymill_Paymill.csv +6 -1
  16. app/locale/en_CA/Paymill_Paymill.csv +6 -1
  17. app/locale/en_GB/Paymill_Paymill.csv +6 -1
  18. app/locale/en_IE/Paymill_Paymill.csv +6 -1
  19. app/locale/en_NZ/Paymill_Paymill.csv +6 -1
  20. app/locale/en_US/Paymill_Paymill.csv +6 -1
  21. app/locale/en_ZA/Paymill_Paymill.csv +6 -1
  22. app/locale/es_AR/Paymill_Paymill.csv +6 -1
  23. app/locale/es_CL/Paymill_Paymill.csv +6 -1
  24. app/locale/es_CO/Paymill_Paymill.csv +6 -1
  25. app/locale/es_CR/Paymill_Paymill.csv +6 -1
  26. app/locale/es_ES/Paymill_Paymill.csv +6 -1
  27. app/locale/es_MX/Paymill_Paymill.csv +6 -1
  28. app/locale/es_PE/Paymill_Paymill.csv +6 -1
  29. app/locale/es_VE/Paymill_Paymill.csv +6 -1
  30. app/locale/fr_CA/Paymill_Paymill.csv +6 -1
  31. app/locale/fr_FR/Paymill_Paymill.csv +6 -1
  32. app/locale/it_CH/Paymill_Paymill.csv +6 -1
  33. app/locale/it_IT/Paymill_Paymill.csv +6 -1
  34. app/locale/pt_BR/Paymill_Paymill.csv +6 -1
  35. app/locale/pt_PT/Paymill_Paymill.csv +6 -1
  36. js/paymill/Creditcard.js +30 -1
  37. js/paymill/Paymill.js +88 -24
  38. js/paymill/paymentForm.js +697 -0
  39. package.xml +5 -5
app/code/community/Paymill/Paymill/Block/Payment/Form/PaymentFormAbstract.php CHANGED
@@ -37,12 +37,13 @@ class Paymill_Paymill_Block_Payment_Form_PaymentFormAbstract extends Mage_Paymen
37
  }
38
 
39
  /**
40
- * Returns a boolean deciding if the template is going to be displayed of not
41
  * @param String $code payment code
42
  * @return boolean
43
  */
44
- public function isNormalCheckout($code)
45
  {
46
- return is_null(Mage::helper('paymill/fastCheckoutHelper')->getPaymentData($code)) ? 'false' : 'true';
 
47
  }
48
  }
37
  }
38
 
39
  /**
40
+ * Returns a boolean if checkout is fastcheckout or not
41
  * @param String $code payment code
42
  * @return boolean
43
  */
44
+ public function isFastCheckout($code)
45
  {
46
+ $paymentData = Mage::helper('paymill/fastCheckoutHelper')->getPaymentData($code);
47
+ return empty($paymentData) ? 'false' : 'true';
48
  }
49
  }
app/code/community/Paymill/Paymill/Block/Payment/Form/PaymentFormCreditcard.php CHANGED
@@ -43,8 +43,11 @@ class Paymill_Paymill_Block_Payment_Form_PaymentFormCreditcard extends Paymill_P
43
  parent::_construct();
44
 
45
  $this->setPaymillCcLogos();
46
-
47
- $this->setTemplate('paymill/payment/form/creditcard.phtml');
 
 
 
48
  }
49
 
50
  /**
43
  parent::_construct();
44
 
45
  $this->setPaymillCcLogos();
46
+ if(Mage::helper('paymill/optionHelper')->getPci() === 'SAQ A-EP') {
47
+ $this->setTemplate('paymill/payment/form/creditcard.phtml');
48
+ } else {
49
+ $this->setTemplate('paymill/payment/form/creditcard_form.phtml');
50
+ }
51
  }
52
 
53
  /**
app/code/community/Paymill/Paymill/Helper/OptionHelper.php CHANGED
@@ -140,4 +140,13 @@ class Paymill_Paymill_Helper_OptionHelper extends Mage_Core_Helper_Abstract
140
  {
141
  return $this->_getBackendOption("paymill_directdebit", "prenotification");
142
  }
 
 
 
 
 
 
 
 
 
143
  }
140
  {
141
  return $this->_getBackendOption("paymill_directdebit", "prenotification");
142
  }
143
+
144
+ /**
145
+ * Returns the value of the "Payment Form" config from the Backend as a string
146
+ * @return string
147
+ */
148
+ public function getPci()
149
+ {
150
+ return $this->_getBackendOption("paymill_creditcard", "pci");
151
+ }
152
  }
app/code/community/Paymill/Paymill/Model/Method/MethodModelAbstract.php CHANGED
@@ -297,7 +297,7 @@ abstract class Paymill_Paymill_Model_Method_MethodModelAbstract extends Mage_Pay
297
  $dateTime->modify('+' . (int) Mage::helper('paymill/optionHelper')->getPrenotificationDays() . ' day');
298
  $date = Mage::app()->getLocale()->storeDate(
299
  $order->getStore(),
300
- Varien_Date::toTimestamp($dateTime->format('Y-m-d H:i:s')),
301
  true
302
  );
303
 
297
  $dateTime->modify('+' . (int) Mage::helper('paymill/optionHelper')->getPrenotificationDays() . ' day');
298
  $date = Mage::app()->getLocale()->storeDate(
299
  $order->getStore(),
300
+ $dateTime->getTimestamp(),
301
  true
302
  );
303
 
app/code/community/Paymill/Paymill/Model/Source/Creditcard/Pci.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Open Software License (OSL 3.0)
9
+ * that is bundled with this package in the file LICENSE.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/osl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * @category Paymill
17
+ * @package Paymill_Paymill
18
+ * @copyright Copyright (c) 2013 PAYMILL GmbH (https://paymill.com/en-gb/)
19
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
20
+ */
21
+ class Paymill_Paymill_Model_Source_Creditcard_Pci
22
+ {
23
+ /**
24
+ * @return array
25
+ */
26
+ public function toOptionArray()
27
+ {
28
+ $pciMode = array(
29
+ array(
30
+ 'label' => Mage::helper('core')->__('PayFrame (min. PCI SAQ A)'),
31
+ 'value' => 'SAQ A'
32
+ ),
33
+ array(
34
+ 'label' => Mage::helper('core')->__('direct integration (min. PCI SAQ A-EP)'),
35
+ 'value' => 'SAQ A-EP'
36
+ )
37
+ );
38
+
39
+ return $pciMode;
40
+ }
41
+ }
app/code/community/Paymill/Paymill/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <Paymill_Paymill>
5
- <version>3.9.2</version>
6
  </Paymill_Paymill>
7
  </modules>
8
 
2
  <config>
3
  <modules>
4
  <Paymill_Paymill>
5
+ <version>4.0.0</version>
6
  </Paymill_Paymill>
7
  </modules>
8
 
app/code/community/Paymill/Paymill/etc/system.xml CHANGED
@@ -11,7 +11,7 @@
11
  <sort_order>700</sort_order>
12
  <fields>
13
  <version>
14
- <label>v3.9.2</label>
15
  <sort_order>1</sort_order>
16
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
17
  <frontend_type>label</frontend_type>
@@ -105,7 +105,7 @@
105
  <sort_order>800</sort_order>
106
  <fields>
107
  <version>
108
- <label>v3.9.2</label>
109
  <sort_order>100</sort_order>
110
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
111
  <frontend_type>label</frontend_type>
@@ -113,6 +113,15 @@
113
  <show_in_website>1</show_in_website>
114
  <show_in_store>1</show_in_store>
115
  </version>
 
 
 
 
 
 
 
 
 
116
  <active translate="label">
117
  <label>paymill_opt_Enabled</label>
118
  <sort_order>200</sort_order>
@@ -256,7 +265,7 @@
256
  <sort_order>800</sort_order>
257
  <fields>
258
  <version>
259
- <label>v3.9.2</label>
260
  <sort_order>100</sort_order>
261
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
262
  <frontend_type>label</frontend_type>
11
  <sort_order>700</sort_order>
12
  <fields>
13
  <version>
14
+ <label>v4.0.0</label>
15
  <sort_order>1</sort_order>
16
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
17
  <frontend_type>label</frontend_type>
105
  <sort_order>800</sort_order>
106
  <fields>
107
  <version>
108
+ <label>v4.0.0</label>
109
  <sort_order>100</sort_order>
110
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
111
  <frontend_type>label</frontend_type>
113
  <show_in_website>1</show_in_website>
114
  <show_in_store>1</show_in_store>
115
  </version>
116
+ <pci translate="label">
117
+ <label>paymill_payment_form</label>
118
+ <frontend_type>select</frontend_type>
119
+ <sort_order>110</sort_order>
120
+ <source_model>paymill/source_creditcard_pci</source_model>
121
+ <show_in_default>1</show_in_default>
122
+ <show_in_website>1</show_in_website>
123
+ <show_in_store>1</show_in_store>
124
+ </pci>
125
  <active translate="label">
126
  <label>paymill_opt_Enabled</label>
127
  <sort_order>200</sort_order>
265
  <sort_order>800</sort_order>
266
  <fields>
267
  <version>
268
+ <label>v4.0.0</label>
269
  <sort_order>100</sort_order>
270
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
271
  <frontend_type>label</frontend_type>
app/design/frontend/base/default/layout/paymill.xml CHANGED
@@ -13,7 +13,7 @@ and open the template in the editor.
13
  <action method="addText">
14
  <text>
15
  <![CDATA[
16
- <script type="text/javascript" src="https://bridge.paymill.com/"></script>
17
  ]]>
18
  </text>
19
  </action>
13
  <action method="addText">
14
  <text>
15
  <![CDATA[
16
+ <script type="text/javascript" src="https://bridge.paymill.com/dss3"></script>
17
  ]]>
18
  </text>
19
  </action>
app/design/frontend/base/default/template/paymill/payment/form/creditcard.phtml CHANGED
@@ -51,7 +51,7 @@
51
  <input class="paymill-payment-currency-cc" type="hidden" value="<?php echo Mage::helper('paymill/paymentHelper')->getCurrency(Mage::getSingleton('checkout/session')->getQuote()); ?>"/>
52
  <input class="paymill-option-debug-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->isInDebugMode(); ?>"/>
53
  <input class="paymill-info-public_key-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPublicKey(); ?>"/>
54
- <input class="paymill-info-fastCheckout-cc" type="hidden" value="<?php echo $this->isNormalCheckout($_code); ?>"/>
55
  <input class="paymill-payment-error-number" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_number_cc");?>"/>
56
  <input class="paymill-payment-error-holder" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_holder_cc"); ?>"/>
57
  <input class="paymill-payment-error-expdate" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_expdate"); ?>"/>
@@ -78,6 +78,7 @@
78
  <input class="PAYMILL_field_invalid_bic-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_bic"); ?>"/>
79
  <input class="PAYMILL_field_invalid_country-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_country"); ?>"/>
80
  <input class="PAYMILL_field_invalid_bank_data-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_bank_data"); ?>"/>
 
81
  </li>
82
  <?php if (!is_null(Mage::getStoreConfig('payment/paymill_creditcard/checkout_desc', Mage::app()->getStore()->getStoreId()))): ?>
83
  <li>
51
  <input class="paymill-payment-currency-cc" type="hidden" value="<?php echo Mage::helper('paymill/paymentHelper')->getCurrency(Mage::getSingleton('checkout/session')->getQuote()); ?>"/>
52
  <input class="paymill-option-debug-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->isInDebugMode(); ?>"/>
53
  <input class="paymill-info-public_key-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPublicKey(); ?>"/>
54
+ <input class="paymill-info-fastCheckout-cc" type="hidden" value="<?php echo $this->isFastCheckout($_code); ?>"/>
55
  <input class="paymill-payment-error-number" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_number_cc");?>"/>
56
  <input class="paymill-payment-error-holder" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_holder_cc"); ?>"/>
57
  <input class="paymill-payment-error-expdate" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_expdate"); ?>"/>
78
  <input class="PAYMILL_field_invalid_bic-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_bic"); ?>"/>
79
  <input class="PAYMILL_field_invalid_country-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_country"); ?>"/>
80
  <input class="PAYMILL_field_invalid_bank_data-cc" type="hidden" value="<?php echo $this->__("PAYMILL_field_invalid_bank_data"); ?>"/>
81
+ <input class="paymill-info-pci-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPci($_code); ?>"/>
82
  </li>
83
  <?php if (!is_null(Mage::getStoreConfig('payment/paymill_creditcard/checkout_desc', Mage::app()->getStore()->getStoreId()))): ?>
84
  <li>
app/design/frontend/base/default/template/paymill/payment/form/creditcard_form.phtml ADDED
@@ -0,0 +1,73 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $_code = $this->getMethodCode(); ?>
2
+ <ul class="form-list" id="payment_form_<?php echo $_code ?>" style="display:none;">
3
+ <li>
4
+ <?php echo $this->getCreditCardLogosDisplay();?>
5
+ </li>
6
+ <?php if($this->isFastCheckout($_code) === 'true'):?>
7
+ <div id="paymillFastCheckoutDiv">
8
+ <?php
9
+ if($this->getPaymentEntry($_code, 'card_holder') != ''): ?>
10
+ <li>
11
+ <label><?php echo $this->__("paymill_Holder"); ?>:</label>
12
+ <div class="input-box">
13
+ <?php echo $this->getPaymentEntry($_code, 'card_holder'); ?>
14
+ </div>
15
+ </li>
16
+ <?php endif; ?>
17
+ <li>
18
+ <label><?php echo $this->__("paymill_Number"); ?>:</label>
19
+ <div class="input-box">
20
+ <?php echo $this->getPaymentEntry($_code, 'cc_number'); ?>
21
+ </div>
22
+ </li>
23
+ <li>
24
+ <label><?php echo $this->__("paymill_Date") ?>:</label>
25
+ <div class="input-box">
26
+ <?php echo $this->getPaymentEntry($_code, 'expire_month') . "/" . $this->getPaymentEntry($_code, 'expire_year'); ?>
27
+ </div>
28
+ </li>
29
+ <li>
30
+ <label><?php echo $this->__('Card Verification Number'); ?></label>
31
+ <div class="input-box">
32
+ <?php echo $this->getPaymentEntry($_code, 'cvc'); ?>
33
+ </div>
34
+ </li>
35
+ <li>
36
+ <label></label>
37
+ <div class="input-box">
38
+ <button type="button" onclick="paymillCreditcard.methodInstance.openPaymillFrame('de');"><?php echo $this->__("paymill_change"); ?></button>
39
+ </div>
40
+ </li>
41
+ </div>
42
+ <?php endif; ?>
43
+ <li>
44
+ <div id='paymillContainer'>
45
+
46
+ </div>
47
+ <input class="paymill-payment-token-cc paymill-validate-cc-token" name="payment[paymill-payment-token-cc]" id="payment[paymill-payment-token-cc]" type="hidden" />
48
+ <input class="paymill-payment-token-url-cc" type="hidden" value="<?php echo $this->getUrl('paymill/token/total', array('_secure'=>true)); ?>"/>
49
+ <input class="paymill-payment-token-log-cc" type="hidden" value="<?php echo $this->getUrl('paymill/token/log', array('_secure'=>true)); ?>"/>
50
+ <input class="paymill-info-public_key-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPublicKey(); ?>"/>
51
+ <input class="paymill-option-debug-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->isInDebugMode(); ?>"/>
52
+ <input class="paymill-info-pci-cc" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPci($_code); ?>"/>
53
+ <input class="paymill-info-fastCheckout-cc" type="hidden" value="<?php echo $this->isFastCheckout($_code); ?>"/>
54
+ <input class="paymill-payment-currency-cc" type="hidden" value="<?php echo Mage::helper('paymill/paymentHelper')->getCurrency(Mage::getSingleton('checkout/session')->getQuote()); ?>"/>
55
+ </li>
56
+ <?php if (!is_null(Mage::getStoreConfig('payment/paymill_creditcard/checkout_desc', Mage::app()->getStore()->getStoreId()))): ?>
57
+ <li>
58
+ <?php echo Mage::getStoreConfig('payment/paymill_creditcard/checkout_desc', Mage::app()->getStore()->getStoreId()); ?>
59
+ </li>
60
+ <?php endif; ?>
61
+ </ul>
62
+ <script type="text/javascript">
63
+ //<![CDATA[
64
+ paymillCreditcard = new Paymill('<?php echo $_code; ?>');
65
+
66
+ <?php if($this->isFastCheckout($_code) === 'false'): ?>
67
+ paymill.embedFrame('paymillContainer', {lang: '<?php echo $this->__('paymill_lang') ?>'}, PaymillFrameResponseHandler);
68
+ <?php endif; ?>
69
+
70
+ paymillTokenSelector = '<?php echo Mage::helper('paymill/optionHelper')->getTokenSelector(); ?>';
71
+ paymillPci = '<?php echo Mage::helper('paymill/optionHelper')->getPci($_code); ?>';
72
+ //]]>
73
+ </script>
app/design/frontend/base/default/template/paymill/payment/form/directdebit.phtml CHANGED
@@ -26,7 +26,7 @@
26
  <input class="paymill-payment-token-elv paymill-validate-elv-token" name="payment[paymill-payment-token-elv]" id="payment[paymill-payment-token-elv]" type="hidden" />
27
  <input class="paymill-option-debug-elv" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->isInDebugMode(); ?>" />
28
  <input class="paymill-info-public_key-elv" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPublicKey(); ?>" />
29
- <input class="paymill-info-fastCheckout-elv" type="hidden" value="<?php echo $this->isNormalCheckout($_code); ?>" />
30
  <input class="paymill-payment-token-log-elv" type="hidden" value="<?php echo $this->getUrl('paymill/token/log', array('_secure'=>true)); ?>"/>
31
  <input class="paymill-payment-error-number-elv" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_number_elv"); ?>" />
32
  <input class="paymill-payment-error-holder-elv" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_holder_elv"); ?>" />
26
  <input class="paymill-payment-token-elv paymill-validate-elv-token" name="payment[paymill-payment-token-elv]" id="payment[paymill-payment-token-elv]" type="hidden" />
27
  <input class="paymill-option-debug-elv" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->isInDebugMode(); ?>" />
28
  <input class="paymill-info-public_key-elv" type="hidden" value="<?php echo Mage::helper('paymill/optionHelper')->getPublicKey(); ?>" />
29
+ <input class="paymill-info-fastCheckout-elv" type="hidden" value="<?php echo $this->isFastCheckout($_code); ?>" />
30
  <input class="paymill-payment-token-log-elv" type="hidden" value="<?php echo $this->getUrl('paymill/token/log', array('_secure'=>true)); ?>"/>
31
  <input class="paymill-payment-error-number-elv" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_number_elv"); ?>" />
32
  <input class="paymill-payment-error-holder-elv" type="hidden" value="<?php echo $this->__("paymill_error_text_invalid_holder_elv"); ?>" />
app/locale/de_AT/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "Das löschen war erfolgreich"
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
- paymill_hook_send_invoice_mail, "Rechnungsemail senden"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
+ paymill_hook_send_invoice_mail, "Rechnungsemail senden"
151
+ paymill_payment_form, "Zahlungsformular"
152
+ "PayFrame (min. PCI SAQ A)", "eingebettetes PayFrame (erfordert PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direkte Integration (erfordert PCI SAQ A-EP)"
154
+ paymill_lang, "de"
155
+ paymill_change, "Ändern"
app/locale/de_CH/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "Das löschen war erfolgreich"
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
- paymill_hook_send_invoice_mail, "Rechnungsemail senden"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
+ paymill_hook_send_invoice_mail, "Rechnungsemail senden"
151
+ paymill_payment_form, "Zahlungsformular"
152
+ "PayFrame (min. PCI SAQ A)", "eingebettetes PayFrame (erfordert PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direkte Integration (erfordert PCI SAQ A-EP)"
154
+ paymill_lang, "de"
155
+ paymill_change, "Ändern"
app/locale/de_DE/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "Das löschen war erfolgreich"
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
- paymill_hook_send_invoice_mail, "Rechnungsemail senden"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "Kein Eintrag ausgewählt"
148
  paymill_hook_settings, "Webhook Einstellungen"
149
  paymill_hook_create_invoice_active, "Erstelle Rechnung für das 'transaction.succeeded' Event"
150
+ paymill_hook_send_invoice_mail, "Rechnungsemail senden"
151
+ paymill_payment_form, "Zahlungsformular"
152
+ "PayFrame (min. PCI SAQ A)", "eingebettetes PayFrame (erfordert PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direkte Integration (erfordert PCI SAQ A-EP)"
154
+ paymill_lang, "de"
155
+ paymill_change, "Ändern"
app/locale/en_AU/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_CA/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_GB/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_IE/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_NZ/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_US/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/en_ZA/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "en"
155
+ paymill_change, "Change"
app/locale/es_AR/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_CL/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_CO/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_CR/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_ES/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_MX/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_PE/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/es_VE/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "es"
155
+ paymill_change, "Cambiar"
app/locale/fr_CA/Paymill_Paymill.csv CHANGED
@@ -145,4 +145,9 @@ paymill_hook_action_success, "The delete was successful"
145
  paymill_error_text_no_entry_selected, "No entry selected"
146
  paymill_hook_settings, "Webhook settings"
147
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
148
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
145
  paymill_error_text_no_entry_selected, "No entry selected"
146
  paymill_hook_settings, "Webhook settings"
147
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
148
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
149
+ paymill_payment_form, "Formulaire de paiement"
150
+ "PayFrame (min. PCI SAQ A)", "PayFrame intégré (nécessite PCI SAQ A)"
151
+ "direct integration (min. PCI SAQ A-EP)", "integration direct (nécessite PCI SAQ A-EP)"
152
+ paymill_lang, "fr"
153
+ paymill_change, "Changer"
app/locale/fr_FR/Paymill_Paymill.csv CHANGED
@@ -145,4 +145,9 @@ paymill_hook_action_success, "The delete was successful"
145
  paymill_error_text_no_entry_selected, "No entry selected"
146
  paymill_hook_settings, "Webhook settings"
147
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
148
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
145
  paymill_error_text_no_entry_selected, "No entry selected"
146
  paymill_hook_settings, "Webhook settings"
147
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
148
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
149
+ paymill_payment_form, "Formulaire de paiement"
150
+ "PayFrame (min. PCI SAQ A)", "PayFrame intégré (nécessite PCI SAQ A)"
151
+ "direct integration (min. PCI SAQ A-EP)", "integration direct (nécessite PCI SAQ A-EP)"
152
+ paymill_lang, "fr"
153
+ paymill_change, "Changer"
app/locale/it_CH/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "it"
155
+ paymill_change, "Cambiare"
app/locale/it_IT/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "it"
155
+ paymill_change, "Cambiare"
app/locale/pt_BR/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "pt"
155
+ paymill_change, "Cambiar"
app/locale/pt_PT/Paymill_Paymill.csv CHANGED
@@ -147,4 +147,9 @@ paymill_hook_action_success, "The delete was successful"
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
- paymill_hook_send_invoice_mail, "Send invoice Mail"
 
 
 
 
 
147
  paymill_error_text_no_entry_selected, "No entry selected"
148
  paymill_hook_settings, "Webhook settings"
149
  paymill_hook_create_invoice_active, "Create invoice for the 'transaction.succeeded' event"
150
+ paymill_hook_send_invoice_mail, "Send invoice Mail"
151
+ paymill_payment_form, "Payment form"
152
+ "PayFrame (min. PCI SAQ A)", "embedded PayFrame (requires PCI SAQ A)"
153
+ "direct integration (min. PCI SAQ A-EP)", "direct integration (requires PCI SAQ A-EP)"
154
+ paymill_lang, "pt"
155
+ paymill_change, "Cambiar"
js/paymill/Creditcard.js CHANGED
@@ -143,6 +143,17 @@ Creditcard.prototype.getTokenParameter = function()
143
  };
144
  };
145
 
 
 
 
 
 
 
 
 
 
 
 
146
  Creditcard.prototype.getTokenAmount = function()
147
  {
148
  var that = this;
@@ -255,4 +266,22 @@ Creditcard.prototype.setEventListener = function(selector)
255
  Creditcard.prototype.setCreditcards = function(creditcards)
256
  {
257
  this.creditcards = creditcards;
258
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  };
144
  };
145
 
146
+ Creditcard.prototype.getFrameTokenParameter = function()
147
+ {
148
+ PAYMILL_PUBLIC_KEY = this.helper.getElementValue('.paymill-info-public_key-cc');
149
+
150
+ return {
151
+ amount_int: parseInt(this.getTokenAmount()),
152
+ currency: this.helper.getElementValue('.paymill-payment-currency-cc')
153
+ };
154
+ };
155
+
156
+
157
  Creditcard.prototype.getTokenAmount = function()
158
  {
159
  var that = this;
266
  Creditcard.prototype.setCreditcards = function(creditcards)
267
  {
268
  this.creditcards = creditcards;
269
+ };
270
+
271
+ Creditcard.prototype.openPaymillFrame = function(lang)
272
+ {
273
+ $$('#paymillFastCheckoutDiv')[0].parentNode.removeChild($$('#paymillFastCheckoutDiv')[0]);
274
+ paymill.embedFrame('paymillContainer', {lang: lang}, PaymillFrameResponseHandler);
275
+ this.helper.setElementValue('.paymill-info-fastCheckout-cc', 'false');
276
+ };
277
+
278
+ PaymillFrameResponseHandler = function(error)
279
+ {
280
+ if (error) {
281
+ paymillCreditcard.debug("iFrame load failed with " + error.apierror + error.message);
282
+ } else {
283
+ paymillCreditcard.debug("iFrame successfully loaded");
284
+ paymillCreditcard.setOnClickHandler(paymillTokenSelector);
285
+ }
286
+ }
287
+
js/paymill/Paymill.js CHANGED
@@ -10,6 +10,8 @@ var PAYMILL_PUBLIC_KEY = null;
10
  var paymillButton = false;
11
  var onClickContent = false;
12
  var onClickBounded = false;
 
 
13
 
14
  function Paymill(methodCode)
15
  {
@@ -58,17 +60,47 @@ Paymill.prototype.generateToken = function()
58
  Paymill.prototype.generateTokenOnSubmit = function()
59
  {
60
  if (this.helper.getElementValue('.paymill-info-fastCheckout-' + this.helper.getShortCode()) !== 'true') {
61
- if (this.helper.getMethodCode() === 'paymill_creditcard') {
62
- if (new Validation($$('#paymill_creditcard_cvc')[0].form.id).validate()) {
63
- this.generateToken();
64
- }
65
- }
66
-
67
- if (this.helper.getMethodCode() === 'paymill_directdebit') {
68
- if (new Validation($$('#paymill_directdebit_holdername')[0].form.id).validate()) {
69
- this.generateToken();
70
- }
71
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  }
73
  };
74
 
@@ -108,9 +140,26 @@ Paymill.prototype.setEventListener = function(selector)
108
  Paymill.prototype.setOnClickHandler = function(selector)
109
  {
110
  var that = this;
111
-
112
- if ($$(selector)[0]) {
113
- paymillButton = $$(selector)[0];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
  if (!onClickContent) {
115
  onClickContent = paymillButton.getAttribute('onclick');
116
  if (paymillButton.getStorage()._object.prototype_event_registry) {
@@ -122,9 +171,9 @@ Paymill.prototype.setOnClickHandler = function(selector)
122
  element.observe('change', function() {
123
  paymillButton.removeAttribute('onclick');
124
  paymillButton.stopObserving('click');
125
- if (that.helper.getMethodCode() === 'paymill_directdebit') {
126
  paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
127
- } else if(that.helper.getMethodCode() === 'paymill_creditcard') {
128
  paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
129
  } else {
130
  paymillButton.setAttribute('onclick', onClickContent);
@@ -137,13 +186,13 @@ Paymill.prototype.setOnClickHandler = function(selector)
137
  });
138
  });
139
 
140
- if (that.helper.getMethodCode() === 'paymill_directdebit') {
141
  paymillButton.stopObserving('click');
142
  paymillButton.removeAttribute('onclick');
143
  paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
144
  }
145
 
146
- if (that.helper.getMethodCode() === 'paymill_creditcard') {
147
  paymillButton.stopObserving('click');
148
  paymillButton.removeAttribute('onclick');
149
  paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
@@ -174,6 +223,7 @@ tokenCallback = function(error, result)
174
  message = error.message;
175
  }
176
 
 
177
  // Appending error
178
  rules['paymill-validate-' + paymill.helper.getShortCode() + '-token'] = new Validator(
179
  'paymill-validate-' + paymill.helper.getShortCode() + '-token',
@@ -190,7 +240,9 @@ tokenCallback = function(error, result)
190
  paymill.debug(error.message);
191
  paymill.debug("Paymill Response Handler triggered: Error.");
192
  Object.extend(Validation.methods, rules);
193
- new Validation($$('#paymill_creditcard_cvc')[0].form.id).validate();
 
 
194
  } else {
195
  rules['paymill-validate-' + paymill.helper.getShortCode() + '-token'] = new Validator(
196
  'paymill-validate-' + paymill.helper.getShortCode() + '-token',
@@ -205,20 +257,32 @@ tokenCallback = function(error, result)
205
 
206
  paymill.debug("Saving Token in Form: " + result.token);
207
  paymill.helper.setElementValue('.paymill-payment-token-' + paymill.helper.getShortCode(), result.token);
208
- if (paymillButton) {
 
 
 
209
  paymillButton.removeAttribute('onclick');
210
  paymillButton.stopObserving('click');
211
  paymillButton.setAttribute('onclick', onClickContent);
212
  if (onClickBounded) {
213
  onClickBounded.forEach(function (handler) {
214
- paymillButton.observe('click', handler);
215
  });
216
  }
217
 
218
  paymillButton.click();
 
 
 
 
 
 
 
 
 
 
 
219
  }
 
220
  }
221
-
222
-
223
-
224
  };
10
  var paymillButton = false;
11
  var onClickContent = false;
12
  var onClickBounded = false;
13
+ var paymillUseButton = false;
14
+ var paymillUseButtonForFrame = false;
15
 
16
  function Paymill(methodCode)
17
  {
60
  Paymill.prototype.generateTokenOnSubmit = function()
61
  {
62
  if (this.helper.getElementValue('.paymill-info-fastCheckout-' + this.helper.getShortCode()) !== 'true') {
63
+
64
+ if (this.helper.getMethodCode() === 'paymill_creditcard') {
65
+ if(this.helper.getElementValue('.paymill-info-pci-' + this.helper.getShortCode()) === 'SAQ A') {
66
+ var data = this.methodInstance.getFrameTokenParameter();
67
+ this.debug("Generating Token");
68
+ this.debug(data);
69
+ paymill.createTokenViaFrame(data, tokenCallback);
70
+ } else if (new Validation($$('#paymill_creditcard_cvc')[0].form.id).validate()) {
71
+ this.generateToken();
72
+ }
73
+ }
74
+
75
+ if (this.helper.getMethodCode() === 'paymill_directdebit') {
76
+ if (new Validation($$('#paymill_directdebit_holdername')[0].form.id).validate()) {
77
+ this.generateToken();
78
+ }
79
+ }
80
+ } else {
81
+ paymillDebitUseButton = this.helper.getMethodCode() === 'paymill_directdebit' && paymillUseButton;
82
+ paymillCcUseButton = this.helper.getMethodCode() === 'paymill_creditcard' && (paymillUseButton || paymillUseButtonForFrame);
83
+ if(paymillButton && (paymillDebitUseButton || paymillCcUseButton)) {
84
+ paymillButton.removeAttribute('onclick');
85
+ paymillButton.stopObserving('click');
86
+ paymillButton.setAttribute('onclick', onClickContent);
87
+ if (onClickBounded) {
88
+ onClickBounded.forEach(function (handler) {
89
+ paymillButton.observe('click', handler);
90
+ });
91
+ }
92
+
93
+ paymillButton.click();
94
+ paymillButton.removeAttribute('onclick');
95
+ paymillButton.stopObserving('click');
96
+ if (this.helper.getMethodCode() === 'paymill_directdebit') {
97
+ paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
98
+ }
99
+
100
+ if (this.helper.getMethodCode() === 'paymill_creditcard') {
101
+ paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
102
+ }
103
+ }
104
  }
105
  };
106
 
140
  Paymill.prototype.setOnClickHandler = function(selector)
141
  {
142
  var that = this;
143
+
144
+ if(!paymillButton) {
145
+ if ($$(selector)[0]) {
146
+ paymillButton = $$(selector)[0];
147
+ paymillUseButton = true;
148
+ } else if(typeof(paymillPci) !== 'undefined' && paymillPci === 'SAQ A') {
149
+ if($$('#onestepcheckout-place-order')[0]) {
150
+ paymillButton = $$('#onestepcheckout-place-order')[0];
151
+ } else if($$('#firecheckout-form button[onclick*="checkout.save()"]')[0]) {
152
+ paymillButton = $$('#firecheckout-form button[onclick*="checkout.save()"]')[0];
153
+ } else if($$('#onestepcheckout-form')[0]) {
154
+ paymillButton = $$('#onestepcheckout-form button[onclick*="review.save()"]')[0];
155
+ } else {
156
+ paymillButton = $$('button[onclick*="payment.save()"]')[0];
157
+ }
158
+ paymillUseButtonForFrame = true;
159
+ }
160
+ }
161
+
162
+ if (paymillButton) {
163
  if (!onClickContent) {
164
  onClickContent = paymillButton.getAttribute('onclick');
165
  if (paymillButton.getStorage()._object.prototype_event_registry) {
171
  element.observe('change', function() {
172
  paymillButton.removeAttribute('onclick');
173
  paymillButton.stopObserving('click');
174
+ if (that.helper.getMethodCode() === 'paymill_directdebit' && paymillUseButton) {
175
  paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
176
+ } else if(that.helper.getMethodCode() === 'paymill_creditcard' && (paymillUseButton || paymillUseButtonForFrame)) {
177
  paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
178
  } else {
179
  paymillButton.setAttribute('onclick', onClickContent);
186
  });
187
  });
188
 
189
+ if (that.helper.getMethodCode() === 'paymill_directdebit' && paymillUseButton) {
190
  paymillButton.stopObserving('click');
191
  paymillButton.removeAttribute('onclick');
192
  paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
193
  }
194
 
195
+ if (that.helper.getMethodCode() === 'paymill_creditcard' && (paymillUseButton || paymillUseButtonForFrame)) {
196
  paymillButton.stopObserving('click');
197
  paymillButton.removeAttribute('onclick');
198
  paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
223
  message = error.message;
224
  }
225
 
226
+
227
  // Appending error
228
  rules['paymill-validate-' + paymill.helper.getShortCode() + '-token'] = new Validator(
229
  'paymill-validate-' + paymill.helper.getShortCode() + '-token',
240
  paymill.debug(error.message);
241
  paymill.debug("Paymill Response Handler triggered: Error.");
242
  Object.extend(Validation.methods, rules);
243
+ if(!paymillUseButtonForFrame) {
244
+ new Validation($$('.paymill-payment-token-' + paymill.helper.getShortCode())[0].form.id).validate();
245
+ }
246
  } else {
247
  rules['paymill-validate-' + paymill.helper.getShortCode() + '-token'] = new Validator(
248
  'paymill-validate-' + paymill.helper.getShortCode() + '-token',
257
 
258
  paymill.debug("Saving Token in Form: " + result.token);
259
  paymill.helper.setElementValue('.paymill-payment-token-' + paymill.helper.getShortCode(), result.token);
260
+
261
+ paymillDebitUseButton = paymill.helper.getMethodCode() === 'paymill_directdebit' && paymillUseButton;
262
+ paymillCcUseButton = paymill.helper.getMethodCode() === 'paymill_creditcard' && (paymillUseButton || paymillUseButtonForFrame);
263
+ if(paymillButton && (paymillDebitUseButton || paymillCcUseButton)) {
264
  paymillButton.removeAttribute('onclick');
265
  paymillButton.stopObserving('click');
266
  paymillButton.setAttribute('onclick', onClickContent);
267
  if (onClickBounded) {
268
  onClickBounded.forEach(function (handler) {
269
+ paymillButton.observe('click', handler);
270
  });
271
  }
272
 
273
  paymillButton.click();
274
+
275
+ paymillButton.stopObserving('click');
276
+ paymillButton.removeAttribute('onclick');
277
+
278
+ if (paymill.helper.getMethodCode() === 'paymill_directdebit') {
279
+ paymillButton.setAttribute('onclick', 'paymillElv.generateTokenOnSubmit()');
280
+ }
281
+
282
+ if (paymill.helper.getMethodCode() === 'paymill_creditcard') {
283
+ paymillButton.setAttribute('onclick', 'paymillCreditcard.generateTokenOnSubmit()');
284
+ }
285
  }
286
+
287
  }
 
 
 
288
  };
js/paymill/paymentForm.js ADDED
@@ -0,0 +1,697 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ var PAYMILL_PUBLIC_KEY = null;
2
+
3
+ /**
4
+ * Build object
5
+ * @returns {Paymill}
6
+ */
7
+ function Paymill()
8
+ {
9
+ this.paymillSelectedPaymentName = "Preparing Payment";
10
+ this.eventFlag = false;
11
+
12
+ }
13
+
14
+ /**
15
+ * Set payment code
16
+ * @param String code
17
+ */
18
+ Paymill.prototype.setPaymillCode = function(code)
19
+ {
20
+ this.paymillCode = code;
21
+ }
22
+
23
+ /**
24
+ * Set the possible payment codes
25
+ */
26
+ Paymill.prototype.setCodes = function()
27
+ {
28
+ this.paymillCc = 'paymill_creditcard';
29
+ this.paymillElv = 'paymill_directdebit';
30
+ }
31
+
32
+ /**
33
+ * Get selected payments short code
34
+ * @returns String
35
+ */
36
+ Paymill.prototype.getPaymillCode = function()
37
+ {
38
+ var methods = {
39
+ paymill_creditcard: "cc",
40
+ paymill_directdebit: 'elv'
41
+ };
42
+
43
+ if (methods.hasOwnProperty(pmQuery("input[name='payment[method]']:checked").val())) {
44
+ return methods[pmQuery("input[name='payment[method]']:checked").val()];
45
+ }
46
+
47
+ return 'other';
48
+ }
49
+
50
+ /**
51
+ * prints debug messages in the log if debug mode is active
52
+ * @param {String} message
53
+ */
54
+ Paymill.prototype.debug = function(message)
55
+ {
56
+ debugState = pmQuery('.paymill-option-debug-' + this.getPaymillCode()).val();
57
+ if (debugState === "1") {
58
+ var displayName = "";
59
+ if (this.paymillSelectedPaymentName === this.paymillCc) {
60
+ displayName = 'Credit Card';
61
+ }
62
+
63
+ if (this.paymillSelectedPaymentName === this.paymillElv) {
64
+ displayName = 'Direct Debit';
65
+ }
66
+
67
+ if (this.paymillSelectedPaymentName === 'Preparing Payment') {
68
+ displayName = 'Preparing Payment';
69
+ }
70
+
71
+ console.log("[" + displayName + "] " + message);
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Get credit card brand
77
+ *
78
+ * @param String creditcardNumber
79
+ * @returns String
80
+ */
81
+ Paymill.prototype.detectCreditcardBranding = function(creditcardNumber)
82
+ {
83
+ var brand = 'unknown';
84
+ if (creditcardNumber.match(/^\d{6}/)) {
85
+ switch (true) {
86
+ case /^(415006|497|407497|513)/.test(creditcardNumber):
87
+ brand = "carte-bleue";
88
+ break;
89
+ case /^(45399[78]|432913|5255)/.test(creditcardNumber):
90
+ brand = "carta-si";
91
+ break;
92
+ case /^(4571|5019)/.test(creditcardNumber):
93
+ brand = "dankort";
94
+ break;
95
+ case /^(62|88)/.test(creditcardNumber):
96
+ brand = "unionpay";
97
+ break;
98
+ case /^6(011|5)/.test(creditcardNumber):
99
+ brand = "discover";
100
+ break;
101
+ case /^3(0[0-5]|[68])/.test(creditcardNumber):
102
+ brand = "diners";
103
+ break;
104
+ case /^(5018|5020|5038|5893|6304|6759|6761|6762|6763|0604|6390)/.test(creditcardNumber):
105
+ brand = "maestro";
106
+ break;
107
+ case /^(2131|1800|35)/.test(creditcardNumber):
108
+ brand = "jcb";
109
+ break;
110
+ case /^(3[47])/.test(creditcardNumber):
111
+ brand = "amex";
112
+ break;
113
+ case /^(5[1-5])/.test(creditcardNumber):
114
+ brand = "mastercard";
115
+ break;
116
+ case /^(4)/.test(creditcardNumber):
117
+ brand = "visa";
118
+ break;
119
+ }
120
+ }
121
+
122
+ return brand;
123
+ }
124
+
125
+ /**
126
+ * Event Handler for the display of the card icons
127
+ */
128
+ Paymill.prototype.paymillShowCardIcon = function()
129
+ {
130
+ var brand = this.detectCreditcardBranding(pmQuery('#' + this.paymillCode + '_number').val());
131
+ brand = brand.toLowerCase();
132
+ pmQuery('#' + this.paymillCode + '_number')[0].className = pmQuery('#' + this.paymillCode + '_number')[0].className.replace(/paymill-card-number-.*/g, '');
133
+ if (brand !== 'unknown') {
134
+ if (brand === 'american express') {
135
+ brand = 'amex';
136
+ }
137
+
138
+ pmQuery('#' + this.paymillCode + '_number').addClass("paymill-card-number-" + brand);
139
+ }
140
+ }
141
+
142
+ /**
143
+ * Prototype selector
144
+ *
145
+ * @param {type} selector
146
+ * @returns {String}
147
+ */
148
+ Paymill.prototype.getValueIfExist = function(selector)
149
+ {
150
+ if ($$(selector)[0]) {
151
+ return $$(selector)[0].value;
152
+ }
153
+
154
+ return '';
155
+ }
156
+
157
+ /**
158
+ * Validate the form data and try to create a token
159
+ *
160
+ * @returns {Boolean}
161
+ */
162
+ Paymill.prototype.paymillSubmitForm = function()
163
+ {
164
+ PAYMILL_PUBLIC_KEY = pmQuery('.paymill-info-public_key-' + this.getPaymillCode()).val();
165
+ this.paymillSelectedPaymentName = pmQuery("input[name='payment[method]']:checked").val();
166
+
167
+ if (!window.PAYMILL_LOADING !== "undefined" && window.PAYMILL_LOADING) {
168
+ return false;
169
+ }
170
+
171
+ switch (this.paymillSelectedPaymentName) {
172
+ case this.paymillCc:
173
+ paymill.config('3ds_cancel_label', pmQuery('.paymill_3ds_cancel').val());
174
+ if (pmQuery('.paymill-info-fastCheckout-cc').val() === 'false') {
175
+ var valid = (paymill.validateCvc(pmQuery('#' + this.paymillSelectedPaymentName + '_cvc').val()) || paymill.cardType(pmQuery('#' + this.paymillSelectedPaymentName + '_number').val()).toLowerCase() === 'maestro')
176
+ && paymill.validateHolder(pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val())
177
+ && paymill.validateExpiry(pmQuery('#' + this.paymillSelectedPaymentName + '_expiry_month').val(), pmQuery('#' + this.paymillSelectedPaymentName + '_expiry_year').val())
178
+ && paymill.validateCardNumber(pmQuery('#' + this.paymillSelectedPaymentName + '_number').val());
179
+
180
+ if (!valid) {
181
+ return false;
182
+ }
183
+
184
+ var cvc = '000';
185
+
186
+ if (pmQuery('#' + this.paymillSelectedPaymentName + '_cvc').val() !== '') {
187
+ cvc = pmQuery('#' + this.paymillSelectedPaymentName + '_cvc').val();
188
+ }
189
+
190
+ window.PAYMILL_LOADING = true;
191
+ this.debug("Generating Token");
192
+ paymill.createToken({
193
+ amount_int: parseInt(this.getTokenAmount()),
194
+ currency: pmQuery('.paymill-payment-currency-' + this.getPaymillCode()).val(), // ISO 4217 e.g. "EUR"
195
+ number: pmQuery('#' + this.paymillSelectedPaymentName + '_number').val(),
196
+ exp_month: pmQuery('#' + this.paymillSelectedPaymentName + '_expiry_month').val(),
197
+ exp_year: pmQuery('#' + this.paymillSelectedPaymentName + '_expiry_year').val(),
198
+ cvc: cvc,
199
+ cardholder: pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val()
200
+ }, paymillResponseHandler);
201
+ }
202
+ break;
203
+ case this.paymillElv:
204
+ if (pmQuery('.paymill-info-fastCheckout-elv').val() === 'false') {
205
+ if (pmQuery('.paymill-info-sepa-elv').val() === 'false') {
206
+ var valid = pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val() !== ''
207
+ && paymill.validateAccountNumber(pmQuery('#' + this.paymillSelectedPaymentName + '_account').val())
208
+ && paymill.validateBankCode(pmQuery('#' + this.paymillSelectedPaymentName + '_bankcode').val());
209
+
210
+ if (!valid) {
211
+ return false;
212
+ }
213
+
214
+ window.PAYMILL_LOADING = true;
215
+ this.debug("Generating Token");
216
+ paymill.createToken({
217
+ number: pmQuery('#' + this.paymillSelectedPaymentName + '_account').val(),
218
+ bank: pmQuery('#' + this.paymillSelectedPaymentName + '_bankcode').val(),
219
+ accountholder: pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val()
220
+ }, paymillResponseHandler);
221
+ } else {
222
+ var valid = pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val() !== ''
223
+ && pmQuery('#' + this.paymillSelectedPaymentName + '_iban').val() !== ''
224
+ && pmQuery('#' + this.paymillSelectedPaymentName + '_bic').val() !== '';
225
+
226
+ if (!valid) {
227
+ return false;
228
+ }
229
+
230
+ window.PAYMILL_LOADING = true;
231
+ this.debug("Generating Token");
232
+ paymill.createToken({
233
+ iban: pmQuery('#' + this.paymillSelectedPaymentName + '_iban').val(),
234
+ bic: pmQuery('#' + this.paymillSelectedPaymentName + '_bic').val(),
235
+ accountholder: pmQuery('#' + this.paymillSelectedPaymentName + '_holdername').val()
236
+ }, paymillResponseHandler);
237
+ }
238
+ }
239
+
240
+ break;
241
+ }
242
+
243
+ return false;
244
+ }
245
+
246
+ /**
247
+ * Log data
248
+ * @param String data
249
+ */
250
+ Paymill.prototype.logError = function(data)
251
+ {
252
+ var that = this;
253
+ pmQuery.ajax({
254
+ async: false,
255
+ type: "POST",
256
+ url: pmQuery('.paymill-payment-token-log-' + this.getPaymillCode()).val(),
257
+ data: {error: data},
258
+ }).done(function(msg) {
259
+ that.debug('Logging done.');
260
+ }).fail(function(jqXHR, textStatus) {
261
+ that.debug('Logging failed.');
262
+ });
263
+ }
264
+
265
+ /**
266
+ * Return order amount
267
+ * @return float
268
+ */
269
+ Paymill.prototype.getTokenAmount = function()
270
+ {
271
+ var that = this;
272
+ var returnVal = null;
273
+ pmQuery.ajax({
274
+ async: false,
275
+ type: "POST",
276
+ url: pmQuery('.paymill-payment-token-url-cc').val(),
277
+ }).done(function(msg) {
278
+ returnVal = msg;
279
+ }).fail(function(jqXHR, textStatus) {
280
+ // Appending error
281
+ var nv = {};
282
+
283
+ nv['paymill-validate-' + that.getPaymillCode() + '-token'] = new Validator(
284
+ 'paymill-validate-' + that.getPaymillCode() + '-token',
285
+ that.getValueIfExist('.paymill-payment-error-' + that.getPaymillCode() + '-token') + " Amount not accessable. Reason: " + textStatus,
286
+ function(v) {
287
+ return v !== '';
288
+ },
289
+ ''
290
+ );
291
+
292
+ Object.extend(Validation.methods, nv);
293
+ });
294
+
295
+ return returnVal;
296
+ }
297
+
298
+ /**
299
+ * Unset elv validation rules
300
+ */
301
+ Paymill.prototype.unsetElvValidationRules = function()
302
+ {
303
+ var nvElv = {
304
+ 'paymill-validate-dd-holdername': new Validator(
305
+ 'paymill-validate-dd-holdername',
306
+ '',
307
+ function(v) {
308
+ return true;
309
+ },
310
+ ''
311
+ ),
312
+ 'paymill-validate-dd-iban': new Validator(
313
+ 'paymill-validate-dd-iban',
314
+ '',
315
+ function(v) {
316
+ return true;
317
+ },
318
+ ''
319
+ ),
320
+ 'paymill-validate-dd-bic': new Validator(
321
+ 'paymill-validate-dd-bic',
322
+ '',
323
+ function(v) {
324
+ return true;
325
+ },
326
+ ''
327
+ ),
328
+ 'paymill-validate-dd-account': new Validator(
329
+ 'paymill-validate-dd-account',
330
+ '',
331
+ function(v) {
332
+ return true;
333
+ },
334
+ ''
335
+ ),
336
+ 'paymill-validate-dd-bankcode': new Validator(
337
+ 'paymill-validate-dd-bankcode',
338
+ '',
339
+ function(v) {
340
+ return true;
341
+ },
342
+ ''
343
+ )
344
+ };
345
+
346
+ Object.extend(Validation.methods, nvElv);
347
+ }
348
+
349
+ /**
350
+ * Unset cc validation rules
351
+ */
352
+ Paymill.prototype.unsetCcValidationRules = function()
353
+ {
354
+ var nvCc = {
355
+ 'paymill-validate-cc-number': new Validator(
356
+ 'paymill-validate-cc-number',
357
+ '',
358
+ function(v) {
359
+ return true;
360
+ },
361
+ ''
362
+ ),
363
+ 'paymill-validate-cc-expdate-month': new Validator(
364
+ 'paymill-validate-cc-expdate-month',
365
+ '',
366
+ function(v) {
367
+ return true;
368
+ },
369
+ ''
370
+ ),
371
+ 'paymill-validate-cc-expdate-year': new Validator(
372
+ 'paymill-validate-cc-expdate-year',
373
+ '',
374
+ function(v) {
375
+ return true;
376
+ },
377
+ ''
378
+ ),
379
+ 'paymill-validate-cc-holder': new Validator(
380
+ 'paymill-validate-cc-holder',
381
+ '',
382
+ function(v) {
383
+ return true;
384
+ },
385
+ ''
386
+ ),
387
+ 'paymill-validate-cc-cvc': new Validator(
388
+ 'paymill-validate-cc-cvc',
389
+ '',
390
+ function(v) {
391
+ return true;
392
+ },
393
+ ''
394
+ )
395
+ };
396
+
397
+ Object.extend(Validation.methods, nvCc);
398
+ }
399
+
400
+ /**
401
+ * Set elv validation rules
402
+ */
403
+ Paymill.prototype.setElvValidationRules = function()
404
+ {
405
+ var nvElv = {
406
+ 'paymill-validate-dd-holdername': new Validator(
407
+ 'paymill-validate-dd-holdername',
408
+ this.getValueIfExist('.paymill-payment-error-holder-elv'),
409
+ function(v) {
410
+ return !(v === '');
411
+ },
412
+ ''
413
+ ),
414
+ 'paymill-validate-dd-iban': new Validator(
415
+ 'paymill-validate-dd-iban',
416
+ this.getValueIfExist('.paymill-payment-error-iban-elv'),
417
+ function(v) {
418
+ return !(v === '');
419
+ },
420
+ ''
421
+ ),
422
+ 'paymill-validate-dd-bic': new Validator(
423
+ 'paymill-validate-dd-bic',
424
+ this.getValueIfExist('.paymill-payment-error-bic-elv'),
425
+ function(v) {
426
+ return !(v === '');
427
+ },
428
+ ''
429
+ ),
430
+ 'paymill-validate-dd-account': new Validator(
431
+ 'paymill-validate-dd-account',
432
+ this.getValueIfExist('.paymill-payment-error-number-elv'),
433
+ function(v) {
434
+ return paymill.validateAccountNumber(v);
435
+ },
436
+ ''
437
+ ),
438
+ 'paymill-validate-dd-bankcode': new Validator(
439
+ 'paymill-validate-dd-bankcode',
440
+ this.getValueIfExist('.paymill-payment-error-bankcode'),
441
+ function(v) {
442
+ return paymill.validateBankCode(v);
443
+ },
444
+ ''
445
+ )
446
+ };
447
+
448
+ Object.extend(Validation.methods, nvElv);
449
+ }
450
+
451
+ /**
452
+ * Set cc validation rules
453
+ */
454
+ Paymill.prototype.setCcValidationRules = function()
455
+ {
456
+ var that = this;
457
+ var nvCc = {
458
+ 'paymill-validate-cc-number': new Validator(
459
+ 'paymill-validate-cc-number',
460
+ this.getValueIfExist('.paymill-payment-error-number'),
461
+ function(v) {
462
+ return paymill.validateCardNumber(v);
463
+ },
464
+ ''
465
+ ),
466
+ 'paymill-validate-cc-expdate-month': new Validator(
467
+ 'paymill-validate-cc-expdate-month',
468
+ this.getValueIfExist('.paymill-payment-error-expdate'),
469
+ function(v) {
470
+
471
+ return paymill.validateExpiry(v, pmQuery('.paymill-validate-cc-expdate-year').val());
472
+ },
473
+ ''
474
+ ),
475
+ 'paymill-validate-cc-expdate-year': new Validator(
476
+ 'paymill-validate-cc-expdate-year',
477
+ this.getValueIfExist('.paymill-payment-error-expdate'),
478
+ function(v) {
479
+ return paymill.validateExpiry(pmQuery('.paymill-validate-cc-expdate-month').val(), v);
480
+ },
481
+ ''
482
+ ),
483
+ 'paymill-validate-cc-holder': new Validator(
484
+ 'paymill-validate-cc-holder',
485
+ this.getValueIfExist('.paymill-payment-error-holder'),
486
+ function(v) {
487
+ return (paymill.validateHolder(v));
488
+ },
489
+ ''
490
+ ),
491
+ 'paymill-validate-cc-cvc': new Validator(
492
+ 'paymill-validate-cc-cvc',
493
+ this.getValueIfExist('.paymill-payment-error-cvc'),
494
+ function(v) {
495
+ if (paymill.cardType(pmQuery('#' + that.paymillCode + '_number').val()).toLowerCase() === 'maestro') {
496
+ return true;
497
+ }
498
+
499
+ return paymill.validateCvc(v);
500
+ },
501
+ ''
502
+ )
503
+ };
504
+
505
+ Object.extend(Validation.methods, nvCc);
506
+ }
507
+
508
+ /**
509
+ * Add all paymill events
510
+ */
511
+ Paymill.prototype.addPaymillEvents = function()
512
+ {
513
+ var that = this;
514
+
515
+ this.setElvValidationRules();
516
+
517
+ this.setCcValidationRules();
518
+
519
+ if (pmQuery('.paymill-info-fastCheckout-elv').val() === 'true') {
520
+ that.unsetElvValidationRules();
521
+ }
522
+
523
+ if (pmQuery('.paymill-info-fastCheckout-cc').val() === 'true') {
524
+ that.unsetCcValidationRules();
525
+ }
526
+
527
+ pmQuery('#' + this.paymillCode + '_iban').keyup(function() {
528
+ var iban = pmQuery('#' + that.paymillCode + '_iban').val();
529
+ if (!iban.match(/^DE/)) {
530
+ var newVal = "DE";
531
+ if (iban.match(/^.{2}(.*)/)) {
532
+ newVal += iban.match(/^.{2}(.*)/)[1];
533
+ }
534
+
535
+ pmQuery('#' + that.paymillCode + '_iban').val(newVal);
536
+ }
537
+ });
538
+
539
+ pmQuery('#' + this.paymillCode + '_iban').trigger('keyup');
540
+
541
+ if (!this.eventFlag) {
542
+
543
+ pmQuery('#' + this.paymillCode + '_holdername').live('input', function() {
544
+ that.setElvValidationRules();
545
+ pmQuery('.paymill-info-fastCheckout-elv').val('false');
546
+ });
547
+
548
+ pmQuery('#' + this.paymillCode + '_account').live('input', function() {
549
+ that.setElvValidationRules();
550
+ pmQuery('.paymill-info-fastCheckout-elv').val('false');
551
+ });
552
+
553
+ pmQuery('#' + this.paymillCode + '_bankcode').live('input', function() {
554
+ that.setElvValidationRules();
555
+ pmQuery('.paymill-info-fastCheckout-elv').val('false');
556
+ });
557
+
558
+ pmQuery('#' + this.paymillCode + '_iban').live('input', function() {
559
+ that.setElvValidationRules();
560
+ pmQuery('.paymill-info-fastCheckout-elv').val('false');
561
+ });
562
+
563
+ pmQuery('#' + this.paymillCode + '_bic').live('input', function() {
564
+ that.setElvValidationRules();
565
+ pmQuery('.paymill-info-fastCheckout-elv').val('false');
566
+ });
567
+
568
+ pmQuery('#' + this.paymillCode + '_holdername').live('input', function() {
569
+ that.setCcValidationRules();
570
+ pmQuery('.paymill-info-fastCheckout-cc').val('false');
571
+ });
572
+
573
+ pmQuery('#' + this.paymillCode + '_cvc').live('input', function() {
574
+ that.setCcValidationRules();
575
+ pmQuery('.paymill-info-fastCheckout-cc').val('false');
576
+ });
577
+
578
+ pmQuery('#' + this.paymillCode + '_number').live('input', function() {
579
+ that.setCcValidationRules();
580
+ pmQuery('.paymill-info-fastCheckout-cc').val('false');
581
+ });
582
+
583
+ pmQuery('#' + this.paymillCode + '_expiry_month').live('change', function() {
584
+ that.setCcValidationRules();
585
+ pmQuery('.paymill-info-fastCheckout-cc').val('false');
586
+ });
587
+
588
+ pmQuery('#' + this.paymillCode + '_expiry_year').live('change', function() {
589
+ that.setCcValidationRules();
590
+ pmQuery('.paymill-info-fastCheckout-cc').val('false');
591
+ });
592
+
593
+ pmQuery('#' + this.paymillCode + '_number').live('input', function() {
594
+ that.paymillShowCardIcon();
595
+ });
596
+
597
+ pmQuery('#' + this.paymillCode + '_cvc').live('input', function() {
598
+ that.paymillSubmitForm();
599
+ });
600
+
601
+ pmQuery('#' + this.paymillCode + '_expiry_month').live('change', function() {
602
+ that.paymillSubmitForm();
603
+ });
604
+
605
+ pmQuery('#' + this.paymillCode + '_expiry_year').live('change', function() {
606
+ that.paymillSubmitForm();
607
+ });
608
+
609
+ pmQuery('#' + this.paymillCode + '_number').live('input', function() {
610
+ that.paymillSubmitForm();
611
+ });
612
+
613
+ pmQuery('#' + this.paymillCode + '_holdername').live('input', function() {
614
+ that.paymillSubmitForm();
615
+ });
616
+
617
+ pmQuery('#' + this.paymillCode + '_holdername').live('input', function() {
618
+ that.paymillSubmitForm();
619
+ });
620
+
621
+ pmQuery('#' + this.paymillCode + '_account').live('input', function() {
622
+ that.paymillSubmitForm();
623
+ });
624
+
625
+ pmQuery('#' + this.paymillCode + '_bankcode').live('input', function() {
626
+ that.paymillSubmitForm();
627
+ });
628
+
629
+ pmQuery('#' + this.paymillCode + '_iban').live('input', function() {
630
+ that.paymillSubmitForm();
631
+ });
632
+
633
+ pmQuery('#' + this.paymillCode + '_bic').live('input', function() {
634
+ that.paymillSubmitForm();
635
+ });
636
+
637
+ this.eventFlag = true;
638
+ }
639
+ }
640
+
641
+ /**
642
+ * Handles the response of the paymill bridge. saves the token in a formfield.
643
+ * @param {Boolean} error
644
+ * @param {response object} result
645
+ */
646
+ paymillResponseHandler = function(error, result)
647
+ {
648
+ window.PAYMILL_LOADING = false;
649
+
650
+ var nv = {};
651
+ paymillObj = new Paymill();
652
+ paymillObj.setCodes();
653
+ if (error) {
654
+ pmQuery('#paymill_creditcard_cvc').val('');
655
+ var message = 'unknown_error';
656
+ var key = error.apierror;
657
+ if(paymillObj.getValueIfExist('.PAYMILL_' + key + '-' + paymillObj.getPaymillCode()) !== ''){
658
+ message = paymillObj.getValueIfExist('.PAYMILL_' + key + '-' + paymillObj.getPaymillCode());
659
+ }
660
+
661
+ if (message === 'unknown_error' && error.message !== undefined) {
662
+ message = error.message;
663
+ }
664
+
665
+ // Appending error
666
+ nv['paymill-validate-' + paymillObj.getPaymillCode() + '-token'] = new Validator(
667
+ 'paymill-validate-' + paymillObj.getPaymillCode() + '-token',
668
+ paymillObj.getValueIfExist('.paymill-payment-error-' + paymillObj.getPaymillCode() + '-token') + message,
669
+ function(v) {
670
+ return false;
671
+ },
672
+ ''
673
+ );
674
+
675
+ Object.extend(Validation.methods, nv);
676
+
677
+ paymillObj.logError(error);
678
+
679
+ paymillObj.debug(error.apierror);
680
+ paymillObj.debug(error.message);
681
+ paymillObj.debug("Paymill Response Handler triggered: Error.");
682
+ } else {
683
+ nv['paymill-validate-' + paymillObj.getPaymillCode() + '-token'] = new Validator(
684
+ 'paymill-validate-' + paymillObj.getPaymillCode() + '-token',
685
+ '',
686
+ function(v) {
687
+ return true;
688
+ },
689
+ ''
690
+ );
691
+
692
+ Object.extend(Validation.methods, nv);
693
+ // Appending Token to form
694
+ paymillObj.debug("Saving Token in Form: " + result.token);
695
+ pmQuery('.paymill-payment-token-' + paymillObj.getPaymillCode()).val(result.token);
696
+ }
697
+ }
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Paymill_Paymill</name>
4
- <version>3.9.2</version>
5
  <stability>stable</stability>
6
  <license>Open Software License</license>
7
  <channel>community</channel>
@@ -13,11 +13,11 @@ The Paymill Magento extension provides a credit card form and a direct debit for
13
  &lt;br /&gt;&lt;br /&gt;&#xD;
14
  IMPORTANT: Only use the latest version.&#xD;
15
  </description>
16
- <notes>* add a javascript fallback for Array.forEach to support the token selector feature also for IE 8</notes>
17
  <authors><author><name>PayIntelligent</name><user>Paymill</user><email>community@paymill.de</email></author></authors>
18
- <date>2014-10-29</date>
19
- <time>10:48:04</time>
20
- <contents><target name="magecommunity"><dir name="Paymill"><dir><dir name="Paymill"><dir name="Block"><dir name="Adminhtml"><dir name="Hook"><dir name="Edit"><file name="Form.php" hash="8e0928b3c817110cae53c179132d679a"/></dir><file name="Edit.php" hash="3201ba9db687f8993f893b4c22123cf4"/><file name="Grid.php" hash="1926f09019fc80dacead18055380c128"/></dir><file name="Hook.php" hash="1f8318e93fca93cfd0cdcb9c4b36c9c8"/><dir name="Log"><file name="Grid.php" hash="7d74f94403297eeb551272ad5c94513f"/><dir name="View"><file name="Plane.php" hash="179e10aea0213d2caed595ae9111b993"/><file name="Tabs.php" hash="d16d9748921a34067242eaf92d6f299e"/></dir><file name="View.php" hash="af850dd16c3e7505a69a6cb3ca3fbc27"/></dir><file name="Log.php" hash="02930fb46a2a4569176ceb29c45037e8"/></dir><dir name="Payment"><dir name="Form"><file name="PaymentFormAbstract.php" hash="b42edc338110bd2f81fcf85169d3d82c"/><file name="PaymentFormCreditcard.php" hash="037ab8502605b450ca5b839bfe074baf"/><file name="PaymentFormDirectdebit.php" hash="ea9ab99268994373866162d432d27556"/></dir><dir name="Info"><file name="PaymentFormCreditcard.php" hash="b268d26aec4a24756564e61efc0c7bca"/><file name="PaymentFormDirectdebit.php" hash="d3a3e0384aa932972a97bc8f719ff545"/></dir></dir></dir><dir name="Helper"><file name="CustomerHelper.php" hash="5aa5cd0dd7f64764ae047b42fe037539"/><file name="Data.php" hash="8e55041f6bb52f1e142b86dfa486b85e"/><file name="FastCheckoutHelper.php" hash="d8577264d2bd9d60b231e12377b8385c"/><file name="HookHelper.php" hash="7074614ef750704d8df8cbb5cc7aa975"/><file name="LoggingHelper.php" hash="53ea7f4d5c3af8de149a06dbe37ac061"/><file name="OptionHelper.php" hash="6bfe33ab13f87c300c1f4a963e70a670"/><file name="PaymentHelper.php" hash="ecdd8d0f7c3854ddb2df54fa829baa7a"/><file name="RefundHelper.php" hash="64ddf9363deed8fb983eb3fc14bee0f8"/></dir><dir name="Model"><file name="Fastcheckout.php" hash="e3b585d2f3265300f08fa44a4e9ccd7b"/><dir name="Log"><file name="Search.php" hash="0ca873e4779126dabf04a413cf53b619"/></dir><file name="Log.php" hash="0662d814e53bd2eeb6f5c906c16ad971"/><dir name="Method"><file name="MethodModelAbstract.php" hash="42bbdeaa31117d17262ae099e089f385"/><file name="MethodModelCreditcard.php" hash="01750a3ffb74f38e0ca6412f3146751c"/><file name="MethodModelDirectdebit.php" hash="1a8ea1470b76545b7e04e418b0be432f"/></dir><dir name="Mysql4"><dir name="Fastcheckout"><file name="Collection.php" hash="14d4aa413ec952fd2452f08ab2a208f6"/></dir><file name="Fastcheckout.php" hash="9b19c307417862938442ddd6789f2b43"/><dir name="Log"><file name="Collection.php" hash="cf4d8fec68a4cc44b2e47bf69e014cf3"/></dir><file name="Log.php" hash="bdf0bf498c1214955e20e72185e5320f"/></dir><file name="Observer.php" hash="668f2cb3667c4d690da79ef1149cd5ab"/><dir name="Source"><dir name="Creditcard"><file name="Creditcards.php" hash="03c3a75891b3883f2c97c2b06160f52c"/></dir><file name="Hooks.php" hash="65042602cd494a4842a4d0d61188113a"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="HookController.php" hash="e8fb264f19b652b64f4e1fb3e74d9944"/><file name="LogController.php" hash="e75064047b35896e57ac8e564bd0ff5a"/></dir><file name="HookController.php" hash="62952686435524168e176fb232c45bc6"/><file name="TokenController.php" hash="8b606f0728fd556a6180ebeb042dbf13"/></dir><dir name="etc"><file name="adminhtml.xml" hash="12f6a03b55bd9f65daae785b31fe0ca5"/><file name="config.xml" hash="39b26d2ebd181a296d3dba774b26d667"/><file name="system.xml" hash="0e29916070ca0142962b6ce58f288fdc"/></dir><dir name="sql"><dir name="paymill_setup"><file name="mysql4-install-3.0.0.php" hash="37e5e1850e143315779e30bd1b45f277"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="paymill"><dir><dir name="log"><file name="view.phtml" hash="2d4df28de6e1cb4701963db3d0c0545c"/></dir><dir name="payment"><dir name="info"><file name="creditcard.phtml" hash="8d8f6f828173f145dd3cb29f9770dca9"/><file name="creditcard_pdf.phtml" hash="68febe619bb9918b785dcbb0593c4ebe"/><file name="directdebit.phtml" hash="cd2ea623c0bc54d208f0f30f032da151"/><file name="directdebit_pdf.phtml" hash="5a2e5c36d4f4702e5f9be4b5affe3421"/></dir></dir></dir></dir></dir><dir name="layout"><file name="paymill.xml" hash="4e8dea9280199547d2b3dd96ca90bb53"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="paymill"><dir><dir name="payment"><dir name="form"><file name="creditcard.phtml" hash="f97012161e4b69914c9f1f07ddbd4f77"/><file name="directdebit.phtml" hash="21dbf146de257ca6ab4aafd7bc816a1b"/></dir><dir name="info"><file name="creditcard.phtml" hash="42f875eb1b6e3e6151ddf152ef0bf13a"/><file name="directdebit.phtml" hash="7117525384b82b84fbbbe1f42c52328c"/></dir></dir></dir></dir></dir><dir name="layout"><file name="paymill.xml" hash="81b932339b00b90ed1fa4736c7f85537"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Paymill_Paymill.xml" hash="d36d3af5f5752dcf87517272ddb9af53"/></dir></target><target name="magelocale"><dir name="de_DE"><file name="Paymill_Paymill.csv" hash="eaf2353b41bb71a62cac1393cf7b6d2a"/></dir><dir name="en_GB"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="en_US"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="es_ES"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="de_AT"><file name="Paymill_Paymill.csv" hash="eaf2353b41bb71a62cac1393cf7b6d2a"/></dir><dir name="de_CH"><file name="Paymill_Paymill.csv" hash="eaf2353b41bb71a62cac1393cf7b6d2a"/></dir><dir name="en_AU"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="en_CA"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="en_IE"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="en_NZ"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="en_ZA"><file name="Paymill_Paymill.csv" hash="4c6db84afff830bdcbf1d26269e712b1"/></dir><dir name="es_AR"><file name="Paymill_Paymill.csv" hash="e640a01398c07d53c8eb388fb8016c17"/></dir><dir name="es_CL"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="es_CO"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="es_CR"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="es_MX"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="es_PE"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="es_VE"><file name="Paymill_Paymill.csv" hash="eed3f7e3064ed2e42511e8e8e543b1b8"/></dir><dir name="fr_CA"><file name="Paymill_Paymill.csv" hash="5867e6c29a276a141c344c00283208c6"/></dir><dir name="fr_FR"><file name="Paymill_Paymill.csv" hash="5867e6c29a276a141c344c00283208c6"/></dir><dir name="it_CH"><file name="Paymill_Paymill.csv" hash="0abbc8a86db33ecb6eec67cc0dc6badf"/></dir><dir name="it_IT"><file name="Paymill_Paymill.csv" hash="0abbc8a86db33ecb6eec67cc0dc6badf"/></dir><dir name="pt_BR"><file name="Paymill_Paymill.csv" hash="23e37698bf34cafa56bddd5ddedaad0f"/></dir><dir name="pt_PT"><file name="Paymill_Paymill.csv" hash="23e37698bf34cafa56bddd5ddedaad0f"/></dir></target><target name="mage"><dir name="js"><dir name="paymill"><file name="BrandDetection.js" hash="398d4b916fbbce5e84e6788517a02064"/><file name="Creditcard.js" hash="5cddb80ecb2b8b9701ea197ab428a0e0"/><file name="Elv.js" hash="67b3555e4d51284f5ef7422a7e1aa15c"/><file name="Iban.js" hash="c05a4791a0cc414f2f7cc720fcd665ec"/><file name="Paymill.js" hash="08be54f65ef49950a96e0c84cead8e69"/><file name="PaymillHelper.js" hash="59bc5d786dd201a7530b8e7ce8107bec"/></dir></dir></target><target name="magelib"><dir name="Services"><dir><dir name="Paymill"><dir name="Apiclient"><file name="Curl.php" hash="cce77823a94425aaa2b421e63f130422"/><file name="Interface.php" hash="349309458455e550c562fb17cf23f4a6"/><file name="paymill.crt" hash="51e14b4c734e450402ea2cf73f2aee0f"/></dir><file name="Base.php" hash="141fa330c6894ff15faf413be19bf209"/><file name="Clients.php" hash="c8eb5fe8780f2da7b5eb173a5be43c7f"/><file name="Exception.php" hash="9beffb75d92c0de3c1c7ea5b33930fff"/><file name="LoggingInterface.php" hash="46ebeede1da14b761c54a18aff6c3b79"/><file name="Offers.php" hash="e2dcf9c9a54d9aba16e1caf02b438098"/><file name="PaymentProcessor.php" hash="4ee5f6e16dfdefaa8dc6565cfce2d271"/><file name="Payments.php" hash="d2a6d0679701d100c9e876f88215455c"/><file name="Preauthorizations.php" hash="597f7228584f32ee42d8916ae098b454"/><file name="Refunds.php" hash="e909af53108426a9e178417db850675f"/><file name="Subscriptions.php" hash="b72a31c4041029e08df1d7e85aa7391b"/><file name="Transactions.php" hash="382c12f290752b7c50e2001cdf5cd4a8"/><file name="Webhooks.php" hash="5fd2e6baf7bb0dc3ad8edb1eab41fb91"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="paymill"><file name="logo.css" hash="a0597a469bd0e0354ac4e561621d6584"/></dir></dir><dir name="images"><dir name="paymill"><file name="ajax-loader.gif" hash="07c56b266e277696ee3d9e3ffd627450"/><file name="icon_32x20_amex.png" hash="42c5fb43b4b603804b50da9761927d40"/><file name="icon_32x20_carta-si.png" hash="236ea747b59067b1d25cdc317e52aae5"/><file name="icon_32x20_carte-bleue.png" hash="187f19af694d83bd745c278845c3b3cd"/><file name="icon_32x20_china-unionpay.png" hash="6c9d16d6c65c0da5ff11e8ae13b01d15"/><file name="icon_32x20_dankort.png" hash="938df2f2100d1182dfdd677eb6a0bded"/><file name="icon_32x20_diners-club.png" hash="0a7a8fc8f679ccf05d91298c9968629c"/><file name="icon_32x20_dinersclub.png" hash="0a7a8fc8f679ccf05d91298c9968629c"/><file name="icon_32x20_discover.png" hash="4fe8ef419087bed97cddbdeb251b847c"/><file name="icon_32x20_jcb.png" hash="774a040f938c5566fa3fddfa840d4743"/><file name="icon_32x20_maestro.png" hash="a6ffd22c9bbedb603449e2aa6136dbd1"/><file name="icon_32x20_mastercard.png" hash="09aef6dcbc50038605b7c0e5a38eb76e"/><file name="icon_32x20_unionpay.png" hash="6c9d16d6c65c0da5ff11e8ae13b01d15"/><file name="icon_32x20_visa.png" hash="e6d54e5c0120202eb5757bcfe499d73b"/><file name="icon_paymill.png" hash="303983a288b45cc7ddc5b88ad2eedd51"/></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
23
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Paymill_Paymill</name>
4
+ <version>4.0.0</version>
5
  <stability>stable</stability>
6
  <license>Open Software License</license>
7
  <channel>community</channel>
13
  &lt;br /&gt;&lt;br /&gt;&#xD;
14
  IMPORTANT: Only use the latest version.&#xD;
15
  </description>
16
+ <notes>* Integration of PayFrame to enable use of SAQ A for easier PCI DSS 3.0 compliance.</notes>
17
  <authors><author><name>PayIntelligent</name><user>Paymill</user><email>community@paymill.de</email></author></authors>
18
+ <date>2015-07-21</date>
19
+ <time>11:57:27</time>
20
+ <contents><target name="magecommunity"><dir name="Paymill"><dir><dir name="Paymill"><dir name="Block"><dir name="Adminhtml"><dir name="Hook"><dir name="Edit"><file name="Form.php" hash="8e0928b3c817110cae53c179132d679a"/></dir><file name="Edit.php" hash="3201ba9db687f8993f893b4c22123cf4"/><file name="Grid.php" hash="1926f09019fc80dacead18055380c128"/></dir><file name="Hook.php" hash="1f8318e93fca93cfd0cdcb9c4b36c9c8"/><dir name="Log"><file name="Grid.php" hash="7d74f94403297eeb551272ad5c94513f"/><dir name="View"><file name="Plane.php" hash="179e10aea0213d2caed595ae9111b993"/><file name="Tabs.php" hash="d16d9748921a34067242eaf92d6f299e"/></dir><file name="View.php" hash="af850dd16c3e7505a69a6cb3ca3fbc27"/></dir><file name="Log.php" hash="02930fb46a2a4569176ceb29c45037e8"/></dir><dir name="Payment"><dir name="Form"><file name="PaymentFormAbstract.php" hash="d1cffc7f4319b8d311e9ae8725a1df15"/><file name="PaymentFormCreditcard.php" hash="320c7d214ddebc732baf7228e1855520"/><file name="PaymentFormDirectdebit.php" hash="ea9ab99268994373866162d432d27556"/></dir><dir name="Info"><file name="PaymentFormCreditcard.php" hash="b268d26aec4a24756564e61efc0c7bca"/><file name="PaymentFormDirectdebit.php" hash="d3a3e0384aa932972a97bc8f719ff545"/></dir></dir></dir><dir name="Helper"><file name="CustomerHelper.php" hash="5aa5cd0dd7f64764ae047b42fe037539"/><file name="Data.php" hash="8e55041f6bb52f1e142b86dfa486b85e"/><file name="FastCheckoutHelper.php" hash="d8577264d2bd9d60b231e12377b8385c"/><file name="HookHelper.php" hash="7074614ef750704d8df8cbb5cc7aa975"/><file name="LoggingHelper.php" hash="53ea7f4d5c3af8de149a06dbe37ac061"/><file name="OptionHelper.php" hash="ccb5767eaab691cadb930c081cbbd6f6"/><file name="PaymentHelper.php" hash="ecdd8d0f7c3854ddb2df54fa829baa7a"/><file name="RefundHelper.php" hash="64ddf9363deed8fb983eb3fc14bee0f8"/></dir><dir name="Model"><file name="Fastcheckout.php" hash="e3b585d2f3265300f08fa44a4e9ccd7b"/><dir name="Log"><file name="Search.php" hash="0ca873e4779126dabf04a413cf53b619"/></dir><file name="Log.php" hash="0662d814e53bd2eeb6f5c906c16ad971"/><dir name="Method"><file name="MethodModelAbstract.php" hash="42c68d0d909101c369e138ce1bcc36b4"/><file name="MethodModelCreditcard.php" hash="01750a3ffb74f38e0ca6412f3146751c"/><file name="MethodModelDirectdebit.php" hash="1a8ea1470b76545b7e04e418b0be432f"/></dir><dir name="Mysql4"><dir name="Fastcheckout"><file name="Collection.php" hash="14d4aa413ec952fd2452f08ab2a208f6"/></dir><file name="Fastcheckout.php" hash="9b19c307417862938442ddd6789f2b43"/><dir name="Log"><file name="Collection.php" hash="cf4d8fec68a4cc44b2e47bf69e014cf3"/></dir><file name="Log.php" hash="bdf0bf498c1214955e20e72185e5320f"/></dir><file name="Observer.php" hash="668f2cb3667c4d690da79ef1149cd5ab"/><dir name="Source"><dir name="Creditcard"><file name="Creditcards.php" hash="03c3a75891b3883f2c97c2b06160f52c"/><file name="Pci.php" hash="64a9f90f8f1e0966160ad54b05d5c8e1"/></dir><file name="Hooks.php" hash="65042602cd494a4842a4d0d61188113a"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="HookController.php" hash="e8fb264f19b652b64f4e1fb3e74d9944"/><file name="LogController.php" hash="e75064047b35896e57ac8e564bd0ff5a"/></dir><file name="HookController.php" hash="62952686435524168e176fb232c45bc6"/><file name="TokenController.php" hash="8b606f0728fd556a6180ebeb042dbf13"/></dir><dir name="etc"><file name="adminhtml.xml" hash="12f6a03b55bd9f65daae785b31fe0ca5"/><file name="config.xml" hash="760423a618c46ec8d176dd29ac679501"/><file name="system.xml" hash="b91a1c8fbecee13892b3188e96ea3041"/></dir><dir name="sql"><dir name="paymill_setup"><file name="mysql4-install-3.0.0.php" hash="37e5e1850e143315779e30bd1b45f277"/></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="paymill"><dir><dir name="log"><file name="view.phtml" hash="2d4df28de6e1cb4701963db3d0c0545c"/></dir><dir name="payment"><dir name="info"><file name="creditcard.phtml" hash="8d8f6f828173f145dd3cb29f9770dca9"/><file name="creditcard_pdf.phtml" hash="68febe619bb9918b785dcbb0593c4ebe"/><file name="directdebit.phtml" hash="cd2ea623c0bc54d208f0f30f032da151"/><file name="directdebit_pdf.phtml" hash="5a2e5c36d4f4702e5f9be4b5affe3421"/></dir></dir></dir></dir></dir><dir name="layout"><file name="paymill.xml" hash="4e8dea9280199547d2b3dd96ca90bb53"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="paymill"><dir><dir name="payment"><dir name="form"><file name="creditcard.phtml" hash="21125c1817c7b89028d1c8a97d7c12fe"/><file name="creditcard_form.phtml" hash="7bd8f77cc86e7f660fdb6ee88a15776e"/><file name="directdebit.phtml" hash="f6c3b1b073937f60f21ed0e9f589748b"/></dir><dir name="info"><file name="creditcard.phtml" hash="42f875eb1b6e3e6151ddf152ef0bf13a"/><file name="directdebit.phtml" hash="7117525384b82b84fbbbe1f42c52328c"/></dir></dir></dir></dir></dir><dir name="layout"><file name="paymill.xml" hash="8eb76edb5966445f13ee410e64c83f31"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Paymill_Paymill.xml" hash="d36d3af5f5752dcf87517272ddb9af53"/></dir></target><target name="magelocale"><dir name="de_DE"><file name="Paymill_Paymill.csv" hash="4556293c885ac268abed7cdfb2358c82"/></dir><dir name="en_GB"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="en_US"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="es_ES"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="de_AT"><file name="Paymill_Paymill.csv" hash="4556293c885ac268abed7cdfb2358c82"/></dir><dir name="de_CH"><file name="Paymill_Paymill.csv" hash="4556293c885ac268abed7cdfb2358c82"/></dir><dir name="en_AU"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="en_CA"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="en_IE"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="en_NZ"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="en_ZA"><file name="Paymill_Paymill.csv" hash="7de48e97650e8f90bf9b0f6143192454"/></dir><dir name="es_AR"><file name="Paymill_Paymill.csv" hash="4ba3c0da9abac5c8a4f511bf027733fa"/></dir><dir name="es_CL"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="es_CO"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="es_CR"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="es_MX"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="es_PE"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="es_VE"><file name="Paymill_Paymill.csv" hash="d8eea7061d03482df776bd6cbf7f9616"/></dir><dir name="fr_CA"><file name="Paymill_Paymill.csv" hash="ac53bb84ecfe97efa2501398a13dc3b7"/></dir><dir name="fr_FR"><file name="Paymill_Paymill.csv" hash="ac53bb84ecfe97efa2501398a13dc3b7"/></dir><dir name="it_CH"><file name="Paymill_Paymill.csv" hash="251f51db178ee81156bea84a5e7772c1"/></dir><dir name="it_IT"><file name="Paymill_Paymill.csv" hash="251f51db178ee81156bea84a5e7772c1"/></dir><dir name="pt_BR"><file name="Paymill_Paymill.csv" hash="10f73d4da969cb2cefe3da1a6ce20b76"/></dir><dir name="pt_PT"><file name="Paymill_Paymill.csv" hash="10f73d4da969cb2cefe3da1a6ce20b76"/></dir></target><target name="mage"><dir name="js"><dir name="paymill"><file name="BrandDetection.js" hash="398d4b916fbbce5e84e6788517a02064"/><file name="Creditcard.js" hash="62d856d1e2b71a5ee2ddc2efadf42f7f"/><file name="Elv.js" hash="67b3555e4d51284f5ef7422a7e1aa15c"/><file name="Iban.js" hash="c05a4791a0cc414f2f7cc720fcd665ec"/><file name="Paymill.js" hash="a83536acb19367f1a3da8648e9efe649"/><file name="PaymillHelper.js" hash="59bc5d786dd201a7530b8e7ce8107bec"/><file name="paymentForm.js" hash="48812878cc1ae9edde563dbf1feaf671"/></dir></dir></target><target name="magelib"><dir name="Services"><dir><dir name="Paymill"><dir name="Apiclient"><file name="Curl.php" hash="cce77823a94425aaa2b421e63f130422"/><file name="Interface.php" hash="349309458455e550c562fb17cf23f4a6"/><file name="paymill.crt" hash="51e14b4c734e450402ea2cf73f2aee0f"/></dir><file name="Base.php" hash="141fa330c6894ff15faf413be19bf209"/><file name="Clients.php" hash="c8eb5fe8780f2da7b5eb173a5be43c7f"/><file name="Exception.php" hash="9beffb75d92c0de3c1c7ea5b33930fff"/><file name="LoggingInterface.php" hash="46ebeede1da14b761c54a18aff6c3b79"/><file name="Offers.php" hash="e2dcf9c9a54d9aba16e1caf02b438098"/><file name="PaymentProcessor.php" hash="4ee5f6e16dfdefaa8dc6565cfce2d271"/><file name="Payments.php" hash="d2a6d0679701d100c9e876f88215455c"/><file name="Preauthorizations.php" hash="597f7228584f32ee42d8916ae098b454"/><file name="Refunds.php" hash="e909af53108426a9e178417db850675f"/><file name="Subscriptions.php" hash="b72a31c4041029e08df1d7e85aa7391b"/><file name="Transactions.php" hash="382c12f290752b7c50e2001cdf5cd4a8"/><file name="Webhooks.php" hash="5fd2e6baf7bb0dc3ad8edb1eab41fb91"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="paymill"><file name="logo.css" hash="a0597a469bd0e0354ac4e561621d6584"/></dir></dir><dir name="images"><dir name="paymill"><file name="ajax-loader.gif" hash="07c56b266e277696ee3d9e3ffd627450"/><file name="icon_32x20_amex.png" hash="42c5fb43b4b603804b50da9761927d40"/><file name="icon_32x20_carta-si.png" hash="236ea747b59067b1d25cdc317e52aae5"/><file name="icon_32x20_carte-bleue.png" hash="187f19af694d83bd745c278845c3b3cd"/><file name="icon_32x20_china-unionpay.png" hash="6c9d16d6c65c0da5ff11e8ae13b01d15"/><file name="icon_32x20_dankort.png" hash="938df2f2100d1182dfdd677eb6a0bded"/><file name="icon_32x20_diners-club.png" hash="0a7a8fc8f679ccf05d91298c9968629c"/><file name="icon_32x20_dinersclub.png" hash="0a7a8fc8f679ccf05d91298c9968629c"/><file name="icon_32x20_discover.png" hash="4fe8ef419087bed97cddbdeb251b847c"/><file name="icon_32x20_jcb.png" hash="774a040f938c5566fa3fddfa840d4743"/><file name="icon_32x20_maestro.png" hash="a6ffd22c9bbedb603449e2aa6136dbd1"/><file name="icon_32x20_mastercard.png" hash="09aef6dcbc50038605b7c0e5a38eb76e"/><file name="icon_32x20_unionpay.png" hash="6c9d16d6c65c0da5ff11e8ae13b01d15"/><file name="icon_32x20_visa.png" hash="e6d54e5c0120202eb5757bcfe499d73b"/><file name="icon_paymill.png" hash="303983a288b45cc7ddc5b88ad2eedd51"/></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
23
  </package>