Version Notes
- Secure Acceptance Web/Mobile is one of the payment integration method available for CyberSource.
Download this release
Release Info
Developer | Avdhoot Shitre |
Extension | Cactimedia_Cybersourcesa |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/local/Cactimedia/Cybersourcesa/Block/Failure.php +23 -0
- app/code/local/Cactimedia/Cybersourcesa/Block/Form.php +15 -0
- app/code/local/Cactimedia/Cybersourcesa/Block/Info.php +20 -0
- app/code/local/Cactimedia/Cybersourcesa/Block/Redirect.php +34 -0
- app/code/local/Cactimedia/Cybersourcesa/Block/System/Config/Info.php +31 -0
- app/code/local/Cactimedia/Cybersourcesa/Block/System/Config/Payment.php +29 -0
- app/code/local/Cactimedia/Cybersourcesa/Helper/Data.php +41 -0
- app/code/local/Cactimedia/Cybersourcesa/Model/Cybersourcesa.php +258 -0
- app/code/local/Cactimedia/Cybersourcesa/Model/System/Config/Source/Modes.php +17 -0
- app/code/local/Cactimedia/Cybersourcesa/controllers/ProcessController.php +201 -0
- app/code/local/Cactimedia/Cybersourcesa/etc/adminhtml.xml +36 -0
- app/code/local/Cactimedia/Cybersourcesa/etc/config.xml +113 -0
- app/code/local/Cactimedia/Cybersourcesa/etc/system.xml +163 -0
- app/code/local/Cactimedia/Cybersourcesa/sql/cybersourcesa_setup/mysql4-install-0.1.0.php +25 -0
- app/design/frontend/default/default/layout/cybersourcesa.xml +5 -0
- app/design/frontend/default/default/template/cybersourcesa/failure.phtml +5 -0
- app/design/frontend/default/default/template/cybersourcesa/form.phtml +1 -0
- app/design/frontend/default/default/template/cybersourcesa/info.phtml +1 -0
- app/etc/modules/Cactimedia_Cybersourcesa.xml +20 -0
- package.xml +78 -0
app/code/local/Cactimedia/Cybersourcesa/Block/Failure.php
ADDED
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_Failure extends Mage_Core_Block_Template
|
9 |
+
{
|
10 |
+
protected function _construct()
|
11 |
+
{
|
12 |
+
parent::_construct();
|
13 |
+
$this->setTemplate('cybersourcesa/failure.phtml');
|
14 |
+
}
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Get continue shopping url
|
18 |
+
*/
|
19 |
+
public function getContinueShoppingUrl()
|
20 |
+
{
|
21 |
+
return Mage::getUrl('checkout/cart');
|
22 |
+
}
|
23 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Block/Form.php
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_Form extends Mage_Payment_Block_Form
|
9 |
+
{
|
10 |
+
protected function _construct()
|
11 |
+
{
|
12 |
+
$this->setTemplate('cybersourcesa/form.phtml');
|
13 |
+
parent::_construct();
|
14 |
+
}
|
15 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Block/Info.php
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_Info extends Mage_Payment_Block_Info
|
9 |
+
{
|
10 |
+
protected function _construct()
|
11 |
+
{
|
12 |
+
parent::_construct();
|
13 |
+
$this->setTemplate('cybersourcesa/info.phtml');
|
14 |
+
}
|
15 |
+
|
16 |
+
public function getMethodCode()
|
17 |
+
{
|
18 |
+
return $this->getInfo()->getMethodInstance()->getCode();
|
19 |
+
}
|
20 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Block/Redirect.php
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_Redirect extends Mage_Core_Block_Abstract
|
9 |
+
{
|
10 |
+
protected function _toHtml()
|
11 |
+
{
|
12 |
+
$standard = $this->getOrder()->getPayment()->getMethodInstance();
|
13 |
+
|
14 |
+
$form = new Varien_Data_Form();
|
15 |
+
$form->setAction($standard->getCybersourcesaUrl())
|
16 |
+
->setId('cybersourcesa_payment_checkout')
|
17 |
+
->setName('cybersourcesa_payment_checkout')
|
18 |
+
->setMethod('POST')
|
19 |
+
->setUseContainer(true);
|
20 |
+
|
21 |
+
foreach ($standard->getFormFields() as $field => $value) {
|
22 |
+
$form->addField($field, 'hidden', array('name'=>$field, 'value'=>$value));
|
23 |
+
}
|
24 |
+
|
25 |
+
$html = '<html><body>';
|
26 |
+
$html.= $this->__('You will be redirected to CyberSource Secure Acceptance WM in a few seconds.');
|
27 |
+
$html.= $form->toHtml();
|
28 |
+
#die($form->toHtml());
|
29 |
+
$html.= '<script type="text/javascript">document.getElementById("cybersourcesa_payment_checkout").submit();</script>';
|
30 |
+
$html.= '</body></html>';
|
31 |
+
|
32 |
+
return $html;
|
33 |
+
}
|
34 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Block/System/Config/Info.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_System_Config_Info extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface
|
9 |
+
{
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Render fieldset html
|
13 |
+
*
|
14 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
15 |
+
* @return string
|
16 |
+
*/
|
17 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
18 |
+
{
|
19 |
+
$html = '<div style="background:url(\'http://www.cactimedia.com/images/cacti-logo-dubai.png\') no-repeat scroll 15px center #EAF0EE;border:1px solid #CCCCCC;margin-bottom:10px;padding:10px 5px 5px 230px;">
|
20 |
+
<h4>About Cactimedia</h4>
|
21 |
+
<p>\'The best things come in small packages\' – or so they say. <br />
|
22 |
+
Cactimedia is a Dubai-based, boutique digital agency. Small, but perfectly formed.<br />
|
23 |
+
Our growth, from 2003 till now, means we\'re mature, and happy not to reach out too far.<br />
|
24 |
+
That\'s because you don\'t outgrow boutique, and great acorns come from the best-tended oaks, not the largest. <br />
|
25 |
+
<br />
|
26 |
+
Website: <a href="http://www.cactimedia.com" target="_blank">www.cactimedia.com</a></p>
|
27 |
+
</div>';
|
28 |
+
|
29 |
+
return $html;
|
30 |
+
}
|
31 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Block/System/Config/Payment.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Block_System_Config_Payment extends Mage_Adminhtml_Block_Abstract implements Varien_Data_Form_Element_Renderer_Interface
|
9 |
+
{
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Render fieldset html
|
13 |
+
*
|
14 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
15 |
+
* @return string
|
16 |
+
*/
|
17 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
18 |
+
{
|
19 |
+
$html = '<div style="background:#EAF0EE;border:1px solid #CCCCCC;margin-bottom:10px;padding:10px 5px 5px 10px;">
|
20 |
+
<h4>About CyberSource Secure Acceptance WM</h4>
|
21 |
+
<p><a href="http://www.cybersource.com/developers/learn/integration_methods/secure_acceptance_wm/" target="_blank">CyberSource Secure Acceptance Web/Mobile</a> allows businesses to accept payments made online, over the phone, and through mobile devices without ever handling toxic payment data, significantly reducing PCI DSS scope. It includes many additional benefits that reduce the burden and complexity of payment acceptance for IT departments and improves the checkout process for consumers.
|
22 |
+
<br />
|
23 |
+
<h4>CyberSource Secure Acceptance WM Configuration</h4>
|
24 |
+
<p>Go to System » Configuration » Sales » Payment Methods » CyberSource Secure Acceptance WM » Configure your settings here.</p>
|
25 |
+
</div>';
|
26 |
+
|
27 |
+
return $html;
|
28 |
+
}
|
29 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Helper/Data.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Helper_Data extends Mage_Core_Helper_Abstract
|
9 |
+
{
|
10 |
+
public function getConfig($field, $default = null)
|
11 |
+
{
|
12 |
+
$value = Mage::getStoreConfig('payment/cybersourcesa/' . $field);
|
13 |
+
if(!isset($value) or trim($value) == ''){
|
14 |
+
return $default;
|
15 |
+
}else{
|
16 |
+
return $value;
|
17 |
+
}
|
18 |
+
}
|
19 |
+
|
20 |
+
public function log($data)
|
21 |
+
{
|
22 |
+
if(!$this->getConfig('enable_log')){
|
23 |
+
return;
|
24 |
+
}
|
25 |
+
$separator = "===================================================================";
|
26 |
+
Mage::log($separator, null, 'cybersourcesa.log', true);
|
27 |
+
Mage::log($data, null, 'cybersourcesa.log', true);
|
28 |
+
}
|
29 |
+
|
30 |
+
public function getHashSign($params, $signedField = 'signed_field_names')
|
31 |
+
{
|
32 |
+
$signedFieldNames = explode(",", $params[$signedField]);
|
33 |
+
foreach ($signedFieldNames as &$field) {
|
34 |
+
$dataToSign[] = $field . "=" . $params[$field];
|
35 |
+
}
|
36 |
+
$data = implode(",", $dataToSign);
|
37 |
+
$secretKey = $this->getConfig('secret_key');
|
38 |
+
$hashSign = base64_encode(hash_hmac('sha256', $data, $secretKey, true));
|
39 |
+
return $hashSign;
|
40 |
+
}
|
41 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Model/Cybersourcesa.php
ADDED
@@ -0,0 +1,258 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Model_Cybersourcesa extends Mage_Payment_Model_Method_Abstract
|
9 |
+
{
|
10 |
+
const PAYMENT_LIVE_URL = 'https://secureacceptance.cybersource.com/pay';
|
11 |
+
const PAYMENT_TEST_URL = 'https://testsecureacceptance.cybersource.com/pay';
|
12 |
+
|
13 |
+
protected $_code = 'cybersourcesa';
|
14 |
+
protected $_formBlockType = 'cybersourcesa/form';
|
15 |
+
protected $_infoBlockType = 'cybersourcesa/info';
|
16 |
+
|
17 |
+
protected $_isGateway = false;
|
18 |
+
protected $_canAuthorize = false;
|
19 |
+
protected $_canCapture = true;
|
20 |
+
protected $_canCapturePartial = false;
|
21 |
+
protected $_canRefund = false;
|
22 |
+
protected $_canVoid = false;
|
23 |
+
protected $_canUseInternal = false;
|
24 |
+
protected $_canUseCheckout = true;
|
25 |
+
protected $_canUseForMultishipping = false;
|
26 |
+
|
27 |
+
//protected $_allowCurrencyCode = array('EUR', 'USD');
|
28 |
+
|
29 |
+
public function validate()
|
30 |
+
{
|
31 |
+
parent::validate();
|
32 |
+
$paymentInfo = $this->getInfoInstance();
|
33 |
+
if ($paymentInfo instanceof Mage_Sales_Model_Order_Payment) {
|
34 |
+
$currencyCode = $paymentInfo->getOrder()->getBaseCurrencyCode();
|
35 |
+
} else {
|
36 |
+
$currencyCode = $paymentInfo->getQuote()->getBaseCurrencyCode();
|
37 |
+
}
|
38 |
+
if (!$this->canUseForCurrency($currencyCode)) {
|
39 |
+
Mage::throwException(Mage::helper('cybersourcesa')->__('Selected currency code ('.$currencyCode.') is not compatabile with this payment.'));
|
40 |
+
}
|
41 |
+
return $this;
|
42 |
+
}
|
43 |
+
|
44 |
+
public function canUseForCurrency($currencyCode)
|
45 |
+
{
|
46 |
+
// if (!in_array($currencyCode, $this->_allowCurrencyCode)) {
|
47 |
+
// return false;
|
48 |
+
// }
|
49 |
+
return true;
|
50 |
+
}
|
51 |
+
|
52 |
+
public function canCapture()
|
53 |
+
{
|
54 |
+
return true;
|
55 |
+
}
|
56 |
+
|
57 |
+
public function capture(Varien_Object $payment, $amount)
|
58 |
+
{
|
59 |
+
$payment->setStatus(self::STATUS_APPROVED)
|
60 |
+
->setLastTransId($this->getTransactionId());
|
61 |
+
|
62 |
+
return $this;
|
63 |
+
}
|
64 |
+
|
65 |
+
public function getIssuerUrls()
|
66 |
+
{
|
67 |
+
return array("live" => self::PAYMENT_LIVE_URL,
|
68 |
+
"test" => self::PAYMENT_TEST_URL);
|
69 |
+
|
70 |
+
}
|
71 |
+
|
72 |
+
public function getCybersourcesaUrl()
|
73 |
+
{
|
74 |
+
$setIssuerUrls = $this->getIssuerUrls();
|
75 |
+
if($this->getConfigData('mode')){
|
76 |
+
return $setIssuerUrls["live"];
|
77 |
+
}else{
|
78 |
+
return $setIssuerUrls["test"];
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
public function getOrderPlaceRedirectUrl()
|
83 |
+
{
|
84 |
+
return Mage::getUrl('cybersourcesa/process/redirect');
|
85 |
+
}
|
86 |
+
|
87 |
+
protected function getSuccessUrl()
|
88 |
+
{
|
89 |
+
return Mage::getUrl('cybersourcesa/process/success', array('_secure' => true));
|
90 |
+
}
|
91 |
+
|
92 |
+
protected function getFailureUrl()
|
93 |
+
{
|
94 |
+
return Mage::getUrl('cybersourcesa/process/failure', array('_secure' => true));
|
95 |
+
}
|
96 |
+
|
97 |
+
protected function getCancelUrl()
|
98 |
+
{
|
99 |
+
return Mage::getUrl('cybersourcesa/process/cancel', array('_secure' => true));
|
100 |
+
}
|
101 |
+
|
102 |
+
protected function getIpnUrl()
|
103 |
+
{
|
104 |
+
return Mage::getUrl('cybersourcesa/process/ipn', array('_secure' => true));
|
105 |
+
}
|
106 |
+
|
107 |
+
public function getCustomer()
|
108 |
+
{
|
109 |
+
if (empty($this->_customer)) {
|
110 |
+
$this->_customer = Mage::getSingleton('customer/session')->getCustomer();
|
111 |
+
}
|
112 |
+
return $this->_customer;
|
113 |
+
}
|
114 |
+
|
115 |
+
public function getCheckout()
|
116 |
+
{
|
117 |
+
if (empty($this->_checkout)) {
|
118 |
+
$this->_checkout = Mage::getSingleton('checkout/session');
|
119 |
+
}
|
120 |
+
return $this->_checkout;
|
121 |
+
}
|
122 |
+
|
123 |
+
public function getQuote()
|
124 |
+
{
|
125 |
+
if (empty($this->_quote)) {
|
126 |
+
$this->_quote = $this->getCheckout()->getQuote();
|
127 |
+
}
|
128 |
+
return $this->_quote;
|
129 |
+
}
|
130 |
+
|
131 |
+
public function getOrder()
|
132 |
+
{
|
133 |
+
if (empty($this->_order)) {
|
134 |
+
$order = Mage::getModel('sales/order');
|
135 |
+
$order->loadByIncrementId($this->getCheckout()->getLastRealOrderId());
|
136 |
+
$this->_order = $order;
|
137 |
+
}
|
138 |
+
return $this->_order;
|
139 |
+
}
|
140 |
+
|
141 |
+
public function getEmail()
|
142 |
+
{
|
143 |
+
$email = $this->getOrder()->getCustomerEmail();
|
144 |
+
if (!$email) {
|
145 |
+
$email = $this->getQuote()->getBillingAddress()->getEmail();
|
146 |
+
}
|
147 |
+
if (!$email) {
|
148 |
+
$email = Mage::getStoreConfig('trans_email/ident_general/email');
|
149 |
+
}
|
150 |
+
return $email;
|
151 |
+
}
|
152 |
+
|
153 |
+
public function getOrderAmount()
|
154 |
+
{
|
155 |
+
$amount = sprintf('%.2f', $this->getOrder()->getGrandTotal());
|
156 |
+
return $amount;
|
157 |
+
}
|
158 |
+
|
159 |
+
public function getOrderCurrency()
|
160 |
+
{
|
161 |
+
$currency = $this->getOrder()->getOrderCurrency();
|
162 |
+
if (is_object($currency)) {
|
163 |
+
$currency = $currency->getCurrencyCode();
|
164 |
+
}
|
165 |
+
return $currency;
|
166 |
+
#return Mage::app()->getStore()->getCurrentCurrencyCode();
|
167 |
+
}
|
168 |
+
|
169 |
+
public function getHashSign($formFields)
|
170 |
+
{
|
171 |
+
$hashSign = Mage::helper('cybersourcesa')->getHashSign($formFields);
|
172 |
+
return $hashSign;
|
173 |
+
}
|
174 |
+
|
175 |
+
public function getFormFields()
|
176 |
+
{
|
177 |
+
$payment = $this->getQuote()->getPayment();
|
178 |
+
$order = $this->getOrder();
|
179 |
+
$formFields = array();
|
180 |
+
|
181 |
+
//prepare variables for hidden form fields
|
182 |
+
$formFields['access_key'] = $this->getConfigData('access_key'); //'22b36766dde234e38adada8b3a6c7314';
|
183 |
+
$formFields['profile_id'] = $this->getConfigData('profile_id'); //'LABISNI';
|
184 |
+
$formFields['transaction_uuid'] = Mage::helper('core')->uniqHash();
|
185 |
+
$formFields['signed_field_names'] = 'access_key,profile_id,transaction_uuid,signed_field_names,unsigned_field_names,signed_date_time,locale,transaction_type,reference_number,amount,currency,bill_to_address_city,bill_to_address_country,bill_to_address_line1,bill_to_address_line2,bill_to_address_postal_code,bill_to_address_state,bill_to_company_name,bill_to_email,bill_to_forename,bill_to_surname,bill_to_phone,customer_ip_address';
|
186 |
+
|
187 |
+
$formFields['signed_field_names'] .= ',merchant_defined_data1,merchant_defined_data2,merchant_defined_data3,merchant_defined_data5,merchant_defined_data6,merchant_defined_data7,merchant_defined_data8,merchant_defined_data9,merchant_defined_data10,merchant_defined_data11,merchant_defined_data12,merchant_defined_data13,merchant_defined_data14,merchant_defined_data18,merchant_defined_data19,merchant_defined_data21,merchant_defined_data25';
|
188 |
+
|
189 |
+
$formFields['unsigned_field_names'] = '';
|
190 |
+
$formFields['signed_date_time'] = gmdate("Y-m-d\TH:i:s\Z", time() + 63*60);
|
191 |
+
$formFields['locale'] = 'en';
|
192 |
+
$formFields['transaction_type'] = 'sale';
|
193 |
+
$formFields['reference_number'] = $order->getRealOrderId();
|
194 |
+
$formFields['amount'] = $this->getOrderAmount();
|
195 |
+
$formFields['currency'] = $this->getOrderCurrency();
|
196 |
+
|
197 |
+
$billingAddress = $order->getBillingAddress();
|
198 |
+
$formFields['bill_to_address_city'] = $billingAddress->getCity();
|
199 |
+
$formFields['bill_to_address_country'] = $billingAddress->getCountry();
|
200 |
+
$formFields['bill_to_address_line1'] = $billingAddress->getStreet(1);
|
201 |
+
$formFields['bill_to_address_line2'] = $billingAddress->getStreet(2);
|
202 |
+
$formFields['bill_to_address_postal_code'] = $billingAddress->getPostcode();
|
203 |
+
$formFields['bill_to_address_state'] = $billingAddress->getRegion();
|
204 |
+
$formFields['bill_to_company_name'] = $billingAddress->getCompany();
|
205 |
+
|
206 |
+
$formFields['bill_to_email'] = $this->getEmail();
|
207 |
+
$formFields['bill_to_forename'] = $billingAddress->getFirstname();
|
208 |
+
$formFields['bill_to_surname'] = $billingAddress->getLastname();
|
209 |
+
$formFields['bill_to_phone'] = $billingAddress->getTelephone();
|
210 |
+
$formFields['customer_ip_address'] = Mage::helper('core/http')->getRemoteAddr();
|
211 |
+
|
212 |
+
|
213 |
+
$items = $order->getAllItems();
|
214 |
+
$categories = array();
|
215 |
+
$products = array();
|
216 |
+
foreach($items as $_item){
|
217 |
+
$productId = $_item->getProductId();
|
218 |
+
$product = Mage::getModel('catalog/product')->load($productId);
|
219 |
+
$cats = $product->getCategoryIds();
|
220 |
+
foreach ($cats as $category_id) {
|
221 |
+
$_cat = Mage::getModel('catalog/category')->load($category_id) ;
|
222 |
+
$categories[] = $_cat->getName();
|
223 |
+
}
|
224 |
+
$products[] = $_item->getName();
|
225 |
+
}
|
226 |
+
|
227 |
+
$formFields['merchant_defined_data1'] = '10'; //Number of Failed Authorizations Attempts
|
228 |
+
$formFields['merchant_defined_data2'] = '10'; //Number of orders to date since registering
|
229 |
+
$formFields['merchant_defined_data3'] = 'Web'; //Sales channel
|
230 |
+
$formFields['merchant_defined_data5'] = date('d-m-Y h:i'); //last password change
|
231 |
+
$formFields['merchant_defined_data6'] = date('d-m-Y h:i'); //last email change
|
232 |
+
$formFields['merchant_defined_data7'] = 'NO'; //Guest account
|
233 |
+
$formFields['merchant_defined_data8'] = implode(',', array_unique($categories)); //Product Category
|
234 |
+
$formFields['merchant_defined_data9'] = implode(',', array_unique($products)); //
|
235 |
+
$formFields['merchant_defined_data10'] = $order->getShippingDescription(); //Shipping Method
|
236 |
+
$formFields['merchant_defined_data11'] = 'Home'; //Delivery Type
|
237 |
+
$formFields['merchant_defined_data12'] = 'NO'; //previous customer
|
238 |
+
$formFields['merchant_defined_data13'] = '100'; //Account Age
|
239 |
+
$formFields['merchant_defined_data14'] = date('d-m-Y h:i',(strtotime ( '-1 day' ) )); //Time since last purchase
|
240 |
+
$formFields['merchant_defined_data18'] = '1'; //Number of password change
|
241 |
+
$formFields['merchant_defined_data19'] = '0'; //Number of email change
|
242 |
+
$formFields['merchant_defined_data21'] = count($items); //Number of items sold in the order
|
243 |
+
$formFields['merchant_defined_data25'] = $order->getShippingAddress()->getCountry(); //Product Shipping Country Name
|
244 |
+
|
245 |
+
$formFields['signature'] = $this->getHashSign($formFields);
|
246 |
+
|
247 |
+
//Log request info
|
248 |
+
if($this->getConfigData('debug_flag')){
|
249 |
+
Mage::helper('cybersourcesa')->log($formFields);//for debug purpose
|
250 |
+
$resource = Mage::getSingleton('core/resource');
|
251 |
+
$connection = $resource->getConnection('core_write');
|
252 |
+
$sql = "INSERT INTO ".$resource->getTableName('cybersourcesa_api_debug')." SET created_time = ?, request_body = ?, response_body = ?";
|
253 |
+
$connection->query($sql, array(date('Y-m-d H:i:s'), $this->getCybersourcesaUrl()."\n".print_r($formFields, 1), ''));
|
254 |
+
}
|
255 |
+
|
256 |
+
return $formFields;
|
257 |
+
}
|
258 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/Model/System/Config/Source/Modes.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_Model_System_Config_Source_Modes
|
9 |
+
{
|
10 |
+
public function toOptionArray()
|
11 |
+
{
|
12 |
+
return array(
|
13 |
+
0 => Mage::helper('cybersourcesa')->__('Test'),
|
14 |
+
1 => Mage::helper('cybersourcesa')->__('Live'),
|
15 |
+
);
|
16 |
+
}
|
17 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/controllers/ProcessController.php
ADDED
@@ -0,0 +1,201 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
class Cactimedia_Cybersourcesa_ProcessController extends Mage_Core_Controller_Front_Action
|
9 |
+
{
|
10 |
+
protected $_order;
|
11 |
+
|
12 |
+
protected function _getCheckout()
|
13 |
+
{
|
14 |
+
return Mage::getSingleton('checkout/session');
|
15 |
+
}
|
16 |
+
|
17 |
+
protected function _expireAjax()
|
18 |
+
{
|
19 |
+
if (!$this->_getCheckout()->getQuote()->hasItems()) {
|
20 |
+
$this->getResponse()->setHeader('HTTP/1.1','403 Session Expired');
|
21 |
+
exit;
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
public function getCybersourcesa()
|
26 |
+
{
|
27 |
+
return Mage::getSingleton('cybersourcesa/cybersourcesa');
|
28 |
+
}
|
29 |
+
|
30 |
+
public function getOrder()
|
31 |
+
{
|
32 |
+
if ($this->_order == null) {
|
33 |
+
$session = Mage::getSingleton('checkout/session');
|
34 |
+
$this->_order = Mage::getModel('sales/order');
|
35 |
+
$this->_order->loadByIncrementId($session->getLastRealOrderId());
|
36 |
+
}
|
37 |
+
return $this->_order;
|
38 |
+
}
|
39 |
+
|
40 |
+
public function redirectAction()
|
41 |
+
{
|
42 |
+
$session = $this->_getCheckout();
|
43 |
+
$order = $this->getOrder();
|
44 |
+
if (!$order->getId()) {
|
45 |
+
$this->norouteAction();
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
$order->addStatusToHistory(
|
50 |
+
$order->getStatus(),
|
51 |
+
$this->__('Customer was redirected to Cybersource.')
|
52 |
+
);
|
53 |
+
$order->save();
|
54 |
+
|
55 |
+
$this->getResponse()
|
56 |
+
->setBody(
|
57 |
+
$this->getLayout()->createBlock('cybersourcesa/redirect')->setOrder($order)->toHtml()
|
58 |
+
);
|
59 |
+
}
|
60 |
+
|
61 |
+
public function ipnAction()
|
62 |
+
{
|
63 |
+
$helper = Mage::helper('cybersourcesa');
|
64 |
+
$request = $this->getRequest();
|
65 |
+
$params = $request->getParams();
|
66 |
+
$helper->log('ipnAction()::start');
|
67 |
+
|
68 |
+
//signature check...
|
69 |
+
if($this->_validateResponse($params)){
|
70 |
+
$orderId = isset($params['req_reference_number']) ? $params['req_reference_number'] : null;
|
71 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
|
72 |
+
if ($order && $order->canInvoice()) {
|
73 |
+
$invoice = $order->prepareInvoice();
|
74 |
+
$invoice->register()->capture();
|
75 |
+
Mage::getModel('core/resource_transaction')
|
76 |
+
->addObject($invoice)
|
77 |
+
->addObject($invoice->getOrder())
|
78 |
+
->save();
|
79 |
+
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
|
80 |
+
$order->getPayment()->setLastTransId($params['transaction_id']);
|
81 |
+
$order->sendNewOrderEmail();
|
82 |
+
$order->setEmailSent(true);
|
83 |
+
|
84 |
+
$order->save();
|
85 |
+
$helper->log('ipnAction()::invoice-created, main sent');
|
86 |
+
}
|
87 |
+
}
|
88 |
+
}
|
89 |
+
|
90 |
+
protected function _validateResponse($params)
|
91 |
+
{
|
92 |
+
$helper = Mage::helper('cybersourcesa');
|
93 |
+
$helper->log('_validateResponse()::');
|
94 |
+
$helper->log($params);
|
95 |
+
|
96 |
+
$orderId = isset($params['req_reference_number']) ? $params['req_reference_number'] : null;
|
97 |
+
$order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
|
98 |
+
if(!$order){
|
99 |
+
return false;
|
100 |
+
}
|
101 |
+
$errors = array();
|
102 |
+
if(isset($params['decision']) && $params['decision'] != 'ACCEPT'){
|
103 |
+
$errors[] = 'decision is not ACCEPT';
|
104 |
+
}
|
105 |
+
if( isset($params['reason_code']) && !in_array($params['reason_code'], array(100, 110)) ){
|
106 |
+
$errors[] = 'reason_code is not 100, 110';
|
107 |
+
}
|
108 |
+
|
109 |
+
$hashSign = $helper->getHashSign($params);
|
110 |
+
$signature = isset($params['signature']) ? $params['signature'] : null;
|
111 |
+
if($hashSign != $signature){
|
112 |
+
$errors[] = 'singature is invalid';
|
113 |
+
}
|
114 |
+
|
115 |
+
if(count($errors) == 0){
|
116 |
+
return true;
|
117 |
+
}else{
|
118 |
+
return false;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
public function successAction()
|
123 |
+
{
|
124 |
+
$helper = Mage::helper('cybersourcesa');
|
125 |
+
$order = $this->getOrder();
|
126 |
+
if ( !$order->getId() ) {
|
127 |
+
$this->_redirect('checkout/cart');
|
128 |
+
return false;
|
129 |
+
}
|
130 |
+
|
131 |
+
$helper->log('successAction()::');
|
132 |
+
$responseParams = $this->getRequest()->getParams();
|
133 |
+
$validateResponse = $this->_validateResponse($responseParams);
|
134 |
+
if($validateResponse){
|
135 |
+
|
136 |
+
$order->addStatusToHistory(
|
137 |
+
$order->getStatus(),
|
138 |
+
$this->__('Customer successfully returned from CyberSource and the payment is APPROVED.')
|
139 |
+
);
|
140 |
+
#$order->sendNewOrderEmail(); //already sent above
|
141 |
+
$order->save();
|
142 |
+
|
143 |
+
$this->_redirect('checkout/onepage/success');
|
144 |
+
return;
|
145 |
+
}else{
|
146 |
+
$comment = '';
|
147 |
+
if(isset($responseParams['message'])){
|
148 |
+
$comment .= '<br />Error: ';
|
149 |
+
$comment .= "'" . $responseParams['message'] . "'";
|
150 |
+
}
|
151 |
+
$order->cancel();
|
152 |
+
$order->addStatusToHistory(
|
153 |
+
$order->getStatus(),
|
154 |
+
$this->__('Customer successfully returned from CyberSource but the payment is DECLINED.') . $comment
|
155 |
+
);
|
156 |
+
$order->save();
|
157 |
+
|
158 |
+
$this->_getCheckout()->addError($this->__('There is an error processing your payment.' . $comment));
|
159 |
+
$this->_redirect('checkout/cart');
|
160 |
+
return;
|
161 |
+
}
|
162 |
+
}
|
163 |
+
|
164 |
+
public function cancelAction()
|
165 |
+
{
|
166 |
+
$order = $this->getOrder();
|
167 |
+
if ( !$order->getId() ) {
|
168 |
+
$this->_redirect('checkout/cart');
|
169 |
+
return false;
|
170 |
+
}
|
171 |
+
|
172 |
+
$order->cancel();
|
173 |
+
$order->addStatusToHistory(
|
174 |
+
$order->getStatus(),
|
175 |
+
$this->__('Payment was canceled.')
|
176 |
+
);
|
177 |
+
$order->save();
|
178 |
+
|
179 |
+
$this->_getCheckout()->addError($this->__('Payment was canceled.'));
|
180 |
+
$this->_redirect('checkout/cart');
|
181 |
+
}
|
182 |
+
|
183 |
+
public function failureAction()
|
184 |
+
{
|
185 |
+
$order = $this->getOrder();
|
186 |
+
if ( !$order->getId() ) {
|
187 |
+
$this->_redirect('checkout/cart');
|
188 |
+
return false;
|
189 |
+
}
|
190 |
+
|
191 |
+
$order->cancel();
|
192 |
+
$order->addStatusToHistory(
|
193 |
+
$order->getStatus(),
|
194 |
+
$this->__('Payment failed.')
|
195 |
+
);
|
196 |
+
$order->save();
|
197 |
+
|
198 |
+
$this->_getCheckout()->addError($this->__('Payment failed.'));
|
199 |
+
$this->_redirect('checkout/cart');
|
200 |
+
}
|
201 |
+
}
|
app/code/local/Cactimedia/Cybersourcesa/etc/adminhtml.xml
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @category Cactimedia
|
5 |
+
* @package Cactimedia_Cybersourcesa
|
6 |
+
* @author magepsycho@gmail.com
|
7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
8 |
+
*/
|
9 |
+
-->
|
10 |
+
<config>
|
11 |
+
<acl>
|
12 |
+
<resources>
|
13 |
+
<admin>
|
14 |
+
<children>
|
15 |
+
<system>
|
16 |
+
<children>
|
17 |
+
<config>
|
18 |
+
<children>
|
19 |
+
<cactimediainfo>
|
20 |
+
<title>Cactimedia Info</title>
|
21 |
+
</cactimediainfo>
|
22 |
+
<paymentinfo>
|
23 |
+
<title>CyberSource Secure Acceptance WM Info</title>
|
24 |
+
</paymentinfo>
|
25 |
+
<cybersourcesa>
|
26 |
+
<title>CyberSource Secure Acceptance WM Area</title>
|
27 |
+
</cybersourcesa>
|
28 |
+
</children>
|
29 |
+
</config>
|
30 |
+
</children>
|
31 |
+
</system>
|
32 |
+
</children>
|
33 |
+
</admin>
|
34 |
+
</resources>
|
35 |
+
</acl>
|
36 |
+
</config>
|
app/code/local/Cactimedia/Cybersourcesa/etc/config.xml
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @category Cactimedia
|
5 |
+
* @package Cactimedia_Cybersourcesa
|
6 |
+
* @author magepsycho@gmail.com
|
7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
8 |
+
*/
|
9 |
+
-->
|
10 |
+
<config>
|
11 |
+
<modules>
|
12 |
+
<Cactimedia_Cybersourcesa>
|
13 |
+
<version>0.1.0</version>
|
14 |
+
</Cactimedia_Cybersourcesa>
|
15 |
+
</modules>
|
16 |
+
<global>
|
17 |
+
<models>
|
18 |
+
<cybersourcesa>
|
19 |
+
<class>Cactimedia_Cybersourcesa_Model</class>
|
20 |
+
</cybersourcesa>
|
21 |
+
</models>
|
22 |
+
<resources>
|
23 |
+
<cybersourcesa_setup>
|
24 |
+
<setup>
|
25 |
+
<module>Cactimedia_Cybersourcesa</module>
|
26 |
+
</setup>
|
27 |
+
<connection>
|
28 |
+
<use>core_setup</use>
|
29 |
+
</connection>
|
30 |
+
</cybersourcesa_setup>
|
31 |
+
<cybersourcesa_write>
|
32 |
+
<connection>
|
33 |
+
<use>core_write</use>
|
34 |
+
</connection>
|
35 |
+
</cybersourcesa_write>
|
36 |
+
<cybersourcesa_read>
|
37 |
+
<connection>
|
38 |
+
<use>core_read</use>
|
39 |
+
</connection>
|
40 |
+
</cybersourcesa_read>
|
41 |
+
</resources>
|
42 |
+
<blocks>
|
43 |
+
<cybersourcesa>
|
44 |
+
<class>Cactimedia_Cybersourcesa_Block</class>
|
45 |
+
</cybersourcesa>
|
46 |
+
</blocks>
|
47 |
+
<helpers>
|
48 |
+
<cybersourcesa>
|
49 |
+
<class>Cactimedia_Cybersourcesa_Helper</class>
|
50 |
+
</cybersourcesa>
|
51 |
+
</helpers>
|
52 |
+
</global>
|
53 |
+
<frontend>
|
54 |
+
<routers>
|
55 |
+
<cybersourcesa>
|
56 |
+
<use>standard</use>
|
57 |
+
<args>
|
58 |
+
<module>Cactimedia_Cybersourcesa</module>
|
59 |
+
<frontName>cybersourcesa</frontName>
|
60 |
+
</args>
|
61 |
+
</cybersourcesa>
|
62 |
+
</routers>
|
63 |
+
<layout>
|
64 |
+
<updates>
|
65 |
+
<cybersourcesa>
|
66 |
+
<file>cybersourcesa.xml</file>
|
67 |
+
</cybersourcesa>
|
68 |
+
</updates>
|
69 |
+
</layout>
|
70 |
+
</frontend>
|
71 |
+
<adminhtml>
|
72 |
+
<acl>
|
73 |
+
<resources>
|
74 |
+
<admin>
|
75 |
+
<children>
|
76 |
+
<system>
|
77 |
+
<children>
|
78 |
+
<config>
|
79 |
+
<children>
|
80 |
+
<cactimediainfo>
|
81 |
+
<title>Cactimedia - All</title>
|
82 |
+
</cactimediainfo>
|
83 |
+
<paymentinfo>
|
84 |
+
<title>CyberSource Secure Acceptance WM Info</title>
|
85 |
+
</paymentinfo>
|
86 |
+
<cybersourcesa>
|
87 |
+
<title>CyberSource Secure Acceptance WM Area</title>
|
88 |
+
</cybersourcesa>
|
89 |
+
</children>
|
90 |
+
</config>
|
91 |
+
</children>
|
92 |
+
</system>
|
93 |
+
</children>
|
94 |
+
</admin>
|
95 |
+
</resources>
|
96 |
+
</acl>
|
97 |
+
</adminhtml>
|
98 |
+
<default>
|
99 |
+
<payment>
|
100 |
+
<cybersourcesa>
|
101 |
+
<active>0</active>
|
102 |
+
<enable_log>1</enable_log>
|
103 |
+
<model>cybersourcesa/cybersourcesa</model>
|
104 |
+
<title>CyberSource Secure Acceptance WM</title>
|
105 |
+
<mode>0</mode>
|
106 |
+
<order_status>pending</order_status>
|
107 |
+
<debug_flag>1</debug_flag>
|
108 |
+
<allowspecific>0</allowspecific>
|
109 |
+
<sort_order>1</sort_order>
|
110 |
+
</cybersourcesa>
|
111 |
+
</payment>
|
112 |
+
</default>
|
113 |
+
</config>
|
app/code/local/Cactimedia/Cybersourcesa/etc/system.xml
ADDED
@@ -0,0 +1,163 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @category Cactimedia
|
5 |
+
* @package Cactimedia_Cybersourcesa
|
6 |
+
* @author magepsycho@gmail.com
|
7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
8 |
+
*/
|
9 |
+
-->
|
10 |
+
<config>
|
11 |
+
<tabs>
|
12 |
+
<cactimediaall translate="label" module="cybersourcesa">
|
13 |
+
<label>Cactimedia Extensions</label>
|
14 |
+
<sort_order>400</sort_order>
|
15 |
+
</cactimediaall>
|
16 |
+
</tabs>
|
17 |
+
<sections>
|
18 |
+
<cactimediainfo translate="label" module="cybersourcesa">
|
19 |
+
<label>Info</label>
|
20 |
+
<tab>cactimediaall</tab>
|
21 |
+
<frontend_type>text</frontend_type>
|
22 |
+
<sort_order>99999999999</sort_order>
|
23 |
+
<show_in_default>1</show_in_default>
|
24 |
+
<show_in_website>1</show_in_website>
|
25 |
+
<show_in_store>1</show_in_store>
|
26 |
+
<groups>
|
27 |
+
<info>
|
28 |
+
<frontend_model>cybersourcesa/system_config_info</frontend_model>
|
29 |
+
<sort_order>10</sort_order>
|
30 |
+
<show_in_default>1</show_in_default>
|
31 |
+
<show_in_website>1</show_in_website>
|
32 |
+
<show_in_store>1</show_in_store>
|
33 |
+
</info>
|
34 |
+
</groups>
|
35 |
+
</cactimediainfo>
|
36 |
+
<paymentinfo translate="label" module="cybersourcesa">
|
37 |
+
<label>CyberSource Secure Acceptance WM</label>
|
38 |
+
<tab>cactimediaall</tab>
|
39 |
+
<frontend_type>text</frontend_type>
|
40 |
+
<sort_order>1000</sort_order>
|
41 |
+
<show_in_default>1</show_in_default>
|
42 |
+
<show_in_website>1</show_in_website>
|
43 |
+
<show_in_store>1</show_in_store>
|
44 |
+
<groups>
|
45 |
+
<info>
|
46 |
+
<frontend_model>cybersourcesa/system_config_payment</frontend_model>
|
47 |
+
<sort_order>10</sort_order>
|
48 |
+
<show_in_default>1</show_in_default>
|
49 |
+
<show_in_website>1</show_in_website>
|
50 |
+
<show_in_store>1</show_in_store>
|
51 |
+
</info>
|
52 |
+
</groups>
|
53 |
+
</paymentinfo>
|
54 |
+
<payment>
|
55 |
+
<groups>
|
56 |
+
<cybersourcesa module="cybersourcesa">
|
57 |
+
<label>CyberSource Secure Acceptance WM</label>
|
58 |
+
<frontend_type>text</frontend_type>
|
59 |
+
<sort_order>26</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>1</show_in_store>
|
63 |
+
<fields>
|
64 |
+
<active translate="label">
|
65 |
+
<label>Enabled</label>
|
66 |
+
<frontend_type>select</frontend_type>
|
67 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
68 |
+
<sort_order>10</sort_order>
|
69 |
+
<show_in_default>1</show_in_default>
|
70 |
+
<show_in_website>1</show_in_website>
|
71 |
+
<show_in_store>1</show_in_store>
|
72 |
+
</active>
|
73 |
+
<title translate="label">
|
74 |
+
<label>Title</label>
|
75 |
+
<frontend_type>text</frontend_type>
|
76 |
+
<sort_order>20</sort_order>
|
77 |
+
<show_in_default>1</show_in_default>
|
78 |
+
<show_in_website>1</show_in_website>
|
79 |
+
<show_in_store>1</show_in_store>
|
80 |
+
</title>
|
81 |
+
<access_key translate="label">
|
82 |
+
<label>Access Key</label>
|
83 |
+
<frontend_type>text</frontend_type>
|
84 |
+
<sort_order>21</sort_order>
|
85 |
+
<show_in_default>1</show_in_default>
|
86 |
+
<show_in_website>1</show_in_website>
|
87 |
+
<show_in_store>1</show_in_store>
|
88 |
+
</access_key>
|
89 |
+
<profile_id translate="label">
|
90 |
+
<label>Profile ID</label>
|
91 |
+
<frontend_type>text</frontend_type>
|
92 |
+
<sort_order>22</sort_order>
|
93 |
+
<show_in_default>1</show_in_default>
|
94 |
+
<show_in_website>1</show_in_website>
|
95 |
+
<show_in_store>1</show_in_store>
|
96 |
+
</profile_id>
|
97 |
+
<secret_key translate="label">
|
98 |
+
<label>Secret Key</label>
|
99 |
+
<frontend_type>textarea</frontend_type>
|
100 |
+
<sort_order>23</sort_order>
|
101 |
+
<show_in_default>1</show_in_default>
|
102 |
+
<show_in_website>1</show_in_website>
|
103 |
+
<show_in_store>1</show_in_store>
|
104 |
+
</secret_key>
|
105 |
+
<order_status translate="label">
|
106 |
+
<label>New Order Status</label>
|
107 |
+
<frontend_type>select</frontend_type>
|
108 |
+
<source_model>adminhtml/system_config_source_order_status_new</source_model>
|
109 |
+
<sort_order>30</sort_order>
|
110 |
+
<show_in_default>1</show_in_default>
|
111 |
+
<show_in_website>1</show_in_website>
|
112 |
+
<show_in_store>0</show_in_store>
|
113 |
+
</order_status>
|
114 |
+
<mode translate="label">
|
115 |
+
<label>Mode</label>
|
116 |
+
<frontend_type>select</frontend_type>
|
117 |
+
<source_model>cybersourcesa/system_config_source_modes</source_model>
|
118 |
+
<sort_order>40</sort_order>
|
119 |
+
<show_in_default>1</show_in_default>
|
120 |
+
<show_in_website>1</show_in_website>
|
121 |
+
<show_in_store>1</show_in_store>
|
122 |
+
</mode>
|
123 |
+
<debug_flag translate="label">
|
124 |
+
<label>Debug</label>
|
125 |
+
<frontend_type>select</frontend_type>
|
126 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
127 |
+
<sort_order>50</sort_order>
|
128 |
+
<show_in_default>1</show_in_default>
|
129 |
+
<show_in_website>1</show_in_website>
|
130 |
+
<show_in_store>1</show_in_store>
|
131 |
+
</debug_flag>
|
132 |
+
<allowspecific translate="label">
|
133 |
+
<label>Payment from applicable countries</label>
|
134 |
+
<frontend_type>allowspecific</frontend_type>
|
135 |
+
<sort_order>60</sort_order>
|
136 |
+
<source_model>adminhtml/system_config_source_payment_allspecificcountries</source_model>
|
137 |
+
<show_in_default>1</show_in_default>
|
138 |
+
<show_in_website>1</show_in_website>
|
139 |
+
<show_in_store>1</show_in_store>
|
140 |
+
</allowspecific>
|
141 |
+
<specificcountry translate="label">
|
142 |
+
<label>Payment from Specific countries</label>
|
143 |
+
<frontend_type>multiselect</frontend_type>
|
144 |
+
<sort_order>70</sort_order>
|
145 |
+
<source_model>adminhtml/system_config_source_country</source_model>
|
146 |
+
<show_in_default>1</show_in_default>
|
147 |
+
<show_in_website>1</show_in_website>
|
148 |
+
<show_in_store>1</show_in_store>
|
149 |
+
</specificcountry>
|
150 |
+
<sort_order translate="label">
|
151 |
+
<label>Sort Order</label>
|
152 |
+
<frontend_type>text</frontend_type>
|
153 |
+
<sort_order>100</sort_order>
|
154 |
+
<show_in_default>1</show_in_default>
|
155 |
+
<show_in_website>1</show_in_website>
|
156 |
+
<show_in_store>0</show_in_store>
|
157 |
+
</sort_order>
|
158 |
+
</fields>
|
159 |
+
</cybersourcesa>
|
160 |
+
</groups>
|
161 |
+
</payment>
|
162 |
+
</sections>
|
163 |
+
</config>
|
app/code/local/Cactimedia/Cybersourcesa/sql/cybersourcesa_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @category Cactimedia
|
4 |
+
* @package Cactimedia_Cybersourcesa
|
5 |
+
* @author magepsycho@gmail.com
|
6 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
7 |
+
*/
|
8 |
+
$installer = $this;
|
9 |
+
|
10 |
+
$installer->startSetup();
|
11 |
+
|
12 |
+
$installer->run("
|
13 |
+
|
14 |
+
-- DROP TABLE IF EXISTS {$this->getTable('cybersourcesa_api_debug')};
|
15 |
+
CREATE TABLE {$this->getTable('cybersourcesa_api_debug')} (
|
16 |
+
`id` int(11) unsigned NOT NULL auto_increment,
|
17 |
+
`created_time` datetime NULL,
|
18 |
+
`request_body` text,
|
19 |
+
`response_body` text,
|
20 |
+
PRIMARY KEY (`id`)
|
21 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
22 |
+
|
23 |
+
");
|
24 |
+
|
25 |
+
$installer->endSetup();
|
app/design/frontend/default/default/layout/cybersourcesa.xml
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<layout>
|
3 |
+
<default>
|
4 |
+
</default>
|
5 |
+
</layout>
|
app/design/frontend/default/default/template/cybersourcesa/failure.phtml
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="page-head">
|
2 |
+
<h3><?php echo $this->__('Error occured') ?></h3>
|
3 |
+
</div>
|
4 |
+
<p><?php echo $this->__('An unexpected error occurred. There is problem with your payment.') ?></p>
|
5 |
+
<p><?php echo $this->__('Please <a href="%s">continue shopping</a>.', $this->getContinueShoppingUrl()) ?></p>
|
app/design/frontend/default/default/template/cybersourcesa/form.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
|
0 |
<?php $_code=$this->getMethodCode() ?>
|
1 |
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
2 |
<li>
|
3 |
<?php echo ('You will be redirected to CyberSource Secure Acceptance WM website when you place an order.') ?>
|
4 |
</li>
|
5 |
</ul>
|
1 |
+
<fieldset class="form-list">
|
2 |
<?php $_code=$this->getMethodCode() ?>
|
3 |
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
4 |
<li>
|
5 |
<?php echo ('You will be redirected to CyberSource Secure Acceptance WM website when you place an order.') ?>
|
6 |
</li>
|
7 |
</ul>
|
app/design/frontend/default/default/template/cybersourcesa/info.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
<?php
|
app/etc/modules/Cactimedia_Cybersourcesa.xml
ADDED
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* @category Cactimedia
|
5 |
+
* @package Cactimedia_Cybersourcesa
|
6 |
+
* @author magepsycho@gmail.com
|
7 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
8 |
+
*/
|
9 |
+
-->
|
10 |
+
<config>
|
11 |
+
<modules>
|
12 |
+
<Cactimedia_Cybersourcesa>
|
13 |
+
<active>true</active>
|
14 |
+
<codePool>local</codePool>
|
15 |
+
<depends>
|
16 |
+
<Mage_Payment/>
|
17 |
+
</depends>
|
18 |
+
</Cactimedia_Cybersourcesa>
|
19 |
+
</modules>
|
20 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>Cactimedia_Cybersourcesa</name>
|
4 |
+
<version>0.1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://www.opensource.org/licenses/osl-3.0.php">OSL v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Secure Acceptance Web/Mobile is one of the payment integration method available for CyberSource.</summary>
|
10 |
+
<description><h3>Introduction:</h3>
|
11 |
+
<p>Secure Acceptance Web/Mobile is one of the payment integration method available for CyberSource.</p>
|
12 |
+
<p>
|
13 |
+
<a href="http://www.cybersource.com" target="_blank">CyberSource</a> Secure Acceptance Web/Mobile allows businesses to accept payments made online, over the phone, and through mobile devices without ever handling toxic payment data, significantly reducing PCI DSS scope. It includes many additional benefits that reduce the burden and complexity of payment acceptance for IT departments and improves the checkout process for consumers.
|
14 |
+
</p>
|
15 |
+

|
16 |
+
<h3>Features:</h3>
|
17 |
+
<p>
|
18 |
+
- Tested for Magento version 1.5.1.0 - 1.8.1.0<br />
|
19 |
+
- Upgrade Proof Module.<br />
|
20 |
+
- Easy to install & configure.<br />
|
21 |
+
- Option to enable/disable.<br />
|
22 |
+
- Other Options for payment settings.<br />
|
23 |
+
</p>
|
24 |
+

|
25 |
+
<h3>Installation / Configuration:</h3>
|
26 |
+
<p>
|
27 |
+
1> Install from magentoconnect using key: "http://connect20.magentocommerce.com/community/Cactimedia_Cybersourcesa".<br />
|
28 |
+
2> After installation go to Admin: System >> Configuration >> Sales >> Payment Methods >> CyberSource Secure Acceptance WM >> Manage your payment setting here.<br />
|
29 |
+
<strong>Example:</strong><br />
|
30 |
+
<br />
|
31 |
+
Enabled: Yes<br />
|
32 |
+
Title: Cybersource Secure Acceptance WM<br />
|
33 |
+
*Access Key: xxxxxxxxxxx [Get the values from your CyberSource Backoffice]<br />
|
34 |
+
*Profile ID: xxxxx<br />
|
35 |
+
*Secret Key: xxxxxxxxxxxxxxxxxxxxxxx<br />
|
36 |
+
New Order Status: Pending<br />
|
37 |
+
Mode: Test<br />
|
38 |
+
Debug: Yes<br />
|
39 |
+
Payment from applicable countries: All Allowed Countries<br />
|
40 |
+
Payment from Specific countries:<br />
|
41 |
+
Sort Order: 1<br />
|
42 |
+
* : You have to create a profile on Cybersource Business Center and use the related values.
|
43 |
+
<br />
|
44 |
+

|
45 |
+

|
46 |
+
<h3>Installation Notes:</h3>
|
47 |
+

|
48 |
+
0> Disable the Cache before Installation or Refresh the Cache after Installation.<br />
|
49 |
+
1> If you get 'Access Denied' error in System > Configuration, then try to logout & re-login.<br />
|
50 |
+
2> If you have custom theme then try to copy the following files:<br />
|
51 |
+
app/design/frontend/default/default/layout/cybersourcesa.xml<br />
|
52 |
+
app/design/frontend/default/default/template/cybersourcesa/*<br />
|
53 |
+
<br />
|
54 |
+
to<br />
|
55 |
+
<br />
|
56 |
+
app/design/frontend/[your-interface]/[your-theme]/layout/cybersourcesa.xml<br />
|
57 |
+
app/design/frontend/[your-interface]/[your-theme]/template/cybersourcesa/*<br />
|
58 |
+
</p>
|
59 |
+
<h3>Live Demo:</h3>
|
60 |
+
<p>Available on Request</p>
|
61 |
+
<h3>Changelog:</h3>
|
62 |
+
<p>
|
63 |
+
--
|
64 |
+
</p>
|
65 |
+
<h3>Quote / Support:</h3>
|
66 |
+
<p><a href="http://www.cactimedia.com" target="_blank">Contact Us</a></p>
|
67 |
+
<h3><span>About Us</span></h3>
|
68 |
+
<p><a href="http://www.cactimedia.com" target="_blank">www.cactimedia.com</a></p>
|
69 |
+
Happy E-Commerce!!<br />
|
70 |
+
CactiMedia Team</description>
|
71 |
+
<notes>- Secure Acceptance Web/Mobile is one of the payment integration method available for CyberSource.</notes>
|
72 |
+
<authors><author><name>Avdhoot Shitre</name><user>avdhoots</user><email>avdhoot@cactimedia.com</email></author></authors>
|
73 |
+
<date>2014-01-26</date>
|
74 |
+
<time>14:22:13</time>
|
75 |
+
<contents><target name="mageetc"><dir name="modules"><file name="Cactimedia_Cybersourcesa.xml" hash="d8b2aaabcfe99fcaf7407910cc98e29d"/></dir></target><target name="magelocal"><dir name="Cactimedia"><dir name="Cybersourcesa"><dir name="Block"><file name="Failure.php" hash="329af792e6a35096c5cb072ad9127cae"/><file name="Form.php" hash="d4c2592f59747fc86185a54a321e558e"/><file name="Info.php" hash="36160fbbea6e81237fd297dd4e28d301"/><file name="Redirect.php" hash="75500c037b96a5269bb689fbbec43004"/><dir name="System"><dir name="Config"><file name="Info.php" hash="c46975abb52f7eb2455123fc9227c45d"/><file name="Payment.php" hash="a40d3a3fb328fdce88e35dd96a78d416"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="0b4191e011c82ca225df1d98e4f07e3c"/></dir><dir name="Model"><file name="Cybersourcesa.php" hash="67cc7a95eb1be577a4f6d0537dd33beb"/><dir name="System"><dir name="Config"><dir name="Source"><file name="Modes.php" hash="e841cb16e896669e8c95eb612faad669"/></dir></dir></dir></dir><dir name="controllers"><file name="ProcessController.php" hash="7370a05133a2f88bd6ea1368fb0a54e0"/></dir><dir name="etc"><file name="adminhtml.xml" hash="65dc9c28b731176a0fba462e6ac1d4a4"/><file name="config.xml" hash="e42471cdb2f5dea699068f427826eaf4"/><file name="system.xml" hash="7f3f0dc2cf2263d383549e66dbf6b9e1"/></dir><dir name="sql"><dir name="cybersourcesa_setup"><file name="mysql4-install-0.1.0.php" hash="6d82c7b09e2979635d4ef88277e37aba"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="layout"><file name="cybersourcesa.xml" hash="724401a2196532edba1c19408f2024ea"/></dir><dir name="template"><dir name="cybersourcesa"><file name="failure.phtml" hash="80a3c3d6f769e83d2df74ee3879d18c2"/><file name="form.phtml" hash="545c0384092aac76945fa5d8d0818f0b"/><file name="info.phtml" hash="242d9dd87a1474720104cc7f7208517e"/></dir></dir></dir></dir></dir></target></contents>
|
76 |
+
<compatible/>
|
77 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
78 |
+
</package>
|