Juicy_BarclaysPSPID - Version 1.0.0

Version Notes

Initial Release from Juicy Media

Download this release

Release Info

Developer Juicy Media
Extension Juicy_BarclaysPSPID
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

Files changed (32) hide show
  1. app/code/local/Juicy/Barclayspspid/Block/Dynamic.php +18 -0
  2. app/code/local/Juicy/Barclayspspid/Block/Failure.php +34 -0
  3. app/code/local/Juicy/Barclayspspid/Block/Form.php +18 -0
  4. app/code/local/Juicy/Barclayspspid/Block/Info.php +117 -0
  5. app/code/local/Juicy/Barclayspspid/Block/Motoform.php +136 -0
  6. app/code/local/Juicy/Barclayspspid/Block/Motoinfo.php +138 -0
  7. app/code/local/Juicy/Barclayspspid/Block/Redirect.php +32 -0
  8. app/code/local/Juicy/Barclayspspid/Helper/Data.php +61 -0
  9. app/code/local/Juicy/Barclayspspid/Model/Barclaysmoto.php +251 -0
  10. app/code/local/Juicy/Barclayspspid/Model/Barclayspspid.php +174 -0
  11. app/code/local/Juicy/Barclayspspid/Model/Config.php +140 -0
  12. app/code/local/Juicy/Barclayspspid/Model/Directlink.php +463 -0
  13. app/code/local/Juicy/Barclayspspid/Model/Resource/Eav/Mysql4/Setup.php +6 -0
  14. app/code/local/Juicy/Barclayspspid/Model/Session.php +16 -0
  15. app/code/local/Juicy/Barclayspspid/Model/Source/CardcodeAction.php +25 -0
  16. app/code/local/Juicy/Barclayspspid/Model/Source/CreditCards.php +27 -0
  17. app/code/local/Juicy/Barclayspspid/Model/Source/CurrencyAction.php +55 -0
  18. app/code/local/Juicy/Barclayspspid/Model/Source/PaymentAction.php +19 -0
  19. app/code/local/Juicy/Barclayspspid/Model/Submitform.php +342 -0
  20. app/code/local/Juicy/Barclayspspid/controllers/PaymentController.php +242 -0
  21. app/code/local/Juicy/Barclayspspid/controllers/RefundController.php +9 -0
  22. app/code/local/Juicy/Barclayspspid/etc/adminhtml.xml +53 -0
  23. app/code/local/Juicy/Barclayspspid/etc/adminhtml/acl.xml +13 -0
  24. app/code/local/Juicy/Barclayspspid/etc/adminhtml/system.xml +145 -0
  25. app/code/local/Juicy/Barclayspspid/etc/config.xml +122 -0
  26. app/code/local/Juicy/Barclayspspid/etc/system.xml +365 -0
  27. app/code/local/Juicy/Barclayspspid/sql/barclayspspid_setup/mysql4-install-1.0.0.php +24 -0
  28. app/design/adminhtml/default/default/template/barclayspspid/info.phtml +97 -0
  29. app/design/adminhtml/default/default/template/barclayspspid/motoform.phtml +77 -0
  30. app/design/adminhtml/default/default/template/barclayspspid/motoinfo.phtml +78 -0
  31. app/etc/modules/Juicy_Barclayspspid.xml +9 -0
  32. package.xml +18 -0
