SecurePay_SecureFrame - Version 1.1.0

Version Notes

PayPal payment choice added.

Download this release

Release Info

Developer Steve Katsaras
Extension SecurePay_SecureFrame
Version 1.1.0
Comparing to
See all releases


Code changes from version 1.0.0 to 1.1.0

app/code/local/SecurePay/SecureFrame/Model/Cardtype.php CHANGED
@@ -1,16 +1,17 @@
1
  <?php
2
  class SecurePay_SecureFrame_Model_Cardtype
3
  {
4
- public function toOptionArray()
5
- {
6
- $options = array(
7
  array('value'=>'VISA', 'label'=>'Visa'),
8
  array('value'=>'AMEX', 'label'=>'American Express'),
9
  array('value'=>'MASTERCARD', 'label'=>'MasterCard'),
10
  array('value'=>'DINERS', 'label'=>'Diners'),
11
- array('value'=>'JCB', 'label'=>'JCB')
12
- );
13
- return $options;
 
14
  }
15
  }
16
- ?>
1
  <?php
2
  class SecurePay_SecureFrame_Model_Cardtype
3
  {
4
+ public function toOptionArray()
5
+ {
6
+ $options = array(
7
  array('value'=>'VISA', 'label'=>'Visa'),
8
  array('value'=>'AMEX', 'label'=>'American Express'),
9
  array('value'=>'MASTERCARD', 'label'=>'MasterCard'),
10
  array('value'=>'DINERS', 'label'=>'Diners'),
11
+ array('value'=>'JCB', 'label'=>'JCB'),
12
+ array('value'=>'PAYPAL', 'label'=>'PayPal')
13
+ );
14
+ return $options;
15
  }
16
  }
17
+ ?>
app/code/local/SecurePay/SecureFrame/Model/Standard.php CHANGED
@@ -25,6 +25,21 @@ class SecurePay_SecureFrame_Model_Standard extends Mage_Payment_Model_Method_Abs
25
  public function authorize(Varien_Object $payment, $amount)
