Popular_Payments_Snap_HostedPayments - Version 1.0.0

Version Notes

Initial release.

Download this release

Release Info

Developer Popular Payments
Extension Popular_Payments_Snap_HostedPayments
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (44) hide show
  1. app/code/local/Evo/HostedPayments/Block/Form.php +47 -0
  2. app/code/local/Evo/HostedPayments/Block/Iframe.php +40 -0
  3. app/code/local/Evo/HostedPayments/Block/Iframevalidation.php +39 -0
  4. app/code/local/Evo/HostedPayments/Block/Info.php +59 -0
  5. app/code/local/Evo/HostedPayments/Helper/Data.php +40 -0
  6. app/code/local/Evo/HostedPayments/Model/Hostedpayment.php +43 -0
  7. app/code/local/Evo/HostedPayments/Model/Payment.php +860 -0
  8. app/code/local/Evo/HostedPayments/Model/Resource/Hostedpayment.php +43 -0
  9. app/code/local/Evo/HostedPayments/Model/Resource/Hostedpayment/Collection.php +43 -0
  10. app/code/local/Evo/HostedPayments/Model/Resource/Setup.php +39 -0
  11. app/code/local/Evo/HostedPayments/controllers/ProcessingController.php +308 -0
  12. app/code/local/Evo/HostedPayments/etc/config.xml +146 -0
  13. app/code/local/Evo/HostedPayments/etc/system.xml +128 -0
  14. app/code/local/Evo/HostedPayments/sql/hostedpayments_setup/install-0.1.0.php +59 -0
  15. app/design/adminhtml/default/default/template/evo/info.phtml +38 -0
  16. app/design/frontend/base/default/layout/evohostedpayments.xml +59 -0
  17. app/design/frontend/base/default/template/evo/form.phtml +39 -0
  18. app/design/frontend/base/default/template/evo/iframe.phtml +40 -0
  19. app/design/frontend/base/default/template/evo/iframevalidation.phtml +42 -0
  20. app/design/frontend/base/default/template/evo/info.phtml +47 -0
  21. app/etc/modules/Evo_HostedPayments.xml +41 -0
  22. app/locale/en_US/Evo_HostedPayments.csv +19 -0
  23. app/locale/es_ES/Evo_HostedPayments.csv +19 -0
  24. lib/hostedpayments/evosnap_api.php +297 -0
  25. lib/hostedpayments/evosnap_constants.php +41 -0
  26. lib/hostedpayments/evosnap_tools.php +192 -0
  27. lib/hostedpayments/exceptions/hostepayments_exception.php +38 -0
  28. lib/hostedpayments/index.php +53 -0
  29. lib/hostedpayments/model/address.php +104 -0
  30. lib/hostedpayments/model/checkout.php +87 -0
  31. lib/hostedpayments/model/combo_checkout.php +56 -0
  32. lib/hostedpayments/model/customer.php +68 -0
  33. lib/hostedpayments/model/hostedpayments.php +74 -0
  34. lib/hostedpayments/model/order.php +110 -0
  35. lib/hostedpayments/model/order_checkout.php +50 -0
  36. lib/hostedpayments/model/order_line.php +80 -0
  37. lib/hostedpayments/model/subscription.php +81 -0
  38. lib/hostedpayments/model/subscription_checkout.php +50 -0
  39. lib/hostedpayments/model/token.php +63 -0
  40. package.xml +19 -0
  41. skin/adminhtml/default/default/images/evo/logo.png +0 -0
  42. skin/frontend/base/default/images/evo/brand-logos.png +0 -0
  43. skin/frontend/base/default/images/evo/cc-logo.png +0 -0
  44. skin/frontend/base/default/images/evo/logo.png +0 -0