app/code/local/Juicy/Barclayspspid/Block/Dynamic.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redirection to Barclays CPI
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+ class Juicy_Barclayspspid_Block_Dynamic extends Mage_Core_Block_Abstract
12
+ {
13
+ protected function _toHtml()
14
+ {
15
+ $html = $this->getformhtml();
16
+ return $html;
17
+ }
18
+ }
app/code/local/Juicy/Barclayspspid/Block/Failure.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Failure message block
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Block_Failure extends Mage_Core_Block_Template
11
+ {
12
+ /**
13
+ * Return StatusDetail field value from Response
14
+ *
15
+ * @return string
16
+ */
17
+ public function getErrorMessage ()
18
+ {
19
+ $error = Mage::getSingleton('Mage_Checkout_Model_Session')->getErrorMessage();
20
+ Mage::getSingleton('Mage_Checkout_Model_Session')->unsErrorMessage();
21
+ Mage::log('Juicy_Barclayspspid_Block_Failure: '.$error, null, 'barclays-pspid.log');
22
+ return $error;
23
+ }
24
+
25
+ /**
26
+ * Get continue shopping url
27
+ */
28
+ public function getContinueShoppingUrl()
29
+ {
30
+ return Mage::getUrl('checkout/cart');
31
+ }
32
+ }
33
+
34
+ ?>
app/code/local/Juicy/Barclayspspid/Block/Form.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Form for the checkout page
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+ class Juicy_Barclayspspid_Block_Form extends Mage_Payment_Block_Form
12
+ {
13
+ protected function _construct()
14
+ {
15
+ parent::_construct();
16
+ $this->setTemplate('barclayspspid/form.phtml');
17
+ }
18
+ }
app/code/local/Juicy/Barclayspspid/Block/Info.php ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Juicy_Barclayspspid_Block_Info extends Mage_Payment_Block_Info
4
+ {
5
+ protected $_template = 'barclayspspid/info.phtml';
6
+
7
+ /**
8
+ * Returns code of payment method
9
+ *
10
+ * @return string
11
+ */
12
+
13
+ protected function _construct()
14
+ {
15
+ parent::_construct();
16
+ $this->setTemplate('barclayspspid/info.phtml');
17
+ }
18
+
19
+ public function getMethodCode()
20
+ {
21
+ return $this->getInfo()->getMethodInstance()->getCode();
22
+ }
23
+
24
+ public function getStuff() {
25
+
26
+ $data_in = $this->getInfo()->getOrder()->getPayment()->getAdditionalData();
27
+ $data = unserialize($data_in);
28
+
29
+ Mage::log('Juicy_Barclayspspid_Block_Info: '.$data_in, null, 'barclays-pspid.log');
30
+
31
+ unset($data['SHASIGN']);
32
+ unset($data['ED']);
33
+ unset($data['NCERROR']);
34
+ unset($data['BIN']);
35
+ unset($data['ECI']);
36
+ unset($data['SCORING']);
37
+ unset($data['SCO_CATEGORY']);
38
+ unset($data['VC']);
39
+
40
+ foreach ($data as $key => $value) {
41
+
42
+
43
+ switch ($key) {
44
+ case "SUBBRAND":
45
+ $key2 = "Card Holders Bank";
46
+ break;
47
+ case "CVCCheck":
48
+ $key2 = "CVC Check";
49
+ break;
50
+ case "AAVCheck";
51
+ $key2 = "AVS Check";
52
+ break;
53
+ case "AAVZIP":
54
+ $key2 = "AVS Postcode";
55
+ break;
56
+ case "AAVADDRESS":
57
+ $key2 = "AVS Address";
58
+ break;
59
+ case "IPCTY":
60
+ $key2 = "Order Placed from";
61
+ break;
62
+ case "CCCTY":
63
+ $key2 = "Bank Country of Origin";
64
+ break;
65
+ case "orderID":
66
+ $key2 = "Order ID";
67
+ break;
68
+ case "CN":
69
+ $key2 = "Card Holder Name";
70
+ break;
71
+ case "CARDNO":
72
+ $key2 = "Credit Card Number (Masked)";
73
+ break;
74
+ case "currency":
75
+ $key2 = "Payment Currency";
76
+ break;
77
+ case "amount":
78
+ $key2 = "Amount Paid";
79
+ break;
80
+ case "PM":
81
+ $key2 = "Payment Method";
82
+ break;
83
+ case "TRXDATE":
84
+ $key2 = "Transaction Date";
85
+ break;
86
+ case "IP":
87
+ $key2 = "IP address of Payee";
88
+ break;
89
+ case "PAYID":
90
+ $key2 = "Payment ID";
91
+ break;
92
+ case "ACCEPTANCE":
93
+ $key2 = "Authorization Code";
94
+ break;
95
+ case "BRAND":
96
+ $key2 = "Card Type";
97
+ break;
98
+ case "STATUS":
99
+ $key2 = "Status";
100
+ break;
101
+ default:
102
+ $key2 = $key;
103
+ break;
104
+
105
+
106
+ }
107
+
108
+
109
+
110
+ $data2[$key2] = $value;
111
+ }
112
+
113
+
114
+ return $data2;
115
+
116
+ }
117
+ }
app/code/local/Juicy/Barclayspspid/Block/Motoform.php ADDED
@@ -0,0 +1,136 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Form for the checkout page
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+ class Juicy_Barclayspspid_Block_Motoform extends Mage_Payment_Block_Form
12
+ {
13
+ protected function _construct()
14
+ {
15
+ parent::_construct();
16
+ $this->setTemplate('barclayspspid/motoform.phtml');
17
+ }
18
+
19
+ protected function _getConfig()
20
+ {
21
+ return Mage::getSingleton('payment/config');
22
+ }
23
+
24
+ /**
25
+ * Returns an array of credit card expiry months
26
+ *
27
+ * @return unknown
28
+ */
29
+ public function getCcMonths()
30
+ {
31
+ $months = $this->getData('cc_months');
32
+
33
+ if (is_null($months))
34
+ {
35
+ $months = array();
36
+ $monthList = $this->_getConfig()->getMonths();
37
+
38
+ $months[0] = $this->__('Month');
39
+ for ($nCount = 1; $nCount <= sizeof($monthList); $nCount++)
40
+ {
41
+ $value = $nCount;
42
+ if($value < 10)
43
+ {
44
+ $value = '0'.$value;
45
+ }
46
+ $months[$value] = $monthList[$nCount];
47
+ }
48
+
49
+ $this->setData('cc_months', $months);
50
+ }
51
+
52
+ return $months;
53
+ }
54
+
55
+ /**
56
+ * Returns an array of credit card expiry years
57
+ *
58
+ * @return unknown
59
+ */
60
+ public function getCcYears()
61
+ {
62
+ $years = $this->getData('cc_years');
63
+
64
+ if (is_null($years))
65
+ {
66
+ $years = array();
67
+ $first = date("Y");
68
+
69
+ $years = array($this->__('Year'));
70
+ for ($index = 0; $index < 10; $index++)
71
+ {
72
+ $year = $first + $index;
73
+ $yearPartial = substr($year, 2);
74
+ $years[$yearPartial] = $year;
75
+ }
76
+ $this->setData('cc_years', $years);
77
+ }
78
+
79
+ return $years;
80
+ }
81
+
82
+ /**
83
+ * Returns an array credit card start months
84
+ *
85
+ * @return unknown
86
+ */
87
+ public function getCcStartMonths()
88
+ {
89
+ $months = $this->getData('cc_ss_start_month');
90
+
91
+ if (is_null($months))
92
+ {
93
+ $months = array();
94
+ $monthList = $this->_getConfig()->getMonths();
95
+
96
+ for ($nCount = 1; $nCount <= sizeof($monthList); $nCount++)
97
+ {
98
+ $value = $nCount;
99
+ if($value < 10)
100
+ {
101
+ $value = '0'.$value;
102
+ }
103
+ $months[$value] = $monthList[$nCount];
104
+ }
105
+ $this->setData('cc_ss_start_month', $months);
106
+ }
107
+
108
+ return $months;
109
+ }
110
+
111
+ /**
112
+ * Returns an array of credit card start years
113
+ *
114
+ * @return unknown
115
+ */
116
+ public function getCcStartYears()
117
+ {
118
+ $years = $this->getData('cc_start_years');
119
+
120
+ if(is_null($years))
121
+ {
122
+ $years = array();
123
+ $first = date("Y");
124
+
125
+ for ($index = 0; $index < 10; $index++)
126
+ {
127
+ $year = $first - $index;
128
+ $yearPartial = substr($year, 2);
129
+ $years[$yearPartial] = $year;
130
+ }
131
+ $this->setData('cc_start_years', $years);
132
+ }
133
+
134
+ return $years;
135
+ }
136
+ }
app/code/local/Juicy/Barclayspspid/Block/Motoinfo.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Open Software License (OSL 3.0)
8
+ * that is bundled with this package in the file LICENSE.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/osl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magentocommerce.com so we can send you a copy immediately.
14
+ *
15
+ * DISCLAIMER
16
+ *
17
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
18
+ * versions in the future. If you wish to customize Magento for your
19
+ * needs please refer to http://www.magentocommerce.com for more information.
20
+ *
21
+ * @category Phoenix
22
+ * @package Phoenix_Moneybookers
23
+ * @copyright Copyright (c) 2013 Phoenix Medien GmbH & Co. KG (http://www.phoenix-medien.de)
24
+ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25
+ */
26
+ class Juicy_Barclayspspid_Block_Motoinfo extends Mage_Payment_Block_Info
27
+ {
28
+ protected $_template = 'barclayspspid/motoinfo.phtml';
29
+
30
+ /**
31
+ * Returns code of payment method
32
+ *
33
+ * @return string
34
+ */
35
+
36
+ protected function _construct()
37
+ {
38
+ parent::_construct();
39
+ $this->setTemplate('barclayspspid/motoinfo.phtml');
40
+ }
41
+
42
+ public function getMethodCode()
43
+ {
44
+ return $this->getInfo()->getMethodInstance()->getCode();
45
+ }
46
+
47
+ public function getStuff() {
48
+
49
+ $data = $this->getInfo()->getOrder()->getPayment()->getAdditionalData();
50
+ $data = unserialize($data);
51
+
52
+ unset($data['SHASIGN']);
53
+ unset($data['ED']);
54
+ unset($data['NCERROR']);
55
+ unset($data['BIN']);
56
+ unset($data['ECI']);
57
+ unset($data['SCORING']);
58
+ unset($data['SCO_CATEGORY']);
59
+ unset($data['VC']);
60
+
61
+ foreach ($data as $key => $value) {
62
+
63
+
64
+ switch ($key) {
65
+ case "SUBBRAND":
66
+ $key2 = "Card Holders Bank";
67
+ break;
68
+ case "CVCCheck":
69
+ $key2 = "CVC Check";
70
+ break;
71
+ case "AAVCheck";
72
+ $key2 = "AVS Check";
73
+ break;
74
+ case "AAVZIP":
75
+ $key2 = "AVS Postcode";
76
+ break;
77
+ case "AAVADDRESS":
78
+ $key2 = "AVS Address";
79
+ break;
80
+ case "IPCTY":
81
+ $key2 = "Order Placed from";
82
+ break;
83
+ case "CCCTY":
84
+ $key2 = "Bank Country of Origin";
85
+ break;
86
+ case "orderID":
87
+ $key2 = "Order ID";
88
+ break;
89
+ case "CN":
90
+ $key2 = "Card Holder Name";
91
+ break;
92
+ case "CARDNO":
93
+ $key2 = "Credit Card Number (Masked)";
94
+ break;
95
+ case "currency":
96
+ $key2 = "Payment Currency";
97
+ break;
98
+ case "amount":
99
+ $key2 = "Amount Paid";
100
+ break;
101
+ case "PM":
102
+ $key2 = "Payment Method";
103
+ break;
104
+ case "TRXDATE":
105
+ $key2 = "Transaction Date";
106
+ break;
107
+ case "IP":
108
+ $key2 = "IP address of Payee";
109
+ break;
110
+ case "PAYID":
111
+ $key2 = "Payment ID";
112
+ break;
113
+ case "ACCEPTANCE":
114
+ $key2 = "Authorization Code";
115
+ break;
116
+ case "BRAND":
117
+ $key2 = "Card Type";
118
+ break;
119
+ case "STATUS":
120
+ $key2 = "Status";
121
+ break;
122
+ default:
123
+ $key2 = $key;
124
+ break;
125
+
126
+
127
+ }
128
+
129
+
130
+
131
+ $data2[$key2] = $value;
132
+ }
133
+
134
+
135
+ return $data2;
136
+
137
+ }
138
+ }
app/code/local/Juicy/Barclayspspid/Block/Redirect.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Redirection to Barclays CPI
4
+ *
5
+ * @copyright Juicy Media Ltd, 2014
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (support@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+ class Juicy_Barclayspspid_Block_Redirect extends Mage_Core_Block_Abstract
12
+ {
13
+ protected function _toHtml()
14
+ {
15
+
16
+ //Mage::log('Juicy_Barclayspspid_Block_Redirect: Start', null, 'barclays-pspid.log');
17
+
18
+ $form = $this->getepdqform();
19
+
20
+ //Mage::log('Juicy_Barclayspspid_Block_Redirect: Form: '.$form, null, 'barclays-pspid.log');
21
+
22
+ $html = '<html><body>';
23
+ $html .= '<div style="color:#2f2f2f; font:11px/1.35em Verdana, Arial, Helvetica, sans-serif;">';
24
+ $html .= $this->__('You will be redirected to the Barclays website to make your payment, please wait a few seconds.');
25
+ $html .= '</div>';
26
+ $html .= $form;
27
+ $html .= '<script type="text/javascript">document.getElementById("form1").submit();</script>';
28
+ $html .= '</body></html>';
29
+
30
+ return $html;
31
+ }
32
+ }
app/code/local/Juicy/Barclayspspid/Helper/Data.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Helper file - not used right now
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Helper_Data extends Mage_Core_Helper_Abstract
11
+ {
12
+ public function log($eventname, $variables)
13
+ {
14
+
15
+ $config = new Juicy_Barclayspspid_Model_Config();
16
+
17
+ $debuglog = $config->getDebuglog();
18
+ $debugemail = $config->getDebugEmail();
19
+
20
+ if ($debuglog == "1") {
21
+ $message = "Event Name - ".$eventname." - Trace - ".print_r($variables, true);
22
+ Mage::log($message, null, "barclays-pspid.log");
23
+ }
24
+
25
+
26
+ if ($debugemail == "1") {
27
+
28
+ $siteurl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
29
+
30
+ $subject = "Barclays PSPID DEBUG LOG FOR - ".$siteurl." - Event :".$eventname;
31
+
32
+
33
+ $message = "Actual URL:".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
34
+ $message .= "<br /><br />";
35
+ $message .= "Event Name = ".$eventname."<br /><br />";
36
+ $message .= "Event Trace = ".print_r($variables, true)."<br /><br />";
37
+
38
+
39
+
40
+ $mail = Mage::getModel('core/email');
41
+ $mail->setToName('Juicy DEBUG NOTIFY');
42
+ $mail->setToEmail('servers@juicymedia.co.uk');
43
+ $mail->setBody($message);
44
+ $mail->setSubject($subject);
45
+ $mail->setFromEmail('debug@juicymedia.co.uk');
46
+ $mail->setFromName("Barclays PSPID Debug Issue");
47
+ $mail->setType('html');// YOu can use Html or text as Mail format
48
+
49
+ try {
50
+ $mail->send();
51
+ }
52
+ catch (Exception $e) {
53
+ //var_dump($e>getMessage());
54
+ }
55
+
56
+ }
57
+
58
+
59
+
60
+ }
61
+ }
app/code/local/Juicy/Barclayspspid/Model/Barclaysmoto.php ADDED
@@ -0,0 +1,251 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Standard model that does the hard work of sending data to Barclays
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Barclaysmoto extends Mage_Payment_Model_Method_Abstract
11
+ {
12
+ protected $_code = 'barclayspspid_moto';
13
+ protected $_formBlockType = 'Juicy_Barclayspspid_Block_Motoform';
14
+ protected $_infoBlockType = 'Juicy_Barclayspspid_Block_Motoinfo';
15
+
16
+
17
+ const PAYMENT_TYPE_PAYMENT = 'SAL';
18
+ const PAYMENT_TYPE_AUTHENTICATE = 'RES';
19
+
20
+ protected $_isGateway = true;
21
+ //protected $_isInitializeNeeded = false;
22
+ protected $_canAuthorize = false;
23
+ protected $_canCapture = true;
24
+ protected $_canCapturePartial = true;
25
+ protected $_canRefundInvoicePartial = true;
26
+ protected $_canRefund = true;
27
+ protected $_canVoid = false;
28
+ protected $_canUseInternal = true;
29
+ protected $_canUseCheckout = false;
30
+ protected $_canUseForMultishipping = false;
31
+
32
+ protected $_order = null;
33
+
34
+
35
+ public function refund(Varien_Object $payment, $amount)
36
+ {
37
+
38
+ $orderStatus = 'closed';
39
+ $szMessage = 'Payment refunded';
40
+
41
+ $directlink = new Juicy_Barclayspspid_Model_Directlink();
42
+
43
+ $result = $directlink->refundpayment($payment, $amount);
44
+
45
+ $status = (int)$result['STATUS'];
46
+
47
+ $error = false;
48
+
49
+ if ($status != 81) {
50
+ $error == $result['NCERRORPLUS'];
51
+ }
52
+
53
+ if($error === false)
54
+ {
55
+ $order = $payment->getOrder();
56
+ $payment = $order->getPayment();
57
+ $arAdditionalInformationArray = $payment->getAdditionalInformation();
58
+
59
+ $arAdditionalInformationArray["Refunded"] = 1;
60
+ $payment->setAdditionalInformation($arAdditionalInformationArray);
61
+ $payment->save();
62
+
63
+ $order->setState('refunded', $orderStatus, $szMessage, false);
64
+ $order->save();
65
+ }
66
+ else
67
+ {
68
+ Mage::throwException($error);
69
+ }
70
+
71
+ return $this;
72
+
73
+
74
+
75
+ }
76
+
77
+
78
+ /**
79
+ * Form block description
80
+ *
81
+ * @return object
82
+ */
83
+ public function createFormBlock($name)
84
+ {
85
+ $block = $this->getLayout()->createBlock('Juicy_Barclayspspid_Block_Motoform', $name);
86
+ $block->setMethod('barclayspspid_moto');
87
+ $block->setPayment($this->getPayment());
88
+ $block->setTemplate('barclayspspid/motoform.phtml');
89
+
90
+ return $block;
91
+ }
92
+
93
+ /**
94
+ * Get Config model
95
+ *
96
+ * @return object Juicy_Barclayscpi_Model_Config
97
+ */
98
+ public function getConfig()
99
+ {
100
+ return Mage::getSingleton('Juicy_Barclayspspid_Model_Config');
101
+ }
102
+
103
+
104
+ public function checkShaout($data)
105
+ {
106
+ $config = Mage::getModel('Juicy_Barclayspspid_Model_Config');
107
+
108
+ $shaout = $config->getShaout();
109
+
110
+ $datacheck = array();
111
+
112
+ foreach ($data as $key => $value) {
113
+ if ($value == "") {
114
+ continue;
115
+ }
116
+ $datacheck[$key] = $value;
117
+ }
118
+
119
+ $origsig = $datacheck['SHASIGN'];
120
+
121
+ unset($datacheck['SHASIGN']);
122
+
123
+ uksort($datacheck, 'strcasecmp');
124
+ $shasign = "";
125
+
126
+
127
+ foreach ($datacheck as $key => $value) {
128
+ $shasig .= trim(strtoupper($key)).'='.utf8_encode(trim($value)).$shaout;
129
+ }
130
+
131
+ $shasig = strtoupper(hash('sha1',$shasig));
132
+
133
+ if ($shasig == $origsig) {
134
+ return true;
135
+ } else {
136
+ return false;
137
+ }
138
+
139
+ }
140
+
141
+ public function capture(Varien_Object $payment, $amount)
142
+ {
143
+
144
+ $order = $payment->getOrder();
145
+
146
+ $data = unserialize($payment->getadditional_data());
147
+
148
+ if ($data['STATUS'] != 9) {
149
+
150
+ $directlink = new Juicy_Barclayspspid_Model_Directlink();
151
+
152
+ $result = $directlink->capturepayment($payment, $amount);
153
+
154
+
155
+
156
+ if ($result['STATUS'] == 91) {
157
+
158
+ $order->getPayment()->setTransactionId($result['PAYID']);
159
+ $order->save();
160
+ } else {
161
+ Mage::throwException('Capture Failed');
162
+ }
163
+ }
164
+
165
+ return $this;
166
+
167
+
168
+
169
+ }
170
+
171
+
172
+
173
+ public function authorize(Varien_Object $payment, $amount)
174
+ {
175
+
176
+ $error = false;
177
+
178
+ $order = $payment->getOrder();
179
+
180
+ $directlink = Mage::getModel('Juicy_Barclayspspid_Model_Directlink');
181
+
182
+ $result = $directlink->authorizepayment($payment, $amount);
183
+
184
+
185
+
186
+ $status = (int)$result['STATUS'];
187
+
188
+
189
+
190
+ if ($status == 9) {
191
+
192
+ $order->getPayment()->setadditional_data(serialize($result));
193
+ $order->getPayment()->setTransactionId($result['PAYID']);
194
+
195
+ $invoice = $order->prepareInvoice();
196
+ $invoice->register()->capture();
197
+ Mage::getModel('Mage_Core_Model_Resource_Transaction')
198
+ ->addObject($invoice)
199
+ ->addObject($invoice->getOrder())
200
+ ->save();
201
+
202
+ $session = Mage::getModel("Mage_Admin_Model_Session");
203
+ $session->addSuccess('Your Order was Successfully processed and the authorisation code was '.$result['ACCEPTANCE']);
204
+
205
+ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
206
+ $order->getPayment()->setSkipTransactionCreation(true);
207
+ $order->save();
208
+
209
+ } else if ($status == 5) {
210
+
211
+ $order->getPayment()->setadditional_data(serialize($result));
212
+ $order->getPayment()->setSkipTransactionCreation(true);
213
+
214
+ //$order->getPayment()->setTransactionId($additionaldata['PAYID']);
215
+ $invoice = $order->prepareInvoice();
216
+ $invoice->register();
217
+ Mage::getModel('Mage_Core_Model_Resource_Transaction')
218
+ ->addObject($invoice)
219
+ ->addObject($invoice->getOrder())
220
+ ->save();
221
+
222
+ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, 'barclayspspid_authorized', "Transaction was successfully pre-authorized", true);
223
+ $order->save();
224
+
225
+ $session = Mage::getModel("Mage_Admin_Model_Session");
226
+ $session->addSuccess('Your Order was Successfully authorized and the authorisation code was '.$result['ACCEPTANCE']);
227
+
228
+ } else {
229
+ $error = true;
230
+ }
231
+
232
+
233
+ if($error)
234
+ {
235
+ Mage::throwException($result['NCERRORPLUS']);
236
+ }
237
+ else
238
+ {
239
+
240
+ }
241
+
242
+ return $this;
243
+
244
+
245
+ }
246
+
247
+
248
+
249
+
250
+
251
+ }
app/code/local/Juicy/Barclayspspid/Model/Barclayspspid.php ADDED
@@ -0,0 +1,174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Standard model that does the hard work of sending data to Barclays
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Barclayspspid extends Mage_Payment_Model_Method_Abstract
11
+ {
12
+ protected $_code = 'barclayspspid_standard';
13
+ protected $_formBlockType = 'Juicy_Barclayspspid_Block_Form';
14
+ protected $_infoBlockType = 'Juicy_Barclayspspid_Block_Info';
15
+
16
+
17
+ const PAYMENT_TYPE_PAYMENT = 'SAL';
18
+ const PAYMENT_TYPE_AUTHENTICATE = 'RES';
19
+
20
+ protected $_isGateway = false;
21
+ protected $_canAuthorize = true;
22
+ protected $_canCapture = true;
23
+ protected $_canCapturePartial = true;
24
+ protected $_canRefundInvoicePartial = true;
25
+ protected $_canRefund = true;
26
+ protected $_canVoid = false;
27
+ protected $_canUseInternal = false;
28
+ protected $_canUseCheckout = true;
29
+ protected $_canUseForMultishipping = false;
30
+
31
+ protected $_order = null;
32
+
33
+
34
+ public function refund(Varien_Object $payment, $amount)
35
+ {
36
+ $orderStatus = 'closed';
37
+ $szMessage = 'Payment refunded';
38
+
39
+ $directlink = new Juicy_Barclayspspid_Model_Directlink();
40
+
41
+ $result = $directlink->refundpayment($payment, $amount);
42
+
43
+ $status = (int)$result['STATUS'];
44
+
45
+ $error = false;
46
+
47
+ if ($status != 81) {
48
+ $error = $result['NCERRORPLUS'];
49
+ }
50
+
51
+ if($error === false)
52
+ {
53
+ $order = $payment->getOrder();
54
+ $payment = $order->getPayment();
55
+ $arAdditionalInformationArray = $payment->getAdditionalInformation();
56
+
57
+ $arAdditionalInformationArray["Refunded"] = 1;
58
+ $payment->setAdditionalInformation($arAdditionalInformationArray);
59
+ $payment->save();
60
+
61
+ $order->setState('refunded', $orderStatus, $szMessage, false);
62
+ $order->save();
63
+ }
64
+ else
65
+ {
66
+ Mage::throwException($error);
67
+ }
68
+
69
+ return $this;
70
+
71
+
72
+ }
73
+
74
+
75
+ /**
76
+ * Form block description
77
+ *
78
+ * @return object
79
+ */
80
+ public function createFormBlock($name)
81
+ {
82
+ $block = $this->getLayout()->createBlock('Juicy_Barclayspspid_Block_Form', $name);
83
+ $block->setMethod('barclayspspid_standard');
84
+ $block->setPayment($this->getPayment());
85
+ $block->setTemplate('form.phtml');
86
+
87
+ return $block;
88
+ }
89
+
90
+ /**
91
+ * Get Config model
92
+ *
93
+ * @return object Juicy_Barclayscpi_Model_Config
94
+ */
95
+ public function getConfig()
96
+ {
97
+ return Mage::getSingleton('Juicy_Barclayspspid_Model_Config');
98
+ }
99
+
100
+
101
+ public function checkShaout($data)
102
+ {
103
+ $config = Mage::getModel('Juicy_Barclayspspid_Model_Config');
104
+
105
+ $shaout = $config->getShaout();
106
+
107
+ $datacheck = array();
108
+
109
+ foreach ($data as $key => $value) {
110
+ if ($value == "") {
111
+ continue;
112
+ }
113
+ $datacheck[$key] = $value;
114
+ }
115
+
116
+ $origsig = $datacheck['SHASIGN'];
117
+
118
+ unset($datacheck['SHASIGN']);
119
+
120
+ uksort($datacheck, 'strcasecmp');
121
+ $shasign = "";
122
+
123
+ $shasig = null;
124
+ foreach ($datacheck as $key => $value) {
125
+ $shasig .= trim(strtoupper($key)).'='.utf8_encode(trim($value)).$shaout;
126
+ }
127
+
128
+ $shasig = strtoupper(hash('sha1',$shasig));
129
+
130
+ if ($shasig == $origsig) {
131
+ return true;
132
+ } else {
133
+ return false;
134
+ }
135
+
136
+ }
137
+
138
+ public function capture(Varien_Object $payment, $amount)
139
+ {
140
+
141
+ $order = $payment->getOrder();
142
+
143
+ $data = unserialize($payment->getadditional_data());
144
+
145
+ if ($data['STATUS'] != 9) {
146
+
147
+ $directlink = new Juicy_Barclayspspid_Model_Directlink();
148
+
149
+ $result = $directlink->capturepayment($payment, $amount);
150
+
151
+ if ($result['STATUS'] == 91) {
152
+
153
+ $order->getPayment()->setTransactionId($result['PAYID']);
154
+ $order->save();
155
+ } else {
156
+ Mage::throwException('Capture Failed');
157
+ }
158
+ }
159
+
160
+ return $this;
161
+
162
+ }
163
+
164
+
165
+ /**
166
+ * Return Order Place Redirect URL
167
+ *
168
+ * @return string Order Redirect URL
169
+ */
170
+ public function getOrderPlaceRedirectUrl()
171
+ {
172
+ return Mage::getUrl('barclayspspid/payment/redirect');
173
+ }
174
+ }
app/code/local/Juicy/Barclayspspid/Model/Config.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Gets variables from Magentos config
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Config extends Varien_Object
11
+ {
12
+ const PAYMENT_TYPE_PAYMENT = 'Auth';
13
+ const PAYMENT_TYPE_AUTHENTICATE = 'PreAuth';
14
+
15
+ /**
16
+ * Return config var
17
+ *
18
+ * @param string Var key
19
+ * @param string Default value for non-existing key
20
+ * @return mixed
21
+ */
22
+ public function getConfigData($key, $default=false)
23
+ {
24
+ if (!$this->hasData($key)) {
25
+ $value = Mage::getStoreConfig('payment/barclayspspid_standard/'.$key);
26
+ if (is_null($value) || false===$value) {
27
+ $value = $default;
28
+ }
29
+ $this->setData($key, $value);
30
+ }
31
+ return $this->getData($key);
32
+ }
33
+
34
+ /*
35
+ * Return CSC
36
+ */
37
+ public function getPspid() {
38
+ return $this->getConfigData('pspid');
39
+ }
40
+
41
+ public function getDebuglog() {
42
+ return $this->getConfigData('debuglog');
43
+ }
44
+
45
+ public function getDebugEmail() {
46
+ return $this->getConfigData('debugemail');
47
+ }
48
+
49
+ public function getMagheader() {
50
+ return $this->getConfigData('magheader');
51
+ }
52
+
53
+ public function getUsername() {
54
+ return $this->getConfigData('username');
55
+ }
56
+
57
+ public function getUserpassword() {
58
+ return $this->getConfigData('userpassword');
59
+ }
60
+
61
+ public function getBasket() {
62
+ return $this->getConfigData('basket');
63
+ }
64
+
65
+ public function getDelivery() {
66
+ return $this->getConfigData('delivery');
67
+ }
68
+
69
+ public function getPagetitle() {
70
+ return $this->getConfigData('pagetitle');
71
+ }
72
+
73
+ public function getPaymentaction() {
74
+ return $this->getConfigData('paymentaction');
75
+ }
76
+
77
+ public function getDynamic() {
78
+ return $this->getConfigData('dynamic');
79
+ }
80
+
81
+ public function getDynamictemplate() {
82
+ return $this->getConfigData('dynamictemplate');
83
+ }
84
+
85
+ public function getTestmode() {
86
+ return $this->getConfigData('testmode');
87
+ }
88
+
89
+ public function getCardtypes() {
90
+ return $this->getConfigData('cardtypes');
91
+ }
92
+
93
+ public function getCurrency() {
94
+ return $this->getConfigData('currency');
95
+ }
96
+
97
+ public function getShain() {
98
+ return $this->getConfigData('shain');
99
+ }
100
+
101
+ public function getShaout() {
102
+ return $this->getConfigData('shaout');
103
+ }
104
+
105
+ public function getBgcolor() {
106
+ return $this->getConfigData('bgcolor');
107
+ }
108
+
109
+ public function getTxtcolor() {
110
+ return $this->getConfigData('txtcolor');
111
+ }
112
+
113
+ public function getTblbgcolor() {
114
+ return $this->getConfigData('tblbgcolor');
115
+ }
116
+
117
+ public function getTbltxtcolor() {
118
+ return $this->getConfigData('tbltxtcolor');
119
+ }
120
+
121
+ public function getButtonbgcolor() {
122
+ return $this->getConfigData('buttonbgcolor');
123
+ }
124
+
125
+ public function getButtontxtcolor() {
126
+ return $this->getConfigData('buttontxtcolor');
127
+ }
128
+
129
+ public function getLogo() {
130
+ return $this->getConfigData('logo');
131
+ }
132
+
133
+ public function getFonttype() {
134
+ return $this->getConfigData('fonttype');
135
+ }
136
+
137
+
138
+
139
+
140
+ }
app/code/local/Juicy/Barclayspspid/Model/Directlink.php ADDED
@@ -0,0 +1,463 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Standard model that does the hard work of sending data to Barclays
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+
12
+ class Juicy_Barclayspspid_Model_Directlink extends Mage_Core_Model_Abstract
13
+ {
14
+
15
+ protected $_liveurl = "https://payments.edpq.co.uk/ncol/prod/maintenancedirect.asp";
16
+ protected $_testurl = "https://mdepayments.epdq.co.uk/ncol/test/maintenancedirect.asp";
17
+
18
+ protected $_liveorderurl = "https://payments.epdq.co.uk/ncol/prod/orderdirect.asp";
19
+ protected $_testorderurl = "https://mdepayments.epdq.co.uk/ncol/test/orderdirect.asp";
20
+
21
+ /*
22
+ * Get the config model
23
+ */
24
+ private function getConfig()
25
+ {
26
+ $config = new Juicy_Barclayspspid_Model_Config();
27
+ return $config;
28
+ }
29
+
30
+ /*
31
+ * Refund the payment
32
+ */
33
+ public function refundpayment($payment, $amount)
34
+ {
35
+ $config = $this->getConfig();
36
+
37
+ $info = $payment->getadditional_data();
38
+ $info = unserialize($info);
39
+ $payid = $info['PAYID'];
40
+ $orderid = $payment->getOrder()->getIncrementId();
41
+
42
+ $order = $payment->getOrder();
43
+
44
+
45
+ $parameters = array();
46
+ $parameters['ORDERID'] = $orderid;
47
+ $parameters['AMOUNT'] = $amount * 100;
48
+
49
+ if ($order->getBaseTotalRefunded() == $order->getBaseGrandTotal())
50
+ {
51
+ $parameters['OPERATION'] = "RFS";
52
+ } else {
53
+ $parameters['OPERATION'] = "RFD";
54
+ }
55
+
56
+
57
+ $test = $config->getTestmode();
58
+ if ($test == "1") {
59
+ $url = $this->_testurl;
60
+ } else {
61
+ $url = $this->_liveurl;
62
+ }
63
+
64
+ Mage::helper('barclayspspid')->log("Refund Post Parameters",$parameters);
65
+
66
+ $result = $this->performRequest($parameters, $url);
67
+
68
+ Mage::helper('barclayspspid')->log("Refund Reply Parameters",$result);
69
+
70
+ return $result;
71
+
72
+ }
73
+
74
+ /*
75
+ * Refund the payment
76
+ */
77
+ public function capturepayment($payment, $amount)
78
+ {
79
+ $config = $this->getConfig();
80
+
81
+ $info = $payment->getadditional_data();
82
+ $info = unserialize($info);
83
+ $payid = $info['PAYID'];
84
+ $orderid = $payment->getOrder()->getIncrementId();
85
+
86
+ $order = $payment->getOrder();
87
+
88
+
89
+ $parameters = array();
90
+ $parameters['ORDERID'] = $orderid;
91
+ $parameters['AMOUNT'] = $amount * 100;
92
+
93
+
94
+ $parameters['OPERATION'] = "SAS";
95
+
96
+
97
+
98
+ $test = $config->getTestmode();
99
+
100
+ if ($test == "1") {
101
+ $url = $this->_testurl;
102
+ } else {
103
+ $url = $this->_liveurl;
104
+ }
105
+
106
+
107
+ Mage::helper('barclayspspid')->log("Capture Post Parameters",$parameters);
108
+
109
+ $result = $this->performRequest($parameters, $url);
110
+
111
+ Mage::helper('barclayspspid')->log("Capture Reply Parameters",$result);
112
+
113
+ return $result;
114
+ }
115
+
116
+ /*
117
+ * Authorize the payment using direct link API
118
+ */
119
+ public function authorizepayment($payment, $amount)
120
+ {
121
+
122
+ $order = $payment->getOrder();
123
+
124
+ $config = Mage::getModel('Juicy_Barclayspspid_Model_Config');
125
+
126
+ $pspid = $config->getPspid();
127
+ $testmode = $config->getTestmode();
128
+ $cardtypes = $config->getCardtypes();
129
+ $currency = $config->getCurrency();
130
+ $shain = $config->getShain();
131
+ $shaout = $config->getShaout();
132
+ $locale = Mage::app()->getLocale()->getLocaleCode();
133
+
134
+
135
+ $paymentaction = $config->getPaymentaction();
136
+
137
+
138
+ if ($testmode == "0") {
139
+ $url = $this->_liveorderurl;
140
+ } else {
141
+ $url = $this->_testorderurl;
142
+ }
143
+
144
+
145
+ $basket = $config->getBasket();
146
+ $delivery = $config->getDelivery();
147
+
148
+ $orderid = $order->getIncrementId();
149
+
150
+ $grandtotal = (int)money_format("%.0n",$amount * 100);
151
+
152
+ $email = $order->getCustomerEmail();
153
+
154
+
155
+ $discountamount = (int)$order->getBaseDiscountAmount() * 100;
156
+
157
+ $shippingamount = number_format($order->getbase_shipping_amount(),2);
158
+
159
+ $shipping = $order->getShippingAddress();
160
+ $billing = $order->getBillingAddress();
161
+
162
+ $name = $billing->getFirstname().' '.$billing->getLastname();
163
+
164
+ $billfirst = $billing->getFirstname();
165
+ $billlast = $billing->getLastname();
166
+
167
+ $shipfirst = $shipping->getFirstname();
168
+ $shiplast = $shipping->getLastname();
169
+
170
+ $shippingdescription = $order->getShippingDescription();
171
+ $shippingcost = (int)money_format("%.0n",$order->getBaseShippingInclTax() * 100);
172
+
173
+ $bill1 = $billing->getStreet(1);
174
+ $bill2 = $billing->getStreet(2);
175
+ $billcity = $billing->getCity();
176
+ $billcountry = $billing->getCountry();
177
+ $billregion = $billing->getRegion();
178
+ $billpostcode = $billing->getPostcode();
179
+ $billstate = $billing->getRegionCode();
180
+ $billphone = $billing->getTelephone();
181
+
182
+ if ($shipping) {
183
+ $shippostcode = $shipping->getPostcode();
184
+ $ship1 = $shipping->getStreet(1);
185
+ $ship2 = $shipping->getStreet(2);
186
+ $shipcity = $shipping->getCity();
187
+ $shipcounty = $shipping->getRegion();
188
+ $shipcountry = $shipping->getCountry();
189
+ $shipstate = $shipping->getRegionCode();
190
+ $shipphone = $shipping->getTelephone();
191
+
192
+ } else {
193
+ $ship1 = $bill1;
194
+ $ship2 = $bill2;
195
+ $shipcity = $billcity;
196
+ $shipcounty = $billregion;
197
+ $shipcountry = $billcountry;
198
+ $shippostcode = $billpostcode;
199
+ $shipstate = $billstate;
200
+ $shipphone = $billphone;
201
+ }
202
+
203
+ $shasig = "";
204
+ $shaarray = array();
205
+
206
+ if ($pspid != "") { $shaarray['PSPID'] = $pspid; }
207
+ if ($orderid != "") { $shaarray['ORDERID'] = $orderid; }
208
+ if ($grandtotal != "") { $shaarray['AMOUNT'] = $grandtotal; }
209
+ $shaarray['INVDISCOUNT'] = $discountamount;
210
+ if ($currency != "") { $shaarray['CURRENCY'] = $currency; }
211
+ if ($locale != "") { $shaarray['LANGUAGE'] = $locale; }
212
+ if ($name != "") { $shaarray['CN'] = $name; }
213
+ if ($email != "") { $shaarray['EMAIL'] = $email; }
214
+ if ($billpostcode != "") { $shaarray['OWNERZIP'] = $billpostcode; }
215
+ if ($bill1 != "") { $shaarray['OWNERADDRESS'] = $bill1; }
216
+ if ($billcity != "") { $shaarray['OWNERCTY'] = $billcity; }
217
+ if ($bill2 != "") { $shaarray['OWNERTOWN'] = $bill2; }
218
+ if ($billphone != "") { $shaarray['OWNERTELNO'] = $billphone; }
219
+ if ($orderid != "") { $shaarray['COM'] = 'Payment for Order :-'.$orderid ; }
220
+ if ($paymentaction != "") { $shaarray['OPERATION'] = $paymentaction ; }
221
+
222
+ $cardcv2 = $payment->getCcCid();
223
+ $cardname = $payment->getCcOwner();
224
+ $cardnumber = $payment->getCcNumber();
225
+ $cardissuenumber = $payment->getCcSsIssue();
226
+ $cardexpmonth = $payment->getCcExpMonth();
227
+ $cardexpyear = $payment->getCcExpYear();
228
+ $cardstartmonth = $payment->getCcSsStartMonth();
229
+ $cardstartyear = $payment->getCcSsStartYear();
230
+
231
+ $shaarray['ECI'] = "1";
232
+ $shaarray['CARDNO'] = $cardnumber;
233
+ $shaarray['ED'] = $cardexpmonth.$cardexpyear;
234
+ $shaarray['CVC'] = $cardcv2;
235
+
236
+
237
+ Mage::helper('barclayspspid')->log("Authorize Post Parameters",$shaarray);
238
+
239
+ $result = $this->performRequest($shaarray, $url);
240
+
241
+ Mage::helper('barclayspspid')->log("Authorize Reply Parameters",$result);
242
+
243
+
244
+ return $result;
245
+
246
+ }
247
+
248
+
249
+
250
+ /**
251
+ * Perform a CURL call and log request end response to logfile
252
+ *
253
+ * @param array $params
254
+ * @return mixed
255
+ */
256
+ public function call($params, $url)
257
+ {
258
+ try {
259
+ $http = new Varien_Http_Adapter_Curl();
260
+ $config = array('timeout' => 30);
261
+ $http->setConfig($config);
262
+ $http->write(Zend_Http_Client::POST, $url, '1.1', array(), http_build_query($params, null, '&'));
263
+ $response = $http->read();
264
+ $response = substr($response, strpos($response, "<?xml"), strlen($response));
265
+ return $response;
266
+ } catch (Exception $e) {
267
+ Mage::logException($e);
268
+ Mage::throwException(
269
+ Mage::helper('barclayspspid')->__('Barclays server is temporarily not available, please try again later.')
270
+ );
271
+ }
272
+
273
+
274
+ return $response;
275
+ }
276
+
277
+ /**
278
+ * Performs a POST request to the Direct Link Gateway with the given
279
+ * parameters and returns the result parameters as array
280
+ *
281
+ * @param array $params
282
+ * @return array
283
+ */
284
+ public function performRequest($requestParams, $url, $storeId = 0)
285
+ {
286
+ $helper = Mage::helper('barclayspspid');
287
+ $params = $this->getEncodedParametersWithHash(
288
+ array_merge($requestParams,$this->buildAuthenticationParams($storeId)) //Merge Logic Operation Data with Authentication Data
289
+ , null, $storeId);
290
+
291
+ $responseParams = $this->getResponseParams($params, $url);
292
+
293
+
294
+
295
+
296
+
297
+ $this->checkResponse($responseParams);
298
+
299
+ return $responseParams;
300
+
301
+ }
302
+
303
+ public function getEncodedParametersWithHash($params, $shaCode=null, $storeId)
304
+ {
305
+ $shain = $this->getConfig()->getShain();
306
+ $shaCode = $shain;
307
+
308
+ $params['SHASIGN'] = $this->shaCrypt(iconv('iso-8859-1', 'utf-8', $this->getSHASign($params, $shaCode, $storeId)));
309
+
310
+ return $params;
311
+ }
312
+
313
+
314
+ /**
315
+ *
316
+ * wraps the request and response handling and repeats request/response
317
+ * if there are errors
318
+ *
319
+ * @param array $params - request params
320
+ * @param string $url - the url for the request
321
+ * @param int $retryCount - current request count
322
+ * @return array | null - null if requests were not successful, array containing Ogone payment data otherwise
323
+ *
324
+ */
325
+ protected function getResponseParams($params, $url, $retryCount = 0)
326
+ {
327
+ $responseParams = null;
328
+
329
+
330
+
331
+ if ($retryCount < 3) {
332
+ try {
333
+ $responseParams = $this->getParamArrFromXmlString(
334
+ $this->call($params, $url)
335
+ );
336
+ } catch (Exception $e) {
337
+
338
+ Mage::helper('barclayspspid')->log('DirectLink::getResponseParams failed: ' .
339
+ $e->getMessage() . ' current retry count: ' . $retryCount . ' for quote ' .$params['ORDERID']
340
+ );
341
+ $responseParams = $this->getResponseParams($params, $url, ++$retryCount);
342
+ }
343
+ } else {
344
+ Mage::throwException(Mage::helper('barclayspspid')->__('An error occured during the Ogone request. Your action could not be executed.'));
345
+ }
346
+ return $responseParams;
347
+ }
348
+
349
+ /**
350
+ * Return Authentication Params for OPS Call
351
+ *
352
+ * @return array
353
+ */
354
+ protected function buildAuthenticationParams($storeId = 0)
355
+ {
356
+ return array(
357
+ 'PSPID' => $this->getConfig()->getPspid(),
358
+ 'USERID' =>$this->getConfig()->getUsername(),
359
+ 'PSWD' => $this->getConfig()->getUserpassword()
360
+ );
361
+ }
362
+
363
+ /**
364
+ * Parses the XML-String to an array with the result data
365
+ *
366
+ * @param string xmlString
367
+ * @return array
368
+ */
369
+ public function getParamArrFromXmlString($xmlString)
370
+ {
371
+ try {
372
+ $xml = new SimpleXMLElement($xmlString);
373
+ foreach($xml->attributes() as $key => $value) {
374
+ $arrAttr[$key] = (string)$value;
375
+ }
376
+ foreach($xml->children() as $child) {
377
+ $arrAttr[$child->getName()] = (string) $child;
378
+ }
379
+ return $arrAttr;
380
+ } catch (Exception $e) {
381
+ Mage::log('Could not convert string to xml in ' . __FILE__ . '::' . __METHOD__ . ': ' . $xmlString);
382
+ Mage::logException($e);
383
+ throw $e;
384
+ }
385
+ }
386
+
387
+ /**
388
+ * Check if the Response from OPS reports Errors
389
+ *
390
+ * @param array $responseParams
391
+ * @return mixed
392
+ */
393
+ public function checkResponse($responseParams)
394
+ {
395
+ if (false === is_array($responseParams) || false === array_key_exists('NCERROR', $responseParams) || $responseParams['NCERROR'] > 0) {
396
+ if (empty($responseParams['NCERRORPLUS'])) {
397
+ $responseParams['NCERRORPLUS'] = Mage::helper('ops')->__('Invalid payment information')." Errorcode:".$responseParams['NCERROR'];
398
+ }
399
+
400
+ //avoid exception if STATUS is set with special values
401
+ if (isset($responseParams['STATUS']) && is_numeric($responseParams['STATUS'])) {
402
+ return;
403
+ }
404
+
405
+ Mage::throwException(
406
+ Mage::helper('ops')->__('An error occured during the Barclays request. Your action could not be executed. Message: "%s".',$responseParams['NCERRORPLUS'])
407
+ );
408
+ }
409
+ }
410
+
411
+ /*
412
+ * Get SHA-1-IN hash for ops-authentification
413
+ *
414
+ * All Parameters have to be alphabetically, UPPERCASE
415
+ * Empty Parameters shouldn't appear in the secure string
416
+ *
417
+ * @param array $formFields
418
+ * @param string $shaCode
419
+ *
420
+ * @return string
421
+ */
422
+ public function getSHASign($formFields, $shaCode = null, $storeId = null)
423
+ {
424
+ if (is_null($shaCode)) {
425
+ $shaCode = $this->getConfig()->getShaout();
426
+ }
427
+ $formFields = array_change_key_case($formFields, CASE_UPPER);
428
+
429
+ unset($formFields['ORDERSHIPMETH']);
430
+
431
+ uksort($formFields, 'strnatcasecmp');
432
+ $plainHashString = '';
433
+ foreach ($formFields as $formKey => $formVal) {
434
+ if (is_null($formVal) || '' === $formVal || $formKey == 'SHASIGN') {
435
+ continue;
436
+ }
437
+ $plainHashString .= strtoupper($formKey) . '=' . $formVal . $shaCode;
438
+ }
439
+
440
+ return $plainHashString;
441
+ }
442
+
443
+ /**
444
+ * Crypt Data by SHA1 ctypting algorithm by secret key
445
+ *
446
+ * @param array $data
447
+ * @param string $key
448
+ *
449
+ * @return hash
450
+ */
451
+ public function shaCrypt($data, $key = '')
452
+ {
453
+ if (is_array($data)) {
454
+ return hash('SHA1', implode("", $data));
455
+ }
456
+ if (is_string($data)) {
457
+ return hash('SHA1', $data);
458
+ } else {
459
+ return "";
460
+ }
461
+ }
462
+
463
+ }
app/code/local/Juicy/Barclayspspid/Model/Resource/Eav/Mysql4/Setup.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Juicy_Barclayspspid_Model_Resource_Eav_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup
4
+ {
5
+
6
+ }
app/code/local/Juicy/Barclayspspid/Model/Session.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Session file
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclaysepdq_Model_Session extends Mage_Core_Model_Session_Abstract
11
+ {
12
+ public function __construct()
13
+ {
14
+ $this->init('barclayspspid');
15
+ }
16
+ }
app/code/local/Juicy/Barclayspspid/Model/Source/CardcodeAction.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Config - Mandate CSC Option
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclaysepdq_Model_Source_CardcodeAction
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+
15
+ $array = array(
16
+ array('value' => '1', 'label' => Mage::helper('barclayspspid')->__('Yes')),
17
+ array('value' => '2', 'label' => Mage::helper('barclayspspid')->__('No'))
18
+ );
19
+
20
+
21
+ return $array;
22
+ }
23
+ }
24
+
25
+ ?>
app/code/local/Juicy/Barclayspspid/Model/Source/CreditCards.php ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Config - Credit Card Types
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Source_CreditCards
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+
15
+
16
+ $array = array(
17
+ array('value' => 'VISA', 'label' => Mage::helper('barclayspspid')->__('VISA')),
18
+ array('value' => 'MasterCard', 'label' => Mage::helper('barclayspspid')->__('MasterCard')),
19
+ array('value' => 'American Express', 'label' => Mage::helper('barclayspspid')->__('American Express')),
20
+
21
+ );
22
+
23
+
24
+ return $array;
25
+ }
26
+ }
27
+ ?>
app/code/local/Juicy/Barclayspspid/Model/Source/CurrencyAction.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Config - Currency Codes
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Source_CurrencyAction
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+
15
+ $array = array(
16
+ array('value' => 'GBP', 'label' => Mage::helper('barclayspspid')->__('GBP')),
17
+ array('value' => 'EUR', 'label' => Mage::helper('barclayspspid')->__('EUR')),
18
+ array('value' => 'AUD', 'label' => Mage::helper('barclayspspid')->__('AUD')),
19
+ array('value' => 'CAD', 'label' => Mage::helper('barclayspspid')->__('CAD')),
20
+ array('value' => 'CNY', 'label' => Mage::helper('barclayspspid')->__('CNY')),
21
+ array('value' => 'CYR', 'label' => Mage::helper('barclayspspid')->__('CYR')),
22
+ array('value' => 'CZK', 'label' => Mage::helper('barclayspspid')->__('CZK')),
23
+ array('value' => 'DKK', 'label' => Mage::helper('barclayspspid')->__('DKK')),
24
+ array('value' => 'EEK', 'label' => Mage::helper('barclayspspid')->__('EEK')),
25
+ array('value' => 'HKD', 'label' => Mage::helper('barclayspspid')->__('HKD')),
26
+ array('value' => 'ISK', 'label' => Mage::helper('barclayspspid')->__('ISK')),
27
+ array('value' => 'INR', 'label' => Mage::helper('barclayspspid')->__('INR')),
28
+ array('value' => 'ILS', 'label' => Mage::helper('barclayspspid')->__('ILS')),
29
+ array('value' => 'JPY', 'label' => Mage::helper('barclayspspid')->__('JPY')),
30
+ array('value' => 'LVL', 'label' => Mage::helper('barclayspspid')->__('LVL')),
31
+ array('value' => 'LTL', 'label' => Mage::helper('barclayspspid')->__('LTL')),
32
+ array('value' => 'MTL', 'label' => Mage::helper('barclayspspid')->__('MTL')),
33
+ array('value' => 'MAL', 'label' => Mage::helper('barclayspspid')->__('MAL')),
34
+ array('value' => 'NZD', 'label' => Mage::helper('barclayspspid')->__('NZD')),
35
+ array('value' => 'NOK', 'label' => Mage::helper('barclayspspid')->__('NOK')),
36
+ array('value' => 'PLN', 'label' => Mage::helper('barclayspspid')->__('PLN')),
37
+ array('value' => 'RUB', 'label' => Mage::helper('barclayspspid')->__('RUB')),
38
+ array('value' => 'SGD', 'label' => Mage::helper('barclayspspid')->__('SGD')),
39
+ array('value' => 'SKK', 'label' => Mage::helper('barclayspspid')->__('SKK')),
40
+ array('value' => 'KRW', 'label' => Mage::helper('barclayspspid')->__('KRW')),
41
+ array('value' => 'SEK', 'label' => Mage::helper('barclayspspid')->__('SEK')),
42
+ array('value' => 'SEF', 'label' => Mage::helper('barclayspspid')->__('SEF')),
43
+ array('value' => 'USD', 'label' => Mage::helper('barclayspspid')->__('USD')),
44
+ array('value' => 'SAR', 'label' => Mage::helper('barclayspspid')->__('SAR')),
45
+ array('value' => 'PLN', 'label' => Mage::helper('barclayspspid')->__('PLN')),
46
+ array('value' => 'THB', 'label' => Mage::helper('barclayspspid')->__('THB')),
47
+ array('value' => 'AED', 'label' => Mage::helper('barclayspspid')->__('AED'))
48
+ );
49
+
50
+
51
+ return $array;
52
+ }
53
+ }
54
+
55
+ ?>
app/code/local/Juicy/Barclayspspid/Model/Source/PaymentAction.php ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Config - Payment Action
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (craig.henry@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+ class Juicy_Barclayspspid_Model_Source_PaymentAction
11
+ {
12
+ public function toOptionArray()
13
+ {
14
+ return array(
15
+ array('value' => 'SAL', 'label' => Mage::helper('barclayspspid')->__('Sale')),
16
+ array('value' => 'RES', 'label' => Mage::helper('barclayspspid')->__('Authorisation')),
17
+ );
18
+ }
19
+ }
app/code/local/Juicy/Barclayspspid/Model/Submitform.php ADDED
@@ -0,0 +1,342 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Juicy_Barclayspspid_Model_Submitform extends Mage_Payment_Model_Method_Abstract
4
+ {
5
+ protected $_liveurl = "https://payments.epdq.co.uk/ncol/prod/orderstandard.asp";
6
+ protected $_testurl = "https://mdepayments.epdq.co.uk/ncol/test/orderstandard.asp";
7
+
8
+ private function licensecheck() {
9
+ return true;
10
+ /*$config = Mage::getModel('Juicy_Barclayspspid_Model_Config');
11
+
12
+ $licensekey = $config->getConfigData('licensekey');
13
+
14
+ $key = "barclayspspju1cy123456";
15
+ $url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK);
16
+
17
+ $salt = $key.$url;
18
+ $hash = hash("SHA1",$salt);
19
+
20
+ if ($hash == $licensekey) {
21
+ return true;
22
+ } else {
23
+
24
+ $message = "Actual URL:".Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
25
+
26
+ $mail = Mage::getModel('core/email');
27
+ $mail->setToName('Juicy License Notification');
28
+ $mail->setToEmail('servers@juicymedia.co.uk');
29
+ $mail->setBody($message);
30
+ $mail->setSubject('Barclays PSPID Licensing Issue');
31
+ $mail->setFromEmail('licensing@barclaycard.co.uk');
32
+ $mail->setFromName("Barclays PSPID Licensing Issue");
33
+ $mail->setType('html');// YOu can use Html or text as Mail format
34
+
35
+ try {
36
+ $mail->send();
37
+ }
38
+ catch (Exception $e) {
39
+ //var_dump($e>getMessage());
40
+ }
41
+
42
+
43
+ return false;
44
+ }*/
45
+ }
46
+
47
+ /**
48
+ *
49
+ * This constructs the form for submission to the CPI payment page
50
+ *
51
+ * @param string $epqdata
52
+ * @param object $order
53
+ * @return string
54
+ */
55
+ public function constructSubmitform($order) {
56
+
57
+ if ($this->licensecheck() == false) {
58
+ $html = "";
59
+ $html .= "<h1>License Issue</h1>";
60
+ $html .= "<p>I'm sorry there is a license issue with this extension please contact support at support@juicymedia.co.uk</p>";
61
+ return $html;
62
+ }
63
+
64
+ $config = Mage::getModel('Juicy_Barclayspspid_Model_Config');
65
+
66
+ $pspid = $config->getPspid();
67
+ $currency = $config->getCurrency();
68
+ $shain = $config->getShain();
69
+ //$shaout = $config->getShaout(); /* Unused */
70
+ $locale = Mage::app()->getLocale()->getLocaleCode();
71
+
72
+ $cardtypes = $config->getCardtypes();
73
+ $cardvalue = str_replace(",",";",$cardtypes);
74
+
75
+ $pagetitle = $config->getPagetitle();
76
+ $bgcolor = $config->getBgcolor();
77
+ $txtcolor = $config->getTxtcolor();
78
+ $tblbgcolor = $config->getTblbgcolor();
79
+ $tbltxtcolor = $config->getTbltxtcolor();
80
+ $buttonbgcolor = $config->getButtonbgcolor();
81
+ $buttontxtcolor = $config->getButtontxtcolor();
82
+ $logo = $config->getLogo();
83
+ $fonttype = $config->getFonttype();
84
+ $paymentaction = $config->getPaymentaction();
85
+
86
+ $template = $config->getDynamic();
87
+ $dynamictemplate = $config->getDynamictemplate();
88
+
89
+ $url = $this->_liveurl;
90
+ if ($config->getTestmode() === "1") {
91
+ $url = $this->_testurl;
92
+ }
93
+
94
+ $basket = $config->getBasket();
95
+ $delivery = $config->getDelivery();
96
+ $orderid = $order->getIncrementId();
97
+ $grandtotal = (int)money_format("%.0n",$order->getBaseGrandTotal() * 100);
98
+ $email = $order->getCustomerEmail();
99
+
100
+ $resulturl = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK).'barclayspspid/payment/process/';
101
+
102
+ $discountamount = (int) $order->getBaseDiscountAmount() * 100;
103
+ $shippingBaseTax = (int) money_format("%.0n",$order->getBaseShippingTaxAmount() * 100);
104
+ $shippingamount = (int) money_format("%.0n",$order->getBaseShippingAmount() * 100);
105
+
106
+ $shipping = $order->getShippingAddress();
107
+ $billing = $order->getBillingAddress();
108
+
109
+ $name = $billing->getFirstname().' '.$billing->getLastname();
110
+
111
+ $billfirst = $billing->getFirstname();
112
+ $billlast = $billing->getLastname();
113
+
114
+ $shipfirst = substr($shipping->getFirstname(),0,50);
115
+ $shiplast = substr($shipping->getLastname(),0,50);
116
+
117
+ $shippingdescription = $order->getShippingDescription();
118
+ if (strlen($shippingdescription) > 25){
119
+ $shippingdescription = substr($shippingdescription,0,25);
120
+ }
121
+
122
+ $bill1 = substr($billing->getStreet(1),0,35);
123
+ $bill2 = substr($billing->getStreet(2),0,35);
124
+ $billcity = substr($billing->getCity(),0,25);
125
+ $billcountry = substr($billing->getCountry(),0,25);
126
+ $billregion = $billing->getRegion();
127
+ $billstate = $billing->getRegionCode();
128
+ $billphone = substr($billing->getTelephone(),0,30);
129
+ $billpostcode = substr($billing->getPostcode(),0,10);
130
+
131
+ if ($shipping) {
132
+ $ship1 = substr($shipping->getStreet(1),0,35);
133
+ $ship2 = substr($shipping->getStreet(2),0,35);
134
+ $shipcity = substr($shipping->getCity(),0,25);
135
+ $shipcounty = substr($shipping->getRegion(),0,25);
136
+ $shipcountry = substr($shipping->getCountry(),0,25);
137
+ $shipstate = $shipping->getRegionCode();
138
+ $shipphone = substr($shipping->getTelephone(),0,30);
139
+ $shippostcode = substr($shipping->getPostcode(),0,10);
140
+ } else {
141
+ $ship1 = $bill1;
142
+ $ship2 = $bill2;
143
+ $shipcity = $billcity;
144
+ $shipcounty = $billregion;
145
+ $shipcountry = $billcountry;
146
+ $shipstate = $billstate;
147
+ $shipphone = $billphone;
148
+ $shippostcode = $billpostcode;
149
+ }
150
+
151
+ $shasig = "";
152
+ $shaarray = array();
153
+ $urlz = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB, array('_secure'=>true)).'barclayspspid/payment/dynamic';
154
+
155
+ $shaarray['ACCEPTURL'] = $resulturl;
156
+ $shaarray['DECLINEURL'] = $resulturl;
157
+ $shaarray['EXCEPTIONURL'] = $resulturl;
158
+
159
+ //isset($pspid) ? $shaarray['PSPID'] = $pspid : ""; /* Why not? */
160
+ if ($pspid != "") { $shaarray['PSPID'] = $pspid; }
161
+ if ($orderid != "") { $shaarray['ORDERID'] = $orderid; }
162
+ if ($grandtotal != "") { $shaarray['AMOUNT'] = $grandtotal; }
163
+ $shaarray['INVDISCOUNT'] = $discountamount;
164
+ if ($currency != "") { $shaarray['CURRENCY'] = $currency; }
165
+ if ($locale != "") { $shaarray['LANGUAGE'] = $locale; }
166
+ if ($name != "") { $shaarray['CN'] = $name; }
167
+ if ($email != "") { $shaarray['EMAIL'] = $email; }
168
+ if ($billpostcode != "") { $shaarray['OWNERZIP'] = $billpostcode; }
169
+ if ($bill1 != "") { $shaarray['OWNERADDRESS'] = $bill1; }
170
+ $shaarray['OWNERCTY'] = $billcountry;
171
+ if ($bill2 != "") { $shaarray['OWNERTOWN'] = $bill2; }
172
+ if ($billphone != "") { $shaarray['OWNERTELNO'] = $billphone; }
173
+ if ($cardvalue != "") { $shaarray['PMLIST'] = $cardvalue; }
174
+ if ($orderid != "") { $shaarray['COM'] = 'Payment for Order :-'.$orderid ; }
175
+ if ($paymentaction != "") { $shaarray['OPERATION'] = $paymentaction ; }
176
+
177
+ if ($template == "1"){
178
+ if ($dynamictemplate != "") { $shaarray['TP'] = $urlz; }
179
+ }else{
180
+ if ($pagetitle != "") { $shaarray['TITLE'] = $pagetitle; }
181
+ if ($bgcolor != "") { $shaarray['BGCOLOR'] = $bgcolor; }
182
+ if ($txtcolor != "") { $shaarray['TXTCOLOR'] = $txtcolor; }
183
+ if ($tblbgcolor != "") { $shaarray['TBLBGCOLOR'] = $tblbgcolor; }
184
+ if ($tbltxtcolor != "") { $shaarray['TBLTXTCOLOR'] = $tbltxtcolor; }
185
+ if ($buttonbgcolor != "") { $shaarray['BUTTONBGCOLOR'] = $buttonbgcolor; }
186
+ if ($buttontxtcolor != "") { $shaarray['BUTTONTXTCOLOR'] = $buttontxtcolor; }
187
+ if ($logo != "") { $shaarray['LOGO'] = $logo; }
188
+ if ($fonttype != "") { $shaarray['FONTTYPE'] = $fonttype; }
189
+ }
190
+ if ($shippingdescription != "") { $shaarray['ORDERSHIPMETH'] = $shippingdescription; }
191
+
192
+ $shaarray['ORDERSHIPCOST'] = $shippingamount;
193
+ $shaarray['ORDERSHIPTAX'] = $shippingBaseTax;
194
+ /*if ($shippingamount != "") {
195
+ $shaarray['ORDERSHIPCOST'] = $shippingamount;
196
+ $shaarray['ORDERSHIPTAX'] = $shippingBaseTax;
197
+ }*/
198
+ //if ($shippingamount != "") { $shaarray['ORDERSHIPCOST'] = $shippingcost; }
199
+
200
+ if ($delivery == "1") {
201
+ if ($billfirst != "") { $shaarray['ECOM_BILLTO_POSTAL_NAME_FIRST'] = $billfirst; }
202
+ if ($billlast != "") { $shaarray['ECOM_BILLTO_POSTAL_NAME_LAST'] = $billlast; }
203
+ if ($bill1 != "") { $shaarray['ECOM_BILLTO_POSTAL_STREET_LINE1'] = $bill1; }
204
+ if ($billcity != "") { $shaarray['ECOM_BILLTO_POSTAL_CITY'] = $billcity; }
205
+ if ($billpostcode != "") { $shaarray['ECOM_BILLTO_POSTAL_POSTALCODE'] = $billpostcode; }
206
+ if ($billcountry != "") { $shaarray['ECOM_BILLTO_POSTAL_COUNTRYCODE'] = $billcountry; }
207
+ if ($shipfirst != "") { $shaarray['ECOM_SHIPTO_POSTAL_NAME_FIRST'] = $shipfirst; }
208
+ if ($shiplast != "") { $shaarray['ECOM_SHIPTO_POSTAL_NAME_LAST'] = $shiplast; }
209
+ if ($ship1 != "") { $shaarray['ECOM_SHIPTO_POSTAL_STREET_LINE1'] = $ship1; }
210
+ if ($shipcity != "") { $shaarray['ECOM_SHIPTO_POSTAL_CITY'] = $shipcity; }
211
+ if ($shippostcode != "") { $shaarray['ECOM_SHIPTO_POSTAL_POSTALCODE'] = $shippostcode; }
212
+ if ($shipcountry != "") { $shaarray['ECOM_SHIPTO_POSTAL_COUNTRYCODE'] = $shipcountry; }
213
+ if ($email != "") { $shaarray['ECOM_SHIPTO_ONLINE_EMAIL'] = $email; }
214
+ }
215
+ if ($basket == "1") {
216
+ $counter = 1;
217
+ $items = $order->getAllItems();
218
+ if ($items) {
219
+ foreach($items as $item) {
220
+ if ($item->getParentItem()) {
221
+ continue;
222
+ }
223
+ $quantity = $item->getQtyOrdered();
224
+ $ordername = $item->getName();
225
+ $sku = $item->getSku();
226
+ $cost = sprintf('%.2f', $item->getPrice() - $item->getBaseDiscountAmount());
227
+ $vat = sprintf('%.2f', $item->getBaseTaxAmount());
228
+ //$cost = (int)$cost * 100;
229
+ $shaarray['ITEMID'.$counter] = $sku;
230
+ $shaarray['ITEMNAME'.$counter] = $ordername;
231
+ $shaarray['ITEMPRICE'.$counter] = $cost;
232
+ $shaarray['ITEMVAT'.$counter] = ($vat/$quantity);
233
+ $shaarray['ITEMQUANT'.$counter] = (int)$quantity;
234
+ $counter++;
235
+ }
236
+ }
237
+ }
238
+
239
+ ksort($shaarray);
240
+ foreach ($shaarray as $key => $value) {
241
+ $shasig .= $key.'='.utf8_encode($value).$shain;
242
+ }
243
+
244
+ $shasigpre = $shasig;
245
+ $shahash = hash('sha1',$shasigpre);
246
+ $shasig = strtoupper($shahash);
247
+
248
+ $html = '<form id="form1" name="form1" action="'.$url.'" method="post">';
249
+ $html .= '<input type="hidden" name="ACCEPTURL" value="'.$resulturl.'">';
250
+ $html .= '<input type="hidden" name="DECLINEURL" value="'.$resulturl.'">';
251
+ $html .= '<input type="hidden" name="EXCEPTIONURL" value="'.$resulturl.'">';
252
+ $html .= '<input type="hidden" name="AMOUNT" value="'.$grandtotal.'">';
253
+ $html .= '<input type="hidden" name="INVDISCOUNT" value="'.$discountamount.'">';
254
+ $html .= '<input type="hidden" name="CN" value="'.$name.'">';
255
+ $html .= '<input type="hidden" name="COM" value="Payment for Order :-'.$orderid.'">';
256
+ $html .= '<input type="hidden" name="CURRENCY" value="'.$currency.'">';
257
+ $html .= '<input type="hidden" name="EMAIL" value="'.$email.'">';
258
+ $html .= '<input type="hidden" name="LANGUAGE" value="'.$locale.'">';
259
+ $html .= '<input type="hidden" name="ORDERID" value="'.$orderid.'">';
260
+ $html .= '<input type="hidden" name="OPERATION" value="'.$paymentaction.'">';
261
+ $html .= '<input type="hidden" name="OWNERADDRESS" value="'.$bill1.'">';
262
+ $html .= '<input type="hidden" name="OWNERCTY" value="'.$billcountry.'">';
263
+ $html .= '<input type="hidden" name="OWNERTELNO" value="'.$billphone.'">';
264
+ $html .= '<input type="hidden" name="OWNERTOWN" value="'.$bill2.'">';
265
+ $html .= '<input type="hidden" name="OWNERZIP" value="'.$billpostcode.'">';
266
+ $html .= '<input type="hidden" name="PMLIST" value="'.$cardvalue.'">';
267
+ $html .= '<input type="hidden" name="PSPID" value="'.$pspid.'">';
268
+ $html .= '<input type="hidden" name="SHASIGN" value="'.$shasig.'">';
269
+ $html .= '<input type="hidden" name="ORDERSHIPMETH" value="'.$shippingdescription.'">';
270
+ $html .= '<input type="hidden" name="ORDERSHIPCOST" value="'.$shippingamount.'">';
271
+ $html .= '<input type="hidden" name="ORDERSHIPTAX" value="'.$shippingBaseTax.'">';
272
+
273
+ if ($template == "1"){
274
+ $html .= '<input type="hidden" name="TP" value="'.$urlz.'">';
275
+ }else{
276
+ $html .= '<input type="hidden" name="TITLE" value="'.$pagetitle.'">';
277
+ $html .= '<input type="hidden" name="BGCOLOR" value="'.$bgcolor.'">';
278
+ $html .= '<input type="hidden" name="TXTCOLOR" value="'.$txtcolor.'">';
279
+ $html .= '<input type="hidden" name="TBLBGCOLOR" value="'.$tblbgcolor.'">';
280
+ $html .= '<input type="hidden" name="TBLTXTCOLOR" value="'.$tbltxtcolor.'">';
281
+ $html .= '<input type="hidden" name="BUTTONBGCOLOR" value="'.$buttonbgcolor.'">';
282
+ $html .= '<input type="hidden" name="BUTTONTXTCOLOR" value="'.$buttontxtcolor.'">';
283
+ $html .= '<input type="hidden" name="LOGO" value="'.$logo.'">';
284
+ $html .= '<input type="hidden" name="FONTTYPE" value="'.$fonttype.'">';
285
+ }
286
+
287
+ if ($delivery == "1"){
288
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_ONLINE_EMAIL" value="'.$email.'">';
289
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_NAME_FIRST" value="'.$billfirst.'">';
290
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_NAME_LAST" value="'.$billlast.'">';
291
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_STREET_LINE1" value="'.$bill1.'">';
292
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_CITY" value="'.$billcity.'">';
293
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_POSTALCODE" value="'.$billpostcode.'">';
294
+ $html .= '<input type="hidden" name="ECOM_BILLTO_POSTAL_COUNTRYCODE" value="'.$billcountry.'">';
295
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_NAME_FIRST" value="'.$shipfirst.'">';
296
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_NAME_LAST" value="'.$shiplast.'">';
297
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_STREET_LINE1" value="'.$ship1.'">';
298
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_CITY" value="'.$shipcity.'">';
299
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_POSTALCODE" value="'.$shippostcode.'">';
300
+ $html .= '<input type="hidden" name="ECOM_SHIPTO_POSTAL_COUNTRYCODE" value="'.$shipcountry.'">';
301
+ }
302
+ if ($basket == "1") {
303
+ $counter = 1;
304
+ $items = $order->getAllItems();
305
+ if ($items){
306
+ foreach($items as $item){
307
+ if ($item->getParentItem()){
308
+ continue;
309
+ }
310
+
311
+ $quantity = $item->getQtyOrdered();
312
+ $ordername = $item->getName();
313
+ $sku = $item->getSku();
314
+ $cost = sprintf('%.2f', $item->getPrice() - $item->getBaseDiscountAmount());
315
+ $vat = sprintf('%.2f', $item->getBaseTaxAmount());
316
+ //$cost = (int)$cost * 100;
317
+ $html .= '<input type="hidden" name="ITEMID'.$counter.'" value="'.$sku.'">';
318
+ $html .= '<input type="hidden" name="ITEMNAME'.$counter.'" value="'.$ordername.'">';
319
+ $html .= '<input type="hidden" name="ITEMPRICE'.$counter.'" value="'.$cost.'">';
320
+ $html .= '<input type="hidden" name="ITEMVAT'.$counter.'" value="'.($vat/$quantity).'">';
321
+ $html .= '<input type="hidden" name="ITEMQUANT'.$counter.'" value="'.(int)$quantity.'">';
322
+ $counter++;
323
+ }
324
+ }
325
+ }
326
+ $html .= '</form>';
327
+
328
+ Mage::helper('barclayspspid')->log("HASH",$shahash);
329
+ Mage::helper('barclayspspid')->log("SHASIGN",$shasig);
330
+ Mage::helper('barclayspspid')->log("SHA ARRAY",$shaarray);
331
+ Mage::helper('barclayspspid')->log("FORM POST",$html);
332
+ //Mage::helper('barclayspspid')->log("SHASIGN PRE",$shasigpre);
333
+ /*
334
+ Mage::log("Juicy_Barclayspspid_Model_Submitform: HASH:\n".$shahash, null, 'barclays-pspid.log');
335
+ Mage::log("Juicy_Barclayspspid_Model_Submitform: SHASIGN PRE:\n".$shasigpre, null, 'barclays-pspid.log');
336
+ Mage::log("Juicy_Barclayspspid_Model_Submitform: SHASIGN:\n".$shasig, null, 'barclays-pspid.log');
337
+ Mage::log("Juicy_Barclayspspid_Model_Submitform: SHA ARRAY:\n".$shaarray, null, 'barclays-pspid.log');
338
+ */
339
+ return $html;
340
+ }
341
+ }
342
+ ?>
app/code/local/Juicy/Barclayspspid/controllers/PaymentController.php ADDED
@@ -0,0 +1,242 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Standard controller that does the work of handling payments
4
+ *
5
+ * @copyright Juicy Media Ltd, 2011
6
+ * @license Commercial, visit: www.juicyextensions.co.uk
7
+ * @author chenry (support@juicymedia.co.uk)
8
+ * @version 1.0
9
+ */
10
+
11
+ class Juicy_Barclayspspid_PaymentController extends Mage_Core_Controller_Front_Action
12
+ {
13
+ /**
14
+ *
15
+ * @var boolean $isValidResponse
16
+ */
17
+ public $isValidResponse = false;
18
+
19
+ /**
20
+ * Get singleton with sagepay strandard
21
+ *
22
+ * @return object Juicy_Barclayscpi_Model_Standard
23
+ */
24
+ public function getStandard()
25
+ {
26
+ return Mage::getSingleton('Juicy_Barclayspspid_Model_Barclayspspid');
27
+ }
28
+
29
+ /**
30
+ * Get Config model
31
+ *
32
+ * @return object Juicy_Barclayscpi_Model_Config
33
+ */
34
+ public function getConfig()
35
+ {
36
+ return $this->getStandard()->getConfig();
37
+ }
38
+
39
+ /**
40
+ * Return debug flag
41
+ *
42
+ * @return boolean
43
+ */
44
+ public function getDebug()
45
+ {
46
+ return $this->getStandard()->getDebug();
47
+ }
48
+
49
+ public function dynamicAction()
50
+ {
51
+ $config = $this->getConfig();
52
+ $form = $config->getDynamictemplate();
53
+
54
+
55
+ $header = $config->getMagheader();
56
+
57
+ if ($header == "1") {
58
+
59
+ $this->loadLayout();
60
+
61
+ $block = $this->getLayout()->createBlock('Juicy_Barclayspspid_Block_Dynamic')->setformhtml($form);
62
+
63
+ $template = Mage::getConfig()->getNode('global/page/layouts/one_column/template');
64
+ $this->getLayout()->getBlock('root')->setTemplate($template);
65
+ $this->getLayout()->getBlock('content')->append($block);
66
+
67
+ $this->renderLayout();
68
+
69
+ } else {
70
+ $this->getResponse()
71
+ ->setBody($this->getLayout()
72
+ ->createBlock('Juicy_Barclayspspid_Block_Dynamic')
73
+ ->setformhtml($form)
74
+ ->toHtml());
75
+
76
+ }
77
+
78
+
79
+ }
80
+
81
+
82
+ /**
83
+ * When a customer chooses Barclays CPI on Checkout/Payment page
84
+ *
85
+ */
86
+ public function redirectAction()
87
+ {
88
+
89
+ $this->loadLayout(false);
90
+ $post = $this->getRequest()->getPost();
91
+
92
+
93
+ $session = Mage::getSingleton('Mage_Checkout_Model_Session');
94
+ $session->setBarclaysQuoteID($session->getQuoteId());
95
+
96
+ //Tell us the customer went to Barclays
97
+ $order = Mage::getModel('Mage_Sales_Model_Order');
98
+ $order->loadByIncrementId($session->getLastRealOrderId());
99
+ $order->addStatusToHistory(
100
+ $order->getStatus(),
101
+ Mage::helper('barclayspspid')->__('Customer was redirected to Barclays ePDQ')
102
+ );
103
+ $order->save();
104
+
105
+ //Get figures
106
+ $grandtotal = $order->getBaseGrandTotal();
107
+ //Mage::log('Juicy_Barclayspspid_PaymentController: redirectAction: gt = '.$grandtotal, null, 'barclays-pspid.log');
108
+
109
+ $formz = Mage::getModel('Juicy_Barclayspspid_Model_Submitform');
110
+
111
+ $orderid = $session->getLastRealOrderId();
112
+
113
+ //Mage::log('Juicy_Barclayspspid_PaymentController: redirectAction: oid = '.$orderid, null, 'barclays-pspid.log');
114
+
115
+ //Construct the from
116
+ $form = $formz->constructSubmitform($order);
117
+
118
+
119
+ //display form in block and redirect
120
+ $this->getResponse()
121
+ ->setBody($this->getLayout()
122
+ ->createBlock('Juicy_Barclayspspid_Block_Redirect')
123
+ ->setOrder($order)
124
+ ->setepdqform($form)
125
+ ->toHtml());
126
+
127
+ $session->unsQuoteId();
128
+
129
+ }
130
+
131
+ public function processAction() {
132
+
133
+ $postData = $this->getRequest()->getParams();
134
+
135
+ Mage::helper('barclayspspid')->log("Front End Post Back",$postData);
136
+
137
+ $standard = Mage::getModel('Juicy_Barclayspspid_Model_Barclayspspid');
138
+
139
+ $verify = $standard->checkShaout($postData);
140
+
141
+
142
+ $order = Mage::getModel('Mage_Sales_Model_Order');
143
+ $order->load($postData['orderID'], "increment_id");
144
+
145
+
146
+ if ($verify == true) {
147
+
148
+ $status = (int)$postData['STATUS'];
149
+
150
+ if ($status == 5 || $status == 9) {
151
+ $order->getPayment()->setTransactionId($postData['PAYID']);
152
+ $order->getPayment()->setadditional_data(serialize($postData));
153
+ $order->addStatusToHistory(
154
+ $order->getStatus(),
155
+ Mage::helper('barclayspspid')->__('Customer successfully returned from Barclays ePDQ')
156
+ );
157
+
158
+ if ($status == 9) {
159
+ if ($order->canInvoice()) {
160
+ $invoice = $order->prepareInvoice();
161
+ $invoice->register()->capture();
162
+ Mage::getModel('Mage_Core_Model_Resource_Transaction')
163
+ ->addObject($invoice)
164
+ ->addObject($invoice->getOrder())
165
+ ->save();
166
+ }
167
+ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
168
+ $order->save();
169
+ } else {
170
+ if ($order->canInvoice()) {
171
+ $invoice = $order->prepareInvoice();
172
+ $invoice->register();
173
+ Mage::getModel('Mage_Core_Model_Resource_Transaction')
174
+ ->addObject($invoice)
175
+ ->addObject($invoice->getOrder())
176
+ ->save();
177
+ }
178
+ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, 'barclayspspid_authorized', "Transaction was successfully pre-authorized", true);
179
+ $order->save();
180
+
181
+ }
182
+ $session = Mage::getModel("Mage_Checkout_Model_Session");
183
+ $session->addSuccess('Your Order was Successfully processed and the authorisation code was '.$postData['ACCEPTANCE']);
184
+
185
+ // PKD added to send customer notification of new order
186
+ try
187
+ {
188
+ $order->sendNewOrderEmail();
189
+
190
+ } catch (Exception $ex) { }
191
+
192
+ $this->_redirect('checkout/onepage/success');
193
+
194
+ } else {
195
+ $order->getPayment()->setadditional_data(serialize($postData));
196
+ $order->addStatusToHistory(
197
+ $order->getStatus(),
198
+ Mage::helper('barclayspspid')->__('Transaction was cancelled due to unsuccessful payment')
199
+ );
200
+ $session = Mage::getModel("Mage_Checkout_Model_Session");
201
+ $session->addError('Transaction was cancelled due to unsuccessful payment');
202
+ $order->cancel();
203
+ $order->save();
204
+ $this->_redirect('checkout/onepage/failure');
205
+ }
206
+
207
+ } else {
208
+ $order->getPayment()->setadditional_data(serialize($postData));
209
+ $order->addStatusToHistory(
210
+ $order->getStatus(),
211
+ Mage::helper('barclayspspid')->__('There was a verification issue and the order was cancelled')
212
+ );
213
+ $session = Mage::getModel("Mage_Checkout_Model_Session");
214
+ $session->addError('There was a verification issue and the order was cancelled');
215
+ $order->cancel();
216
+ $order->save();
217
+ $this->_redirect('barclayspspid/payment/failure');
218
+ }
219
+
220
+ }
221
+
222
+
223
+
224
+
225
+ /**
226
+ *
227
+ * This displays the failure page
228
+ */
229
+ public function failureAction()
230
+ {
231
+ $session = Mage::getSingleton('Mage_Checkout_Model_Session');
232
+
233
+ if (!$session->getErrorMessage()) {
234
+ $this->_redirect('checkout/cart');
235
+ return;
236
+ }
237
+
238
+ $this->loadLayout();
239
+ $this->renderLayout();
240
+ }
241
+
242
+ }
app/code/local/Juicy/Barclayspspid/controllers/RefundController.php ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Juicy_Barclayspspid_RefundController extends Mage_Core_Controller_Front_Action
4
+ {
5
+ public function testAction()
6
+ {
7
+ die();
8
+ }
9
+ }
app/code/local/Juicy/Barclayspspid/etc/adminhtml.xml ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ To change this license header, choose License Headers in Project Properties.
4
+ To change this template file, choose Tools | Templates
5
+ and open the template in the editor.
6
+ -->
7
+
8
+
9
+ <config>
10
+ <menu>
11
+ <juicy>
12
+ <title>Juicy Media</title>
13
+ <sort_order>72</sort_order>
14
+ <children>
15
+ <barclayspspid module="barclayspspid">
16
+ <title>Barclays PSPID</title>
17
+ <sort_order>3</sort_order>
18
+ <children>
19
+ <barclayspspid_manager module="barclayspspid">
20
+ <title>Payment Gateway Manager</title>
21
+ <sort_order>0</sort_order>
22
+ <action>adminhtml/system_config/edit/section/payment</action>
23
+ </barclayspspid_manager>
24
+ </children>
25
+ </barclayspspid>
26
+ </children>
27
+ </juicy>
28
+ </menu>
29
+ <acl>
30
+ <resources>
31
+ <all>
32
+ <title>Allow Everything</title>
33
+ </all>
34
+ <admin>
35
+ <children>
36
+ <system>
37
+ <children>
38
+ <config>
39
+ <children>
40
+ <barclayspspid module="barclayspspid">
41
+ <title>Barclays PSPID Config</title>
42
+ <sort_order>99</sort_order>
43
+ </barclayspspid>
44
+ </children>
45
+ </config>
46
+ </children>
47
+ </system>
48
+ </children>
49
+ </admin>
50
+ </resources>
51
+ </acl>
52
+ </config>
53
+
app/code/local/Juicy/Barclayspspid/etc/adminhtml/acl.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <config>
2
+ <acl>
3
+ <resources>
4
+ <resource id="Mage_Adminhtml::admin">
5
+ <resource id="Mage_Adminhtml::system">
6
+ <resource id="Mage_Adminhtml::config">
7
+ <resource id="Juicy_Barclayspspid::barclayspspid" module="Juicy_Barclayspspid" title="Juicy Media Barclyse PSPID Settings" />
8
+ </resource>
9
+ </resource>
10
+ </resource>
11
+ </resources>
12
+ </acl>
13
+ </config>
app/code/local/Juicy/Barclayspspid/etc/adminhtml/system.xml ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <config>
2
+ <!--
3
+ <system>
4
+ <section id="payment" translate="label" module="Mage_Payment" type="text" sortOrder="400" showInDefault="1" showInWebsite="1" showInStore="1">
5
+ <label>Payment Methods</label>
6
+ <tab>sales</tab>
7
+ <resource>Mage_Payment::payment</resource>
8
+ <group id="barclayspspid_standard" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
9
+ <label>Barclays EPDQ PSPID by Juicy Media</label>
10
+
11
+ <field id="active" translate="label comment" type="select" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="0">
12
+ <label>Enabled</label>
13
+ <comment>Enables the PSP form plugin</comment>
14
+ <source_model>Mage_Backend_Model_Config_Source_Yesno</source_model>
15
+ </field>
16
+
17
+ <field id="paymentaction" translate="label" type="select" sortOrder="2" showInDefault="1" showInWebsite="1" showInStore="0">
18
+ <label>Authorisation Mode</label>
19
+ <source_model>Juicy_Barclayspspid_Model_Source_PaymentAction</source_model>
20
+ </field>
21
+
22
+ <field id="testmode" translate="label comment" type="select" sortOrder="3" showInDefault="1" showInWebsite="1" showInStore="0">
23
+ <label>Test Mode</label>
24
+ <comment>No will send the transction in live mode, Yes will send the transaction in live mode</comment>
25
+ <source_model>Mage_Backend_Model_Config_Source_Yesno</source_model>
26
+ </field>
27
+
28
+ <field id="cardtypes" translate="label" type="multiselect" sortOrder="4" showInDefault="1" showInWebsite="1" showInStore="0">
29
+ <label>Accepted Credit Cards</label>
30
+ <source_model>Juicy_Barclayspspid_Model_Source_CreditCards</source_model>
31
+ </field>
32
+
33
+ <field id="title" translate="label" type="text" sortOrder="5" showInDefault="1" showInWebsite="1" showInStore="0">
34
+ <label>Title</label>
35
+ </field>
36
+
37
+ <field id="currency" translate="label" type="select" sortOrder="6" showInDefault="1" showInWebsite="1" showInStore="0">
38
+ <label>Currency</label>
39
+ <source_model>Juicy_Barclayspspid_Model_Source_CurrencyAction</source_model>
40
+ </field>
41
+
42
+ <field id="pspid" translate="label" type="text" sortOrder="7" showInDefault="1" showInWebsite="1" showInStore="0">
43
+ <label>PSP ID</label>
44
+ </field>
45
+
46
+ <field id="shain" translate="label" type="text" sortOrder="8" showInDefault="1" showInWebsite="1" showInStore="0">
47
+ <label>SHA-IN</label>
48
+ </field>
49
+
50
+ <field id="shaout" translate="label" type="text" sortOrder="9" showInDefault="1" showInWebsite="1" showInStore="0">
51
+ <label>SHA-OUT</label>
52
+ </field>
53
+
54
+ <field id="pagetitle" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="0">
55
+ <label>Payment Page - Title</label>
56
+ </field>
57
+
58
+ <field id="bgcolor" translate="label" type="text" sortOrder="11" showInDefault="1" showInWebsite="1" showInStore="0">
59
+ <label>Payment Page - Background Colour</label>
60
+ </field>
61
+
62
+ <field id="txtcolor" translate="label" type="text" sortOrder="12" showInDefault="1" showInWebsite="1" showInStore="0">
63
+ <label>Payment Page - Text Colour</label>
64
+ </field>
65
+
66
+ <field id="tblbgcolor" translate="label" type="text" sortOrder="13" showInDefault="1" showInWebsite="1" showInStore="0">
67
+ <label>Payment Page - Table Background Colour</label>
68
+ </field>
69
+
70
+ <field id="tbltxtcolor" translate="label" type="text" sortOrder="14" showInDefault="1" showInWebsite="1" showInStore="0">
71
+ <label>Paymnet Page - Table Text Colour</label>
72
+ </field>
73
+
74
+ <field id="buttonbgcolor" translate="label" type="text" sortOrder="15" showInDefault="1" showInWebsite="1" showInStore="0">
75
+ <label>Paymnet Page - Button Background Colour</label>
76
+ </field>
77
+
78
+ <field id="buttontxtcolor" translate="label" type="text" sortOrder="16" showInDefault="1" showInWebsite="1" showInStore="0">
79
+ <label>Paymnet Page - Button Text Colour</label>
80
+ </field>
81
+
82
+ <field id="logo" translate="label" type="text" sortOrder="17" showInDefault="1" showInWebsite="1" showInStore="0">
83
+ <label>Paymnet Page - Logo</label>
84
+ </field>
85
+
86
+ <field id="fonttype" translate="label" type="text" sortOrder="18" showInDefault="1" showInWebsite="1" showInStore="0">
87
+ <label>Paymnet Page - Font Type</label>
88
+ </field>
89
+
90
+
91
+ <field id="basket" translate="label comment" type="select" sortOrder="19" showInDefault="1" showInWebsite="1" showInStore="0">
92
+ <label>Send Basket Info?</label>
93
+ <comment>Sends basket info</comment>
94
+ <source_model>Mage_Backend_Model_Config_Source_Yesno</source_model>
95
+ </field>
96
+
97
+ <field id="delivery" translate="label comment" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="0">
98
+ <label>Send Delivery Info?</label>
99
+ <comment>Send Delivery Info</comment>
100
+ <source_model>Mage_Backend_Model_Config_Source_Yesno</source_model>
101
+ </field>
102
+
103
+
104
+ <field id="dynamic" translate="label comment" type="select" sortOrder="21" showInDefault="1" showInWebsite="1" showInStore="0">
105
+ <label>Send Dynamic Template?</label>
106
+ <comment>Sends a dynamic template to Barclays</comment>
107
+ <source_model>Mage_Backend_Model_Config_Source_Yesno</source_model>
108
+ </field>
109
+
110
+ <field id="dynamictemplate" translate="label" type="textarea" sortOrder="22" showInDefault="1" showInWebsite="1" showInStore="0">
111
+ <label>Dynamic Template Content</label>
112
+ </field>
113
+
114
+ <field id="allowspecific" translate="label" type="allowspecific" sortOrder="23" showInDefault="1" showInWebsite="1" showInStore="0">
115
+ <label>Payment from Applicable Countries</label>
116
+ <source_model>Mage_Payment_Model_Config_Source_Allspecificcountries</source_model>
117
+ </field>
118
+
119
+ <field id="specificcountry" translate="label" type="multiselect" sortOrder="24" showInDefault="1" showInWebsite="1" showInStore="0">
120
+ <label>Payment from Specific Countries</label>
121
+ <source_model>Mage_Directory_Model_Config_Source_Country</source_model>
122
+ <can_be_empty>1</can_be_empty>
123
+ </field>
124
+
125
+
126
+ <field id="sort_order" translate="label" type="text" sortOrder="25" showInDefault="1" showInWebsite="1" showInStore="0">
127
+ <label>Sort Order</label>
128
+ <frontend_class>validate-number</frontend_class>
129
+ </field>
130
+
131
+
132
+ </group>
133
+
134
+ </section>
135
+ </system>
136
+ -->
137
+ </config>
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
app/code/local/Juicy/Barclayspspid/etc/config.xml ADDED
@@ -0,0 +1,122 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+
3
+
4
+ <config>
5
+ <modules>
6
+ <Juicy_Barclayspspid>
7
+ <version>1.0.0</version>
8
+ <active>true</active>
9
+ <codePool>local</codePool>
10
+ </Juicy_Barclayspspid>
11
+ </modules>
12
+ <global>
13
+ <resources>
14
+ <barclayspspid_setup>
15
+ <setup>
16
+ <module>Juicy_Barclayspspid</module>
17
+ <class>Juicy_Barclayspspid_Model_Resource_Eav_Mysql4_Setup</class>
18
+ </setup>
19
+ <connection>
20
+ <use>core_setup</use>
21
+ </connection>
22
+ </barclayspspid_setup>
23
+ </resources>
24
+ <payment>
25
+ <groups>
26
+ <barclayspspid>Juicy Media Barclays PSPID</barclayspspid>
27
+ </groups>
28
+ </payment>
29
+ <helpers>
30
+ <barclayspspid>
31
+ <class>Juicy_Barclayspspid_Helper</class>
32
+ </barclayspspid>
33
+ </helpers>
34
+ </global>
35
+ <frontend>
36
+ <routers>
37
+ <barclayspspid>
38
+ <use>standard</use>
39
+ <args>
40
+ <module>Juicy_Barclayspspid</module>
41
+ <frontName>barclayspspid</frontName>
42
+ </args>
43
+ </barclayspspid>
44
+ </routers>
45
+ <layout>
46
+ <updates>
47
+ <barclayspspid module="Juicy_Barclayspspid">
48
+ <file>layout.xml</file>
49
+ </barclayspspid>
50
+ </updates>
51
+ </layout>
52
+ </frontend>
53
+ <admin>
54
+ <routers>
55
+ <adminhtml>
56
+ <args>
57
+ <modules>
58
+ <barclayspspid after="Mage_Adminhtml">Juicy_Barclayspspid</barclayspspid>
59
+ </modules>
60
+ </args>
61
+ </adminhtml>
62
+ </routers>
63
+ </admin>
64
+ <adminhtml>
65
+ <translate>
66
+ <modules>
67
+ <Juicy_Barclayspspid>
68
+ <files>
69
+ <default>Juicy_Barclayspspid.csv</default>
70
+ </files>
71
+ </Juicy_Barclayspspid>
72
+ </modules>
73
+ </translate>
74
+ <layout>
75
+ <updates>
76
+ <barclayspspid module="Juicy_Barclayspspid">
77
+ <file>layout.xml</file>
78
+ </barclayspspid>
79
+ </updates>
80
+ </layout>
81
+ </adminhtml>
82
+ <default>
83
+ <payment>
84
+ <barclayspspid_standard>
85
+ <group>barclayspspid_standard</group>
86
+ <model>Juicy_Barclayspspid_Model_Barclayspspid</model>
87
+ <title>Barclays PSPID</title>
88
+ <active>0</active>
89
+ <testmode>0</testmode>
90
+
91
+ <title>Credit/Debit Card (Powered by Barclays)</title>
92
+ <pagetitle>Credit/Debit Card Payment</pagetitle>
93
+ <dynamic>1</dynamic>
94
+ <dynamictemplate>$$$PAYMENT ZONE$$$</dynamictemplate>
95
+ <bgcolor>#fff</bgcolor>
96
+ <txtcolor>#000</txtcolor>
97
+ <tblbgcolor>#fff</tblbgcolor>
98
+ <tbltxtcolor>#000</tbltxtcolor>
99
+ <buttonbgcolor>#000</buttonbgcolor>
100
+ <buttontxtcolor>#fff</buttontxtcolor>
101
+ <logo></logo>
102
+ <fonttype>initial</fonttype>
103
+
104
+ <basket>1</basket>
105
+ <delivery>1</delivery>
106
+ <magheader>1</magheader>
107
+ <allowspecific>0</allowspecific>
108
+
109
+ <debuglog>1</debuglog>
110
+ <debugemail>1</debugemail>
111
+ </barclayspspid_standard>
112
+ <barclayspspid_moto>
113
+ <group>barclayspspid_moto</group>
114
+ <active>1</active>
115
+ <payment_action>authorize</payment_action>
116
+ <model>Juicy_Barclayspspid_Model_Barclaysmoto</model>
117
+ <title>Barclays PSPID Moto</title>
118
+ <allowspecific>0</allowspecific>
119
+ </barclayspspid_moto>
120
+ </payment>
121
+ </default>
122
+ </config>
app/code/local/Juicy/Barclayspspid/etc/system.xml ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <tabs>
4
+ <juicy translate="label" module="barclayspspid">
5
+ <label>Juicy Media</label>
6
+ <sort_order>10</sort_order>
7
+ </juicy>
8
+ </tabs>
9
+ <sections>
10
+ <payment>
11
+ <groups>
12
+ <barclayspspid_moto translate="label" module="barclayspspid">
13
+ <label>Barclays PSPID Moto by Juicy Media Ltd</label>
14
+ <frontend_type>text</frontend_type>
15
+ <sort_order>1</sort_order>
16
+ <show_in_default>1</show_in_default>
17
+ <show_in_website>1</show_in_website>
18
+ <show_in_store>0</show_in_store>
19
+ <fields>
20
+ <active translate="label">
21
+ <label>Enabled</label>
22
+ <frontend_type>select</frontend_type>
23
+ <source_model>adminhtml/system_config_source_yesno</source_model>
24
+ <sort_order>1</sort_order>
25
+ <show_in_default>1</show_in_default>
26
+ <show_in_website>1</show_in_website>
27
+ <show_in_store>0</show_in_store>
28
+ </active>
29
+ <payment_action translate="label">
30
+ <label>Payment Action</label>
31
+ <frontend_type>select</frontend_type>
32
+ <source_model>paygate/authorizenet_source_paymentAction</source_model>
33
+ <sort_order>2</sort_order>
34
+ <show_in_default>1</show_in_default>
35
+ <show_in_website>1</show_in_website>
36
+ <show_in_store>0</show_in_store>
37
+ </payment_action>
38
+ </fields>
39
+ </barclayspspid_moto>
40
+
41
+
42
+ <barclayspspid_standard translate="label" module="barclayspspid">
43
+ <label>Barclays PSPID by Juicy Media Ltd</label>
44
+ <frontend_type>text</frontend_type>
45
+ <sort_order>1</sort_order>
46
+ <show_in_default>1</show_in_default>
47
+ <show_in_website>1</show_in_website>
48
+ <show_in_store>0</show_in_store>
49
+ <fields>
50
+ <head_init translate="label">
51
+ <label>Initial</label>
52
+ <frontend_type>text</frontend_type>
53
+ <show_in_default>1</show_in_default>
54
+ <show_in_website>1</show_in_website>
55
+ <sort_order>0</sort_order>
56
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
57
+ </head_init>
58
+ <active translate="label">
59
+ <label>Enabled</label>
60
+ <frontend_type>select</frontend_type>
61
+ <source_model>adminhtml/system_config_source_yesno</source_model>
62
+ <sort_order>1</sort_order>
63
+ <show_in_default>1</show_in_default>
64
+ <show_in_website>1</show_in_website>
65
+ <show_in_store>0</show_in_store>
66
+ </active>
67
+ <testmode translate="label">
68
+ <label>Test Mode</label>
69
+ <frontend_type>select</frontend_type>
70
+ <source_model>adminhtml/system_config_source_yesno</source_model>
71
+ <sort_order>2</sort_order>
72
+ <show_in_default>1</show_in_default>
73
+ <show_in_website>1</show_in_website>
74
+ <show_in_store>0</show_in_store>
75
+ </testmode>
76
+
77
+ <head_req translate="label">
78
+ <label>Required</label>
79
+ <frontend_type>text</frontend_type>
80
+ <show_in_default>1</show_in_default>
81
+ <show_in_website>1</show_in_website>
82
+ <sort_order>10</sort_order>
83
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
84
+ </head_req>
85
+ <pspid translate="label">
86
+ <label>PSPID</label>
87
+ <frontend_type>text</frontend_type>
88
+ <sort_order>30</sort_order>
89
+ <show_in_default>1</show_in_default>
90
+ <show_in_website>1</show_in_website>
91
+ <show_in_store>1</show_in_store>
92
+ </pspid>
93
+ <username translate="label comment">
94
+ <label>User Name</label>
95
+ <frontend_type>text</frontend_type>
96
+ <comment></comment>
97
+ <sort_order>31</sort_order>
98
+ <show_in_default>1</show_in_default>
99
+ <show_in_website>1</show_in_website>
100
+ <show_in_store>1</show_in_store>
101
+ </username>
102
+ <userpassword translate="label comment">
103
+ <label>User Password</label>
104
+ <frontend_type>obscure</frontend_type>
105
+ <comment></comment>
106
+ <sort_order>32</sort_order>
107
+ <show_in_default>1</show_in_default>
108
+ <show_in_website>1</show_in_website>
109
+ <show_in_store>1</show_in_store>
110
+ </userpassword>
111
+ <shain translate="label">
112
+ <label>SHA-IN</label>
113
+ <frontend_type>text</frontend_type>
114
+ <sort_order>33</sort_order>
115
+ <show_in_default>1</show_in_default>
116
+ <show_in_website>1</show_in_website>
117
+ <show_in_store>1</show_in_store>
118
+ </shain>
119
+ <shaout translate="label">
120
+ <label>SHA-OUT</label>
121
+ <frontend_type>text</frontend_type>
122
+ <sort_order>34</sort_order>
123
+ <show_in_default>1</show_in_default>
124
+ <show_in_website>1</show_in_website>
125
+ <show_in_store>1</show_in_store>
126
+ </shaout>
127
+ <cardtypes translate="label">
128
+ <label>Card Types</label>
129
+ <frontend_type>multiselect</frontend_type>
130
+ <source_model>Juicy_Barclayspspid_Model_Source_CreditCards</source_model>
131
+ <sort_order>35</sort_order>
132
+ <show_in_default>1</show_in_default>
133
+ <show_in_website>1</show_in_website>
134
+ <show_in_store>0</show_in_store>
135
+ </cardtypes>
136
+ <currency translate="label">
137
+ <label>Currency</label>
138
+ <frontend_type>select</frontend_type>
139
+ <source_model>Juicy_Barclayspspid_Model_Source_CurrencyAction</source_model>
140
+ <sort_order>36</sort_order>
141
+ <show_in_default>1</show_in_default>
142
+ <show_in_website>1</show_in_website>
143
+ <show_in_store>0</show_in_store>
144
+ </currency>
145
+
146
+ <head_styles translate="label">
147
+ <label>Styles</label>
148
+ <frontend_type>text</frontend_type>
149
+ <show_in_default>1</show_in_default>
150
+ <show_in_website>1</show_in_website>
151
+ <sort_order>39</sort_order>
152
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
153
+ </head_styles>
154
+ <title translate="label">
155
+ <label>Title</label>
156
+ <frontend_type>text</frontend_type>
157
+ <sort_order>40</sort_order>
158
+ <show_in_default>1</show_in_default>
159
+ <show_in_website>1</show_in_website>
160
+ <show_in_store>1</show_in_store>
161
+ </title>
162
+ <pagetitle translate="label">
163
+ <label>Page Title</label>
164
+ <frontend_type>text</frontend_type>
165
+ <sort_order>80</sort_order>
166
+ <show_in_default>1</show_in_default>
167
+ <show_in_website>1</show_in_website>
168
+ <show_in_store>1</show_in_store>
169
+ </pagetitle>
170
+ <dynamic translate="label">
171
+ <label>Send Dynamic Template</label>
172
+ <frontend_type>select</frontend_type>
173
+ <source_model>adminhtml/system_config_source_yesno</source_model>
174
+ <sort_order>90</sort_order>
175
+ <show_in_default>1</show_in_default>
176
+ <show_in_website>1</show_in_website>
177
+ <show_in_store>0</show_in_store>
178
+ </dynamic>
179
+ <dynamictemplate translate="label">
180
+ <label>Dynamic Template</label>
181
+ <frontend_type>textarea</frontend_type>
182
+ <sort_order>95</sort_order>
183
+ <show_in_default>1</show_in_default>
184
+ <show_in_website>1</show_in_website>
185
+ <show_in_store>1</show_in_store>
186
+ <depends><dynamic>1</dynamic></depends>
187
+ </dynamictemplate>
188
+ <bgcolor translate="label">
189
+ <label>Background Colour</label>
190
+ <frontend_type>text</frontend_type>
191
+ <sort_order>95</sort_order>
192
+ <show_in_default>1</show_in_default>
193
+ <show_in_website>1</show_in_website>
194
+ <show_in_store>1</show_in_store>
195
+ <depends><dynamic>0</dynamic></depends>
196
+ </bgcolor>
197
+ <txtcolor translate="label">
198
+ <label>Text Colour</label>
199
+ <frontend_type>text</frontend_type>
200
+ <sort_order>100</sort_order>
201
+ <show_in_default>1</show_in_default>
202
+ <show_in_website>1</show_in_website>
203
+ <show_in_store>1</show_in_store>
204
+ <depends><dynamic>0</dynamic></depends>
205
+ </txtcolor>
206
+ <tblbgcolor translate="label">
207
+ <label>Table Background Colour</label>
208
+ <frontend_type>text</frontend_type>
209
+ <sort_order>110</sort_order>
210
+ <show_in_default>1</show_in_default>
211
+ <show_in_website>1</show_in_website>
212
+ <show_in_store>1</show_in_store>
213
+ <depends><dynamic>0</dynamic></depends>
214
+ </tblbgcolor>
215
+ <tbltxtcolor translate="label">
216
+ <label>Table Text Colour</label>
217
+ <frontend_type>text</frontend_type>
218
+ <sort_order>120</sort_order>
219
+ <show_in_default>1</show_in_default>
220
+ <show_in_website>1</show_in_website>
221
+ <show_in_store>1</show_in_store>
222
+ <depends><dynamic>0</dynamic></depends>
223
+ </tbltxtcolor>
224
+ <buttonbgcolor translate="label">
225
+ <label>Button Background Colour</label>
226
+ <frontend_type>text</frontend_type>
227
+ <sort_order>130</sort_order>
228
+ <show_in_default>1</show_in_default>
229
+ <show_in_website>1</show_in_website>
230
+ <show_in_store>1</show_in_store>
231
+ <depends><dynamic>0</dynamic></depends>
232
+ </buttonbgcolor>
233
+ <buttontxtcolor translate="label">
234
+ <label>Button Text Colour</label>
235
+ <frontend_type>text</frontend_type>
236
+ <sort_order>140</sort_order>
237
+ <show_in_default>1</show_in_default>
238
+ <show_in_website>1</show_in_website>
239
+ <show_in_store>1</show_in_store>
240
+ <depends><dynamic>0</dynamic></depends>
241
+ </buttontxtcolor>
242
+ <logo translate="label">
243
+ <label>Logo URL</label>
244
+ <frontend_type>text</frontend_type>
245
+ <sort_order>150</sort_order>
246
+ <show_in_default>1</show_in_default>
247
+ <show_in_website>1</show_in_website>
248
+ <show_in_store>1</show_in_store>
249
+ <depends><dynamic>0</dynamic></depends>
250
+ </logo>
251
+ <fonttype translate="label">
252
+ <label>Font Type</label>
253
+ <frontend_type>text</frontend_type>
254
+ <sort_order>160</sort_order>
255
+ <show_in_default>1</show_in_default>
256
+ <show_in_website>1</show_in_website>
257
+ <show_in_store>1</show_in_store>
258
+ <depends><dynamic>0</dynamic></depends>
259
+ </fonttype>
260
+ <magheader translate="label">
261
+ <label>Include Magento Theme</label>
262
+ <frontend_type>select</frontend_type>
263
+ <source_model>adminhtml/system_config_source_yesno</source_model>
264
+ <sort_order>165</sort_order>
265
+ <show_in_default>1</show_in_default>
266
+ <show_in_website>1</show_in_website>
267
+ <show_in_store>0</show_in_store>
268
+ </magheader>
269
+
270
+ <head_additional translate="label">
271
+ <label>Additional</label>
272
+ <frontend_type>text</frontend_type>
273
+ <show_in_default>1</show_in_default>
274
+ <show_in_website>1</show_in_website>
275
+ <sort_order>168</sort_order>
276
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
277
+ </head_additional>
278
+ <paymentaction translate="label">
279
+ <label>Authorisation Mode</label>
280
+ <frontend_type>select</frontend_type>
281
+ <source_model>Juicy_Barclayspspid_Model_Source_PaymentAction</source_model>
282
+ <sort_order>169</sort_order>
283
+ <show_in_default>2</show_in_default>
284
+ <show_in_website>1</show_in_website>
285
+ <show_in_store>0</show_in_store>
286
+ </paymentaction>
287
+ <basket translate="label">
288
+ <label>Send Basket Info</label>
289
+ <frontend_type>select</frontend_type>
290
+ <source_model>adminhtml/system_config_source_yesno</source_model>
291
+ <sort_order>170</sort_order>
292
+ <show_in_default>1</show_in_default>
293
+ <show_in_website>1</show_in_website>
294
+ <show_in_store>0</show_in_store>
295
+ </basket>
296
+ <delivery translate="label">
297
+ <label>Send Delivery Info</label>
298
+ <frontend_type>select</frontend_type>
299
+ <source_model>adminhtml/system_config_source_yesno</source_model>
300
+ <sort_order>180</sort_order>
301
+ <show_in_default>1</show_in_default>
302
+ <show_in_website>1</show_in_website>
303
+ <show_in_store>0</show_in_store>
304
+ </delivery>
305
+ <allowspecific translate="label">
306
+ <label>Payment from Applicable Countries</label>
307
+ <frontend_type>allowspecific</frontend_type>
308
+ <sort_order>240</sort_order>
309
+ <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
310
+ <show_in_default>1</show_in_default>
311
+ <show_in_website>1</show_in_website>
312
+ <show_in_store>0</show_in_store>
313
+ </allowspecific>
314
+ <specificcountry translate="label">
315
+ <label>Payment from Specific Countries</label>
316
+ <frontend_type>multiselect</frontend_type>
317
+ <sort_order>250</sort_order>
318
+ <source_model>adminhtml/system_config_source_country</source_model>
319
+ <show_in_default>1</show_in_default>
320
+ <show_in_website>1</show_in_website>
321
+ <show_in_store>0</show_in_store>
322
+ <depends><allowspecific>1</allowspecific></depends>
323
+ </specificcountry>
324
+ <sort_order translate="label">
325
+ <label>Sort Order</label>
326
+ <frontend_type>text</frontend_type>
327
+ <sort_order>260</sort_order>
328
+ <show_in_default>1</show_in_default>
329
+ <show_in_website>1</show_in_website>
330
+ <show_in_store>0</show_in_store>
331
+ </sort_order>
332
+
333
+ <head_debug translate="label">
334
+ <label>Debug</label>
335
+ <frontend_type>text</frontend_type>
336
+ <show_in_default>1</show_in_default>
337
+ <show_in_website>1</show_in_website>
338
+ <sort_order>265</sort_order>
339
+ <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
340
+ </head_debug>
341
+ <debuglog translate="label">
342
+ <label>Activate Debug Logging</label>
343
+ <frontend_type>select</frontend_type>
344
+ <source_model>adminhtml/system_config_source_yesno</source_model>
345
+ <sort_order>270</sort_order>
346
+ <show_in_default>1</show_in_default>
347
+ <show_in_website>1</show_in_website>
348
+ <show_in_store>0</show_in_store>
349
+ </debuglog>
350
+ <debugemail translate="label">
351
+ <label>Send Debug Email to Developers</label>
352
+ <frontend_type>select</frontend_type>
353
+ <source_model>adminhtml/system_config_source_yesno</source_model>
354
+ <sort_order>280</sort_order>
355
+ <show_in_default>1</show_in_default>
356
+ <show_in_website>1</show_in_website>
357
+ <show_in_store>0</show_in_store>
358
+ <depends><debuglog>1</debuglog></depends>
359
+ </debugemail>
360
+ </fields>
361
+ </barclayspspid_standard>
362
+ </groups>
363
+ </payment>
364
+ </sections>
365
+ </config>
app/code/local/Juicy/Barclayspspid/sql/barclayspspid_setup/mysql4-install-1.0.0.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ $installer = $this;
4
+ /* @var $installer Mage_Core_Model_Resource_Setup */
5
+ $installer->startSetup();
6
+
7
+
8
+ try
9
+ {
10
+ $installer->run("
11
+ DELETE FROM `{$installer->getTable('sales_order_status')}` WHERE (`status`='pys_failed_hosted_payment');
12
+
13
+
14
+ INSERT INTO `{$installer->getTable('sales_order_status')}` (`status`, `label`) VALUES ('barclayspspid_authorized', 'Barclays - Authorized');
15
+
16
+ ");
17
+ }
18
+ catch(Exception $exc)
19
+ {
20
+ Mage::log("Error during script installation: ". $exc->__toString());
21
+ }
22
+
23
+
24
+ $installer->endSetup();
app/design/adminhtml/default/default/template/barclayspspid/info.phtml ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $data = $this->getStuff(); ?>
2
+
3
+ <h3>Order Info</h3>
4
+ <table cellspacing="0" class="form-list">
5
+ <tbody>
6
+ <tr>
7
+ <td class="label"><label>Magento Order ID</label></td>
8
+ <td class="value"><?php if (isset($data['Order ID'])) { ?><?php echo $data['Order ID']; ?><?php } ?></td>
9
+ </tr>
10
+ <tr>
11
+ <td class="label"><label>Payment ID</label></td>
12
+ <td class="value"><?php if (isset($data['Payment ID'])) { ?><?php echo $data['Payment ID']; ?><?php } ?></td>
13
+ </tr>
14
+ <tr>
15
+ <td class="label"><label>Payment Currency</label></td>
16
+ <td class="value"><?php if (isset($data['Payment Currency'])) { ?><?php echo $data['Payment Currency']; ?><?php } ?></td>
17
+ </tr>
18
+ <tr>
19
+ <td class="label"><label>Amount Paid</label></td>
20
+ <td class="value"><?php if (isset($data['Amount Paid'])) { ?><?php echo $data['Amount Paid']; ?><?php } ?></td>
21
+ </tr>
22
+ <tr>
23
+ <td class="label"><label>Transaction Date</label></td>
24
+ <td class="value"><?php if (isset($data['Transaction Date'])) { ?><?php echo $data['Transaction Date']; ?><?php } ?></td>
25
+ </tr>
26
+ </tbody>
27
+ </table>
28
+
29
+
30
+ <h3>Payment Info</h3>
31
+ <table cellspacing="0" class="form-list">
32
+ <tbody>
33
+ <tr>
34
+ <td class="label"><label>Payment Method</label></td>
35
+ <td class="value"><?php if (isset($data['Payment Method'])) { ?><?php echo $data['Payment Method']; ?><?php } ?></td>
36
+ </tr>
37
+ <tr>
38
+ <td class="label"><label>Credit Card Number (Masked)</label></td>
39
+ <td class="value"><?php if (isset($data['Credit Card Number (Masked)'])) { ?><?php echo $data['Credit Card Number (Masked)']; ?><?php } ?></td>
40
+ </tr>
41
+ <tr>
42
+ <td class="label"><label>Card Holder Name</label></td>
43
+ <td class="value"><?php if (isset($data['Card Holder Name'])) { ?><?php echo $data['Card Holder Name']; ?><?php } ?></td>
44
+ </tr>
45
+ <tr>
46
+ <td class="label"><label>Card Holders Bank</label></td>
47
+ <td class="value"><?php if (isset($data['Card Holders Bank'])) { ?><?php echo $data['Card Holders Bank']; ?><?php } ?></td>
48
+ </tr>
49
+ <tr>
50
+ <td class="label"><label>Bank Country of Origin</label></td>
51
+ <td class="value"><?php if (isset($data['Bank Country of Origin'])) { ?><?php echo $data['Bank Country of Origin']; ?><?php } ?></td>
52
+ </tr>
53
+ <tr>
54
+ <td class="label"><label>Amount Paid</label></td>
55
+ <td class="value"><?php if (isset($data['Amount Paid'])) { ?><?php echo $data['Amount Paid']; ?><?php } ?></td>
56
+ </tr>
57
+ <tr>
58
+ <td class="label"><label>Authorization Code</label></td>
59
+ <td class="value"><?php if (isset($data['Authorization Code'])) { ?><?php echo $data['Authorization Code']; ?><?php } ?></td>
60
+ </tr>
61
+
62
+ </tbody>
63
+ </table>
64
+
65
+
66
+ <h3>Security Info</h3>
67
+ <table cellspacing="0" class="form-list">
68
+ <tbody>
69
+ <tr>
70
+ <td class="label"><label>CVC Check</label></td>
71
+ <td class="value"><?php if (isset($data['CVC Check'])) { ?><?php echo $data['CVC Check']; ?><?php } ?></td>
72
+ </tr>
73
+ <tr>
74
+ <td class="label"><label>AVS Check</label></td>
75
+ <td class="value"><?php if (isset($data['AVS Check'])) { ?><?php echo $data['AVS Check']; ?><?php } ?></td>
76
+ </tr>
77
+ <tr>
78
+ <td class="label"><label>AVS Address</label></td>
79
+ <td class="value"><?php if (isset($data['AVS Address'])) { ?><?php echo $data['AVS Address']; ?><?php } ?></td>
80
+ </tr>
81
+ <tr>
82
+ <td class="label"><label>AVS Postcode</label></td>
83
+ <td class="value"><?php if (isset($data['AVS Postcode'])) { ?><?php echo $data['AVS Postcode']; ?><?php } ?></td>
84
+ </tr>
85
+ <tr>
86
+ <td class="label"><label>Order Placed from</label></td>
87
+ <td class="value"><?php if (isset($data['Order Placed from'])) { ?><?php echo $data['Order Placed from']; ?><?php } ?></td>
88
+ </tr>
89
+ <tr>
90
+ <td class="label"><label>IP address of Payee</label></td>
91
+ <td class="value"><?php if (isset($data['IP address of Payee'])) { ?><?php echo $data['IP address of Payee']; ?><?php } ?></td>
92
+ </tr>
93
+ </tbody>
94
+ </table>
95
+
96
+ <h3>Currency</h3>
97
+
app/design/adminhtml/default/default/template/barclayspspid/motoform.phtml ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php $direct = Mage::getModel('JuicyMedia_Barclayspspid_Model_Barclaysmoto'); ?>
2
+ <?php $_code = $this->getMethodCode() ?>
3
+ <?php $fieldCode = ''?>
4
+
5
+ <fieldset class="form-list">
6
+ <ul id="payment_form_<?php echo $_code; ?>" style="display:none">
7
+ <li>
8
+ <div class="input-box">
9
+ <label for="<?php echo $_code; ?>_cc_owner"><?php echo $this->__('Name On Card') ?> <span class="required">*</span></label><br/>
10
+ <input type="text" title="<?php echo $this->__('Name On Card') ?>" class="input-text required-entry validate-length maximum-length-100" id="<?php echo $_code; ?>_cc_owner" name="payment<?php echo $fieldCode; ?>[cc_owner]" value="<?php echo $this->htmlEscape($this->getInfoData('cc_owner')) ?>"/>
11
+ </div>
12
+ </li>
13
+ <li>
14
+ <div class="input-box">
15
+ <label for="<?php echo $_code; ?>_cc_number"><?php echo $this->__('Card Number') ?> <span class="required">*</span></label><br/>
16
+ <input type="text" id="<?php echo $_code; ?>_cc_number" name="payment<?php echo $fieldCode; ?>[cc_number]" title="<?php echo $this->__('Card Number') ?>" class="input-text required-entry validate-digits validate-length maximum-length-20" value=""/>
17
+ </div>
18
+ </li>
19
+ <li>
20
+ <label for="<?php echo $_code; ?>_expiration"><?php echo $this->__('Expiration Date') ?> <span class="required">*</span></label><br/>
21
+ <div class="input-box">
22
+ <div class="v-fix">
23
+ <select id="<?php echo $_code; ?>_expiration" name="payment<?php echo $fieldCode; ?>[cc_exp_month]" class="month validate-cc-exp required-entry">
24
+ <?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
25
+ <?php foreach ($this->getCcMonths() as $k=>$v): ?>
26
+ <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
27
+ <?php endforeach ?>
28
+ </select>
29
+ </div>
30
+
31
+ <div class="v-fix">
32
+ <?php $_ccExpYear = $this->getInfoData('cc_exp_year') ?>
33
+ <select id="<?php echo $_code; ?>_expiration_yr" name="payment<?php echo $fieldCode; ?>[cc_exp_year]" class="year required-entry">
34
+ <?php foreach ($this->getCcYears() as $k=>$v): ?>
35
+ <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccExpYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
36
+ <?php endforeach ?>
37
+ </select>
38
+ </div>
39
+ </div>
40
+ </li>
41
+ <li>
42
+ <label for="<?php echo $_code; ?>_cc_ss_start_month"><?php echo $this->__('Start Date') ?></label><br />
43
+ <div class="input-box">
44
+ <div class="v-fix">
45
+ <select id="<?php echo $_code; ?>_cc_ss_start_month" name="payment<?php echo $fieldCode; ?>[cc_ss_start_month]" class="month">
46
+ <?php $_ccStartMonth = $this->getInfoData('cc_ss_start_month') ?>
47
+ <?php foreach ($this->getCcStartMonths() as $k=>$v): ?>
48
+ <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
49
+ <?php endforeach ?>
50
+ </select>
51
+ </div>
52
+ <div class="v-fix">
53
+ <?php $_ccStartYear = $this->getInfoData('cc_ss_start_year') ?>
54
+ <select id="<?php echo $_code ?>_cc_ss_start_year" name="payment<?php echo $fieldCode; ?>[cc_ss_start_year]" class="year">
55
+ <?php foreach ($this->getCcStartYears() as $k=>$v): ?>
56
+ <option value="<?php echo $k?$k:'' ?>"<?php if($k==$_ccStartYear): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
57
+ <?php endforeach ?>
58
+ </select>
59
+ </div>
60
+ </div>
61
+ </li>
62
+ <li>
63
+ <div class="input-box">
64
+ <label for="<?php echo $_code; ?>_cc_ss_issue"><?php echo $this->__('Issue Number') ?></label><br />
65
+ <div class="v-fix"><input type="text" title="<?php echo $this->__('Issue Number') ?>" class="input-text validate-digits validate-length maximum-length-2" id="<?php echo $_code ?>_cc_ss_issue" name="payment<?php echo $fieldCode; ?>[cc_ss_issue]" style="width:50px;" value="" /></div>
66
+ </div>
67
+ </li>
68
+ <li>
69
+ <div class="input-box">
70
+ <label for="<?php echo $_code; ?>_cc_cid"><?php echo $this->__('CV2') ?> <span class="required">*</span></label><br/>
71
+ <div class="v-fix"><input type="text" title="<?php echo $this->__('CV2') ?>" class="input-text required-entry validate-digits validate-length minimum-length-3 maximum-length-4" id="<?php echo $_code; ?>_cc_cid" name="payment<?php echo $fieldCode; ?>[cc_cid]" style="width:50px;" value=""/></div>
72
+ &nbsp;
73
+ <a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
74
+ </div>
75
+ </li>
76
+ </ul>
77
+ </fieldset>
app/design/adminhtml/default/default/template/barclayspspid/motoinfo.phtml ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <style>
2
+ ul.cardinfo li {
3
+ list-style:none;
4
+ }
5
+ </style>
6
+ <?php $data = $this->getStuff(); ?>
7
+
8
+
9
+ <h2>Paid via Barclays PSPID</h2>
10
+
11
+ <h4>Order Info</h4>
12
+ <ul class="cardinfo">
13
+ <?php if ($data['Order ID']) { ?>
14
+ <li><strong>Order ID</strong> :- <?php echo $data['Order ID']; ?></li>
15
+ <?php } ?>
16
+ <?php if ($data['Payment ID']) { ?>
17
+ <li><strong>Payment ID</strong> :- <?php echo $data['Payment ID']; ?></li>
18
+ <?php } ?>
19
+ <?php if ($data['Payment Currency']) { ?>
20
+ <li><strong>Payment Currency</strong> :- <?php echo $data['Payment Currency']; ?></li>
21
+ <?php } ?>
22
+ <?php if ($data['Amount Paid']) { ?>
23
+ <li><strong>Amount Paid</strong> :- <?php echo $data['Amount Paid']; ?></li>
24
+ <?php } ?>
25
+ <?php if ($data['Transaction Date']) { ?>
26
+ <li><strong>Transaction Date</strong> :- <?php echo $data['Transaction Date']; ?></li>
27
+ <?php } ?>
28
+ </ul>
29
+
30
+ <h4>Card Info</h4>
31
+ <ul class="cardinfo">
32
+ <?php if ($data['Payment Method']) { ?>
33
+ <li><strong>Payment Method</strong> :- <?php echo $data['Payment Method']; ?></li>
34
+ <?php } ?>
35
+ <?php if ($data['Credit Card Number (Masked)']) { ?>
36
+ <li><strong>Credit Card Number (Masked)</strong> :- <?php echo $data['Credit Card Number (Masked)']; ?></li>
37
+ <?php } ?>
38
+ <?php if ($data['Card Holder Name']) { ?>
39
+ <li><strong>Card Holder Name</strong> :- <?php echo $data['Card Holder Name']; ?></li>
40
+ <?php } ?>
41
+ <?php if ($data['Payment Method']) { ?>
42
+ <li><strong>Payment Method</strong> :- <?php echo $data['Payment Method']; ?></li>
43
+ <?php } ?>
44
+ <?php if ($data['Card Holders Bank']) { ?>
45
+ <li><strong>Card Holders Bank</strong> :- <?php echo $data['Card Holders Bank']; ?></li>
46
+ <?php } ?>
47
+ <?php if ($data['Bank Country of Origin']) { ?>
48
+ <li><strong>Bank Country of Origin</strong> :- <?php echo $data['Bank Country of Origin']; ?></li>
49
+ <?php } ?>
50
+ <?php if ($data['Amount Paid']) { ?>
51
+ <li><strong>Amount Paid</strong> :- <?php echo $data['Amount Paid']; ?></li>
52
+ <?php } ?>
53
+ <?php if ($data['Authorization Code']) { ?>
54
+ <li><strong>Authorization Code</strong> :- <?php echo $data['Authorization Code']; ?></li>
55
+ <?php } ?>
56
+ </ul>
57
+
58
+ <h4>Security Info</h4>
59
+ <ul class="cardinfo">
60
+ <?php if ($data['CVC Check']) { ?>
61
+ <li><strong>CVC Check</strong> :- <?php echo $data['CVC Check']; ?></li>
62
+ <?php } ?>
63
+ <?php if ($data['AVS Check']) { ?>
64
+ <li><strong>AVS Check</strong> :- <?php echo $data['AVS Check']; ?></li>
65
+ <?php } ?>
66
+ <?php if ($data['AVS Address']) { ?>
67
+ <li><strong>AVS Address</strong> :- <?php echo $data['AVS Address']; ?></li>
68
+ <?php } ?>
69
+ <?php if ($data['AVS Postcode']) { ?>
70
+ <li><strong>AVS Postcode</strong> :- <?php echo $data['AVS Postcode']; ?></li>
71
+ <?php } ?>
72
+ <?php if ($data['Order Placed from']) { ?>
73
+ <li><strong>Order Placed from</strong> :- <?php echo $data['Order Placed from']; ?></li>
74
+ <?php } ?>
75
+ <?php if ($data['IP address of Payee']) { ?>
76
+ <li><strong>IP address of Payee</strong> :- <?php echo $data['IP address of Payee']; ?></li>
77
+ <?php } ?>
78
+ </ul>
app/etc/modules/Juicy_Barclayspspid.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <config>
2
+ <modules>
3
+ <Juicy_Barclayspspid>
4
+ <version>1.0.0.0</version>
5
+ <active>true</active>
6
+ <codePool>local</codePool>
7
+ </Juicy_Barclayspspid>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Juicy_BarclaysPSPID</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license>GPL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Barclays PSPID Payment gateway solution from Juicy Media</summary>
10
+ <description>Barclays PSPID Payment gateway solution from Juicy Media</description>
11
+ <notes>Initial Release from Juicy Media</notes>
12
+ <authors><author><name>Juicy Media</name><user>juicymedia</user><email>jonathan.webb@juicymedia.co.uk</email></author></authors>
13
+ <date>2015-01-16</date>
14
+ <time>14:16:12</time>
15
+ <contents><target name="magelocal"><dir name="Juicy"><dir name="Barclayspspid"><dir name="Block"><file name="Dynamic.php" hash="4137b57f1088eaf9545e428a1152a799"/><file name="Failure.php" hash="db0b7261cd536d40c8bedd5416ee26bf"/><file name="Form.php" hash="270a5d2ac3b22c0a3c728484e7365246"/><file name="Info.php" hash="a5270fe895b83b71ad69c764ae765821"/><file name="Motoform.php" hash="e33033bf4b33849946c9cffe8aae5a9a"/><file name="Motoinfo.php" hash="4b541df7928a24aa82db5adf72d03c2b"/><file name="Redirect.php" hash="3907d29d14d5599db3f8b400a9bae2c9"/></dir><dir name="Helper"><file name="Data.php" hash="383d65622ea68829ec87492a45f4e995"/></dir><dir name="Model"><file name="Barclaysmoto.php" hash="a818adaf0c5eb82ecc61a00a8fd6b8f4"/><file name="Barclayspspid.php" hash="b4de1b038e03515cbe0087693d97dbc6"/><file name="Config.php" hash="001ecb5f3c2b58300f7529269ff68e0f"/><file name="Directlink.php" hash="9cdb8ca9e53549f179e7059e5061bded"/><dir name="Resource"><dir name="Eav"><dir name="Mysql4"><file name="Setup.php" hash="bdde91e908925e167663c66ee6919b28"/></dir></dir></dir><file name="Session.php" hash="50dd3a74fda13bc71684ddeca782e122"/><dir name="Source"><file name="CardcodeAction.php" hash="1689f56c8d57a7d863e4da968b7b9214"/><file name="CreditCards.php" hash="9505bf8f0113b0bd68041472abce597a"/><file name="CurrencyAction.php" hash="56641ce30591dcd0a5c70b543d40a550"/><file name="PaymentAction.php" hash="02b8f864cc8233bea5e2bf26134c655a"/></dir><file name="Submitform.php" hash="eb0283ca0851619e5453d0f83447913e"/></dir><dir name="controllers"><file name="PaymentController.php" hash="7700f53b12e10a758b48256882cd8d51"/><file name="RefundController.php" hash="515f179ce5c2e43119a5ee1e1101d8c8"/></dir><dir name="etc"><dir name="adminhtml"><file name="acl.xml" hash="0f201b5b96868ac9e06cb77a6c3efd9e"/><file name="system.xml" hash="fc3960b4818b5fb5af1d38131d87f311"/></dir><file name="adminhtml.xml" hash="7268a179979e78b27e41a845124e9b92"/><file name="config.xml" hash="3b05e5982f23a59b7ce35e0a0a43c1c4"/><file name="system.xml" hash="d7a0cbb7b7651b8414c37b6af10e5f3c"/></dir><dir name="sql"><dir name="barclayspspid_setup"><file name="mysql4-install-1.0.0.php" hash="0889601005384f8415cbd428a22a60e7"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><file name="barclayspspid" hash=""/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Juicy_Barclayspspid.xml" hash="f4cb22251d52a8e0d9de86775b74690a"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="template"><dir name="barclayspspid"><file name="info.phtml" hash="167c33dfa221b8c50607dee92298f69b"/><file name="motoform.phtml" hash="d8a2b2552a47c883eacb89b8de7916ef"/><file name="motoinfo.phtml" hash="446732fbd64dd4a6d2ccc7305e9e4945"/></dir></dir></dir></dir></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><package><name/><channel>connect.magentocommerce.com/core</channel><min/><max/></package></required></dependencies>
18
+ </package>