Cactimedia_Cybersourcesa - Version 0.1.0

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 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 &raquo; Configuration &raquo; Sales &raquo; Payment Methods &raquo; CyberSource Secure Acceptance WM &raquo; 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>&lt;h3&gt;Introduction:&lt;/h3&gt;&#xD;
11
+ &lt;p&gt;Secure Acceptance Web/Mobile is one of the payment integration method available for CyberSource.&lt;/p&gt;&#xD;
12
+ &lt;p&gt;&#xD;
13
+ &lt;a href="http://www.cybersource.com" target="_blank"&gt;CyberSource&lt;/a&gt; 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.&#xD;
14
+ &lt;/p&gt;&#xD;
15
+ &#xD;
16
+ &lt;h3&gt;Features:&lt;/h3&gt;&#xD;
17
+ &lt;p&gt;&#xD;
18
+ - Tested for Magento version 1.5.1.0 - 1.8.1.0&lt;br /&gt;&#xD;
19
+ - Upgrade Proof Module.&lt;br /&gt;&#xD;
20
+ - Easy to install &amp; configure.&lt;br /&gt;&#xD;
21
+ - Option to enable/disable.&lt;br /&gt;&#xD;
22
+ - Other Options for payment settings.&lt;br /&gt;&#xD;
23
+ &lt;/p&gt;&#xD;
24
+ &#xD;
25
+ &lt;h3&gt;Installation / Configuration:&lt;/h3&gt;&#xD;
26
+ &lt;p&gt;&#xD;
27
+ 1&gt; Install from magentoconnect using key: "http://connect20.magentocommerce.com/community/Cactimedia_Cybersourcesa".&lt;br /&gt;&#xD;
28
+ 2&gt; After installation go to Admin: System &gt;&gt; Configuration &gt;&gt; Sales &gt;&gt; Payment Methods &gt;&gt; CyberSource Secure Acceptance WM &gt;&gt; Manage your payment setting here.&lt;br /&gt;&#xD;
29
+ &lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;&#xD;
30
+ &lt;br /&gt;&#xD;
31
+ Enabled: Yes&lt;br /&gt;&#xD;
32
+ Title: Cybersource Secure Acceptance WM&lt;br /&gt;&#xD;
33
+ *Access Key: xxxxxxxxxxx [Get the values from your CyberSource Backoffice]&lt;br /&gt;&#xD;
34
+ *Profile ID: xxxxx&lt;br /&gt;&#xD;
35
+ *Secret Key: xxxxxxxxxxxxxxxxxxxxxxx&lt;br /&gt;&#xD;
36
+ New Order Status: Pending&lt;br /&gt;&#xD;
37
+ Mode: Test&lt;br /&gt;&#xD;
38
+ Debug: Yes&lt;br /&gt;&#xD;
39
+ Payment from applicable countries: All Allowed Countries&lt;br /&gt;&#xD;
40
+ Payment from Specific countries:&lt;br /&gt;&#xD;
41
+ Sort Order: 1&lt;br /&gt;&#xD;
42
+ * : You have to create a profile on Cybersource Business Center and use the related values.&#xD;
43
+ &lt;br /&gt;&#xD;
44
+ &#xD;
45
+ &#xD;
46
+ &lt;h3&gt;Installation Notes:&lt;/h3&gt;&#xD;
47
+ &#xD;
48
+ 0&gt; Disable the Cache before Installation or Refresh the Cache after Installation.&lt;br /&gt;&#xD;
49
+ 1&gt; If you get 'Access Denied' error in System &gt; Configuration, then try to logout &amp; re-login.&lt;br /&gt;&#xD;
50
+ 2&gt; If you have custom theme then try to copy the following files:&lt;br /&gt;&#xD;
51
+ app/design/frontend/default/default/layout/cybersourcesa.xml&lt;br /&gt;&#xD;
52
+ app/design/frontend/default/default/template/cybersourcesa/*&lt;br /&gt;&#xD;
53
+ &lt;br /&gt;&#xD;
54
+ to&lt;br /&gt;&#xD;
55
+ &lt;br /&gt;&#xD;
56
+ app/design/frontend/[your-interface]/[your-theme]/layout/cybersourcesa.xml&lt;br /&gt;&#xD;
57
+ app/design/frontend/[your-interface]/[your-theme]/template/cybersourcesa/*&lt;br /&gt;&#xD;
58
+ &lt;/p&gt;&#xD;
59
+ &lt;h3&gt;Live Demo:&lt;/h3&gt;&#xD;
60
+ &lt;p&gt;Available on Request&lt;/p&gt;&#xD;
61
+ &lt;h3&gt;Changelog:&lt;/h3&gt;&#xD;
62
+ &lt;p&gt;&#xD;
63
+ --&#xD;
64
+ &lt;/p&gt;&#xD;
65
+ &lt;h3&gt;Quote / Support:&lt;/h3&gt;&#xD;
66
+ &lt;p&gt;&lt;a href="http://www.cactimedia.com" target="_blank"&gt;Contact Us&lt;/a&gt;&lt;/p&gt;&#xD;
67
+ &lt;h3&gt;&lt;span&gt;About Us&lt;/span&gt;&lt;/h3&gt;&#xD;
68
+ &lt;p&gt;&lt;a href="http://www.cactimedia.com" target="_blank"&gt;www.cactimedia.com&lt;/a&gt;&lt;/p&gt;&#xD;
69
+ Happy E-Commerce!!&lt;br /&gt;&#xD;
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>