app/code/local/Evo/HostedPayments/Block/Form.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Block_Form extends Mage_Payment_Block_Form
38
+ {
39
+ /**
40
+ * Varien constructor
41
+ */
42
+ protected function _construct()
43
+ {
44
+ $this->setTemplate('evo/form.phtml');
45
+ parent::_construct();
46
+ }
47
+ }
app/code/local/Evo/HostedPayments/Block/Iframe.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Block_Iframe extends Mage_Core_Block_Template
38
+ {
39
+
40
+ }
app/code/local/Evo/HostedPayments/Block/Iframevalidation.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Block_IframeValidation extends Mage_Core_Block_Template
38
+ {
39
+ }
app/code/local/Evo/HostedPayments/Block/Info.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Block_Info extends Mage_Payment_Block_Info
38
+ {
39
+ /**
40
+ * Varien constructor
41
+ */
42
+ protected function _construct()
43
+ {
44
+ parent::_construct();
45
+ $this->setTemplate('evo/info.phtml');
46
+ }
47
+
48
+ protected function _getPaymentLink(){
49
+ $result = null;
50
+ $paymentInst = $this->getInfo()->getMethodInstance();
51
+ $snapUrl = $paymentInst->getSnapOrderUrl();
52
+ if($snapUrl !== null){
53
+ $result = $snapUrl;
54
+ }
55
+
56
+ return $result;
57
+ }
58
+
59
+ }
app/code/local/Evo/HostedPayments/Helper/Data.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Helper class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Helper_Data extends Mage_Payment_Helper_Data
38
+ {
39
+
40
+ }
app/code/local/Evo/HostedPayments/Model/Hostedpayment.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Hosted Payment Resource model class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Model_Hostedpayment extends Mage_Core_Model_Abstract
38
+ {
39
+ protected function _construct()
40
+ {
41
+ $this->_init("hostedpayments/hostedpayment");
42
+ }
43
+ }
app/code/local/Evo/HostedPayments/Model/Payment.php ADDED
@@ -0,0 +1,860 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Payment model class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+
38
+ require_once(Mage::getBaseDir('lib') . '/hostedpayments/index.php');
39
+
40
+ class Evo_HostedPayments_Model_Payment extends Mage_Payment_Model_Method_Abstract
41
+ {
42
+
43
+ const MERCHANT_CHECKOUT_URL_TEST = 'https://cert-hp.evosnap.com';
44
+ const MERCHANT_CHECKOUT_URL = 'https://hp.evosnap.com';
45
+
46
+ /**
47
+ * Availability options
48
+ */
49
+ protected $_isGateway = false;
50
+ protected $_canAuthorize = false;
51
+ protected $_canCapture = true;
52
+ protected $_canCapturePartial = false;
53
+ protected $_canRefund = false;
54
+ protected $_canVoid = false;
55
+ protected $_canUseInternal = true;
56
+ protected $_canUseCheckout = true;
57
+ protected $_canUseForMultishipping = false;
58
+ protected $_canSaveCc = false;
59
+
60
+ /**
61
+ * Module identifiers
62
+ */
63
+ protected $_code = 'hostedpayments';
64
+ protected $_formBlockType = 'hostedpayments/form';
65
+ protected $_infoBlockType = 'hostedpayments/info';
66
+
67
+ /**
68
+ * Retrieve model helper
69
+ *
70
+ * @return Mage_Payment_Helper_Data
71
+ */
72
+ protected function _getHelper()
73
+ {
74
+ Mage::log(" --- Snap* Hosted Payments API : getHelper --- ");
75
+ return Mage::helper('hostedpayments');
76
+ }
77
+
78
+ /**
79
+ * Get checkout session namespace
80
+ *
81
+ * @return Mage_Checkout_Model_Session
82
+ */
83
+ public function getCheckout()
84
+ {
85
+ Mage::log(" --- Snap* Hosted Payments API : getCheckout --- ");
86
+ return Mage::getSingleton('checkout/session');
87
+ }
88
+
89
+ /**
90
+ * Get current quote
91
+ *
92
+ * @return Mage_Sales_Model_Quote
93
+ */
94
+ public function getQuote()
95
+ {
96
+ Mage::log(" --- Snap* Hosted Payments API : getQuote --- ");
97
+ return $this->getCheckout()->getQuote();
98
+ }
99
+
100
+
101
+ /**
102
+ * Get order model
103
+ *
104
+ * @return Mage_Sales_Model_Order
105
+ */
106
+ public function getOrder()
107
+ {
108
+
109
+ Mage::log(" --- Snap* Hosted Payments API : getOrder --- ");
110
+
111
+ if (!$this->_order && (null !== $this->getInfoInstance()->getOrder()))
112
+ {
113
+ $this->_order = Mage::getModel('sales/order')
114
+ ->loadByIncrementId($this->getInfoInstance()->getOrder()->getRealOrderId());
115
+ }
116
+ return $this->_order;
117
+ }
118
+
119
+ /**
120
+ * Get Customer Id
121
+ *
122
+ * @return string
123
+ */
124
+ public function getCustomerId()
125
+ {
126
+ Mage::log(" --- Snap* Hosted Payments API : getCustomerId --- ");
127
+ $customer = Mage::getSingleton('customer/session');
128
+ if ($customer->isLoggedIn())
129
+ {
130
+ return $customer->getCustomerId();
131
+ }
132
+ else
133
+ {
134
+ return null;
135
+ }
136
+ }
137
+
138
+ /**
139
+ * Retrieves the URL to process the payment within the module.
140
+ * @return string
141
+ */
142
+ public function getOrderPlaceRedirectUrl()
143
+ {
144
+ return Mage::getUrl('hostedpayments/processing/pay');
145
+ }
146
+
147
+ /**
148
+ * Gets 3D Secure Trigger value.
149
+ * @return float
150
+ */
151
+ public function getTrigger3ds(){
152
+ $trigger3ds = $this->getConfigData('trigger3ds');
153
+
154
+ if(trim($trigger3ds) == ''){
155
+ $trigger3ds = null;
156
+ }
157
+
158
+ return $trigger3ds;
159
+ }
160
+
161
+ /**
162
+ * Gets Checkout Layout.
163
+ * @return float
164
+ */
165
+ public function getCheckoutLayout(){
166
+ $useIframe = $this->getConfigData('checkout_iframe');
167
+ return $useIframe? 'iframe' : null;
168
+ }
169
+
170
+ /**
171
+ * Gets Hosted Payments configuration bean.
172
+ * @return HostedPayments
173
+ */
174
+ public function getHostedPaymentsConfiguration(){
175
+ $result = new HostedPayments();
176
+ $result->code = $this->getConfigData('merchant_code');
177
+ $result->key = $this->getConfigData('merchant_authkey');
178
+ $test = $this->getConfigData('test_mode');
179
+ $result->environment = isset($test)? !$test : true;
180
+
181
+ return $result;
182
+ }
183
+
184
+ /**
185
+ * Gets the payment URL.
186
+ */
187
+ public function getPaymentUrl(){
188
+ $order = $this->getOrder();
189
+ $hostedpayment = Mage::getModel('hostedpayments/hostedpayment');
190
+ $hostedpayment->load($order->getRealOrderId(), 'order_id');
191
+
192
+ $paymentUrl = $hostedpayment->getUrl();
193
+
194
+ if(!isset($paymentUrl) || trim($paymentUrl) == '' ){
195
+ $paymentUrl = EvoSnapApi::getOrderCheckoutUrl($this->_getOrderCheckout(),
196
+ $this->getTrigger3ds(), $this->getHostedPaymentsConfiguration());
197
+
198
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('hostedpayments')->__('Customer was redirected to the Snap* Hosted Payments Checkout for payment.'));
199
+ $order->save();
200
+
201
+ $hostedpayment = Mage::getModel('hostedpayments/hostedpayment');
202
+ $hostedpayment->setOrderId($order->getRealOrderId());
203
+ $hostedpayment->setUrl($paymentUrl);
204
+ $hostedpayment->setPrefix($this->getConfigData('order_prefix'));
205
+ $hostedpayment->setDataChanges(true);
206
+ $hostedpayment->save();
207
+ }
208
+
209
+ return $paymentUrl;
210
+ }
211
+
212
+ /**
213
+ * Retrieves Snap* order.
214
+ * @return SnapOrder
215
+ */
216
+ public function getSnapOrder(){
217
+ $order = $this->getOrder();
218
+ $hostedpayment = Mage::getModel('hostedpayments/hostedpayment');
219
+ $hostedpayment->load($order->getRealOrderId(), 'order_id');
220
+
221
+ return EvoSnapApi::getOrder($this->_getOrderId(((null !== $hostedpayment->getId()) && ($hostedpayment->getId() != 0))? $hostedpayment->getPrefix() : $this->getConfigData('order_prefix'), $this->getOrder()->getRealOrderId()), $this->getHostedPaymentsConfiguration());
222
+ }
223
+
224
+ /**
225
+ * Retrieves Snap* order URL.
226
+ * @return String
227
+ */
228
+ public function getSnapOrderUrl(){
229
+ $result = null;
230
+
231
+ $order = $this->getOrder();
232
+
233
+ if(isset($order) && ($order->getStatus() == 'pending') && (null !== $order->getRealOrderId())){
234
+ $hostedpayment = Mage::getModel('hostedpayments/hostedpayment');
235
+ $hostedpayment->load($order->getRealOrderId(), 'order_id');
236
+
237
+ if((null !== $hostedpayment->getId()) && ($hostedpayment->getId() != 0) &&
238
+ (trim($hostedpayment->getUrl()) != '')){
239
+ $result = Mage::getUrl('hostedpayments/processing/return', array('id' => $order->getRealOrderId(), '_secure' => true));
240
+ }
241
+ }
242
+
243
+ return $result;
244
+ }
245
+
246
+ /**
247
+ * Cancels order.
248
+ */
249
+ public function cancelOrder(){
250
+ $order = $this->getOrder();
251
+
252
+ if ($order->canCancel()){
253
+ $order->cancel();
254
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('hostedpayments')->__('Customer cancelled this order via Snap* Hosted Payments Checkout.'));
255
+ $order->save();
256
+ $this->_clearHostedpaymentUrl($order->getRealOrderId());
257
+ }
258
+ }
259
+
260
+ /**
261
+ * Cancels order.
262
+ */
263
+ public function payOrder($snapOrder){
264
+ $order = $this->getOrder();
265
+
266
+ $order->getPayment()->setTransactionId($this->_getTransactionId($snapOrder));
267
+ $order->getPayment()->capture(null);
268
+ $order->save();
269
+ $this->_clearHostedpaymentUrl($order->getRealOrderId());
270
+ }
271
+
272
+ private function _clearHostedpaymentUrl($order_id){
273
+ $hostedpayment = Mage::getModel('hostedpayments/hostedpayment');
274
+ $hostedpayment->load($order_id, 'order_id');
275
+ $hostedpayment->setUrl('');
276
+ $hostedpayment->setDataChanges(true);
277
+ $hostedpayment->save();
278
+ }
279
+
280
+ private function _getTransactionId($snapOrder){
281
+ $result = null;
282
+ if(is_array($snapOrder->transactions)){
283
+ for($i = count($snapOrder->transactions) - 1; $i >= 0; $i--){
284
+ $txn = $snapOrder->transactions[$i];
285
+ if($txn->txn_action == 'sale'){
286
+ $result = $txn->txn_id;
287
+ $i = -1;
288
+ }
289
+ }
290
+ }
291
+
292
+ return $result;
293
+ }
294
+
295
+ /**
296
+ * Gets order checkout object.
297
+ * @return SnapCheckoutAbstract
298
+ */
299
+ private function _getOrderCheckout(){
300
+ $layout = $this->getCheckoutLayout();
301
+
302
+ $mOrder = $this->getOrder();
303
+
304
+ $checkout = new SnapOrder_Checkout();
305
+ $checkout->return_url = Mage::getUrl('hostedpayments/processing/return', array('id' => $mOrder->getRealOrderId(), '_secure' => true));
306
+ $checkout->cancel_url = $checkout->return_url;
307
+ $checkout->auto_return = true;
308
+ $checkout->checkout_layout = $layout;
309
+ $checkout->create_token = false;
310
+ $checkout->language = EvoSnapTools::getLanguage(Mage::app()->getLocale()->getLocale()->getLanguage());
311
+
312
+ $billing = $mOrder->getBillingAddress();
313
+ $shipping = $mOrder->getShippingAddress();
314
+
315
+ $customer = new SnapCustomer();
316
+
317
+ $customer->first_name = $mOrder->getCustomerFirstname();
318
+ $customer->last_name = $mOrder->getCustomerLastname();
319
+ $customer->email = $mOrder->getCustomerEmail();
320
+ $customer->phone = $billing->getTelephone();
321
+
322
+ $checkout->customer = $customer;
323
+
324
+ $order = new SnapOrder();
325
+ $checkout->order = $order;
326
+
327
+ $order->id = $this->_getOrderId($this->getConfigData('order_prefix'), $mOrder->getRealOrderId());
328
+ $order->total_subtotal = $mOrder->getSubtotal();
329
+ $order->total_discount = abs($mOrder->getDiscountAmount());
330
+ $order->total_shipping = $mOrder->getShippingAmount();
331
+ $order->total_tax = $mOrder->getTaxAmount();
332
+ $order->total = $mOrder->getBaseGrandTotal();
333
+ $order->currency_code = $mOrder->getOrderCurrencyCode();
334
+
335
+ $products = $mOrder->getAllItems();
336
+ for($i = 0; $i < count($products); $i++) {
337
+ $order_lines[$i] = $this->_getOrderItem($products[$i]);
338
+ }
339
+ $order->lines = $order_lines;
340
+
341
+ $order->billto_address = $this->_getAddress($billing);
342
+ if(!empty($shipping)){
343
+ $order->shipto_address = $this->_getAddress($billing);
344
+ }
345
+
346
+ return $checkout;
347
+ }
348
+
349
+ private function _getOrderItem($orderItem){
350
+ $order_line = new SnapOrderLine();
351
+
352
+ $order_line->sku = $orderItem->getSku();
353
+ $order_line->name = $orderItem->getName();
354
+ $order_line->description = $orderItem->getDescription();
355
+ $order_line->qty = $orderItem->getQtyOrdered();
356
+ $order_line->price = $orderItem->getPrice();
357
+ $order_line->tax = $orderItem->getTaxAmount();
358
+
359
+
360
+ return $order_line;
361
+ }
362
+
363
+ /**
364
+ *
365
+ * @param Mage_Sales_Model_Order_Address $mAddress
366
+ * @return SnapAddress
367
+ */
368
+ private function _getAddress($mAddress){
369
+ $address = new SnapAddress();
370
+ $address->company = $mAddress->getCompany();
371
+ $address->first_name = $mAddress->getFirstname();
372
+ $address->last_name = $mAddress->getLastname();
373
+ $address->address1 = $mAddress->getStreet1();
374
+ $address->address2 = $mAddress->getStreet2();
375
+ $address->house_number = $mAddress->getStreet1();
376
+ $address->city = $mAddress->getCity();
377
+ $address->zipcode = $mAddress->getPostcode();
378
+
379
+ $address->country = $mAddress->getCountry();
380
+ $address->state = $mAddress->getRegionCode();
381
+
382
+ return $address;
383
+ }
384
+
385
+ private function _getOrderId($order_prefix, $id_order){
386
+ if(isset($order_prefix)){
387
+ $result = $order_prefix.$id_order;
388
+ }else{
389
+ $result = $id_order;
390
+ }
391
+
392
+ return $result;
393
+ }
394
+
395
+
396
+ /**
397
+ * prepare params array to send it to gateway page via POST
398
+ *
399
+ * @return array
400
+ */
401
+ public function getFormFields()
402
+ {
403
+ Mage::log(" --- Snap* Hosted Payments API : getFormFields --- ");
404
+
405
+ $aOBFields = array();
406
+ $billing = $this->getOrder()->getBillingAddress();
407
+ $shipping = $this->getOrder()->getShippingAddress();
408
+ $items = $this->getOrder()->getAllItems();
409
+
410
+ // customer info
411
+ $aOBFields['customer[merchant_customer_id]'] = $this->getOrder()->getCustomerId();
412
+ $aOBFields['customer[email]'] = $this->getOrder()->getCustomerEmail();
413
+ $aOBFields['customer[first_name]'] = $billing->getFirstname();
414
+ $aOBFields['customer[last_name]'] = $billing->getLastname();
415
+ $aOBFields['customer[phone]'] = $billing->getTelephone();
416
+
417
+ // order header
418
+ $aOBFields['order[merchant_order_id]'] = $this->getOrder()->getRealOrderId();
419
+ $aOBFields['order[total_subtotal]'] = self::_currencyAmount($this->getOrder()->getSubtotal());
420
+ $aOBFields['order[total_discount]'] = self::_currencyAmount(abs($this->getOrder()->getDiscountAmount()));
421
+ $aOBFields['order[total_shipping]'] = self::_currencyAmount($this->getOrder()->getShippingAmount());
422
+ $aOBFields['order[total_tax]'] = self::_currencyAmount($this->getOrder()->getTaxAmount());
423
+ $aOBFields['order[total]'] = self::_currencyAmount($this->getOrder()->getBaseGrandTotal());
424
+ //$aOBFields['order[ship_method]'] = '';
425
+
426
+ // billing fields
427
+ $aOBFields['order[billto_company]'] = $billing->getCompany();
428
+ $aOBFields['order[billto_first_name]'] = $billing->getFirstname();
429
+ $aOBFields['order[billto_last_name]'] = $billing->getLastname();
430
+ $aOBFields['order[billto_address1]'] = $billing->getStreet1();
431
+ $aOBFields['order[billto_address2]'] = $billing->getStreet2();
432
+ $aOBFields['order[billto_city]'] = $billing->getCity();
433
+ $aOBFields['order[billto_state]'] = $billing->getRegionCode();
434
+ $aOBFields['order[billto_country]'] = $billing->getCountry();
435
+ $aOBFields['order[billto_zipcode]'] = $billing->getPostcode();
436
+
437
+ // shipping fields
438
+ if(!empty($shipping))
439
+ {
440
+ $aOBFields['order[shipto_company]'] = $shipping->getCompany();
441
+ $aOBFields['order[shipto_first_name]'] = $shipping->getFirstname();
442
+ $aOBFields['order[shipto_last_name]'] = $shipping->getLastname();
443
+ $aOBFields['order[shipto_address1]'] = $shipping->getStreet1();
444
+ $aOBFields['order[shipto_address2]'] = $shipping->getStreet2();
445
+ $aOBFields['order[shipto_city]'] = $shipping->getCity();
446
+ $aOBFields['order[shipto_state]'] = $shipping->getRegionCode();
447
+ $aOBFields['order[shipto_country]'] = $shipping->getCountry();
448
+ $aOBFields['order[shipto_zipcode]'] = $shipping->getPostcode();
449
+ }
450
+
451
+ // items
452
+ if (!empty($items))
453
+ {
454
+ for($nCount=0; $nCount<count($items); $nCount++)
455
+ {
456
+ $aOBFields['order_item['.$nCount.'][sku]'] = $items[$nCount]->getSku();
457
+ $aOBFields['order_item['.$nCount.'][name]'] = $items[$nCount]->getName();
458
+ $aOBFields['order_item['.$nCount.'][price]'] = self::_currencyAmount($items[$nCount]->getPrice());
459
+ $aOBFields['order_item['.$nCount.'][qty]'] = $items[$nCount]->getQtyOrdered();
460
+ $aOBFields['order_item['.$nCount.'][description]'] = $items[$nCount]->getDescription();
461
+ $aOBFields['order_item['.$nCount.'][tax]'] = self::_currencyAmount($items[$nCount]->getTaxAmount());
462
+ }
463
+ }
464
+
465
+ // return URLs
466
+ $aOBFields['return_url'] = Mage::getUrl('hostedpayments/standard/success', array('_secure' => true));
467
+ $aOBFields['cancel_url'] = Mage::getUrl('hostedpayments/standard/cancel', array('_secure' => true));
468
+
469
+ // check to see if the aheadWorks SARP module is being used and is enabled. if it is then we need to
470
+ // add additional fields to the post fields array
471
+ if($this->_isUsingSARP() === true)
472
+ {
473
+ Mage::log("is using SARP ");
474
+
475
+ $aSubscriptionIDs = array();
476
+ $aSubscriptionIDs = $this->_getSubscriptionByOrderID($this->getOrder()->getId());
477
+
478
+ /*
479
+ foreach($aSubscriptionIDs as $nID)
480
+ {
481
+ $oSubscription = Mage::getSingleton('sarp/subscription')->load($nID);
482
+ }
483
+ */
484
+
485
+ if(!empty($aSubscriptionIDs))
486
+ {
487
+ $oSubscription = Mage::getSingleton('sarp/subscription')->load($aSubscriptionIDs[0]);
488
+ $dStartDate = new Zend_Date($oSubscription->getNextSubscriptionEventDate($oSubscription->getDateStart()), Zend_Date::DATE_LONG);
489
+ $nTotalOccurrences = 0;
490
+
491
+ if($oSubscription->isInfinite())
492
+ $nTotalOccurrences = 9999;
493
+ else
494
+ $nTotalOccurrences = Mage::getModel('sarp/sequence')->getCollection()->addSubscriptionFilter($oSubscription)->count();
495
+
496
+ //Mage::log("Subscription ID: " . $aSubscriptionIDs[0]);
497
+ //Mage::log("Subscription Inerval: " . $oSubscription->getPeriod()->getPeriodType()."s");
498
+ //Mage::log("Subscription Occurences: " . $nTotalOccurrences);
499
+
500
+ $aOBFields['sub[auto_process]'] = 0;
501
+ $aOBFields['sub[start_date]'] = $dStartDate;
502
+ $aOBFields['sub[interval_length]'] = $oSubscription->getPeriod()->getPeriodValue();
503
+ $aOBFields['sub[interval_unit]'] = $oSubscription->getPeriod()->getPeriodType()."s";
504
+ $aOBFields['sub[total_occurrences]'] = $nTotalOccurrences;
505
+
506
+ $aOBFields['sub[trial_occurrences]'] = '';
507
+ $aOBFields['sub[trial_amount]'] = 0.00;
508
+
509
+ // order header
510
+ $aOBFields['sub[merchant_subscription_id]'] = $this->getOrder()->getRealOrderId();
511
+ //$aOBFields['sub[total_subtotal]'] = self::_currencyAmount($this->getOrder()->getSubtotal());
512
+
513
+ // grand total should be the normal price not the first period price
514
+
515
+ $aOBFields['sub[total_discount]'] = self::_currencyAmount(abs($this->getOrder()->getDiscountAmount()));
516
+ $aOBFields['sub[total_tax]'] = self::_currencyAmount($this->getOrder()->getTaxAmount());
517
+ $aOBFields['sub[ship_method]'] = '';
518
+ $aOBFields['sub[total]'] = self::_currencyAmount($this->getOrder()->getBaseGrandTotal());
519
+
520
+ // billing fields
521
+ $aOBFields['sub[billto_company]'] = $billing->getCompany();
522
+ $aOBFields['sub[billto_first_name]'] = $billing->getFirstname();
523
+ $aOBFields['sub[billto_last_name]'] = $billing->getLastname();
524
+ $aOBFields['sub[billto_address1]'] = $billing->getStreet1();
525
+ $aOBFields['sub[billto_address2]'] = $billing->getStreet2();
526
+ $aOBFields['sub[billto_city]'] = $billing->getCity();
527
+ $aOBFields['sub[billto_state]'] = $billing->getRegionCode();
528
+ $aOBFields['sub[billto_country]'] = $billing->getCountry();
529
+ $aOBFields['sub[billto_zipcode]'] = $billing->getPostcode();
530
+
531
+ // shipping fields
532
+ if(!empty($shipping))
533
+ {
534
+ $aOBFields['sub[shipto_company]'] = $shipping->getCompany();
535
+ $aOBFields['sub[shipto_first_name]'] = $shipping->getFirstname();
536
+ $aOBFields['sub[shipto_last_name]'] = $shipping->getLastname();
537
+ $aOBFields['sub[shipto_address1]'] = $shipping->getStreet1();
538
+ $aOBFields['sub[shipto_address2]'] = $shipping->getStreet2();
539
+ $aOBFields['sub[shipto_city]'] = $shipping->getCity();
540
+ $aOBFields['sub[shipto_state]'] = $shipping->getRegionCode();
541
+ $aOBFields['sub[shipto_country]'] = $shipping->getCountry();
542
+ $aOBFields['sub[shipto_zipcode]'] = $shipping->getPostcode();
543
+ }
544
+
545
+ $items = $this->getOrder()->getAllItems();
546
+ $nCount = 0;
547
+ $nSubCount = 0;
548
+ $aOBFields['sub[total_subtotal]'] = 0;
549
+ $aOBFields['sub[total]'] = 0;
550
+
551
+ // items
552
+ if (!empty($items))
553
+ {
554
+ for($nCount=0; $nCount<count($items); $nCount++)
555
+ {
556
+ $oItem = $items[$nCount];
557
+
558
+ if(Mage::helper('sarp')->isSubscriptionType($items[$nCount]) == 1)
559
+ {
560
+ $productId = $oItem->getProductId();
561
+ $oProduct = Mage::getModel('catalog/product')->load($productId);
562
+ $nFirstPeriodPrice = self::_currencyAmount($oProduct->getAwSarpFirstPeriodPrice());
563
+ $nNormalPrice = self::_currencyAmount((!empty($nFirstPeriodPrice) ? $oProduct->getAwSarpSubscriptionPrice() : $items[$nCount]->getPrice()));
564
+
565
+ Mage::log("Normal Price:" . $nNormalPrice);
566
+ Mage::log("First Period Price:" . $nFirstPeriodPrice);
567
+
568
+ if ($oItem->canInvoice()) $qtys[$oItem->getId()] = $oItem->getQtyToInvoice();
569
+
570
+ $aOBFields['sub_item[' . $nSubCount . '][sku]'] = $items[$nCount]->getSku();
571
+ $aOBFields['sub_item[' . $nSubCount . '][name]'] = $items[$nCount]->getName();
572
+ $aOBFields['sub_item[' . $nSubCount . '][price]'] = $nNormalPrice;
573
+ $aOBFields['sub_item[' . $nSubCount . '][qty]'] = $items[$nCount]->getQtyOrdered();
574
+ $aOBFields['sub_item[' . $nSubCount . '][description]'] = $items[$nCount]->getDescription();
575
+ //$aOBFields['sub_item[' . $nSubCount . '][details]'] = '';
576
+
577
+ if ($oItem->getIsVirtual())
578
+ {
579
+ $aOBFields['sub[total_shipping]'] = 0.00;
580
+ }
581
+ else
582
+ {
583
+ $aOBFields['sub[total_shipping]'] = self::_currencyAmount($this->getOrder()->getShippingAmount());
584
+ }
585
+
586
+ /*
587
+ $aOBFields['sub[trial_amount]'] = $nFirstPeriodPrice;
588
+ */
589
+
590
+ $aOBFields['sub[total_subtotal]'] += $aOBFields['sub_item[' . $nSubCount . '][price]'];
591
+ $aOBFields['sub[total]'] += $aOBFields['sub_item[' . $nSubCount . '][price]'];
592
+
593
+ $nSubCount++;
594
+ }
595
+ else
596
+ Mage::log("Not a subscription item: " . $items[$nCount]->getName());
597
+ }
598
+ Mage::log("Sub. Sub Total: " . $aOBFields['sub[total_subtotal]']);
599
+ Mage::log("Sub. Total: " . $aOBFields['sub[total]']);
600
+ }
601
+
602
+ $aOBFields['sub[total]'] = $aOBFields['sub[total]'] + $aOBFields['sub[total_shipping]'];
603
+ }
604
+ }
605
+
606
+ // generate the MAC and add it as the final param
607
+ $aOBFields['mac'] = $this->getFormFieldsMAC($aOBFields);
608
+
609
+ Mage::log(print_r($aOBFields, true));
610
+
611
+ return $aOBFields;
612
+ }
613
+
614
+ /**
615
+ * prepare the mac param based on the params array
616
+ *
617
+ * @return string
618
+ */
619
+ public function getFormFieldsMAC($aOBFields)
620
+ {
621
+ Mage::log(" --- Snap* Hosted Payments API : getFormFieldsMAC --- ");
622
+ return $this->_getMAC(array(
623
+ 'code' => $this->getConfigData('merchant_code'),
624
+ 'email' => (isset($aOBFields['customer[email]']) ? $aOBFields['customer[email]'] : ''),
625
+ 'merchant_order_id' => (isset($aOBFields['order[merchant_order_id]']) ? $aOBFields['order[merchant_order_id]'] : ''),
626
+ 'order_total_subtotal' => (isset($aOBFields['order[total_subtotal]']) ? $aOBFields['order[total_subtotal]'] : ''),
627
+ 'order_total' => (isset($aOBFields['order[total]']) ? $aOBFields['order[total]'] : ''),
628
+ 'merchant_subscription_id' => (isset($aOBFields['sub[merchant_subscription_id]']) ? $aOBFields['sub[merchant_subscription_id]'] : ''),
629
+ 'sub_total_occurrences' => (isset($aOBFields['sub[total_occurrences]']) ? $aOBFields['sub[total_occurrences]'] : ''),
630
+ 'sub_trial_occurrences' => (isset($aOBFields['sub[trial_occurrences]']) ? $aOBFields['sub[trial_occurrences]'] : ''),
631
+ 'sub_trial_amount' => (isset($aOBFields['sub[trial_amount]']) ? $aOBFields['sub[trial_amount]'] : ''),
632
+ 'sub_total_subtotal' => (isset($aOBFields['sub[total_subtotal]']) ? $aOBFields['sub[total_subtotal]'] : ''),
633
+ 'sub_total' => (isset($aOBFields['sub[total]']) ? $aOBFields['sub[total]'] : '')
634
+ ));
635
+ }
636
+
637
+ /**
638
+ * Get base url of EVO Snap* Hosted Payments API
639
+ *
640
+ * @return string
641
+ */
642
+ public function getEvoBaseUrl()
643
+ {
644
+ Mage::log(" --- Snap* Hosted Payments API : getEvoBaseUrl --- ");
645
+ $bTestMode = $this->getConfigData('test_mode');
646
+ return ($bTestMode ? $this->_merchantCheckoutURLTest : $this->_merchantCheckoutURL);
647
+ }
648
+
649
+ // /**
650
+ // * capture an order payment
651
+ // *
652
+ // * @param Varien_Object $payment
653
+ // * @return Mage_Payment_Model_Abstract
654
+ // */
655
+ // public function capture(Varien_Object $payment, $amount)
656
+ // {
657
+ // Mage::log(" --- Snap* Hosted Payments API : capture --- ");
658
+ // $payment->setStatus(self::STATUS_APPROVED)
659
+ // ->setLastTransId($this->getTransactionId());
660
+
661
+ // return $this;
662
+ // }
663
+
664
+ /**
665
+ * cancel an order and refund the capture OR reverse the authorization which has not yet been captured,
666
+ * depending on how the module is configured
667
+ *
668
+ * @param Varien_Object $payment
669
+ * @return Mage_Payment_Model_Abstract
670
+ */
671
+ public function cancel(Varien_Object $payment)
672
+ {
673
+ Mage::log(" --- Snap* Hosted Payments API : cancel --- ");
674
+ return $this->refund($payment);
675
+ }
676
+
677
+ /**
678
+ * refund the amount with transaction id
679
+ *
680
+ * @access public
681
+ * @param string $payment Varien_Object object
682
+ * @return Mage_Payment_Model_Abstract
683
+ */
684
+ public function refund(Varien_Object $oPayment, $nAmount)
685
+ {
686
+ Mage::log(" --- Snap* Hosted Payments API : refund --- ");
687
+
688
+ if(empty($nAmount))
689
+ $nAmount=null;
690
+
691
+ if ($oPayment->getLastTransId())
692
+ {
693
+ // build the request
694
+ $oOrder = $oPayment->getOrder();
695
+ $aMACParamKeys = array('code','action','merchant_order_id','txn_id');
696
+ $aRequest = $this->_buildAPIRequest(array(
697
+ 'action' => 'credit',
698
+ 'merchant_order_id' => $oOrder->getRealOrderId(),
699
+ 'txn_id' => $oPayment->getLastTransId(),
700
+ 'amount' => (!is_null($nAmount) ? self::_currencyAmount($nAmount) : $nAmount),
701
+ ), $aMACParamKeys);
702
+ Mage::log($aRequest);
703
+
704
+ // post the request
705
+ $aResult = $this->_postAPIRequest($aRequest);
706
+ Mage::log($aResult);
707
+
708
+ // parse the response
709
+ if ($aResult['success'] === true && isset($aResult['status']) && strtolower($aResult['status']) == 'approved') // approved
710
+ {
711
+ Mage::log('approved');
712
+ if($aResult['txn_id'] != null)
713
+ $oPayment->setLastTransId($aResult['txn_id']);
714
+ $oPayment->setStatus(self::STATUS_SUCCESS);
715
+ $oPayment->getOrder()->addStatusToHistory($oPayment->getOrder()->getStatus(), $this->_getHelper()->__('Payment has been refunded via Snap* Hosted Payments Checkout (transid # '.$aResult['txn_id'].').'));
716
+ }
717
+ else
718
+ {
719
+ $oPayment->setStatus(self::STATUS_ERROR);
720
+ if ($aResult['success'] === true && isset($aResult['status']) && strtolower($aResult['status']) == 'declined') // declined
721
+ {
722
+ Mage::log('declined');
723
+ $sError = 'Payment refund request was declined by Snap* Hosted Payments Checkout.'.(!empty($aResult['message']) ? ' '.$aResult['message'] : '');
724
+ }
725
+ else
726
+ {
727
+ Mage::log('failure');
728
+ $sError = 'Payment refund request failed.'.(!empty($aResult['message']) ? ' '.$aResult['message'] : '');
729
+ }
730
+ Mage::getSingleton('adminhtml/session')->addError($this->_getHelper()->__($sError));
731
+ $oPayment->getOrder()->addStatusToHistory($oPayment->getOrder()->getStatus(), $this->_getHelper()->__($sError));
732
+ Mage::throwException($sError);
733
+ }
734
+ }
735
+
736
+ return $this;
737
+ }
738
+
739
+ /**
740
+ *
741
+ */
742
+ protected function _buildAPIRequest($aParams=array(), $aMACParamKeys=array())
743
+ {
744
+ Mage::log('_buildAPIRequest()');
745
+ Mage::log('$aParams:');
746
+ Mage::log($aParams);
747
+
748
+ // build the request
749
+ $aRequest = array_merge(array('code' => $this->getConfigData('merchant_code'), 'return' => 'serialize'), $aParams);
750
+ foreach ($aRequest as $key => $value)
751
+ {
752
+ if (empty($value)) unset($aRequest[$key]);
753
+ }
754
+
755
+ // add the MAC
756
+ $aRequest['mac'] = $this->_getMAC($aRequest, $aMACParamKeys);
757
+
758
+ return $aRequest;
759
+ }
760
+
761
+ /**
762
+ *
763
+ */
764
+ protected function _postAPIRequest($aRequest)
765
+ {
766
+ $mError = false;
767
+ Mage::log('_postAPIRequest');
768
+
769
+ if (!extension_loaded('curl'))
770
+ {
771
+ $mError = 'The curl extension was requested and is not loaded; unable to proceed.';
772
+ }
773
+ else
774
+ {
775
+ Mage::log('json_encode($aRequest)');
776
+ Mage::log(json_encode($aRequest));
777
+
778
+ // do the request
779
+ $hCURL = curl_init();
780
+ curl_setopt($hCURL, CURLOPT_RETURNTRANSFER, true);
781
+ curl_setopt($hCURL, CURLOPT_POST, 1);
782
+ curl_setopt($hCURL, CURLOPT_FAILONERROR, 1);
783
+ curl_setopt($hCURL, CURLOPT_FOLLOWLOCATION, 1);
784
+ curl_setopt($hCURL, CURLOPT_TIMEOUT, 10);
785
+ curl_setopt($hCURL, CURLOPT_URL, $this->getEvoAPIUrl());
786
+ curl_setopt($hCURL, CURLOPT_POSTFIELDS, $aRequest);
787
+ curl_setopt($hCURL, CURLOPT_SSL_VERIFYPEER, false);
788
+ $sResult = curl_exec($hCURL);
789
+
790
+ Mage::log('$sResult');
791
+ Mage::log($sResult);
792
+ Mage::log(curl_error($hCURL));
793
+
794
+ curl_close($hCURL);
795
+ }
796
+
797
+ if ($mError !== false)
798
+ {
799
+ Mage::throwException($mError);
800
+ }
801
+
802
+ return $this->_parseAPIResponse($sResult);
803
+ }
804
+
805
+ /**
806
+ *
807
+ */
808
+ public function _parseAPIResponse($sResult)
809
+ {
810
+ Mage::log(" --- Snap* Hosted Payments API : _parseAPIResponse --- ");
811
+ Mage::log('_parseAPIResponse');
812
+ Mage::log($sResult);
813
+
814
+ // parse the response
815
+ if ($sResult !== false) {
816
+ return unserialize($sResult);
817
+ } else {
818
+ return false;
819
+ }
820
+ }
821
+
822
+ protected static function _currencyAmount($amount)
823
+ {
824
+ return number_format($amount, 2, '.', '');
825
+ }
826
+
827
+
828
+ /*
829
+ Determine whether or not the SARP module is being used
830
+ */
831
+ protected function _isUsingSARP()
832
+ {
833
+ Mage::log(" --- Snap* Hosted Payments API : _isUsingSARP --- ");
834
+ $bReturn = false;
835
+
836
+ $oModules = Mage::getConfig()->getNode();
837
+ if(array_key_exists($this->_sSARPName, $oModules->global->resources))
838
+ $bReturn = true;
839
+
840
+ return $bReturn;
841
+ }
842
+
843
+ protected function _getSubscriptionByOrderID($nOrderID)
844
+ {
845
+ Mage::log(" --- Snap* Hosted Payments API : _getSubscriptionByOrderID --- ");
846
+
847
+ $aSubscriptionIDs = array();
848
+ $oWrite = Mage::getSingleton('core/resource')->getConnection('core_write');
849
+
850
+ $result = $oWrite->query("SELECT id FROM aw_sarp_subscriptions WHERE real_id = " . $nOrderID . ";");
851
+
852
+ while ($aRows = $result->fetch(PDO::FETCH_ASSOC))
853
+ {
854
+ $aSubscriptionIDs[] = $aRows['id'];
855
+ }
856
+
857
+ return $aSubscriptionIDs;
858
+ }
859
+
860
+ }
app/code/local/Evo/HostedPayments/Model/Resource/Hostedpayment.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Hosted Payment Resource model collection class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Model_Resource_Hostedpayment extends Mage_Core_Model_Resource_Db_Abstract
38
+ {
39
+ protected function _construct()
40
+ {
41
+ $this->_init("hostedpayments/hostedpayment", "id");
42
+ }
43
+ }
app/code/local/Evo/HostedPayments/Model/Resource/Hostedpayment/Collection.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Payment model class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Model_Resource_Hostedpayment_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
38
+ {
39
+ protected function _construct()
40
+ {
41
+ $this->_init("hostedpayments/hostedpayment");
42
+ }
43
+ }
app/code/local/Evo/HostedPayments/Model/Resource/Setup.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Setup class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup
38
+ {
39
+ }
app/code/local/Evo/HostedPayments/controllers/ProcessingController.php ADDED
@@ -0,0 +1,308 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments processing class.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ class Evo_HostedPayments_ProcessingController extends Mage_Core_Controller_Front_Action
38
+ {
39
+ const STATUS_APPROVED = 'APPROVED';
40
+
41
+ const EVO_CALLBACK_STATUS_CHECKOUT_CANCELLED = 'CHECKOUT_CANCELLED';
42
+ const EVO_CALLBACK_STATUS_CHECKOUT_COMPLETED = 'CHECKOUT_COMPLETED';
43
+ const EVO_CALLBACK_STATUS_CHECKOUT_HELD_FOR_ADMIN = 'CHECKOUT_HELD_FOR_ADMIN';
44
+ const EVO_CALLBACK_STATUS_SUB_NOTIFIED = 'SUB_NOTIFIED';
45
+ const EVO_CALLBACK_STATUS_SUB_PROCESSED = 'SUB_PROCESSED';
46
+ const EVO_CALLBACK_STATUS_SUB_COMPLETED = 'SUB_COMPLETED';
47
+ const EVO_CALLBACK_STATUS_SUB_DECLINED = 'SUB_DECLINED';
48
+ const EVO_CALLBACK_STATUS_SUB_FAILED = 'SUB_FAILED';
49
+ const EVO_CALLBACK_STATUS_SUB_CANCELLED = 'SUB_CANCELLED';
50
+ const EVO_CALLBACK_STATUS_ORDER_CREDIT = 'ORDER_CREDIT';
51
+ const EVO_CALLBACK_STATUS_ORDER_CHARGEBACK = 'ORDER_CHARGEBACK';
52
+
53
+ const EVO_ORDER_STATUS_CANCELED = 'Canceled';
54
+ const EVO_ORDER_STATUS_PENDING = 'Pending';
55
+ const EVO_ORDER_STATUS_PAID = 'Paid';
56
+ const EVO_ORDER_STATUS_REFUNDED = 'Refunded';
57
+ const EVO_ORDER_STATUS_DENIED = 'Denied';
58
+
59
+ /**
60
+ * Get singleton of Checkout Session Model
61
+ *
62
+ * @return Mage_Checkout_Model_Session
63
+ */
64
+ private function _getCheckout()
65
+ {
66
+ return Mage::getSingleton('checkout/session');
67
+ }
68
+
69
+ /**
70
+ * Payment action.
71
+ */
72
+ public function payAction()
73
+ {
74
+ try {
75
+ $session = $this->_getCheckout();
76
+
77
+ $orderId = $this->getRequest()->getParam('id');
78
+
79
+ if(isset($orderId)){
80
+ $session->setEvoRealOrderId($orderId);
81
+ $session->unsEvoPaymentUrl();
82
+ }else{
83
+ $session->setEvoRealOrderId($session->getLastRealOrderId());
84
+ }
85
+
86
+ $paymentUrl = $session->getEvoPaymentUrl();
87
+ $useIframe = $session->getEvoUseIframe();
88
+
89
+ if(!isset($paymentUrl)){
90
+ $order = Mage::getModel('sales/order');
91
+
92
+ $order->loadByIncrementId($session->getEvoRealOrderId());
93
+
94
+ $paymentInst = $order->getPayment()->getMethodInstance();
95
+
96
+ $paymentUrl = $paymentInst->getPaymentUrl();
97
+ $session->setEvoPaymentUrl($paymentUrl);
98
+ $useIframe = $paymentInst->getCheckoutLayout() === 'iframe';
99
+ $session->setEvoUseIframe($useIframe);
100
+ }
101
+
102
+ if($useIframe){
103
+ $this->loadLayout();
104
+ $this->getLayout()->getBlock('hostedpayments.iframe')->setPaymentUrl($paymentUrl);
105
+ $this->renderLayout();
106
+ }else{
107
+ $this->_redirectUrl($paymentUrl);
108
+ }
109
+
110
+ $session->unsQuoteId();
111
+ $session->unsLastRealOrderId();
112
+ } catch (HostedPayments_Exception $e) {
113
+ Mage::log('Hosted Payments Error: '.$e->getMessage(), Zend_Log::ERR);
114
+ $this->_redirect('customer/account');
115
+ }
116
+ }
117
+
118
+ /**
119
+ * Return action.
120
+ */
121
+ public function returnAction()
122
+ {
123
+ $this->_getCheckout()->unsEvoPaymentUrl();
124
+ try {
125
+ $order = Mage::getModel('sales/order');
126
+
127
+ $order->loadByIncrementId($this->getRequest()->getParam('id'));
128
+ $noiframe = $this->getRequest()->getParam('noiframe');
129
+
130
+ $paymentInst = $order->getPayment()->getMethodInstance();
131
+
132
+ if(!isset($noiframe) && ($paymentInst->getCheckoutLayout() === 'iframe')){
133
+ $validationUrl = Mage::getUrl('hostedpayments/processing/return', array('id' => $this->getRequest()->getParam('id'), 'noiframe' => 1, '_secure' => true));
134
+ $this->loadLayout();
135
+ $this->getLayout()->getBlock('hostedpayments.iframevalidation')->setValidationUrl($validationUrl);
136
+ $this->renderLayout();
137
+ }else{
138
+ $snapOrder = $paymentInst->getSnapOrder();
139
+
140
+ switch ($snapOrder->status){
141
+ case self::EVO_ORDER_STATUS_CANCELED:
142
+ $paymentInst->cancelOrder();
143
+ $this->_redirect('customer/account');
144
+ break;
145
+ case self::EVO_ORDER_STATUS_PAID:
146
+ $paymentInst->payOrder($snapOrder);
147
+ $this->_successAction($paymentInst->getOrder());
148
+ break;
149
+ case self::EVO_ORDER_STATUS_PENDING:
150
+ case self::EVO_ORDER_STATUS_DENIED:
151
+ $this->_redirect('hostedpayments/processing/pay', array('id' => $this->getRequest()->getParam('id'), '_secure' => true));
152
+ break;
153
+ default:
154
+ $this->_redirect('customer/account');
155
+ break;
156
+ }
157
+ }
158
+ } catch (HostedPayments_Exception $e) {
159
+ Mage::log('Hosted Payments Error: '.$e->getMessage(), Zend_Log::ERR);
160
+ $this->_redirect('customer/account');
161
+ }
162
+ }
163
+
164
+ public function callbackAction()
165
+ {
166
+ $aResponse = $this->_verifyCallback();
167
+ if($aResponse['success'] === true)
168
+ {
169
+ $aResponse = $this->_processCallback();
170
+ }
171
+ echo json_encode($aResponse);
172
+ Mage::log($aResponse);
173
+ }
174
+
175
+ /**
176
+ * Evo returns POST variables to this action
177
+ */
178
+ private function _successAction(Mage_Sales_Model_Order $order)
179
+ {
180
+ $session = $this->_getCheckout();
181
+
182
+ $session->unsEvoRealOrderId();
183
+ $session->setQuoteId($order->getQuoteId());
184
+ $session->getQuote()->setIsActive(false)->save();
185
+
186
+ if($order->getId())
187
+ {
188
+ $order->sendNewOrderEmail();
189
+ }
190
+
191
+ $this->_redirect('checkout/onepage/success');
192
+ }
193
+
194
+ private function _verifyCallback()
195
+ {
196
+ try
197
+ {
198
+ $aMessageTypes = array(
199
+ self::EVO_CALLBACK_STATUS_CHECKOUT_CANCELLED,
200
+ self::EVO_CALLBACK_STATUS_CHECKOUT_COMPLETED,
201
+ self::EVO_CALLBACK_STATUS_CHECKOUT_HELD_FOR_ADMIN,
202
+ self::EVO_CALLBACK_STATUS_SUB_NOTIFIED,
203
+ self::EVO_CALLBACK_STATUS_SUB_PROCESSED,
204
+ self::EVO_CALLBACK_STATUS_SUB_COMPLETED,
205
+ self::EVO_CALLBACK_STATUS_SUB_DECLINED,
206
+ self::EVO_CALLBACK_STATUS_SUB_FAILED,
207
+ self::EVO_CALLBACK_STATUS_SUB_CANCELLED,
208
+ self::EVO_CALLBACK_STATUS_ORDER_CREDIT,
209
+ self::EVO_CALLBACK_STATUS_ORDER_CHARGEBACK
210
+ );
211
+
212
+ // check to make sure we have a post to check
213
+ if($this->getRequest()->isPost() !== true)
214
+ throw new Exception('Invalid request type');
215
+
216
+ // check response
217
+ $response = $this->getRequest()->getPost();
218
+ if(empty($response))
219
+ throw new Exception('Response doesn\'t contain POST elements');
220
+
221
+ // check message type
222
+ if(!in_array($response['message_type'], $aMessageTypes))
223
+ throw new Exception('Invalid message type '.$response['message_type']);
224
+
225
+ // check to make sure we have an order with the corresponding passed
226
+ if (empty($response['merchant_order_id']) || strlen($response['merchant_order_id']) > 50)
227
+ throw new Exception('Missing or invalid order ID # '.$response['merchant_order_id']);
228
+
229
+ // load the order, make sure it's valid
230
+ $this->_order = Mage::getModel('sales/order')->loadByIncrementId($response['merchant_order_id']);
231
+ if (!$this->_order->getId())
232
+ throw new Exception('Non-existent order # '.$response['merchant_order_id']);
233
+
234
+ // load the payment instance and verify the MAC
235
+ $this->_paymentInst = $this->_order->getPayment()->getMethodInstance();
236
+ $response['code'] = $this->_paymentInst->getConfigData('merchant_code');
237
+ if ($this->_paymentInst->_verifyMAC($response['mac'], $response, array('code','message_type','merchant_order_id','merchant_subscription_id','txn_id')) !== true)
238
+ throw new Exception('Invalid mac signature');
239
+
240
+ return array('success' => true);
241
+ }
242
+ catch (Exception $e)
243
+ {
244
+ return array('success' => false, 'message' => $e->getMessage());
245
+ }
246
+ }
247
+
248
+ private function _processCallback()
249
+ {
250
+ $response = $this->getRequest()->getPost();
251
+ $aStatus = array('success' => false);
252
+ $order = Mage::getModel('sales/order');
253
+ $order->loadByIncrementId($response['merchant_order_id']);
254
+ $paymentInst = $order->getPayment()->getMethodInstance();
255
+ $paymentInst->setResponse($response);
256
+
257
+ switch($response['message_type'])
258
+ {
259
+ case self::EVO_CALLBACK_STATUS_CHECKOUT_COMPLETED:
260
+ $order->getPayment()->setTransactionId($response['txn_id']);
261
+ $invoice = $order->prepareInvoice();
262
+ $invoice->register()->capture();
263
+ Mage::getModel('core/resource_transaction')
264
+ ->addObject($invoice)
265
+ ->addObject($invoice->getOrder())
266
+ ->save();
267
+ $aStatus = array('success' => true);
268
+ break;
269
+
270
+ case self::EVO_CALLBACK_STATUS_CHECKOUT_CANCELLED:
271
+ if ($order->canCancel())
272
+ $order->cancel();
273
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('hostedpayments')->__('Customer cancelled this order via Snap* Hosted Payments Checkout.'));
274
+ $aStatus = array('success' => true);
275
+ break;
276
+
277
+ case self::EVO_CALLBACK_STATUS_ORDER_CREDIT:
278
+
279
+ $order->getPayment()
280
+ ->setPreparedMessage($response["message_description"])
281
+ ->setTransactionId($response['txn_id'])
282
+ ->setIsTransactionClosed(true)
283
+ ->registerRefundNotification(-1*$order->base_grand_total);
284
+ $order->save();
285
+ //$order->getPayment()->refund();
286
+ logToFile($order->getStatus());
287
+ $order->addStatusToHistory($order->getStatus(), Mage::helper('hostedpayments')->__('Payment for this refunded via Snap* Hosted Payments API&trade;.'));
288
+
289
+ if ($creditmemo = $paymentInst->getCreatedCreditmemo()) {
290
+ $creditmemo->sendEmail();
291
+ $comment = $order->addStatusHistoryComment(
292
+ Mage::helper('paypal')->__('Notified customer about creditmemo #%s.', $creditmemo->getIncrementId())
293
+ )
294
+ ->setIsCustomerNotified(true)
295
+ ->save();
296
+ }
297
+
298
+
299
+ $aStatus = array('success' => true);
300
+ break;
301
+
302
+ }
303
+
304
+ $order->save();
305
+ return $aStatus;
306
+ }
307
+
308
+ }
app/code/local/Evo/HostedPayments/etc/config.xml ADDED
@@ -0,0 +1,146 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+
4
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
5
+ *
6
+ * This software and documentation is subject to and made
7
+ * available only pursuant to the terms of an executed license
8
+ * agreement, and may be used only in accordance with the terms
9
+ * of said agreement. This software may not, in whole or in part,
10
+ * be copied, photocopied, reproduced, translated, or reduced to
11
+ * any electronic medium or machine-readable form without
12
+ * prior consent, in writing, from EVO Payments International, INC.
13
+ *
14
+ * Use, duplication or disclosure by the U.S. Government is subject
15
+ * to restrictions set forth in an executed license agreement
16
+ * and in subparagraph (c)(1) of the Commercial Computer
17
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
18
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
19
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
20
+ * Computer Software-Licensing clause at NASA FAR supplement
21
+ * 16-52.227-86; or their equivalent.
22
+ *
23
+ * Information in this software is subject to change without notice
24
+ * and does not represent a commitment on the part of EVO Payments International.
25
+ *
26
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
27
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
28
+ */
29
+
30
+ -->
31
+ <config>
32
+ <modules>
33
+ <Evo_HostedPayments>
34
+ <version>1.0.0</version>
35
+ </Evo_HostedPayments>
36
+ </modules>
37
+ <global>
38
+ <models>
39
+ <hostedpayments>
40
+ <class>Evo_HostedPayments_Model</class>
41
+ <resourceModel>hostedpayments_resource</resourceModel>
42
+ </hostedpayments>
43
+ <hostedpayments_resource>
44
+ <class>Evo_HostedPayments_Model_Resource</class>
45
+ <entities>
46
+ <hostedpayment>
47
+ <table>evo_hostedpayments</table>
48
+ </hostedpayment>
49
+ </entities>
50
+ </hostedpayments_resource>
51
+ </models>
52
+ <helpers>
53
+ <hostedpayments>
54
+ <class>Evo_HostedPayments_Helper</class>
55
+ </hostedpayments>
56
+ </helpers>
57
+ <payment>
58
+ <groups>
59
+ <hostedpayments>Hosted Payments</hostedpayments>
60
+ </groups>
61
+ </payment>
62
+ <resources>
63
+ <hostedpayments_setup>
64
+ <setup>
65
+ <module>Evo_HostedPayments</module>
66
+ </setup>
67
+ <connection>
68
+ <use>core_setup</use>
69
+ </connection>
70
+ </hostedpayments_setup>
71
+ <hostedpayments_write>
72
+ <connection>
73
+ <use>core_write</use>
74
+ </connection>
75
+ </hostedpayments_write>
76
+ <hostedpayments_read>
77
+ <connection>
78
+ <use>core_read</use>
79
+ </connection>
80
+ </hostedpayments_read>
81
+ </resources>
82
+ <blocks>
83
+ <hostedpayments>
84
+ <class>Evo_HostedPayments_Block</class>
85
+ </hostedpayments>
86
+ <payment>
87
+ <rewrite>
88
+ <payment_form>Evo_Payment_Block_Form</payment_form>
89
+ </rewrite>
90
+ </payment>
91
+ </blocks>
92
+ </global>
93
+ <frontend>
94
+ <secure_url>
95
+ <hostedpayments_processing>/hostedpayments/processing</hostedpayments_processing>
96
+ </secure_url>
97
+ <routers>
98
+ <hostedpayments>
99
+ <use>standard</use>
100
+ <args>
101
+ <module>Evo_HostedPayments</module>
102
+ <frontName>hostedpayments</frontName>
103
+ </args>
104
+ </hostedpayments>
105
+ </routers>
106
+ <layout>
107
+ <updates>
108
+ <evohostedpayments>
109
+ <file>evohostedpayments.xml</file>
110
+ </evohostedpayments>
111
+ </updates>
112
+ </layout>
113
+ <translate>
114
+ <modules>
115
+ <Mage_Checkout>
116
+ <files>
117
+ <default>Evo_HostedPayments.csv</default>
118
+ </files>
119
+ </Mage_Checkout>
120
+ </modules>
121
+ </translate>
122
+ </frontend>
123
+ <adminhtml>
124
+ <translate>
125
+ <modules>
126
+ <Mage_Checkout>
127
+ <files>
128
+ <default>Evo_HostedPayments.csv</default>
129
+ </files>
130
+ </Mage_Checkout>
131
+ </modules>
132
+ </translate>
133
+ </adminhtml>
134
+ <default>
135
+ <payment>
136
+ <hostedpayments>
137
+ <active>1</active>
138
+ <model>hostedpayments/payment</model>
139
+ <order_status>pending</order_status>
140
+ <title>Pay by Credit or Debit Card</title>
141
+ <allowspecific>0</allowspecific>
142
+ <group>online</group>
143
+ </hostedpayments>
144
+ </payment>
145
+ </default>
146
+ </config>
app/code/local/Evo/HostedPayments/etc/system.xml ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+
4
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
5
+ *
6
+ * This software and documentation is subject to and made
7
+ * available only pursuant to the terms of an executed license
8
+ * agreement, and may be used only in accordance with the terms
9
+ * of said agreement. This software may not, in whole or in part,
10
+ * be copied, photocopied, reproduced, translated, or reduced to
11
+ * any electronic medium or machine-readable form without
12
+ * prior consent, in writing, from EVO Payments International, INC.
13
+ *
14
+ * Use, duplication or disclosure by the U.S. Government is subject
15
+ * to restrictions set forth in an executed license agreement
16
+ * and in subparagraph (c)(1) of the Commercial Computer
17
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
18
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
19
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
20
+ * Computer Software-Licensing clause at NASA FAR supplement
21
+ * 16-52.227-86; or their equivalent.
22
+ *
23
+ * Information in this software is subject to change without notice
24
+ * and does not represent a commitment on the part of EVO Payments International.
25
+ *
26
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
27
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
28
+ */
29
+
30
+ -->
31
+ <config>
32
+ <sections>
33
+ <payment>
34
+ <groups>
35
+ <hostedpayments translate="label" module="hostedpayments">
36
+ <label>Snap* Hosted Payments by Popular Payments</label>
37
+ <frontend_type>text</frontend_type>
38
+ <sort_order>10</sort_order>
39
+ <show_in_default>1</show_in_default>
40
+ <show_in_website>1</show_in_website>
41
+ <show_in_store>1</show_in_store>
42
+ <comment><![CDATA[
43
+ <div><img src="http://www.snapspain.es/wp-content/uploads/poppay-snap-banner.png" alt="Snap* logo" /></div>
44
+ <p>¿No tienes una cuenta en <strong>Snap*</strong>? Contacta con nosotros haciendo clic
45
+ <a href="http://www.snapspain.es/contacto/">aquí</a> o en el <strong>900 907 222</strong>.</p>
46
+ <p>Visita <a href="http://www.snapspain.es" title="Ir al sitio Web de Snap*">www.snapspain.es</a> para más información.</p>
47
+ <hr />
48
+ ]]></comment>
49
+ <fields>
50
+ <active translate="label">
51
+ <label>Enabled</label>
52
+ <frontend_type>select</frontend_type>
53
+ <source_model>adminhtml/system_config_source_yesno</source_model>
54
+ <sort_order>1</sort_order>
55
+ <show_in_default>1</show_in_default>
56
+ <show_in_website>1</show_in_website>
57
+ <show_in_store>0</show_in_store>
58
+ </active>
59
+ <title translate="label">
60
+ <label>Title</label>
61
+ <frontend_type>text</frontend_type>
62
+ <sort_order>2</sort_order>
63
+ <show_in_default>1</show_in_default>
64
+ <show_in_website>1</show_in_website>
65
+ <show_in_store>1</show_in_store>
66
+ </title>
67
+ <test_mode translate="label comment">
68
+ <label>Test mode</label>
69
+ <comment>Select your Snap* environment.</comment>
70
+ <frontend_type>select</frontend_type>
71
+ <source_model>adminhtml/system_config_source_yesno</source_model>
72
+ <sort_order>3</sort_order>
73
+ <show_in_default>1</show_in_default>
74
+ <show_in_website>1</show_in_website>
75
+ <show_in_store>0</show_in_store>
76
+ </test_mode>
77
+ <merchant_code translate="label comment">
78
+ <label>Merchant Code</label>
79
+ <comment>Your Snap* Hosted Payments code.</comment>
80
+ <frontend_type>text</frontend_type>
81
+ <sort_order>4</sort_order>
82
+ <show_in_default>1</show_in_default>
83
+ <show_in_website>1</show_in_website>
84
+ <show_in_store>1</show_in_store>
85
+ </merchant_code>
86
+ <merchant_authkey translate="label comment">
87
+ <label>Merchant Authkey</label>
88
+ <comment>The key corresponding to the Snap* Hosted Payments code.</comment>
89
+ <frontend_type>text</frontend_type>
90
+ <sort_order>5</sort_order>
91
+ <show_in_default>1</show_in_default>
92
+ <show_in_website>1</show_in_website>
93
+ <show_in_store>1</show_in_store>
94
+ </merchant_authkey>
95
+ <checkout_iframe translate="label comment">
96
+ <label>Use iframe layout</label>
97
+ <comment>Select whether Snap* is integrated in your shop using an iframe.</comment>
98
+ <frontend_type>select</frontend_type>
99
+ <source_model>adminhtml/system_config_source_yesno</source_model>
100
+ <sort_order>6</sort_order>
101
+ <show_in_default>1</show_in_default>
102
+ <show_in_website>1</show_in_website>
103
+ <show_in_store>1</show_in_store>
104
+ </checkout_iframe>
105
+ <trigger3ds translate="label comment">
106
+ <label>3D Secure Trigger</label>
107
+ <comment>Value that triggers 3D Secure. Empty -> Never, 0 -> Always.</comment>
108
+ <frontend_type>text</frontend_type>
109
+ <sort_order>7</sort_order>
110
+ <show_in_default>1</show_in_default>
111
+ <show_in_website>1</show_in_website>
112
+ <show_in_store>1</show_in_store>
113
+ </trigger3ds>
114
+ <order_prefix translate="label comment">
115
+ <label>Order Prefix</label>
116
+ <comment>Order Prefix sent to Snap* Hosted Payments.</comment>
117
+ <frontend_type>text</frontend_type>
118
+ <sort_order>8</sort_order>
119
+ <show_in_default>1</show_in_default>
120
+ <show_in_website>1</show_in_website>
121
+ <show_in_store>1</show_in_store>
122
+ </order_prefix>
123
+ </fields>
124
+ </hostedpayments>
125
+ </groups>
126
+ </payment>
127
+ </sections>
128
+ </config>
app/code/local/Evo/HostedPayments/sql/hostedpayments_setup/install-0.1.0.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Payments Setup script.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+
38
+ $installer = $this;
39
+ $installer->startSetup();
40
+ $table = $installer->getConnection()->newTable($installer->getTable('hostedpayments/hostedpayment'))
41
+ ->addColumn('id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
42
+ 'unsigned' => true,
43
+ 'nullable' => false,
44
+ 'primary' => true,
45
+ 'identity' => true,
46
+ ), 'Entity ID')
47
+ ->addColumn('order_id', Varien_Db_Ddl_Table::TYPE_TEXT, 50, array(
48
+ 'nullable' => false,
49
+ 'unique' => true,
50
+ ), 'Order ID')
51
+ ->addColumn('url', Varien_Db_Ddl_Table::TYPE_TEXT, 255, array(
52
+ 'nullable' => false,
53
+ ), 'Payment URL')
54
+ ->addColumn('prefix', Varien_Db_Ddl_Table::TYPE_TEXT, 50, array(
55
+ 'nullable' => true
56
+ ), 'Order ID Prefix')
57
+ ->setComment('Snap* Hosted Payments URLs table');
58
+ $installer->getConnection()->createTable($table);
59
+ $installer->endSetup();
app/design/adminhtml/default/default/template/evo/info.phtml ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block View.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ ?>
38
+ <div><img class="evo-snap-logo" src="<?php echo $this->getSkinUrl('images/evo/logo.png')?>" alt="Snap*" style="float: left; margin: 5px;" /><strong><?php echo $this->__('Pay by VISA, MasterCard or Maestro') ?></strong></div>
app/design/frontend/base/default/layout/evohostedpayments.xml ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+
4
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
5
+ *
6
+ * This software and documentation is subject to and made
7
+ * available only pursuant to the terms of an executed license
8
+ * agreement, and may be used only in accordance with the terms
9
+ * of said agreement. This software may not, in whole or in part,
10
+ * be copied, photocopied, reproduced, translated, or reduced to
11
+ * any electronic medium or machine-readable form without
12
+ * prior consent, in writing, from EVO Payments International, INC.
13
+ *
14
+ * Use, duplication or disclosure by the U.S. Government is subject
15
+ * to restrictions set forth in an executed license agreement
16
+ * and in subparagraph (c)(1) of the Commercial Computer
17
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
18
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
19
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
20
+ * Computer Software--Licensing clause at NASA FAR supplement
21
+ * 16-52.227-86; or their equivalent.
22
+ *
23
+ * Information in this software is subject to change without notice
24
+ * and does not represent a commitment on the part of EVO Payments International.
25
+ *
26
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
27
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
28
+ */
29
+
30
+ -->
31
+ <layout version="0.1.0">
32
+ <hostedpayments_processing_pay translate="label">
33
+ <label>Snap* Hosted Payments Checkout</label>
34
+ <!-- Mage_Checkout -->
35
+ <remove name="left"/>
36
+ <remove name="right"/>
37
+
38
+ <reference name="root">
39
+ <action method="setTemplate"><template>page/1column.phtml</template></action>
40
+ </reference>
41
+ <reference name="content">
42
+ <block type="hostedpayments/iframe" name="hostedpayments.iframe" template="evo/iframe.phtml" />
43
+ </reference>
44
+ </hostedpayments_processing_pay>
45
+
46
+ <hostedpayments_processing_return translate="label">
47
+ <label>Snap* Hosted Payments Checkout</label>
48
+ <!-- Mage_Checkout -->
49
+ <remove name="left"/>
50
+ <remove name="right"/>
51
+
52
+ <reference name="root">
53
+ <action method="setTemplate"><template>page/empty.phtml</template></action>
54
+ </reference>
55
+ <reference name="content">
56
+ <block type="hostedpayments/iframevalidation" name="hostedpayments.iframevalidation" template="evo/iframevalidation.phtml" />
57
+ </reference>
58
+ </hostedpayments_processing_return>
59
+ </layout>
app/design/frontend/base/default/template/evo/form.phtml ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Form Block View.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ ?>
38
+ <?php $_code=$this->getMethodCode() ?>
39
+ <p style="vertical-align: middle;"><img class="credit-card-logo" src="<?php echo $this->getSkinUrl('images/evo/brand-logos.png')?>" alt="<?php echo $this->__('Credit Card Logos') ?>" style="display: inline-block; margin: 5px; vertical-align: middle;" /><strong style="display: inline-block; vertical-align: middle;"><?php echo $this->__('Pay by VISA, MasterCard or Maestro') ?></strong></p>
app/design/frontend/base/default/template/evo/iframe.phtml ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Iframe Block View.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ ?>
38
+ <div class="block block-evosnap">
39
+ <iframe id="evosnapif" src="<?php echo $this->getPaymentUrl() ?>" style="width: 100%; height: 70vh; border: none;"></iframe>
40
+ </div>
app/design/frontend/base/default/template/evo/iframevalidation.phtml ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Iframe Validation Block View.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ ?>
38
+ <script type="text/javascript">
39
+ <!--
40
+ window.parent.location.href= "<?php echo $this->getValidationUrl() ?>";
41
+ -->
42
+ </script>
app/design/frontend/base/default/template/evo/info.phtml ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * EVO Snap* Hosted Info Block View.
31
+ *
32
+ * @category EVO
33
+ * @package Evo
34
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
35
+ * @license EVO Payments International EULA
36
+ */
37
+ ?>
38
+ <p style="vertical-align: middle;"><img class="credit-card-logo" src="<?php echo $this->getSkinUrl('images/evo/brand-logos.png')?>" alt="<?php echo $this->__('Credit Card Logos') ?>" style="display: inline-block; margin: 5px; vertical-align: middle;" /><strong style="display: inline-block; vertical-align: middle;"><?php echo $this->__('Pay by VISA, MasterCard or Maestro') ?></strong></p>
39
+ <?php
40
+ $paymentLink = $this->_getPaymentLink();
41
+
42
+ if($paymentLink !== null){
43
+ ?>
44
+ <p><a class="hostedpayments-resume-link" href="<?php echo $paymentLink ?>"><strong><?php echo $this->__('Resume Payment')?></strong></a></p>
45
+ <?php
46
+ }
47
+ ?>
app/etc/modules/Evo_HostedPayments.xml ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+
4
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
5
+ *
6
+ * This software and documentation is subject to and made
7
+ * available only pursuant to the terms of an executed license
8
+ * agreement, and may be used only in accordance with the terms
9
+ * of said agreement. This software may not, in whole or in part,
10
+ * be copied, photocopied, reproduced, translated, or reduced to
11
+ * any electronic medium or machine-readable form without
12
+ * prior consent, in writing, from EVO Payments International, INC.
13
+ *
14
+ * Use, duplication or disclosure by the U.S. Government is subject
15
+ * to restrictions set forth in an executed license agreement
16
+ * and in subparagraph (c)(1) of the Commercial Computer
17
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
18
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
19
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
20
+ * Computer Software-Licensing clause at NASA FAR supplement
21
+ * 16-52.227-86; or their equivalent.
22
+ *
23
+ * Information in this software is subject to change without notice
24
+ * and does not represent a commitment on the part of EVO Payments International.
25
+ *
26
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
27
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
28
+ */
29
+
30
+ -->
31
+ <config>
32
+ <modules>
33
+ <Evo_HostedPayments>
34
+ <active>true</active>
35
+ <codePool>local</codePool>
36
+ <depends>
37
+ <Mage_Payment />
38
+ </depends>
39
+ </Evo_HostedPayments>
40
+ </modules>
41
+ </config>
app/locale/en_US/Evo_HostedPayments.csv ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "Snap* Hosted Payments by Popular Payments","Snap* Hosted Payments by Popular Payments"
2
+ "Customer was redirected to the Snap* Hosted Payments Checkout for payment.","Customer was redirected to the Snap* Hosted Payments Checkout for payment."
3
+ "Customer cancelled this order via Snap* Hosted Payments Checkout.","Customer cancelled this order via Snap* Hosted Payments Checkout."
4
+ "Pay by VISA, MasterCard or Maestro","Pay by VISA, MasterCard or Maestro"
5
+ "Pay by Credit Card at Snap*","Pay by Credit Card at Snap*"
6
+ "Snap* Hosted Payments is a flexible, web based payment processing service that offers multiple payment options.","Snap* Hosted Payments is a flexible, web based payment processing service that offers multiple payment options."
7
+ "Select your Snap* environment.","Select your Snap* environment."
8
+ "Merchant Code","Merchant Code"
9
+ "Your Snap* Hosted Payments code.","Your Snap* Hosted Payments code."
10
+ "Merchant Authkey","Merchant Authkey"
11
+ "The key corresponding to the Snap* Hosted Payments code.","The key corresponding to the Snap* Hosted Payments code."
12
+ "Use iframe layout","Use iframe layout"
13
+ "Select whether Snap* is integrated in your shop using an iframe.","Select whether Snap* is integrated in your shop using an iframe."
14
+ "3D Secure Trigger","3D Secure Trigger"
15
+ "Value that triggers 3D Secure. Empty -> Never, 0 -> Always.","Value that triggers 3D Secure. Empty -> Never, 0 -> Always."
16
+ "Order Prefix","Order Prefix"
17
+ "Order Prefix sent to Snap* Hosted Payments.","Order Prefix sent to Snap* Hosted Payments."
18
+ "Resume Payment","Resume Payment"
19
+ "Credit Card Logos","Credit Card Logos"
app/locale/es_ES/Evo_HostedPayments.csv ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "Snap* Hosted Payments by Popular Payments","Snap* Hosted Payments by Popular Payments"
2
+ "Customer was redirected to the Snap* Hosted Payments Checkout for payment.","El cliente ha sido redirigido hacia la página de Proceso de Compra de Snap* Hosted Payments para realizar el pago."
3
+ "Customer cancelled this order via Snap* Hosted Payments Checkout.","El cliente canceló el pedido en la página de Proceso de Compra de Snap* Hosted Payments API&trade;"
4
+ "Pay by VISA, MasterCard or Maestro","Pagar con VISA, MasterCard o Maestro"
5
+ "Pay by Credit Card at Snap*","Pagar con Tarjeta de Cr&eacute;dito en Snap*"
6
+ "Snap* Hosted Payments is a flexible, web based payment processing service that offers multiple payment options.","Snap* Hosted Payments es un servicio Web flexible de procesamiento de pagos que ofrece múltiples opciones de pago."
7
+ "Select your Snap* environment.","Seleccione su entorno Snap*."
8
+ "Merchant Code","Código de Comercio"
9
+ "Your Snap* Hosted Payments code.","Su c&oacute;digo de Snap* Hosted Payments."
10
+ "Merchant Authkey","Clave de Comercio"
11
+ "The key corresponding to the Snap* Hosted Payments code.","La clave correspondiente a su c&oacute;digo de Snap* Hosted Payments."
12
+ "Use iframe layout","Utilizar diseño iframe"
13
+ "Select whether Snap* is integrated in your shop using an iframe.","Seleccione si Snap* se integra en su tienda mediante un iframe."
14
+ "3D Secure Trigger","Nivel 3D Secure"
15
+ "Value that triggers 3D Secure. Empty -> Never, 0 -> Always.","Valor a partir del cual se activa 3D Secure. Vacío -> Nunca, 0 -> Siempre."
16
+ "Order Prefix","Prefijo del Pedido"
17
+ "Order Prefix sent to Snap* Hosted Payments.","Prefijo del Pedido enviado a Snap* Hosted Payments."
18
+ "Resume Payment","Completar Pago"
19
+ "Credit Card Logos","Marcas de las Tarjetas de Crédito"
lib/hostedpayments/evosnap_api.php ADDED
@@ -0,0 +1,297 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ *
28
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
29
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
30
+ * @license EVO Payments International EULA
31
+ */
32
+
33
+ class EvoSnapApi
34
+ {
35
+
36
+ /**
37
+ * Retrieves orders.
38
+ * @param array $params request parameters.
39
+ * @param HostedPayments $cfg Hosted Payments Configuration.
40
+ * @return the order status.
41
+ */
42
+ public static function getOrders($params, $cfg){
43
+ $aPost = EvoSnapApi::getEvoSnapOrdersPost($params, $cfg->code, $cfg->key);
44
+ $orders = EvoSnapTools::callEvoSnap($aPost, $cfg->getUrl(false), $cfg->environment);
45
+ if ($orders ['success'] != false) {
46
+ return $orders['orders'];
47
+ } else {
48
+ throw new HostedPayments_Exception($orders['message']);
49
+ }
50
+ }
51
+
52
+ private static function getEvoSnapOrdersPost($params, $code, $key){
53
+ $aPost = array(
54
+ 'action' => 'get_orders',
55
+ 'code' => $code,
56
+ 'return' => 'json',
57
+ );
58
+ $aPost['mac'] = EvoSnapApi::getOrdersMac($aPost, $key);
59
+ $aPost = array_merge($aPost, $params);
60
+ return $aPost;
61
+ }
62
+
63
+ private static function getOrdersMac($aPost, $key){
64
+ $aMACParams = array(
65
+ 'code' => $aPost['code'],
66
+ 'action' => $aPost['action'],
67
+ );
68
+
69
+ return EvoSnapTools::getMac($aMACParams, $key);
70
+ }
71
+
72
+ /**
73
+ * Retrieves an order.
74
+ * @param string $id the order ID.
75
+ * @param HostedPayments $cfg Hosted Payments Configuration.
76
+ * @return the order status.
77
+ */
78
+ public static function getOrder($id, $cfg){
79
+ $aPost = EvoSnapApi::getEvoSnapOrderPost($id, $cfg->code, $cfg->key);
80
+ $order = EvoSnapTools::callEvoSnap($aPost, $cfg->getUrl(false), $cfg->environment);
81
+ if ($order ['success'] != false) {
82
+ $raw_order = $order['order'];
83
+ EvoSnapApi::setOrderTransactionData($raw_order);
84
+ return $raw_order;
85
+ } else {
86
+ throw new HostedPayments_Exception($order['message']);
87
+ }
88
+ }
89
+
90
+ private static function setOrderTransactionData($raw_order){
91
+ $total_refunded = 0;
92
+ if(isset($raw_order->transactions) && is_array($raw_order->transactions)){
93
+ foreach($raw_order->transactions as $txn){
94
+ if($txn->txn_action === 'sale'){
95
+ $raw_order->payment_transaction = $txn;
96
+ }elseif($txn->txn_action === 'credit'){
97
+ $total_refunded += $txn->txn_amount;
98
+ }
99
+ }
100
+ }
101
+
102
+ $raw_order->total_refunded = $total_refunded;
103
+ }
104
+
105
+ /**
106
+ * Gets order status.
107
+ * @param string $id the order ID.
108
+ * @param HostedPayments $cfg Hosted Payments Configuration.
109
+ * @return the order status.
110
+ */
111
+ public static function getOrderStatus($id, $cfg){
112
+ $order = EvoSnapApi::getOrder($id, $cfg);
113
+
114
+ if ($order != null) {
115
+ $result = $order->status;
116
+ } else {
117
+ $result = null;
118
+ }
119
+
120
+ return $result;
121
+ }
122
+
123
+ private static function getEvoSnapOrderPost($id, $code, $key){
124
+ $aPost = array(
125
+ 'action' => 'get_order',
126
+ 'code' => $code,
127
+ 'merchant_order_id' => $id,
128
+ 'return' => 'json',
129
+ );
130
+ $aPost['mac'] = EvoSnapApi::getOrderMac($aPost, $key);
131
+
132
+ return $aPost;
133
+ }
134
+
135
+ private static function getOrderMac($aPost, $key){
136
+ $aMACParams = array(
137
+ 'code' => $aPost['code'],
138
+ 'action' => $aPost['action'],
139
+ 'merchant_order_id' => $aPost['merchant_order_id']
140
+ );
141
+
142
+ return EvoSnapTools::getMac($aMACParams, $key);
143
+ }
144
+
145
+ /**
146
+ * Gets checkout order
147
+ * @param SnapOrder_Checkout $order the order checkout.
148
+ * @param float $trigger3ds value that triggers 3D secure.
149
+ * @param HostedPayments $cfg Hosted Payments Configuration.
150
+ */
151
+ public static function getOrderCheckoutUrl($order, $trigger3ds, $cfg) {
152
+ $aPost = EvoSnapApi::getEvoSnapCehckoutPost($order, $trigger3ds, $cfg->code, $cfg->key);
153
+ $result = EvoSnapTools::callEvoSnap($aPost, $cfg->getUrl(true), $cfg->environment);
154
+ if ($result ['success'] != false) {
155
+ return $result ['url'];
156
+ } else {
157
+ throw new HostedPayments_Exception($result['message']);
158
+ }
159
+ }
160
+
161
+ /**
162
+ *
163
+ * @param SnapOrder_Checkout $checkout
164
+ * @param float $trigger3ds
165
+ * @param string $code
166
+ * @param string $key
167
+ * @return array
168
+ */
169
+ private static function getEvoSnapCehckoutPost($checkout, $trigger3ds, $code, $key){
170
+ $returnUrl = $checkout->return_url;
171
+ $cancelUrl = $checkout->cancel_url;
172
+
173
+ $customer = $checkout->customer;
174
+ $aCustomer = array(
175
+ 'merchant_customer_id' => $customer->id,
176
+ 'first_name' =>EvoSnapTools::getString($customer->first_name),
177
+ 'last_name' => EvoSnapTools::getString($customer->last_name),
178
+ 'phone' => EvoSnapTools::getString($customer->phone, 15),
179
+ 'email' => EvoSnapTools::getString($customer->email, 50)
180
+ );
181
+
182
+ $order = $checkout->order;
183
+ $aOrder = array(
184
+ 'merchant_order_id' => EvoSnapTools::getString($order->id, 255),
185
+ 'total_subtotal' => EvoSnapTools::getNumber($order->total_subtotal),
186
+ 'total_tax' => EvoSnapTools::getNumber($order->total_tax),
187
+ 'total_shipping' => EvoSnapTools::getNumber($order->total_shipping),
188
+ 'total_discount' => EvoSnapTools::getNumber($order->total_discount),
189
+ 'total' => EvoSnapTools::getNumber($order->total),
190
+ 'ship_method' => EvoSnapTools::getString($order->ship_method),
191
+ 'currency_code' => EvoSnapTools::getString($order->currency_code),
192
+ 'enable_3d' => EvoSnapTools::getBoolean(isset($trigger3ds) && ($checkout->order->total >= $trigger3ds))
193
+ );
194
+
195
+ $aOrderLines = array();
196
+ $products = $order->lines;
197
+ for($i = 0; $i < count($products); $i++) {
198
+ $aOrderLines[$i] = EvoSnapApi::getOrderItem($products[$i]);
199
+ }
200
+
201
+ $aOrder = array_merge($aOrder, EvoSnapTools::getAddress('billto', $order->billto_address));
202
+ if(isset($order->shipto_address)){
203
+ $aOrder = array_merge($aOrder, EvoSnapTools::getAddress('shipto', $order->shipto_address));
204
+ }
205
+
206
+ $aPost = array(
207
+ 'action' => $checkout->getAction(),
208
+ 'code' => $code,
209
+ 'customer' => $aCustomer,
210
+ 'order' => $aOrder,
211
+ 'order_item' => $aOrderLines,
212
+ 'return_url' => $returnUrl,
213
+ 'cancel_url' => $cancelUrl,
214
+ 'auto_return' => '1',
215
+ 'checkout_layout' => $checkout->checkout_layout,
216
+ 'language' => $checkout->language
217
+ );
218
+ $aPost['mac'] = EvoSnapApi::getOrderCheckoutMac($aPost, $key);
219
+
220
+ return $aPost;
221
+ }
222
+
223
+ /**
224
+ *
225
+ * @param OrderLine $orderItem
226
+ * @return array
227
+ */
228
+ private static function getOrderItem($orderItem){
229
+ return array(
230
+ 'sku' => EvoSnapTools::getString($orderItem->sku, 25),
231
+ 'name' => EvoSnapTools::getString($orderItem->name, 30),
232
+ 'description' => EvoSnapTools::getString($orderItem->description, 300),
233
+ 'qty' => EvoSnapTools::getNumber($orderItem->qty),
234
+ 'price' => EvoSnapTools::getNumber($orderItem->price),
235
+ 'tax' => EvoSnapTools::getNumber($orderItem->tax)
236
+ );
237
+ }
238
+
239
+ private static function getOrderCheckoutMac($aPost, $key){
240
+ $aMACParams = array(
241
+ 'code' => $aPost['code'],
242
+ 'email' => $aPost['customer']['email'],
243
+ 'order_total_subtotal' => $aPost['order']['total_subtotal'],
244
+ 'order_total' => $aPost['order']['total'],
245
+ 'merchant_order_id' => $aPost['order']['merchant_order_id']
246
+ );
247
+
248
+ return EvoSnapTools::getMac($aMACParams, $key);
249
+ }
250
+
251
+ /**
252
+ * Credits an order.
253
+ * @param string $id the order ID.
254
+ * @param string $txnId the transaction ID.
255
+ * @param float $amount the amount to credit, null value defaults to original transaction amount.
256
+ * @param HostedPayments $cfg Hosted Payments Configuration.
257
+ * @return the order status.
258
+ */
259
+ public static function creditOrder($id, $txnId, $amount, $cfg){
260
+ $aPost = EvoSnapApi::getEvoSnapCreditOrderPost($id, $txnId, $amount,
261
+ $cfg->code, $cfg->key);
262
+ $credit = EvoSnapTools::callEvoSnap($aPost, $cfg->getUrl(false), $cfg->environment);
263
+ if ($credit ['success'] != false) {
264
+ return $credit['txn_id'];
265
+ } else {
266
+ throw new HostedPayments_Exception($credit['message']);
267
+ }
268
+ }
269
+
270
+ private static function getEvoSnapCreditOrderPost($id, $txnId, $amount, $code, $key){
271
+ $aPost = array(
272
+ 'action' => 'credit',
273
+ 'code' => $code,
274
+ 'merchant_order_id' => $id,
275
+ 'txn_id' => $txnId,
276
+ 'return' => 'json'
277
+ );
278
+ $aPost['mac'] = EvoSnapApi::getCreditOrderMac($aPost, $key);
279
+
280
+ if($amount != null){
281
+ $aPost['amount'] = $amount;
282
+ }
283
+
284
+ return $aPost;
285
+ }
286
+
287
+ private static function getCreditOrderMac($aPost, $key){
288
+ $aMACParams = array(
289
+ 'code' => $aPost['code'],
290
+ 'action' => $aPost['action'],
291
+ 'merchant_order_id' => $aPost['merchant_order_id'],
292
+ 'txn_id' => $aPost['txn_id']
293
+ );
294
+
295
+ return EvoSnapTools::getMac($aMACParams, $key);
296
+ }
297
+ }
lib/hostedpayments/evosnap_constants.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ *
28
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
29
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
30
+ * @license EVO Payments International EULA
31
+ */
32
+
33
+
34
+ final class EvoSnapConstants {
35
+ const ORDER_STATUS_NAME = 'EVOSNAP_OS_PENDING';
36
+ const LIVE_CHECKOUT_URL = 'https://hp.evosnap.com/srv/checkout/';
37
+ const CERT_CHECKOUT_URL = 'https://cert-hp.evosnap.com/srv/checkout/';
38
+ const LIVE_TXN_URL = 'https://hp.evosnap.com/srv/txn.php';
39
+ const CERT_TXN_URL = 'https://cert-hp.evosnap.com/srv/txn.php';
40
+ public static $VALID_PAYMENT_STATUSES = array('Pedning', 'Declined');
41
+ }
lib/hostedpayments/evosnap_tools.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ *
28
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
29
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
30
+ * @license EVO Payments International EULA
31
+ */
32
+
33
+ class EvoSnapTools
34
+ {
35
+
36
+ /**
37
+ * Calls EVO Snap* Hosted Payments Service
38
+ * @param array $params the CURL params to send to the service.
39
+ * @param string $url the URL to call.
40
+ * @param boolean $verifySsl flag to determine if the SSL cert must be validated. Default to true.
41
+ * @return array the resulting call.
42
+ */
43
+ public static function callEvoSnap($params, $url, $verifySsl = true){
44
+ $rCurl = curl_init ();
45
+ curl_setopt ( $rCurl, CURLOPT_URL, $url );
46
+ curl_setopt ( $rCurl, CURLOPT_SSL_VERIFYPEER, $verifySsl );
47
+ curl_setopt ( $rCurl, CURLOPT_RETURNTRANSFER, 1 );
48
+ curl_setopt ( $rCurl, CURLOPT_POST, true );
49
+ curl_setopt ( $rCurl, CURLOPT_POSTFIELDS, EvoSnapTools::encodeRequest ( $params ) );
50
+
51
+ $result = ( array ) json_decode ( curl_exec ( $rCurl ) );
52
+
53
+ curl_close ( $rCurl );
54
+
55
+ return $result;
56
+ }
57
+
58
+ /**
59
+ * Creates the MAC signature.
60
+ * @param array $aParams the params.
61
+ * @param string $sPrivateKey the private key.
62
+ * @return string the MAC signature.
63
+ */
64
+ public static function getMac($aParams, $sPrivateKey){
65
+ $sUnencoded = '';
66
+ if (!empty($aParams)){
67
+ $aTemp = array();
68
+ foreach ($aParams as $key => $val){
69
+ $aTemp[$key] = $val;
70
+ }
71
+ ksort($aTemp);
72
+ $sUnencoded.= implode('', $aTemp);
73
+ }
74
+ if (!empty($sPrivateKey))
75
+ $sUnencoded.= $sPrivateKey;
76
+
77
+ return md5($sUnencoded);
78
+ }
79
+
80
+ /**
81
+ * Encodes request data.
82
+ * @param array $aRequest the request to encode.
83
+ * @return string the encoded request.
84
+ */
85
+ public static function encodeRequest($aRequest){
86
+ $aFields = array();
87
+ if(is_array($aRequest) && !empty($aRequest)){
88
+ foreach ($aRequest as $key => $val){
89
+ if (is_array($val) || is_object($val))
90
+ $aFields[] = $key.'='.urlencode(json_encode($val));
91
+ else
92
+ $aFields[] = $key.'='.urlencode($val);
93
+ }
94
+ }
95
+
96
+ return implode('&', $aFields);
97
+ }
98
+
99
+ /**
100
+ * Gets a valid String to send to EVO Snap*.
101
+ * @param string $s the String to format.
102
+ * @param int $l the lenght of the string. Default = 20.
103
+ * @return string
104
+ */
105
+ public static function getString($s, $l = 20){
106
+ return substr(trim($s), 0, $l);
107
+ }
108
+
109
+ /**
110
+ * Gets a valid Number to send to EVO Snap*.
111
+ * @param float $n the number to format.
112
+ * @return string
113
+ */
114
+ public static function getNumber($n){
115
+ return number_format($n, 2);
116
+ }
117
+
118
+ /**
119
+ * Gets a valid Boolean to send to EVO Snap*.
120
+ * @param boolean $n the boolean to format.
121
+ * @return string
122
+ */
123
+ public static function getBoolean($b){
124
+ return $b? 1 : 0;
125
+ }
126
+
127
+ /**
128
+ * Formtas a ZIP code in a valid form for EVO Snap*.
129
+ * @param string $zip the ZIP code to format.
130
+ * @return string Zip Code in a valid format.
131
+ */
132
+ public static function getZipCode($zip){
133
+ return EvoSnapTools::getString(strtoupper(preg_replace("/[^a-zA-Z0-9]+/", "", $zip)), 9);
134
+ }
135
+
136
+ /**
137
+ * Gets an address formatted in a form ready to send to EVO Snap*.
138
+ * @param string $prefix the form variables prefix.
139
+ * @param SnapAddress $address the address.
140
+ * @return the address in an array.
141
+ */
142
+ public static function getAddress($prefix, $address){
143
+ $aAddress = array();
144
+ $aAddress[$prefix.'_company'] = EvoSnapTools::getString($address->company);
145
+ $aAddress[$prefix.'_first_name'] = EvoSnapTools::getString($address->first_name);
146
+ $aAddress[$prefix.'_last_name'] = EvoSnapTools::getString($address->last_name);
147
+ $aAddress[$prefix.'_po_box_number'] = EvoSnapTools::getString($address->po_box_number);
148
+ $aAddress[$prefix.'_address1'] = EvoSnapTools::getString($address->address1);
149
+ $aAddress[$prefix.'_address2'] = EvoSnapTools::getString($address->address2);
150
+ $aAddress[$prefix.'_house_number'] = EvoSnapTools::getString($address->house_number);
151
+ $aAddress[$prefix.'_city'] = EvoSnapTools::getString($address->city);
152
+ $aAddress[$prefix.'_zipcode'] = EvoSnapTools::getZipCode($address->zipcode);
153
+ $aAddress[$prefix.'_country'] = $address->country;
154
+ $aAddress[$prefix.'_state'] = $address->state;
155
+
156
+ return $aAddress;
157
+ }
158
+
159
+ /**
160
+ * Gets the languange code used by Snap* from ISO value.
161
+ * @param string $iso_language the language ID.
162
+ * @return string EVO Snap* language code.
163
+ */
164
+ public static function getLanguage($iso_language){
165
+ $result = 'ENG'; //Default English
166
+
167
+ //By now, only Spanish supported.
168
+ // TODO Change the way the language is selected as the number
169
+ // of languages increases
170
+ if(isset($iso_language) && $iso_language == 'es'){
171
+ $result = 'SPA';
172
+ }
173
+
174
+ return $result;
175
+ }
176
+
177
+ /**
178
+ * Retrieves a value from the request.
179
+ * @param array $request the HTTP request.
180
+ * @param string $param parameter name.
181
+ * @return Ambigous <NULL, string>
182
+ */
183
+ public static function getParam($request, $param){
184
+ if(isset($request[$param])){
185
+ $result = $request[$param];
186
+ }else{
187
+ $result = null;
188
+ }
189
+
190
+ return $result;
191
+ }
192
+ }
lib/hostedpayments/exceptions/hostepayments_exception.php ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Hosted Payments Exception class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class HostedPayments_Exception extends Exception {
37
+
38
+ }
lib/hostedpayments/index.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ *
28
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
29
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
30
+ * @license EVO Payments International EULA
31
+ */
32
+
33
+ define('_EVO_HP_ROOT_', __DIR__);
34
+
35
+ include_once(_EVO_HP_ROOT_.'/model/hostedpayments.php');
36
+
37
+ include_once(_EVO_HP_ROOT_.'/model/address.php');
38
+ include_once(_EVO_HP_ROOT_.'/model/customer.php');
39
+ include_once(_EVO_HP_ROOT_.'/model/order_line.php');
40
+ include_once(_EVO_HP_ROOT_.'/model/order.php');
41
+ include_once(_EVO_HP_ROOT_.'/model/subscription.php');
42
+ include_once(_EVO_HP_ROOT_.'/model/token.php');
43
+
44
+ include_once(_EVO_HP_ROOT_.'/model/checkout.php');
45
+ include_once(_EVO_HP_ROOT_.'/model/order_checkout.php');
46
+ include_once(_EVO_HP_ROOT_.'/model/subscription_checkout.php');
47
+ include_once(_EVO_HP_ROOT_.'/model/combo_checkout.php');
48
+
49
+ include_once(_EVO_HP_ROOT_.'/exceptions/hostepayments_exception.php');
50
+
51
+ include_once(_EVO_HP_ROOT_.'/evosnap_constants.php');
52
+ include_once(_EVO_HP_ROOT_.'/evosnap_api.php');
53
+ include_once(_EVO_HP_ROOT_.'/evosnap_tools.php');
lib/hostedpayments/model/address.php ADDED
@@ -0,0 +1,104 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Address class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapAddress {
37
+
38
+ /**
39
+ * Company name.
40
+ * @var string
41
+ */
42
+ public $company;
43
+
44
+ /**
45
+ * First name.
46
+ * @var string
47
+ */
48
+ public $first_name;
49
+
50
+ /**
51
+ * Last name.
52
+ * @var string
53
+ */
54
+ public $last_name;
55
+
56
+ /**
57
+ * House number.
58
+ * @var string
59
+ */
60
+ public $house_number;
61
+
62
+ /**
63
+ * PO Box Number.
64
+ * @var string
65
+ */
66
+ public $po_box_number;
67
+
68
+ /**
69
+ * Address first line.
70
+ * @var string
71
+ */
72
+ public $address1;
73
+
74
+ /**
75
+ * Address second line.
76
+ * @var string
77
+ */
78
+ public $address2;
79
+
80
+ /**
81
+ * City.
82
+ * @var string
83
+ */
84
+ public $city;
85
+
86
+ /**
87
+ * State. 2 char state code. Only used in US.
88
+ * @var string
89
+ */
90
+ public $state;
91
+
92
+ /**
93
+ * Country. 2 chas ISO code.
94
+ * @var string
95
+ */
96
+ public $country;
97
+
98
+ /**
99
+ * ZIP code. 1 to 9 digits, uppercase chars or spaces.
100
+ * @var string
101
+ */
102
+ public $zipcode;
103
+
104
+ }
lib/hostedpayments/model/checkout.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Checkout abstract class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ abstract class SnapCheckoutAbstract {
37
+
38
+ /**
39
+ * Customer.
40
+ * @var SnapCustomer
41
+ */
42
+ public $customer;
43
+
44
+ /**
45
+ * Return URL.
46
+ * @var string
47
+ */
48
+ public $return_url;
49
+
50
+ /**
51
+ * Cancel URL.
52
+ * @var string
53
+ */
54
+ public $cancel_url;
55
+
56
+ /**
57
+ * Auto return flag. Indicates if the customer is return directly to the return URL
58
+ * or redirected to the EVO Snap* Success page.
59
+ * @var boolean
60
+ */
61
+ public $auto_return;
62
+
63
+ /**
64
+ * Checkout page layout. "iframe" value if the checkout is going to be displayed
65
+ * embedded on an iframe.
66
+ * @var string
67
+ */
68
+ public $checkout_layout;
69
+
70
+ /**
71
+ * Flag to indicate if EVO Snap* should create a token to reuse the credit card
72
+ * typed by the user in the future. Only used in orders or subscriptions.
73
+ * @var boolean
74
+ */
75
+ public $create_token;
76
+
77
+ /**
78
+ * Language code.
79
+ * @var string
80
+ */
81
+ public $language;
82
+
83
+ /**
84
+ * Retrieves the action to execute.
85
+ */
86
+ public abstract function getAction();
87
+ }
lib/hostedpayments/model/combo_checkout.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Order and Subscription abstract class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapCombo_Checkout extends SnapCheckoutAbstract {
37
+
38
+ /**
39
+ * Order.
40
+ * @var SnapOrder
41
+ */
42
+ public $order;
43
+
44
+ /**
45
+ * Subscription.
46
+ * @var SnapSubscription
47
+ */
48
+ public $subscription;
49
+
50
+ /**
51
+ * Retrieves the action to execute.
52
+ */
53
+ public function getAction(){
54
+ return 'combo';
55
+ }
56
+ }
lib/hostedpayments/model/customer.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Customer class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapCustomer {
37
+
38
+ /**
39
+ * Customer ID.
40
+ * @var string
41
+ */
42
+ public $id;
43
+
44
+ /**
45
+ * First name.
46
+ * @var string
47
+ */
48
+ public $first_name;
49
+
50
+ /**
51
+ * Last name.
52
+ * @var string
53
+ */
54
+ public $last_name;
55
+
56
+ /**
57
+ * Phone.
58
+ * @var string
59
+ */
60
+ public $phone;
61
+
62
+ /**
63
+ * Email.
64
+ * @var string
65
+ */
66
+ public $email;
67
+
68
+ }
lib/hostedpayments/model/hostedpayments.php ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Hosted Payments configuration.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class HostedPayments {
37
+
38
+ /**
39
+ * Environment. True for Live, False for certification.
40
+ * @var boolean
41
+ */
42
+ public $environment;
43
+
44
+ /**
45
+ * Hosted Payments Merchant Profile Code.
46
+ * @var string
47
+ */
48
+ public $code;
49
+
50
+ /**
51
+ * Hosted Payments Merchant Profile Key.
52
+ * @var string
53
+ */
54
+ public $key;
55
+
56
+ /**
57
+ * Retrieves the URL.
58
+ * @param boolean $checkout flag to indicate if the URL is for the checkout system.
59
+ * @return string
60
+ */
61
+ public function getUrl($checkout){
62
+ if($checkout){
63
+ $result = $this->environment?
64
+ EvoSnapConstants::LIVE_CHECKOUT_URL :
65
+ EvoSnapConstants::CERT_CHECKOUT_URL;
66
+ }else{
67
+ $result = $this->environment?
68
+ EvoSnapConstants::LIVE_TXN_URL :
69
+ EvoSnapConstants::CERT_TXN_URL;
70
+ }
71
+ return $result;
72
+ }
73
+
74
+ }
lib/hostedpayments/model/order.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Order class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapOrder {
37
+
38
+ /**
39
+ * Order ID.
40
+ * @var string
41
+ */
42
+ public $id;
43
+
44
+ /**
45
+ * Bill to address.
46
+ * @var SnapAddress
47
+ */
48
+ public $billto_address;
49
+
50
+ /**
51
+ * Ship to address.
52
+ * @var SnapSnapAddress
53
+ */
54
+ public $shipto_address;
55
+
56
+ /**
57
+ * Array of order lines.
58
+ * @var array(OrderLine)
59
+ */
60
+ public $lines;
61
+
62
+ /**
63
+ * Subtotal amount.
64
+ * @var float
65
+ */
66
+ public $total_subtotal;
67
+
68
+ /**
69
+ * Total discounts amount.
70
+ * @var float
71
+ */
72
+ public $total_discount;
73
+
74
+ /**
75
+ * Tax amount.
76
+ * @var float
77
+ */
78
+ public $total_tax;
79
+
80
+ /**
81
+ * Shipping amount. Any wrapping amount should be included here.
82
+ * @var float
83
+ */
84
+ public $total_shipping;
85
+
86
+ /**
87
+ * Total amount.
88
+ * @var float
89
+ */
90
+ public $total;
91
+
92
+ /**
93
+ * Ship method.
94
+ * @var string
95
+ */
96
+ public $ship_method;
97
+
98
+ /**
99
+ * ISO currency code.
100
+ * @var string
101
+ */
102
+ public $currency_code;
103
+
104
+ /**
105
+ * Metadata.
106
+ * @var array
107
+ */
108
+ public $metadata;
109
+
110
+ }
lib/hostedpayments/model/order_checkout.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Order Checkout class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapOrder_Checkout extends SnapCheckoutAbstract {
37
+
38
+ /**
39
+ * Order.
40
+ * @var SnapOrder
41
+ */
42
+ public $order;
43
+
44
+ /**
45
+ * Retrieves the action to execute.
46
+ */
47
+ public function getAction(){
48
+ return 'order';
49
+ }
50
+ }
lib/hostedpayments/model/order_line.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Order Line class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapOrderLine {
37
+
38
+ /**
39
+ * SKU
40
+ * @var string
41
+ */
42
+ public $sku;
43
+
44
+ /**
45
+ * Item name.
46
+ * @var string
47
+ */
48
+ public $name;
49
+
50
+ /**
51
+ * Description.
52
+ * @var string
53
+ */
54
+ public $description;
55
+
56
+ /**
57
+ * Item price (each).
58
+ * @var float
59
+ */
60
+ public $price;
61
+
62
+ /**
63
+ * Item tax (each).
64
+ * @var float
65
+ */
66
+ public $tax;
67
+
68
+ /**
69
+ * Item quantity.
70
+ * @var float
71
+ */
72
+ public $qty;
73
+
74
+ /**
75
+ * Item description. Array of strings.
76
+ * @var array
77
+ */
78
+ public $details;
79
+
80
+ }
lib/hostedpayments/model/subscription.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Subscription class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapSubscription extends SnapOrder {
37
+
38
+ /**
39
+ * Number of time between Subscription Payments.
40
+ * @var integer
41
+ */
42
+ public $interval_length;
43
+
44
+ /**
45
+ * Frequency of Subscription Payments: �days�, �weeks�,�months�, �years�
46
+ * @var string
47
+ */
48
+ public $interval_unit;
49
+
50
+ /**
51
+ * Date to process first Subscription Payment. Format 'mm/dd/yyyy'.
52
+ * Must be at least 1 day in the future.
53
+ * @var string
54
+ */
55
+ public $start_date;
56
+
57
+ /**
58
+ * Total number of Subscription Payments. Specify �9999� for unlimited.
59
+ * @var integer
60
+ */
61
+ public $total_occurrences;
62
+
63
+ /**
64
+ * Trial number of Subscription Payments.
65
+ * @var integer
66
+ */
67
+ public $trial_occurrences;
68
+
69
+ /**
70
+ * Total amount to bill during the Trial Period (if any).
71
+ * @var float
72
+ */
73
+ public $trial_amount;
74
+
75
+ /**
76
+ * Flag to enable Automatic Payment processing on Snap* Hosted Payment.
77
+ * @var boolean
78
+ */
79
+ public $auto_process;
80
+
81
+ }
lib/hostedpayments/model/subscription_checkout.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Subscription Checkout class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapSubscription_Checkout extends SnapCheckoutAbstract {
37
+
38
+ /**
39
+ * Subscription.
40
+ * @var SnapSubscription
41
+ */
42
+ public $subscription;
43
+
44
+ /**
45
+ * Retrieves the action to execute.
46
+ */
47
+ public function getAction(){
48
+ return 'sub';
49
+ }
50
+ }
lib/hostedpayments/model/token.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /* Copyright (c) 2015 EVO Payments International - All Rights Reserved.
4
+ *
5
+ * This software and documentation is subject to and made
6
+ * available only pursuant to the terms of an executed license
7
+ * agreement, and may be used only in accordance with the terms
8
+ * of said agreement. This software may not, in whole or in part,
9
+ * be copied, photocopied, reproduced, translated, or reduced to
10
+ * any electronic medium or machine-readable form without
11
+ * prior consent, in writing, from EVO Payments International, INC.
12
+ *
13
+ * Use, duplication or disclosure by the U.S. Government is subject
14
+ * to restrictions set forth in an executed license agreement
15
+ * and in subparagraph (c)(1) of the Commercial Computer
16
+ * Software-Restricted Rights Clause at FAR 52.227-19; subparagraph
17
+ * (c)(1)(ii) of the Rights in Technical Data and Computer Software
18
+ * clause at DFARS 252.227-7013, subparagraph (d) of the Commercial
19
+ * Computer Software--Licensing clause at NASA FAR supplement
20
+ * 16-52.227-86; or their equivalent.
21
+ *
22
+ * Information in this software is subject to change without notice
23
+ * and does not represent a commitment on the part of EVO Payments International.
24
+ *
25
+ * Sample Code is for reference Only and is intended to be used for educational purposes. It's the responsibility of
26
+ * the software company to properly integrate into thier solution code that best meets thier production needs.
27
+ */
28
+
29
+ /**
30
+ * Token class.
31
+ *
32
+ * @author Antonio Molinero <antonio.molinero@evopayments.com>
33
+ * @copyright Copyright (c) 2015 EVO Snap* (http://www.evosnap.com)
34
+ * @license EVO Payments International EULA
35
+ */
36
+ class SnapToken {
37
+
38
+ /**
39
+ * Order ID.
40
+ * @var string
41
+ */
42
+ public $id;
43
+
44
+ /**
45
+ * Bill to address.
46
+ * @var SnapAddress
47
+ */
48
+ public $billto_address;
49
+
50
+
51
+ /**
52
+ * Authorization Amount.
53
+ * @var float
54
+ */
55
+ public $auth_amount;
56
+
57
+ /**
58
+ * Metadata.
59
+ * @var array
60
+ */
61
+ public $metadata;
62
+
63
+ }
package.xml ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Popular_Payments_Snap_HostedPayments</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license>EVO Payments International EULA</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Popular Payments - Snap* Hosted Payments</summary>
10
+ <description>Hosted Payments is perfect for merchants who want to streamline payments and reduce PCI compliance burden.&#xD;
11
+ Offering the fastest way to securely accept payment within your shopping cart, donations website, or online billing application.</description>
12
+ <notes>Initial release.</notes>
13
+ <authors><author><name>Popular Payments</name><user>popularpayments</user><email>partners@popularpayments.es</email></author></authors>
14
+ <date>2015-12-17</date>
15
+ <time>09:30:55</time>
16
+ <contents><target name="magelocale"><dir name="en_US"><file name="Evo_HostedPayments.csv" hash="258ae48ace276313fbd327c09718d5c6"/></dir><dir name="es_ES"><file name="Evo_HostedPayments.csv" hash="03b8a0cf0a10599a8858ebd52939526f"/></dir></target><target name="magelib"><dir name="hostedpayments"><file name="evosnap_api.php" hash="6b6d6e5747a9b7876e66fef0a206eff6"/><file name="evosnap_constants.php" hash="e4da0c5944f13fd87f5fa8db4aef9c26"/><file name="evosnap_tools.php" hash="91d9978a774582839d8bc524985d1ba3"/><dir name="exceptions"><file name="hostepayments_exception.php" hash="2ab976b824a27fbcf3f1cdc7dea607d8"/></dir><file name="index.php" hash="11af8d661d96429f0d2288a483e7f225"/><dir name="model"><file name="address.php" hash="acbecd3223d913b6c822d83a2bc5fde7"/><file name="checkout.php" hash="fe5f107c6df599665635a4b8feeebd7a"/><file name="combo_checkout.php" hash="48c59f828f1d5d903d4067a29208b2df"/><file name="customer.php" hash="5d193104124d98f81533fefb83ef18e8"/><file name="hostedpayments.php" hash="d2916bc74976532e2f5f05ab244764ba"/><file name="order.php" hash="4ab2632b843187391e602fa7ea01cdeb"/><file name="order_checkout.php" hash="88eed40487ce2a9b24ec50bbfd6238f5"/><file name="order_line.php" hash="27c3701ea5461e63230e1ccda575a2eb"/><file name="subscription.php" hash="ab8199fc8852d271a4160978b0ef7ada"/><file name="subscription_checkout.php" hash="b3f89fd6336f5c57adc39fd0d1bd452b"/><file name="token.php" hash="87cca899cafc5caa5c9a37b31a2fee95"/></dir></dir></target><target name="magelocal"><dir name="Evo"><dir name="HostedPayments"><dir name="Block"><file name="Form.php" hash="413d0f7ecc48334458a6677f634a4fc0"/><file name="Iframe.php" hash="7912a95f2d0536eff4741aa1d4d13de4"/><file name="Iframevalidation.php" hash="111d9833f030fabcb7baa18f926cf9f0"/><file name="Info.php" hash="086ca3365fe27b818900ce805bbcb45c"/></dir><dir name="Helper"><file name="Data.php" hash="c3b73cb701fea4bc08ca4ebe02741fd8"/></dir><dir name="Model"><file name="Hostedpayment.php" hash="807c952986c2461ad7fd9dba45d66dba"/><file name="Payment.php" hash="72f947fbeaaaae429a83239e5658882d"/><dir name="Resource"><dir name="Hostedpayment"><file name="Collection.php" hash="b51a062a9bbfc5a69b1a3b6575991e1a"/></dir><file name="Hostedpayment.php" hash="cc3c32dcebabf4c5b0abd7a2dcbbe924"/><file name="Setup.php" hash="96a49aea7e98d3470f2fb2abe23a53dc"/></dir></dir><dir name="controllers"><file name="ProcessingController.php" hash="143330b3ff1af64194288711c62cb82f"/></dir><dir name="etc"><file name="config.xml" hash="69ba6b12e8726fc7537d61c45f955185"/><file name="system.xml" hash="b42994adda2b2564ca6396bfca114e04"/></dir><dir name="sql"><dir name="hostedpayments_setup"><file name="install-0.1.0.php" hash="08d8b35784c3c8b1a2355022cb4da566"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="evo"><file name="info.phtml" hash="2b3a1b10beabe5c667956ccb85fd1e6e"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="evohostedpayments.xml" hash="ff3f05c4e91e1495cf8cc53632d6279d"/></dir><dir name="template"><dir name="evo"><file name="form.phtml" hash="47af0cbfdfb7b2066f3e6d0238b22ef7"/><file name="iframe.phtml" hash="3dc536079f66dae2cc80fd5dd3e5a207"/><file name="iframevalidation.phtml" hash="5060a6563cdeebad96430165b66e44c8"/><file name="info.phtml" hash="63231065d6a007ebfec47a20ae20986b"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="images"><dir name="evo"><file name="logo.png" hash="a108e448a1066ac4ee0152302998182c"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="evo"><file name="brand-logos.png" hash="489b1ad5d5952d60787add247219e2e7"/><file name="cc-logo.png" hash="702b7d0ce2f4748684d79ae2ab7bb33b"/><file name="logo.png" hash="a108e448a1066ac4ee0152302998182c"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Evo_HostedPayments.xml" hash="1c8ee1cde5bd6360dfe14e3ee91252ad"/></dir></target></contents>
17
+ <compatible/>
18
+ <dependencies><required><php><min>5.3.0</min><max>5.9.0</max></php></required></dependencies>
19
+ </package>
skin/adminhtml/default/default/images/evo/logo.png ADDED
Binary file
skin/frontend/base/default/images/evo/brand-logos.png ADDED
Binary file
skin/frontend/base/default/images/evo/cc-logo.png ADDED
Binary file
skin/frontend/base/default/images/evo/logo.png ADDED
Binary file