26
  {
27
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  /**
30
  * Instantiate state and set it to state object
25
  public function authorize(Varien_Object $payment, $amount)
26
  {
27
  }
28
+
29
+ /**
30
+ * Check method for processing with base currency
31
+ *
32
+ * @param string $currencyCode
33
+ * @return boolean
34
+ */
35
+ public function canUseForCurrency($currencyCode)
36
+ {
37
+ $currency_accepted = $this->getConfigData('currency_accepted');
38
+ if ($currency_accepted == "M" || ($currency_accepted == "A" && $currencyCode == "AUD")) {
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
 
44
  /**
45
  * Instantiate state and set it to state object
app/code/local/SecurePay/SecureFrame/controllers/PaymentController.php CHANGED
@@ -5,7 +5,7 @@ class SecurePay_SecureFrame_PaymentController extends Mage_Core_Controller_Front
5
  public function redirectAction() {
6
  $model = Mage::getSingleton('secureframe/standard');
7
  if($model->getConfigData('test_mode') == true){
8
- $actionUrl = "https://payment.securepay.com.au/test/v2/invoice";
9
  }else{
10
  $actionUrl = "https://payment.securepay.com.au/live/v2/invoice";
11
  }
@@ -103,9 +103,22 @@ class SecurePay_SecureFrame_PaymentController extends Mage_Core_Controller_Front
103
  $fingerprint = sha1($merchant_id . '|' . $txnpassword . '|' . $txn_type . '|' . $orderId . '|' . $amount . '|' . $time);
104
  $card_types = str_replace(',', '|', $model->getConfigData('accepted_card_types'));
105
  $currency_accepted = $model->getConfigData('currency_accepted');
106
- $shipping = $order->getShippingDescription();
107
- $billing_meta = "none";
108
- $delivery_meta = "none";
 
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
  $sfRequest = array(
111
  "merchant_id" => $merchant_id,
@@ -115,7 +128,7 @@ class SecurePay_SecureFrame_PaymentController extends Mage_Core_Controller_Front
115
  "txn_type" => $txn_type,
116
  "primary_ref" => $orderId,
117
  "amount" => $amount,
118
- "currency" => ($currency_accepted === 'M') ? $order->getBaseCurrency()->getCurrencyCode() : 'AUD',
119
  "template" => $model->getConfigData('template'),
120
  "confirmation" => "no",
121
  "return_url" => Mage::getBaseUrl() . "secureframe/payment/response?",
@@ -123,35 +136,27 @@ class SecurePay_SecureFrame_PaymentController extends Mage_Core_Controller_Front
123
  "return_url_target" => "parent",
124
  "return_url_text" => "Continue",
125
  "cancel_url" => Mage::getBaseUrl() . "secureframe/payment/cancel",
126
- "card_types" => $card_types,
127
  "page_style_url" => $model->getConfigData('stylesheet_url'),
128
- "meta" => $this->getMetaData($order)
 
 
 
129
  );
130
  return $sfRequest;
131
  }
132
-
133
- public function getMetaData($order) {
134
- $shipping_meta = $order->getShippingDescription();
135
- $billing_meta = "none";
136
- $delivery_meta = "none";
137
-
138
- $billing = $order->getBillingAddress();
139
- if (!empty($billing)) {
140
- $billing_meta = $billing->getFirstname() . " " . $billing->getLastname() . "," . $billing->getCompany() . "," .
141
- $billing->getStreet(1) . " " . $billing->getCity() . "," .
142
- $billing->getRegion() . " " . $billing->getPostcode() . " " . $billing->getCountry();
143
- }
144
-
145
- $shipping = $order->getShippingAddress();
146
- if (!empty($shipping)) {
147
 
148
-
149
- $delivery_meta = $shipping->getFirstname() . " " . $shipping->getLastname() . "," . $shipping->getCompany() . "," .
150
- $shipping->getStreet(1) . " " . $shipping->getCity() . "," .
151
- $shipping->getRegion() . " " . $shipping->getPostcode() . " " . $shipping->getCountry();
152
- }
153
-
154
- return "cart_post_method_eq_$shipping_meta|cart_billing_address_eq_$billing_meta|cart_delivery_address_eq_$delivery_meta";
155
-
 
 
156
  }
 
 
157
  }
5
  public function redirectAction() {
6
  $model = Mage::getSingleton('secureframe/standard');
7
  if($model->getConfigData('test_mode') == true){
8
+ $actionUrl = "http://payment.securepay.com.au/test/v2/invoice";
9
  }else{
10
  $actionUrl = "https://payment.securepay.com.au/live/v2/invoice";
11
  }
103
  $fingerprint = sha1($merchant_id . '|' . $txnpassword . '|' . $txn_type . '|' . $orderId . '|' . $amount . '|' . $time);
104
  $card_types = str_replace(',', '|', $model->getConfigData('accepted_card_types'));
105
  $currency_accepted = $model->getConfigData('currency_accepted');
106
+
107
+ $shipping_meta = $order->getShippingDescription();
108
+
109
+ $billing = $order->getBillingAddress();
110
+ if (!empty($billing)) {
111
+ $billing_country = $billing->getCountry();
112
+ $billing_meta = $this->getAddressMetaData($billing);
113
+ }
114
+
115
+ $delivery = $order->getShippingAddress();
116
+ if (!empty($delivery)) {
117
+ $delivery_country = $delivery->getCountry();
118
+ $delivery_meta = $this->getAddressMetaData($delivery);
119
+ }
120
+
121
+ $cart_name = "Magento SecureFrame";
122
 
123
  $sfRequest = array(
124
  "merchant_id" => $merchant_id,
128
  "txn_type" => $txn_type,
129
  "primary_ref" => $orderId,
130
  "amount" => $amount,
131
+ "currency" => ($currency_accepted === 'M') ? $order->getBaseCurrency()->getCurrencyCode() : 'AUD',
132
  "template" => $model->getConfigData('template'),
133
  "confirmation" => "no",
134
  "return_url" => Mage::getBaseUrl() . "secureframe/payment/response?",
136
  "return_url_target" => "parent",
137
  "return_url_text" => "Continue",
138
  "cancel_url" => Mage::getBaseUrl() . "secureframe/payment/cancel",
139
+ "card_types" => $card_types,
140
  "page_style_url" => $model->getConfigData('stylesheet_url'),
141
+ "billing_country" => $billing_country,
142
+ "delivery_country" => $delivery_country,
143
+ "email_address" => strval($order->getCustomerEmail()),
144
+ "meta" => "cart_name_eq_$cart_name|cart_post_method_eq_$shipping_meta|cart_billing_address_eq_$billing_meta|cart_delivery_address_eq_$delivery_meta"
145
  );
146
  return $sfRequest;
147
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
+
150
+ public function getAddressMetaData($address_details) {
151
+ if (!empty($address_details)) {
152
+
153
+ return $address_details->getFirstname() . " " . $address_details->getLastname() . ", " . $address_details->getCompany() . ", " .
154
+ $address_details->getStreet(1) . " " . $address_details->getCity() . ", " .
155
+ $address_details->getRegion() . " " . $address_details->getPostcode() . " " . $address_details->getCountry();
156
+ } else {
157
+ return "no details available";
158
+ }
159
  }
160
+
161
+
162
  }
app/code/local/SecurePay/SecureFrame/controllers/PaymentController.php~ DELETED
@@ -1,128 +0,0 @@
1
- <?php
2
-
3
- class SecurePay_SecureFrame_PaymentController extends Mage_Core_Controller_Front_Action {
4
- //Build secureframe request and display secureframe to customer.
5
- public function redirectAction() {
6
- $model = Mage::getSingleton('secureframe/standard');
7
- if($model->getConfigData('test_mode') == true){
8
- $actionUrl = "https://payment.securepay.com.au/test/v2/invoice";
9
- }else{
10
- $actionUrl = "https://payment.securepay.com.au/live/v2/invoice";
11
- }
12
- $sfRequest = $this->buildSecureFrameRequest();
13
-
14
- $this->loadLayout();
15
- $this->getLayout()->getBlock('root')->setTemplate('page/1column.phtml');
16
- $block = $this->getLayout()->createBlock('Mage_Core_Block_Template','secureframe',array('template' => 'securepay/secureframe/redirect.phtml'));
17
- $block->setSfRequest($sfRequest);
18
- $block->setActionUrl($actionUrl);
19
- $this->getLayout()->getBlock('content')->append($block);
20
- $this->renderLayout();
21
- }
22
-
23
- // Recieve result url request or callback request.
24
- public function responseAction() {
25
- if($this->getRequest()->isPost()) {
26
- $orderId = $_POST["refid"];
27
- $amount = $_POST["amount"];
28
- $amount = (strrpos($amount, ".") === false) ? $amount : ($amount*100); // gotcha: when performing a 3D txn, if declined, the amount seems to come back decimal formatted; this will undoubtedly break fingerprint matching!
29
-
30
- $txnpw = Mage::getSingleton('secureframe/standard')->getConfigData('transaction_password');
31
-
32
- $localfingerprint = sha1($_POST["merchant"] . '|' . $txnpw . '|' . $orderId . '|' . $amount . '|' . $_POST["timestamp"] . '|' . $_POST["summarycode"]);
33
- if($localfingerprint === $_POST["fingerprint"]) {
34
- $validated = true;
35
- if($_POST["summarycode"] == "1") {
36
- $approved = true;
37
- }
38
- }
39
-
40
- if($validated) {
41
- $order = Mage::getModel('sales/order');
42
- $order->loadByIncrementId($orderId);
43
- $payment = $order->getPayment();
44
- if($_POST['afrescode']){
45
- $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'SecurePay Fraudguard Result - ' . $_POST['afrestext'] . ' - ' . $_POST['afrescode']);
46
- }
47
- if($approved){
48
- // Payment was successful, so update the order's state, send order email and move to the success page
49
- if(!$payment->getLastTransId() == $orderId . '_' . $_POST["txnid"]){
50
- $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true, 'Gateway has authorized the payment.', true);
51
- $expiry = explode("/", $_POST["expirydate"]);
52
- $payment->setTransactionId($orderId . '_' . $_POST["txnid"])
53
- ->setPreparedMessage('SecurePay SecureFrame')
54
- ->setIsTransactionClosed(0)
55
- ->registerCaptureNotification($_POST["amount"] / 100);
56
- $order->sendNewOrderEmail();
57
- $order->setEmailSent(true);
58
- $order->save();
59
- }
60
-
61
- Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
62
- }else{
63
- //Dont cancel order until they come back to magento, this lets them attempt payment again from within secureframe.
64
- if($_POST["callback"] == false){
65
- $order->cancel()->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Payment was declined. Reason: ' . $_POST["restext"] . '(' . $_POST["rescode"] . ')')->save();
66
- }
67
- Mage::getSingleton('checkout/session')->setErrorMessage("Your transaction was declined.");
68
- Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure'=>true));
69
- }
70
- }
71
- else {
72
- // There is a problem in the response we got
73
- Mage::getSingleton('checkout/session')->setErrorMessage("Transaction result could not be read.");
74
- Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure'=>true));
75
- }
76
- }
77
- else
78
- Mage_Core_Controller_Varien_Action::_redirect('');
79
- }
80
-
81
- // The cancel action is triggered when an order is to be cancelled
82
- public function cancelAction() {
83
- if (Mage::getSingleton('checkout/session')->getLastRealOrderId()) {
84
- $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
85
- if($order->getId()) {
86
- // Flag the order as 'cancelled' and save it
87
- $order->cancel()->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Customer canceled during payment.')->save();
88
- Mage_Core_Controller_Varien_Action::_redirect('checkout/cart');
89
- }
90
- }
91
- }
92
-
93
- public function buildSecureFrameRequest(){
94
- $order = Mage::getModel('sales/order')->loadByIncrementId(Mage::getSingleton('checkout/session')->getLastRealOrderId());
95
- $orderId = $order->getRealOrderId();
96
- $model = Mage::getSingleton('secureframe/standard');
97
-
98
- $merchant_id = $model->getConfigData('merchant_id');
99
- $amount = $order->getTotalDue() * 100;
100
- $txn_type = $model->getConfigData('transaction_type');
101
- $txnpassword = $model->getConfigData('transaction_password');
102
- $time = gmdate("YmdHis");
103
- $fingerprint = sha1($merchant_id . '|' . $txnpassword . '|' . $txn_type . '|' . $orderId . '|' . $amount . '|' . $time);
104
-
105
- $shipping = $order->getShippingDescription();
106
-
107
- $sfRequest = array(
108
- "merchant_id" => $merchant_id,
109
- "fp_timestamp" => $time,
110
- "fingerprint" => $fingerprint,
111
- "bill_name" => "transact",
112
- "txn_type" => $txn_type,
113
- "primary_ref" => $orderId,
114
- "amount" => $amount,
115
- "currency" => $order->getBaseCurrency()->getCurrencyCode(),
116
- "template" => $model->getConfigData('template'),
117
- "confirmation" => "no",
118
- "return_url" => Mage::getBaseUrl() . "secureframe/payment/response",
119
- "callback_url" => Mage::getBaseUrl() . "secureframe/payment/response?callback=true",
120
- "return_url_target" => "parent",
121
- "return_url_text" => "Continue",
122
- "cancel_url" => Mage::getBaseUrl() . "secureframe/payment/cancel",
123
- "page_style_url" => $model->getConfigData('stylesheet_url'),
124
- "meta" => "cart_post_method_eq_$shipping"
125
- );
126
- return $sfRequest;
127
- }
128
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/local/SecurePay/SecureFrame/etc/config.xml CHANGED
@@ -28,13 +28,13 @@
28
  <model>secureframe/standard</model>
29
  <active>0</active>
30
  <order_status>pending</order_status>
31
- <title>Credit Card (powered by SecurePay)</title>
32
  <payment_action>sale</payment_action>
33
  <test_mode>1</test_mode>
34
  <merchant_id></merchant_id>
35
  <transaction_password></transaction_password>
36
  <transaction_type></transaction_type>
37
- <template>iframe</template>
38
  <stylesheet_url></stylesheet_url>
39
  <allowspecific>0</allowspecific>
40
  <accepted_card_types>VISA,MASTERCARD</accepted_card_types>
28
  <model>secureframe/standard</model>
29
  <active>0</active>
30
  <order_status>pending</order_status>
31
+ <title>Payment via SecureFrame</title>
32
  <payment_action>sale</payment_action>
33
  <test_mode>1</test_mode>
34
  <merchant_id></merchant_id>
35
  <transaction_password></transaction_password>
36
  <transaction_type></transaction_type>
37
+ <template></template>
38
  <stylesheet_url></stylesheet_url>
39
  <allowspecific>0</allowspecific>
40
  <accepted_card_types>VISA,MASTERCARD</accepted_card_types>
app/code/local/SecurePay/SecureFrame/etc/system.xml CHANGED
@@ -4,7 +4,7 @@
4
  <payment>
5
  <groups>
6
  <secureframe translate="label" module="paygate">
7
- <label>SecurePay - Two Step Checkout (SecureFrame)</label>
8
  <frontend_type>text</frontend_type>
9
  <sort_order>100</sort_order>
10
  <show_in_default>1</show_in_default>
@@ -120,8 +120,8 @@
120
  <show_in_store>1</show_in_store>
121
  </stylesheet_url>
122
  <accepted_card_types>
123
- <label>Accepted Card Types</label>
124
- <comment><![CDATA[Hold Ctrl to select multiple card types. VISA and MasterCard are accepted by default, please ensure your SecurePay account has been enabled for the other <a href="http://www.securepay.com.au/ecommerce/banks-and-cards-accepted/" target="_blank">card types</a> before changing these settings, for more information, please follow the link.]]></comment>
125
  <frontend_type>multiselect</frontend_type>
126
  <source_model>secureframe/cardtype</source_model>
127
  <sort_order>75</sort_order>
4
  <payment>
5
  <groups>
6
  <secureframe translate="label" module="paygate">
7
+ <label>SecurePay Aus - Two Step Checkout (SecureFrame)</label>
8
  <frontend_type>text</frontend_type>
9
  <sort_order>100</sort_order>
10
  <show_in_default>1</show_in_default>
120
  <show_in_store>1</show_in_store>
121
  </stylesheet_url>
122
  <accepted_card_types>
123
+ <label>Accepted Payment Options</label>
124
+ <comment><![CDATA[Hold Ctrl to select multiple payment options. VISA and MasterCard are accepted by default, please ensure your SecurePay account has been enabled for the other <a href="http://www.securepay.com.au/ecommerce/banks-and-cards-accepted/" target="_blank">payment options</a> before changing these settings, for more information, please follow the link.]]></comment>
125
  <frontend_type>multiselect</frontend_type>
126
  <source_model>secureframe/cardtype</source_model>
127
  <sort_order>75</sort_order>
app/design/frontend/base/default/template/securepay/secureframe/redirect.phtml CHANGED
@@ -1,19 +1,11 @@
1
- <form name="secureframeform" method="post" action="<?php echo $this->getActionUrl(); ?>" target="securepay_secureframe">
2
  <?php
3
  foreach ($this->getSfRequest() as $key => $value) {
4
  echo "<input type='hidden' name='$key' value='$value' />\n";
5
  }
6
  ?>
7
  </form>
8
- <script type="text/javascript">
9
- function hideLoadingMsg(){
10
- document.getElementById("loadingmsg").style.display = "none";
11
- document.getElementById("securepay_secureframe").style.display = "block";
12
- }
13
- </script>
14
  <h1 id="loadingmsg">Loading payment form...</h1>
15
- <iframe id="securepay_secureframe" name="securepay_secureframe" style="border:0;width:100%;height:500px" src="" onload="hideLoadingMsg()"></iframe>
16
  <script type="text/javascript">
17
- document.getElementById("securepay_secureframe").style.display = "none";
18
  document.secureframeform.submit();
19
- </script>
1
+ <form name="secureframeform" method="post" action="<?php echo $this->getActionUrl(); ?>">
2
  <?php
3
  foreach ($this->getSfRequest() as $key => $value) {
4
  echo "<input type='hidden' name='$key' value='$value' />\n";
5
  }
6
  ?>
7
  </form>
 
 
 
 
 
 
8
  <h1 id="loadingmsg">Loading payment form...</h1>
 
9
  <script type="text/javascript">
 
10
  document.secureframeform.submit();
11
+ </script>
package.xml CHANGED
@@ -1,19 +1,19 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>SecurePay_SecureFrame</name>
4
- <version>1.0.0</version>
5
  <stability>stable</stability>
6
- <license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL) v3</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>Adds the ability to accept payments via SecurePay's SecureFrame interface.</summary>
10
- <description>This extension adds the ability to accept payments via SecurePay's SecureFrame interface.&#xD;
11
- It has support for the 3d Secure and Fraudguard options.</description>
12
- <notes>Initial Release</notes>
13
- <authors><author><name>Magnus Jason</name><user>securepay</user><email>support@securepay.com.au</email></author></authors>
14
- <date>2013-05-13</date>
15
- <time>01:57:18</time>
16
- <contents><target name="magelocal"><dir name="SecurePay"><dir name="SecureFrame"><dir name="Helper"><file name="Data.php" hash="7a0f3d2f0a9e0e385178cf3f5cdb0947"/></dir><dir name="Model"><file name="Cardtype.php" hash="e9048684e678ca556b540760913923e1"/><file name="Currencytype.php" hash="05058ead2dbc0414462ef54b52ebba43"/><file name="Standard.php" hash="e6fce183df4812f5707bfebd542b76ba"/><file name="Txntype.php" hash="9f67a99e0a91d64bf457a767116147fd"/></dir><dir name="controllers"><file name="PaymentController.php" hash="8838d3a6d6f852aec7ff68933b29b9d4"/><file name="PaymentController.php~" hash="96326a4e3724b67e470d73634a6195b0"/></dir><dir name="etc"><file name="config.xml" hash="766dff2942d0d40fb6843cf6a946566b"/><file name="system.xml" hash="dea19be171fc948e9bd8cea26dc7afd1"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="securepay"><dir name="secureframe"><file name="redirect.phtml" hash="2ee5569bffa9dcf31bf3209d3e1145c1"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="SecurePay_SecureFrame.xml" hash="07839513039756e56a3e7dafd769f951"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
19
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>SecurePay_SecureFrame</name>
4
+ <version>1.1.0</version>
5
  <stability>stable</stability>
6
+ <license uri="http://opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>Allows acceptance of payments via SecurePay.com.au's SecureFrame interface.</summary>
10
+ <description>This payment method module allows you to accept credit card payments in your magento checkout, via securepay.com.au's SecureFrame interface.&#xD;
11
+ It supports Fraudguard and 3D Secure.</description>
12
+ <notes>PayPal payment choice added.</notes>
13
+ <authors><author><name>Steve Katsaras</name><user>stevek</user><email>steve.katsaras@securepay.com.au</email></author><author><name>Magnus Jason</name><user>magnusj</user><email>magnus.jason@securepay.com.au</email></author><author><name>Evan Rees</name><user>evanr</user><email>evan.rees@securepay.com.au</email></author></authors>
14
+ <date>2013-10-29</date>
15
+ <time>22:20:55</time>
16
+ <contents><target name="magelocal"><dir name="SecurePay"><dir name="SecureFrame"><dir name="Helper"><file name="Data.php" hash="7a0f3d2f0a9e0e385178cf3f5cdb0947"/></dir><dir name="Model"><file name="Cardtype.php" hash="1a1b6d15c7e4a9649fdab446b8cab749"/><file name="Currencytype.php" hash="05058ead2dbc0414462ef54b52ebba43"/><file name="Standard.php" hash="7146a5ea0a98211e35ad62e11fec54e8"/><file name="Txntype.php" hash="9f67a99e0a91d64bf457a767116147fd"/></dir><dir name="controllers"><file name="PaymentController.php" hash="29c12f6f3a178e37393e87a2464f7fab"/></dir><dir name="etc"><file name="config.xml" hash="8e8ad5d70d63e415034865fb609b15d5"/><file name="system.xml" hash="107a6377aa28781a3b5b74ca88c18d11"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="securepay"><dir name="secureframe"><file name="redirect.phtml" hash="4e82251a9942e71a46816b496c79ff25"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="SecurePay_SecureFrame.xml" hash="07839513039756e56a3e7dafd769f951"/></dir></target></contents>
17
  <compatible/>
18
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
19
  </package>