PiPPayments - Version 0.1.0.3

Version Notes

Module updated to include:-

1) Logo and Information Link
2) Simplify Configuration
3) Sort Order configuration option

Download this release

Release Info

Developer PiPPayments
Extension PiPPayments
Version 0.1.0.3
Comparing to
See all releases


Version 0.1.0.3

app/code/community/PiP/PiPPayments/Helper/Data.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ class PiP_PiPPayments_Helper_Data extends Mage_Core_Helper_Abstract {}
app/code/community/PiP/PiPPayments/Model/Standard.php ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * PiP Payments Module Model
5
+ *
6
+ * Just redirects the user to the payment modules controller
7
+ *
8
+ */
9
+
10
+ class PiP_PiPPayments_Model_Standard extends Mage_Payment_Model_Method_Abstract {
11
+ protected $_code = 'pippayments';
12
+
13
+ // Redirect URL when place order is clicked
14
+ public function getOrderPlaceRedirectUrl() {
15
+
16
+ return Mage::getURL('pippayments/payment/redirect');
17
+
18
+ }
19
+
20
+ }
app/code/community/PiP/PiPPayments/controllers/PaymentController.php ADDED
@@ -0,0 +1,170 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * PiP Payment Module - Payment Controller
5
+ *
6
+ * Generates and redirects the customer to the PIP Bill Page
7
+ * Also handles callback from PiP
8
+ *
9
+ */
10
+
11
+ class PiP_PiPPayments_PaymentController extends Mage_Core_Controller_Front_Action {
12
+
13
+ // PiP URLs
14
+ // Production
15
+ protected $_url = 'https://pip-it.net/os/mgr/create';
16
+ // Testing
17
+ protected $_test = 'https://uat.pip-it.net/os/mgr/create';
18
+
19
+
20
+ // Handle PiP Callbacks
21
+ public function callbackAction() {
22
+
23
+ $request = $this->getRequest();
24
+ if (!$request->isPost() or !is_numeric($request->getPost('BARCODE'))) {
25
+ // Error header
26
+ $this->getResponse()->setHttpResponseCode(400); // Bad request
27
+ }else{
28
+ // Get out Post Data and Settings
29
+ $barcode = $request->getPost('BARCODE');
30
+ $order_id = $request->getPost('VENDOR_ORDER_ID');
31
+ $sign = $request->getPost('SIGN');
32
+ // PiP Merchant Secret
33
+ $secret = Mage::getStoreConfig('payment/pippayments/secret');
34
+ // Send notification after successfull callback?
35
+ $notify = Mage::getStoreConfig('payment/pippayments/notify');
36
+
37
+ $request_type = '';
38
+ $x_date = '';
39
+
40
+ // Determine request type - CREATE, PAID, EXPIRE
41
+ if (is_numeric($request->getPost('CREATE_DATE'))){
42
+ $request_type = 'create';
43
+ $x_date = $request->getPost('CREATE_DATE');
44
+ } else if (is_numeric($request->getPost('PAID_DATE'))) {
45
+ $request_type = 'paid';
46
+ $x_date = $request->getPost('PAID_DATE');
47
+ } else if (is_numeric($request->getPost('EXPIRE_DATE'))) {
48
+ $request_type = 'expire';
49
+ $x_date = $request->getPost('EXPIRE_DATE');
50
+ }
51
+
52
+
53
+ // Get our order
54
+ $order = new Mage_Sales_Model_Order();
55
+ $order->loadByIncrementId($order_id);
56
+
57
+
58
+ if ($request_type == '') {
59
+ Mage::log('PIP Callback - Invalid Callback');
60
+ $this->getResponse()->setHttpResponseCode(400); // Bad request
61
+ }else {
62
+
63
+ // Authenticate
64
+ $auth = sha1($barcode.$order_id.$x_date.$secret);
65
+
66
+ // Order comment for notification
67
+ $order_comment = NULL;
68
+
69
+ // Ensure Authenticated request
70
+ if ($auth == $sign) {
71
+ // Auth OK
72
+ switch ($request_type) {
73
+ case 'create':
74
+ // Mark Order as Pending Payment - PIP Create
75
+ $order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, 'PIP Status: PENDING, PIP Barcode: '.$barcode, $notify)->save();
76
+ $order_comment = 'Status: Pending, Barcode: '.$barcode;
77
+ break;
78
+ case 'paid':
79
+ // Mark Order as Paid - PIP Paid
80
+ $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'PIP Status: PAID, PIP Barcode: '.$barcode, $notify )->save();
81
+ $order_comment = 'Status: Paid, Barcode: '.$barcode;
82
+ break;
83
+ case 'expire':
84
+ // Mark Order as Cencelled - PIP Expire
85
+ $order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'PIP Status: EXPIRED, PIP Barcode: '.$barcode, $notify)->save();
86
+ $order_comment = 'Status: Expired, Barcode: '.$barcode;
87
+ break;
88
+ }
89
+
90
+ // Send notification?
91
+ if ($notify == TRUE) {
92
+ $order->sendOrderUpdateEmail($notify, $order_comment); // $notify is boolean
93
+ }
94
+
95
+ $this->getResponse()->setHttpResponseCode(200);
96
+ }else {
97
+ // Auth failure
98
+ Mage::log('PIP Callback - Auth Failure');
99
+ $this->getResponse()->setHttpResponseCode(403); // Forbidden request
100
+ }
101
+ }
102
+ }
103
+
104
+ }
105
+
106
+ // Redirect Action - Has to be a double redirect as the order doesn't exist in the cart checkout
107
+ public function redirectAction() {
108
+ // Get Order from session details
109
+ $order = new Mage_Sales_Model_Order();
110
+ $order_id = Mage::getSingleton('checkout/session')->getLastRealOrderId();
111
+ $order->loadByIncrementId($order_id);
112
+
113
+
114
+ // Extract what we need from the order
115
+ $order_value = round($order->getGrandTotal(), 2);
116
+ $order_value = number_format($order_value, 2, '.', '');
117
+ $currency = $order->getOrderCurrencyCode();
118
+
119
+ // Get Order Email and Phone
120
+ $email = $order->getCustomerEmail();
121
+ $tel = $order->getBillingAddress()->getTelephone();
122
+
123
+ // Get Vendor Name and Secret from settings
124
+ $vendor_name = Mage::getStoreConfig('payment/pippayments/vendor_name');
125
+ $secret = Mage::getStoreConfig('payment/pippayments/secret');
126
+
127
+ // Standard Checkout URLs
128
+ $reply_url = Mage::getURL('checkout/onepage/success');
129
+ $cancel_url = Mage::getURL('checkout/onepage/failure');
130
+
131
+
132
+ // Generate signature
133
+ $sign = sha1($vendor_name.$order_value.$email.$order_id.$secret);
134
+
135
+ // Base URL
136
+ $url = $this->_url;
137
+
138
+ // Test Mode?
139
+ /*if (Mage::getStoreConfig('payment/pippayments/test')) {
140
+ $url = $this->_test;
141
+ }*/
142
+
143
+ // GET Params
144
+ $params = array(
145
+ 'VENDOR_NAME' => $vendor_name,
146
+ 'VALUE' => $order_value,
147
+ 'CUST_EMAIL' => $email,
148
+ 'VENDOR_ORDER_ID' => $order_id,
149
+ 'SIGN' => $sign,
150
+ 'REPLY_URL' => $reply_url,
151
+ 'CANCEL_URL' => $cancel_url,
152
+ 'CURRENCY' => $currency,
153
+ 'MOBILE' => $tel,
154
+ );
155
+
156
+ // Build URL string
157
+ $string = '';
158
+ foreach($params as $key=>$value) { $string .= $key.'='.$value.'&'; }
159
+ $string = rtrim($string, '&');
160
+
161
+ $url .='?'.$string;
162
+
163
+ // Redirect to url
164
+ $this->getResponse()->setRedirect($url);
165
+
166
+ // DEBUG - Output URL as link
167
+ //echo '<a href="'.$url.'">'.$url.'</a>';
168
+
169
+ }
170
+ }
app/code/community/PiP/PiPPayments/etc/config.xml ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <PiP_PiPPayments>
5
+ <version>0.1.0.3</version>
6
+ </PiP_PiPPayments>
7
+ </modules>
8
+
9
+ <global>
10
+ <fieldsets>
11
+ <sales_convert_quote_payment>
12
+ <pip_status>
13
+ <to_order_payment>*</to_order_payment>
14
+ </pip_status>
15
+ <pip_barcode>
16
+ <to_order_payment>*</to_order_payment>
17
+ </pip_barcode>
18
+ </sales_convert_quote_payment>
19
+ </fieldsets>
20
+
21
+ <helpers>
22
+ <pippayments>
23
+ <class>PiP_PiPPayments_Helper</class>
24
+ </pippayments>
25
+ </helpers>
26
+
27
+ <blocks>
28
+ <pippayments>
29
+ <class>PiP_PiPPayments_Block</class>
30
+ </pippayments>
31
+ </blocks>
32
+
33
+ <models>
34
+ <pippayments>
35
+ <class>PiP_PiPPayments_Model</class>
36
+ </pippayments>
37
+ </models>
38
+
39
+
40
+ </global>
41
+
42
+ <default>
43
+ <payment>
44
+ <pippayments>
45
+ <active>1</active>
46
+ <model>pippayments/standard</model>
47
+ <order_status>pending</order_status>
48
+ <title>PiP Payments</title>
49
+ <allowspecific>0</allowspecific>
50
+ <payment_action>sale</payment_action>
51
+ </pippayments>
52
+ </payment>
53
+ </default>
54
+
55
+ <frontend>
56
+ <routers>
57
+ <pippayments>
58
+ <use>standard</use>
59
+ <args>
60
+ <module>PiP_PiPPayments</module>
61
+ <frontName>pippayments</frontName>
62
+ </args>
63
+ </pippayments>
64
+ </routers>
65
+ </frontend>
66
+ </config>
app/code/community/PiP/PiPPayments/etc/system.xml ADDED
@@ -0,0 +1,118 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <sections>
4
+ <payment>
5
+ <groups>
6
+ <pippayments translate="label" module="pippayments">
7
+
8
+ <label>PiP Payments Module</label>
9
+ <sort_order>1000</sort_order>
10
+ <show_in_default>1</show_in_default>
11
+ <show_in_website>1</show_in_website>
12
+ <show_in_store>0</show_in_store>
13
+ <comment><![CDATA[Enter your PiP Payments details below and be sure to set the <b>callback</b> to <em>http://www.example.com/pippayments/callback</em> in your PiP Merchant Settings.]]></comment>
14
+ <fields>
15
+ <title translate="label">
16
+ <label>Title</label>
17
+ <frontend_type>text</frontend_type>
18
+ <show_in_default>1</show_in_default>
19
+ <show_in_website>1</show_in_website>
20
+ <show_in_store>0</show_in_store>
21
+ <sort_order>1</sort_order>
22
+ </title>
23
+
24
+ <active translate="label">
25
+ <label>Enabled</label>
26
+ <frontend_type>select</frontend_type>
27
+ <source_model>adminhtml/system_config_source_yesno</source_model>
28
+ <show_in_default>1</show_in_default>
29
+ <show_in_website>1</show_in_website>
30
+ <show_in_store>0</show_in_store>
31
+ <sort_order>2</sort_order>
32
+ </active>
33
+
34
+ <vendor_name>
35
+ <label>Merchant ID</label>
36
+ <frontend_type>text</frontend_type>
37
+ <sort_order>3</sort_order>
38
+ <show_in_default>1</show_in_default>
39
+ <show_in_website>1</show_in_website>
40
+ <show_in_store>0</show_in_store>
41
+ </vendor_name>
42
+
43
+ <secret>
44
+ <label>Secret</label>
45
+ <frontend_type>text</frontend_type>
46
+ <sort_order>4</sort_order>
47
+ <show_in_default>1</show_in_default>
48
+ <show_in_website>1</show_in_website>
49
+ <show_in_store>0</show_in_store>
50
+ </secret>
51
+
52
+ <notify translate="label">
53
+ <label>Send Notifications</label>
54
+ <frontend_type>select</frontend_type>
55
+ <source_model>adminhtml/system_config_source_yesno</source_model>
56
+ <show_in_default>1</show_in_default>
57
+ <show_in_website>1</show_in_website>
58
+ <show_in_store>0</show_in_store>
59
+ <sort_order>5</sort_order>
60
+ </notify>
61
+
62
+ <!-- <test translate="label">
63
+ <label>Enable Test Mode</label>
64
+ <frontend_type>select</frontend_type>
65
+ <source_model>adminhtml/system_config_source_yesno</source_model>
66
+ <show_in_default>1</show_in_default>
67
+ <show_in_website>1</show_in_website>
68
+ <show_in_store>0</show_in_store>
69
+ <sort_order>6</sort_order>
70
+ </test> -->
71
+
72
+ <order_status translate="label">
73
+ <label>New order status</label>
74
+ <frontend_type>select</frontend_type>
75
+ <source_model>adminhtml/system_config_source_order_status</source_model>
76
+ <show_in_default>1</show_in_default>
77
+ <show_in_website>1</show_in_website>
78
+ <show_in_store>0</show_in_store>
79
+ <sort_order>7</sort_order>
80
+ </order_status>
81
+
82
+ <allowspecific translate="label">
83
+ <label>Payment from applicable countries</label>
84
+ <frontend_type>allowspecific</frontend_type>
85
+ <source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
86
+ <show_in_default>1</show_in_default>
87
+ <show_in_website>1</show_in_website>
88
+ <show_in_store>1</show_in_store>
89
+ <sort_order>8</sort_order>
90
+ </allowspecific>
91
+
92
+ <specificcountry translate="label">
93
+ <label>Payment from Specific countries</label>
94
+ <frontend_type>multiselect</frontend_type>
95
+ <source_model>adminhtml/system_config_source_country</source_model>
96
+ <show_in_default>1</show_in_default>
97
+ <show_in_website>1</show_in_website>
98
+ <show_in_store>1</show_in_store>
99
+ <sort_order>9</sort_order>
100
+ </specificcountry>
101
+
102
+ <sort_order translate="label">
103
+ <label>Sort Order</label>
104
+ <frontend_type>text</frontend_type>
105
+ <sort_order>9</sort_order>
106
+ <show_in_default>1</show_in_default>
107
+ <show_in_website>1</show_in_website>
108
+ <show_in_store>1</show_in_store>
109
+ <frontend_class>validate-number</frontend_class>
110
+ </sort_order>
111
+
112
+
113
+ </fields>
114
+ </pippayments>
115
+ </groups>
116
+ </payment>
117
+ </sections>
118
+ </config>
app/design/frontend/base/default/template/checkout/onepage/payment/methods.phtml ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Magento
4
+ *
5
+ * NOTICE OF LICENSE
6
+ *
7
+ * This source file is subject to the Academic Free License (AFL 3.0)
8
+ * that is bundled with this package in the file LICENSE_AFL.txt.
9
+ * It is also available through the world-wide-web at this URL:
10
+ * http://opensource.org/licenses/afl-3.0.php
11
+ * If you did not receive a copy of the license and are unable to
12
+ * obtain it through the world-wide-web, please send an email
13
+ * to license@magento.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.magento.com for more information.
20
+ *
21
+ * @category design
22
+ * @package base_default
23
+ * @copyright Copyright (c) 2006-2015 X.commerce, Inc. (http://www.magento.com)
24
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
25
+ */
26
+ ?>
27
+ <?php
28
+ /**
29
+ * One page checkout payment methods
30
+ *
31
+ * @var $this Mage_Checkout_Block_Onepage_Payment_Methods
32
+ */
33
+ ?>
34
+
35
+ <?php
36
+ $methods = $this->getMethods();
37
+ $oneMethod = count($methods) <= 1;
38
+ ?>
39
+ <?php if (empty($methods)): ?>
40
+ <dt>
41
+ <?php echo $this->__('No Payment Methods') ?>
42
+ </dt>
43
+ <?php else:
44
+ foreach ($methods as $_method):
45
+ $_code = $_method->getCode();
46
+ ?>
47
+ <dt id="dt_method_<?php echo $_code ?>">
48
+ <?php if(!$oneMethod): ?>
49
+ <input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" title="<?php echo $this->escapeHtml($_method->getTitle()) ?>" onclick="payment.switchMethod('<?php echo $_code ?>')"<?php if($this->getSelectedMethodCode()==$_code): ?> checked="checked"<?php endif; ?> class="radio" />
50
+ <?php else: ?>
51
+ <span class="no-display"><input id="p_method_<?php echo $_code ?>" value="<?php echo $_code ?>" type="radio" name="payment[method]" checked="checked" class="radio" /></span>
52
+ <?php $oneMethod = $_code; ?>
53
+ <?php endif; ?>
54
+ <label for="p_method_<?php echo $_code ?>"><?php echo $this->escapeHtml($this->getMethodTitle($_method)) ?> <?php echo $this->getMethodLabelAfterHtml($_method) ?>
55
+ <?php if ($_code =='pippayments'): ?>
56
+ <img src="/media/pip.png" alt='PIP' style="height: 28px; vertical-align: text-bottom; padding-right: 5px;"/>
57
+ <a href="http://www.pippayments.com/customers" target="_blank"><small>What's this?</small></a>
58
+ <?php endif; ?>
59
+
60
+ </label>
61
+ </dt>
62
+ <?php if ($html = $this->getPaymentMethodFormHtml($_method)): ?>
63
+ <dd id="dd_method_<?php echo $_code ?>">
64
+ <?php echo $html; ?>
65
+ </dd>
66
+ <?php endif; ?>
67
+ <?php endforeach;
68
+ endif;
69
+ ?>
70
+ <?php echo $this->getChildChildHtml('additional'); ?>
71
+ <script type="text/javascript">
72
+ //<![CDATA[
73
+ <?php echo $this->getChildChildHtml('scripts'); ?>
74
+ payment.init();
75
+ <?php if (is_string($oneMethod)): ?>
76
+ payment.switchMethod('<?php echo $oneMethod ?>');
77
+ <?php endif; ?>
78
+ //]]>
79
+ </script>
app/etc/modules/PiP_Payments.xml ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <PiP_PiPPayments>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+
8
+ <depends>
9
+ <Mage_Payment />
10
+ </depends>
11
+ </PiP_PiPPayments>
12
+ </modules>
13
+ </config>
media/pip.png ADDED
Binary file
package.xml ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>PiPPayments</name>
4
+ <version>0.1.0.3</version>
5
+ <stability>stable</stability>
6
+ <license>GPL</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary>Now you can accept cash payments for sales on your website. No cards or accounts required. Customers simply order online and pay offline.</summary>
10
+ <description>Now you can accept cash payments for sales on your website. Customers don&#x2019;t need cards or accounts to shop with you, they simply order online and pay offline through our network of secure payment locations e.g. Post Offices.&#xD;
11
+ PiP opens up the world of eCommerce to the millions of unbanked and underbanked people who would love to shop online but can&#x2019;t. PiP also offers a safe, secure and straightforward way for people who have security or privacy concerns - and don&#x2019;t want to risk their card details online - to shop with you.&#xD;
12
+ Integrating PiP with your website is a simple process. Within half an hour your website could be open to millions more customers and you could be selling to a market that is currently - and unnecessarily - underserved and excluded.&#xD;
13
+ PiP is available to customers in the UK with payments being made through 11,500 UK Post Offices, and will be available in Ireland in the coming months and further afield in 2016.&#xD;
14
+ </description>
15
+ <notes>Module updated to include:-&#xD;
16
+ &#xD;
17
+ 1) Logo and Information Link&#xD;
18
+ 2) Simplify Configuration&#xD;
19
+ 3) Sort Order configuration option</notes>
20
+ <authors><author><name>PiPPayments</name><user>JulescalPiP</user><email>julian.callaghan@pippayments.com</email></author></authors>
21
+ <date>2016-02-22</date>
22
+ <time>09:54:07</time>
23
+ <contents><target name="magecommunity"><dir name="PiP"><dir name="PiPPayments"><dir name="Helper"><file name="Data.php" hash="20977906ff9391d969d3e9434872039c"/></dir><dir name="Model"><file name="Standard.php" hash="7f4fd9c7f1a92172db4b9c54f071d2fc"/></dir><dir name="controllers"><file name="PaymentController.php" hash="a730425053f50269b5dbe3a474359304"/></dir><dir name="etc"><file name="config.xml" hash="143c1ec746046076ee53825c9887df67"/><file name="system.xml" hash="5ef9a8576da63b04082c9f8363ab3519"/></dir></dir></dir></target><target name="magemedia"><dir name="."><file name="pip.png" hash="cd6726b2175401622d34a3c7ce427fd1"/></dir></target><target name="mageetc"><dir name="modules"><file name="PiP_Payments.xml" hash="f9dc70aac5c9ecda6f076256826bbc8e"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="checkout"><dir name="onepage"><dir name="payment"><file name="methods.phtml" hash="32751cf70bdf624b050311082ae6ca68"/></dir></dir></dir></dir></dir></dir></dir></target></contents>
24
+ <compatible/>
25
+ <dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.9.0</min><max>1.9.999</max></package></required></dependencies>
26
+ </package>