Version Notes
you can use this extension for integrating PayU payment gateway
Download this release
Release Info
Developer | Ramakant |
Extension | payu_payment |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/community/Payu/PayuCheckout/Block/Shared/Canceled.php +25 -0
- app/code/community/Payu/PayuCheckout/Block/Shared/Failure.php +25 -0
- app/code/community/Payu/PayuCheckout/Block/Shared/Form.php +10 -0
- app/code/community/Payu/PayuCheckout/Block/Shared/Redirect.php +27 -0
- app/code/community/Payu/PayuCheckout/Controller/Abstract.php +58 -0
- app/code/community/Payu/PayuCheckout/Helper/Data.php +7 -0
- app/code/community/Payu/PayuCheckout/Model/Api/Debug.php +10 -0
- app/code/community/Payu/PayuCheckout/Model/Mysql4/Api/Debug.php +9 -0
- app/code/community/Payu/PayuCheckout/Model/Mysql4/Api/Debug/Collection.php +9 -0
- app/code/community/Payu/PayuCheckout/Model/Mysql4/Setup.php +6 -0
- app/code/community/Payu/PayuCheckout/Model/Shared.php +361 -0
- app/code/community/Payu/PayuCheckout/Model/Source/DemoModes.php +13 -0
- app/code/community/Payu/PayuCheckout/Model/Source/DirectReturn.php +13 -0
- app/code/community/Payu/PayuCheckout/Model/Source/PaymentRoutines.php +13 -0
- app/code/community/Payu/PayuCheckout/controllers/SharedController.php +47 -0
- app/code/community/Payu/PayuCheckout/controllers/SharedController26.php +49 -0
- app/code/community/Payu/PayuCheckout/etc/config.xml +116 -0
- app/code/community/Payu/PayuCheckout/etc/system.xml +92 -0
- app/code/community/Payu/PayuCheckout/sql/payucheckout_setup/mysql4-install-0.1.0.php +22 -0
- app/design/frontend/default/default/layout/payucheckout.xml +43 -0
- app/design/frontend/default/default/template/payucheckout/form.phtml +1 -0
- app/design/frontend/default/default/template/payucheckout/info.phtml +0 -0
- app/design/frontend/default/default/template/payucheckout/shared/canceled.phtml +6 -0
- app/design/frontend/default/default/template/payucheckout/shared/failure.phtml +6 -0
- app/design/frontend/default/default/template/payucheckout/shared/form.phtml +9 -0
- app/etc/modules/Payu_PayuCheckout.xml +12 -0
- package.xml +18 -0
app/code/community/Payu/PayuCheckout/Block/Shared/Canceled.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Block_Shared_Canceled extends Mage_Core_Block_Template
|
5 |
+
{
|
6 |
+
/**
|
7 |
+
* Return Error message
|
8 |
+
*
|
9 |
+
* @return string
|
10 |
+
*/
|
11 |
+
public function getErrorMessage ()
|
12 |
+
{
|
13 |
+
$msg = Mage::getSingleton('checkout/session')->getPayuCheckoutErrorMessage();
|
14 |
+
Mage::getSingleton('checkout/session')->unsPayuCheckoutErrorMessage();
|
15 |
+
return $msg;
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get continue shopping url
|
20 |
+
*/
|
21 |
+
public function getContinueShoppingUrl()
|
22 |
+
{
|
23 |
+
return Mage::getUrl('checkout/cart');
|
24 |
+
}
|
25 |
+
}
|
app/code/community/Payu/PayuCheckout/Block/Shared/Failure.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Block_Shared_Failure extends Mage_Core_Block_Template
|
5 |
+
{
|
6 |
+
/**
|
7 |
+
* Return Error message
|
8 |
+
*
|
9 |
+
* @return string
|
10 |
+
*/
|
11 |
+
public function getErrorMessage ()
|
12 |
+
{
|
13 |
+
$msg = Mage::getSingleton('checkout/session')->getPayuCheckoutErrorMessage();
|
14 |
+
Mage::getSingleton('checkout/session')->unsPayuCheckoutErrorMessage();
|
15 |
+
return $msg;
|
16 |
+
}
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Get continue shopping url
|
20 |
+
*/
|
21 |
+
public function getContinueShoppingUrl()
|
22 |
+
{
|
23 |
+
return Mage::getUrl('checkout/cart');
|
24 |
+
}
|
25 |
+
}
|
app/code/community/Payu/PayuCheckout/Block/Shared/Form.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Block_Shared_Form extends Mage_Payment_Block_Form
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->setTemplate('payucheckout/shared/form.phtml');
|
8 |
+
parent::_construct();
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Payu/PayuCheckout/Block/Shared/Redirect.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Block_Shared_Redirect extends Mage_Core_Block_Abstract
|
4 |
+
{
|
5 |
+
protected function _toHtml()
|
6 |
+
{
|
7 |
+
$shared = $this->getOrder()->getPayment()->getMethodInstance();
|
8 |
+
|
9 |
+
$form = new Varien_Data_Form();
|
10 |
+
$form->setAction($shared->getPayuCheckoutSharedUrl())
|
11 |
+
->setId('payucheckout_shared_checkout')
|
12 |
+
->setName('payucheckout_shared_checkout')
|
13 |
+
->setMethod('POST')
|
14 |
+
->setUseContainer(true);
|
15 |
+
foreach ($shared->getFormFields() as $field=>$value) {
|
16 |
+
$form->addField($field, 'hidden', array('name'=>$field, 'value'=>$value));
|
17 |
+
}
|
18 |
+
|
19 |
+
$html = '<html><body>';
|
20 |
+
$html.= $this->__('You will be redirected to PayuCheckout in a few seconds.');
|
21 |
+
$html.= $form->toHtml();
|
22 |
+
$html.= '<script type="text/javascript">document.getElementById("payucheckout_shared_checkout").submit();</script>';
|
23 |
+
$html.= '</body></html>';
|
24 |
+
|
25 |
+
return $html;
|
26 |
+
}
|
27 |
+
}
|
app/code/community/Payu/PayuCheckout/Controller/Abstract.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
abstract class Payu_PayuCheckout_Controller_Abstract extends Mage_Core_Controller_Front_Action
|
4 |
+
{
|
5 |
+
protected function _expireAjax()
|
6 |
+
{
|
7 |
+
if (!$this->getCheckout()->getQuote()->hasItems()) {
|
8 |
+
$this->getResponse()->setHeader('HTTP/1.1','403 Session Expired');
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
}
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Redirect Block
|
15 |
+
* need to be redeclared
|
16 |
+
*/
|
17 |
+
protected $_redirectBlockType;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Get singleton of Checkout Session Model
|
21 |
+
*
|
22 |
+
* @return Mage_Checkout_Model_Session
|
23 |
+
*/
|
24 |
+
public function getCheckout()
|
25 |
+
{
|
26 |
+
return Mage::getSingleton('checkout/session');
|
27 |
+
}
|
28 |
+
|
29 |
+
/**
|
30 |
+
* when customer select 2CO payment method
|
31 |
+
*/
|
32 |
+
public function redirectAction()
|
33 |
+
{
|
34 |
+
|
35 |
+
|
36 |
+
$session = $this->getCheckout();
|
37 |
+
$session->setPayuCheckoutQuoteId($session->getQuoteId());
|
38 |
+
$session->setPayuCheckoutRealOrderId($session->getLastRealOrderId());
|
39 |
+
|
40 |
+
$order = Mage::getModel('sales/order');
|
41 |
+
$order->loadByIncrementId($session->getLastRealOrderId());
|
42 |
+
$order->addStatusToHistory($order->getStatus(), Mage::helper('payucheckout')->__('Customer was redirected to payu.'));
|
43 |
+
$order->save();
|
44 |
+
|
45 |
+
$this->getResponse()->setBody(
|
46 |
+
$this->getLayout()
|
47 |
+
->createBlock($this->_redirectBlockType)
|
48 |
+
->setOrder($order)
|
49 |
+
->toHtml()
|
50 |
+
);
|
51 |
+
$session->unsQuoteId();
|
52 |
+
$session->unsLastRealOrderId();
|
53 |
+
}
|
54 |
+
|
55 |
+
|
56 |
+
|
57 |
+
|
58 |
+
}
|
app/code/community/Payu/PayuCheckout/Helper/Data.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Helper_Data extends Mage_Core_Helper_Abstract
|
5 |
+
{
|
6 |
+
|
7 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Api/Debug.php
ADDED
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Model_Api_Debug extends Mage_Core_Model_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
|
8 |
+
$this->_init('payucheckout/api_debug');
|
9 |
+
}
|
10 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Mysql4/Api/Debug.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Model_Mysql4_Api_Debug extends Mage_Core_Model_Mysql4_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('payucheckout/api_debug', 'debug_id');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Mysql4/Api/Debug/Collection.php
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Model_Mysql4_Api_Debug_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
|
4 |
+
{
|
5 |
+
protected function _construct()
|
6 |
+
{
|
7 |
+
$this->_init('payucheckout/api_debug');
|
8 |
+
}
|
9 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Mysql4/Setup.php
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Model_Mysql4_Setup extends Mage_Sales_Model_Mysql4_Setup
|
4 |
+
{
|
5 |
+
|
6 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Shared.php
ADDED
@@ -0,0 +1,361 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_Model_Shared extends Mage_Payment_Model_Method_Abstract
|
4 |
+
{
|
5 |
+
protected $_code = 'payucheckout_shared';
|
6 |
+
|
7 |
+
protected $_isGateway = false;
|
8 |
+
protected $_canAuthorize = false;
|
9 |
+
protected $_canCapture = true;
|
10 |
+
protected $_canCapturePartial = false;
|
11 |
+
protected $_canRefund = false;
|
12 |
+
protected $_canVoid = false;
|
13 |
+
protected $_canUseInternal = false;
|
14 |
+
protected $_canUseCheckout = true;
|
15 |
+
protected $_canUseForMultishipping = false;
|
16 |
+
|
17 |
+
protected $_formBlockType = 'payucheckout/shared_form';
|
18 |
+
protected $_paymentMethod = 'shared';
|
19 |
+
|
20 |
+
|
21 |
+
protected $_order;
|
22 |
+
|
23 |
+
|
24 |
+
public function cleanString($string) {
|
25 |
+
|
26 |
+
$string_step1 = strip_tags($string);
|
27 |
+
$string_step2 = nl2br($string_step1);
|
28 |
+
$string_step3 = str_replace("<br />","<br>",$string_step2);
|
29 |
+
$cleaned_string = str_replace("\""," inch",$string_step3);
|
30 |
+
return $cleaned_string;
|
31 |
+
}
|
32 |
+
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get checkout session namespace
|
36 |
+
*
|
37 |
+
* @return Mage_Checkout_Model_Session
|
38 |
+
*/
|
39 |
+
public function getCheckout()
|
40 |
+
{
|
41 |
+
return Mage::getSingleton('checkout/session');
|
42 |
+
}
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Get current quote
|
46 |
+
*
|
47 |
+
* @return Mage_Sales_Model_Quote
|
48 |
+
*/
|
49 |
+
public function getQuote()
|
50 |
+
{
|
51 |
+
return $this->getCheckout()->getQuote();
|
52 |
+
}
|
53 |
+
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Get order model
|
57 |
+
*
|
58 |
+
* @return Mage_Sales_Model_Order
|
59 |
+
*/
|
60 |
+
public function getOrder()
|
61 |
+
{
|
62 |
+
if (!$this->_order) {
|
63 |
+
$paymentInfo = $this->getInfoInstance();
|
64 |
+
$this->_order = Mage::getModel('sales/order')
|
65 |
+
->loadByIncrementId($paymentInfo->getOrder()->getRealOrderId());
|
66 |
+
}
|
67 |
+
return $this->_order;
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
public function getCustomerId()
|
72 |
+
{
|
73 |
+
return Mage::getStoreConfig('payment/' . $this->getCode() . '/customer_id');
|
74 |
+
}
|
75 |
+
|
76 |
+
public function getAccepteCurrency()
|
77 |
+
{
|
78 |
+
return Mage::getStoreConfig('payment/' . $this->getCode() . '/currency');
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
|
83 |
+
|
84 |
+
public function getOrderPlaceRedirectUrl()
|
85 |
+
{
|
86 |
+
return Mage::getUrl('payucheckout/shared/redirect');
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* prepare params array to send it to gateway page via POST
|
91 |
+
*
|
92 |
+
* @return array
|
93 |
+
*/
|
94 |
+
public function getFormFields()
|
95 |
+
{
|
96 |
+
|
97 |
+
$billing = $this->getOrder()->getBillingAddress();
|
98 |
+
$coFields = array();
|
99 |
+
$items = $this->getQuote()->getAllItems();
|
100 |
+
|
101 |
+
if ($items) {
|
102 |
+
$i = 1;
|
103 |
+
foreach($items as $item){
|
104 |
+
if ($item->getParentItem()) {
|
105 |
+
continue;
|
106 |
+
}
|
107 |
+
$coFields['c_prod_'.$i] = $this->cleanString($item->getSku());
|
108 |
+
$coFields['c_name_'.$i] = $this->cleanString($item->getName());
|
109 |
+
$coFields['c_description_'.$i] = $this->cleanString($item->getDescription());
|
110 |
+
$coFields['c_price_'.$i] = number_format($item->getPrice(), 2, '.', '');
|
111 |
+
$i++;
|
112 |
+
}
|
113 |
+
}
|
114 |
+
|
115 |
+
$request = '';
|
116 |
+
foreach ($coFields as $k=>$v) {
|
117 |
+
$request .= '<' . $k . '>' . $v . '</' . $k . '>';
|
118 |
+
}
|
119 |
+
|
120 |
+
|
121 |
+
$key=Mage::getStoreConfig('payment/payucheckout_shared/key');
|
122 |
+
$salt=Mage::getStoreConfig('payment/payucheckout_shared/salt');
|
123 |
+
$debug_mode=Mage::getStoreConfig('payment/payucheckout_shared/debug_mode');
|
124 |
+
|
125 |
+
$orderId = $this->getOrder()->getRealOrderId();
|
126 |
+
$txnid = $orderId;
|
127 |
+
|
128 |
+
|
129 |
+
$coFields['key'] = $key;
|
130 |
+
$coFields['txnid'] = $txnid;
|
131 |
+
|
132 |
+
$coFields['amount'] = number_format($this->getOrder()->getBaseGrandTotal(),0,'','');
|
133 |
+
$coFields['productinfo'] = 'Prpduct Information';
|
134 |
+
$coFields['firstname'] = $billing->getFirstname();
|
135 |
+
$coFields['Lastname'] = $billing->getLastname();
|
136 |
+
$coFields['City'] = $billing->getCity();
|
137 |
+
$coFields['State'] = $billing->getRegion();
|
138 |
+
$coFields['Country'] = $billing->getCountry();
|
139 |
+
$coFields['Zipcode'] = $billing->getPostcode();
|
140 |
+
$coFields['email'] = $this->getOrder()->getCustomerEmail();
|
141 |
+
$coFields['phone'] = $billing->getTelephone();
|
142 |
+
|
143 |
+
$coFields['surl'] = Mage::getBaseUrl().'payucheckout/shared/success/';
|
144 |
+
$coFields['furl'] = Mage::getBaseUrl().'payucheckout/shared/failure/';
|
145 |
+
$coFields['curl'] = Mage::getBaseUrl().'payucheckout/shared/canceled/id/'.$this->getOrder()->getRealOrderId();
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
|
150 |
+
$coFields['Pg'] = 'CC';
|
151 |
+
$debugId='';
|
152 |
+
|
153 |
+
if ($debug_mode==1) {
|
154 |
+
$requestInfo= $key.'|'.$coFields['txnid'].'|'.$coFields['amount'].'|'.
|
155 |
+
$coFields['productinfo'].'|'.$coFields['firstname'].'|'.$coFields['email'].'|'.$debugId.'||||||||||'.$salt;
|
156 |
+
$debug = Mage::getModel('payucheckout/api_debug')
|
157 |
+
->setRequestBody($requestInfo)
|
158 |
+
->save();
|
159 |
+
|
160 |
+
$debugId =$debug->getId();
|
161 |
+
|
162 |
+
$coFields['udf1']=$debugId;
|
163 |
+
$coFields['Hash'] = hash('sha512', $key.'|'.$coFields['txnid'].'|'.$coFields['amount'].'|'.
|
164 |
+
$coFields['productinfo'].'|'.$coFields['firstname'].'|'.$coFields['email'].'|'.$debugId.'||||||||||'.$salt);
|
165 |
+
}
|
166 |
+
else
|
167 |
+
{
|
168 |
+
$coFields['Hash'] = hash('sha512', $key.'|'.$coFields['txnid'].'|'.$coFields['amount'].'|'.
|
169 |
+
$coFields['productinfo'].'|'.$coFields['firstname'].'|'.$coFields['email'].'|||||||||||'.$salt);
|
170 |
+
}
|
171 |
+
return $coFields;
|
172 |
+
}
|
173 |
+
|
174 |
+
/**
|
175 |
+
* Get url of Payu payment
|
176 |
+
*
|
177 |
+
* @return string
|
178 |
+
*/
|
179 |
+
public function getPayuCheckoutSharedUrl()
|
180 |
+
{
|
181 |
+
$mode=Mage::getStoreConfig('payment/payucheckout_shared/demo_mode');
|
182 |
+
|
183 |
+
$url='https://test.payu.in/_payment.php';
|
184 |
+
|
185 |
+
if($mode=='')
|
186 |
+
{
|
187 |
+
$url='https://secure.payu.in/_payment.php';
|
188 |
+
}
|
189 |
+
|
190 |
+
return $url;
|
191 |
+
}
|
192 |
+
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Get debug flag
|
196 |
+
*
|
197 |
+
* @return string
|
198 |
+
*/
|
199 |
+
public function getDebug()
|
200 |
+
{
|
201 |
+
return Mage::getStoreConfig('payment/' . $this->getCode() . '/debug_flag');
|
202 |
+
}
|
203 |
+
|
204 |
+
public function capture(Varien_Object $payment, $amount)
|
205 |
+
{
|
206 |
+
$payment->setStatus(self::STATUS_APPROVED)
|
207 |
+
->setLastTransId($this->getTransactionId());
|
208 |
+
|
209 |
+
return $this;
|
210 |
+
}
|
211 |
+
|
212 |
+
public function cancel(Varien_Object $payment)
|
213 |
+
{
|
214 |
+
$payment->setStatus(self::STATUS_DECLINED)
|
215 |
+
->setLastTransId($this->getTransactionId());
|
216 |
+
|
217 |
+
return $this;
|
218 |
+
}
|
219 |
+
|
220 |
+
/**
|
221 |
+
* parse response POST array from gateway page and return payment status
|
222 |
+
*
|
223 |
+
* @return bool
|
224 |
+
*/
|
225 |
+
public function parseResponse()
|
226 |
+
{
|
227 |
+
|
228 |
+
return true;
|
229 |
+
|
230 |
+
}
|
231 |
+
|
232 |
+
/**
|
233 |
+
* Return redirect block type
|
234 |
+
*
|
235 |
+
* @return string
|
236 |
+
*/
|
237 |
+
public function getRedirectBlockType()
|
238 |
+
{
|
239 |
+
return $this->_redirectBlockType;
|
240 |
+
}
|
241 |
+
|
242 |
+
/**
|
243 |
+
* Return payment method type string
|
244 |
+
*
|
245 |
+
* @return string
|
246 |
+
*/
|
247 |
+
public function getPaymentMethodType()
|
248 |
+
{
|
249 |
+
return $this->_paymentMethod;
|
250 |
+
}
|
251 |
+
|
252 |
+
|
253 |
+
public function getResponseOperation($response)
|
254 |
+
{
|
255 |
+
|
256 |
+
$order = Mage::getModel('sales/order');
|
257 |
+
$debug_mode=Mage::getStoreConfig('payment/payucheckout_shared/debug_mode');
|
258 |
+
$key=Mage::getStoreConfig('payment/payucheckout_shared/key');
|
259 |
+
$salt=Mage::getStoreConfig('payment/payucheckout_shared/salt');
|
260 |
+
if(isset($response['status']))
|
261 |
+
{
|
262 |
+
$txnid=$response['txnid'];
|
263 |
+
$orderid=$txnid;
|
264 |
+
|
265 |
+
if($response['status']=='success')
|
266 |
+
{
|
267 |
+
$status='success';
|
268 |
+
$order->loadByIncrementId($txnid);
|
269 |
+
$billing = $order->getBillingAddress();
|
270 |
+
$amount = $response['amount'];
|
271 |
+
$productinfo = 'Prpduct Information';
|
272 |
+
$firstname = $billing->getFirstname();
|
273 |
+
$email = $order->getCustomerEmail();
|
274 |
+
$keyString='';
|
275 |
+
$Udf1 = $response['udf1'];
|
276 |
+
$Udf2 = $response['udf2'];
|
277 |
+
$Udf3 = $response['udf3'];
|
278 |
+
$Udf4 = $response['udf4'];
|
279 |
+
$Udf5 = $response['udf5'];
|
280 |
+
$Udf6 = $response['udf6'];
|
281 |
+
$Udf7 = $response['udf7'];
|
282 |
+
$Udf8 = $response['udf8'];
|
283 |
+
$Udf9 = $response['udf9'];
|
284 |
+
$Udf10 = $response['udf10'];
|
285 |
+
if($debug_mode==1)
|
286 |
+
{
|
287 |
+
$keyString = $key.'|'.$txnid.'|'.$amount.'|'.$productinfo.'|'.$firstname.'|'.$email.'|'.$Udf1.'|'.$Udf2.'|'.$Udf3.'|'.$Udf4.'|'.$Udf5.'|'.$Udf6.'|'.$Udf7.'|'.$Udf8.'|'.$Udf9.'|'.$Udf10;
|
288 |
+
}
|
289 |
+
else
|
290 |
+
{
|
291 |
+
$keyString = $key.'|'.$txnid.'|'.$amount.'|'.$productinfo.'|'.$firstname.'|'.$email.'|'.$Udf1.'|'.$Udf2.'|'.$Udf3.'|'.$Udf4.'|'.$Udf5.'|'.$Udf6.'|'.$Udf7.'|'.$Udf8.'|'.$Udf9.'|'.$Udf10;
|
292 |
+
}
|
293 |
+
|
294 |
+
$keyArray = explode("|",$keyString);
|
295 |
+
$reverseKeyArray = array_reverse($keyArray);
|
296 |
+
$reverseKeyString=implode("|",$reverseKeyArray);
|
297 |
+
$saltString = $salt.'|'.$status.'|'.$reverseKeyString;
|
298 |
+
$sentHashString = strtolower(hash('sha512', $saltString));
|
299 |
+
$responseHashString=$_REQUEST['hash'];
|
300 |
+
if($sentHashString==$responseHashString)
|
301 |
+
{
|
302 |
+
$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
|
303 |
+
$order->save();
|
304 |
+
$order->sendNewOrderEmail();
|
305 |
+
|
306 |
+
}
|
307 |
+
else
|
308 |
+
{
|
309 |
+
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true);
|
310 |
+
$order->cancel()->save();
|
311 |
+
}
|
312 |
+
|
313 |
+
if ($debug_mode==1) {
|
314 |
+
$debugId=$response['udf1'];
|
315 |
+
$data = array('response_body'=>implode(",",$response));
|
316 |
+
$model = Mage::getModel('payucheckout/api_debug')->load($debugId)->addData($data);
|
317 |
+
$model->setId($id)->save();
|
318 |
+
}
|
319 |
+
}
|
320 |
+
|
321 |
+
if($response['status']=='failure')
|
322 |
+
{
|
323 |
+
$order->loadByIncrementId($orderid);
|
324 |
+
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true);
|
325 |
+
$order->cancel()->save();
|
326 |
+
if ($debug_mode==1) {
|
327 |
+
$debugId=$response['udf1'];
|
328 |
+
$data = array('response_body'=>implode(",",$response));
|
329 |
+
$model = Mage::getModel('payucheckout/api_debug')->load($debugId)->addData($data);
|
330 |
+
$model->setId($id)->save();
|
331 |
+
}
|
332 |
+
|
333 |
+
}
|
334 |
+
else if($response['status']=='pending')
|
335 |
+
{
|
336 |
+
$order->loadByIncrementId($orderid);
|
337 |
+
$order->setState(Mage_Sales_Model_Order::STATE_NEW, true);
|
338 |
+
$order->cancel()->save();
|
339 |
+
if ($debug_mode==1) {
|
340 |
+
$debugId=$response['udf1'];
|
341 |
+
$data = array('response_body'=>implode(",",$response));
|
342 |
+
$model = Mage::getModel('payucheckout/api_debug')->load($debugId)->addData($data);
|
343 |
+
$model->setId($id)->save();
|
344 |
+
}
|
345 |
+
|
346 |
+
}
|
347 |
+
|
348 |
+
}
|
349 |
+
else
|
350 |
+
{
|
351 |
+
$order->loadByIncrementId($response['id']);
|
352 |
+
$order->setState(Mage_Sales_Model_Order::STATE_CANCELED, true);
|
353 |
+
$order->cancel()->save();
|
354 |
+
|
355 |
+
}
|
356 |
+
|
357 |
+
|
358 |
+
|
359 |
+
|
360 |
+
}
|
361 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Source/DemoModes.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Model_Source_DemoModes
|
5 |
+
{
|
6 |
+
public function toOptionArray()
|
7 |
+
{
|
8 |
+
return array(
|
9 |
+
array('value' => 'Y', 'label' => 'Demo Mode'),
|
10 |
+
array('value' => '', 'label' => 'Production Mode'),
|
11 |
+
);
|
12 |
+
}
|
13 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Source/DirectReturn.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Model_Source_DirectReturn
|
5 |
+
{
|
6 |
+
public function toOptionArray()
|
7 |
+
{
|
8 |
+
return array(
|
9 |
+
array('value' => 'redirect', 'label' => 'Immediately returned to my website '),
|
10 |
+
array('value' => 'link', 'label' => 'Given links only back to my website '),
|
11 |
+
);
|
12 |
+
}
|
13 |
+
}
|
app/code/community/Payu/PayuCheckout/Model/Source/PaymentRoutines.php
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
class Payu_PayuCheckout_Model_Source_PaymentRoutines
|
5 |
+
{
|
6 |
+
public function toOptionArray()
|
7 |
+
{
|
8 |
+
return array(
|
9 |
+
array('value' => 'multi', 'label' => 'Multi-page Payment Routine'),
|
10 |
+
array('value' => 'single', 'label' => 'Single Page Payment Routine'),
|
11 |
+
);
|
12 |
+
}
|
13 |
+
}
|
app/code/community/Payu/PayuCheckout/controllers/SharedController.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_SharedController extends Payu_PayuCheckout_Controller_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
protected $_redirectBlockType = 'payucheckout/shared_redirect';
|
7 |
+
protected $_paymentInst = NULL;
|
8 |
+
|
9 |
+
|
10 |
+
public function successAction()
|
11 |
+
{
|
12 |
+
$response = $this->getRequest()->getPost();
|
13 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($response);
|
14 |
+
$this->_redirect('checkout/onepage/success');
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
public function failureAction()
|
20 |
+
{
|
21 |
+
|
22 |
+
$arrParams = $this->getRequest()->getPost();
|
23 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($arrParams);
|
24 |
+
$this->getCheckout()->clear();
|
25 |
+
$this->_redirect('checkout/onepage/failure');
|
26 |
+
}
|
27 |
+
|
28 |
+
|
29 |
+
public function canceledAction()
|
30 |
+
{
|
31 |
+
$arrParams = $this->getRequest()->getParams();
|
32 |
+
|
33 |
+
|
34 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($arrParams);
|
35 |
+
|
36 |
+
$this->getCheckout()->clear();
|
37 |
+
$this->loadLayout();
|
38 |
+
$this->renderLayout();
|
39 |
+
}
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
|
45 |
+
}
|
46 |
+
|
47 |
+
|
app/code/community/Payu/PayuCheckout/controllers/SharedController26.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Payu_PayuCheckout_SharedController extends Payu_PayuCheckout_Controller_Abstract
|
4 |
+
{
|
5 |
+
|
6 |
+
protected $_redirectBlockType = 'payucheckout/shared_redirect';
|
7 |
+
protected $_paymentInst = NULL;
|
8 |
+
|
9 |
+
|
10 |
+
public function successAction()
|
11 |
+
{
|
12 |
+
$response = $this->getRequest()->getPost();
|
13 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($response);
|
14 |
+
$this->_redirect('checkout/onepage/success');
|
15 |
+
}
|
16 |
+
|
17 |
+
|
18 |
+
|
19 |
+
public function failureAction()
|
20 |
+
{
|
21 |
+
$response=$_REQUEST;
|
22 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($response);
|
23 |
+
$this->getCheckout()->clear();
|
24 |
+
//$this->_redirect('checkout/onepage/failure');
|
25 |
+
|
26 |
+
$this->loadLayout();
|
27 |
+
$this->renderLayout();
|
28 |
+
}
|
29 |
+
|
30 |
+
|
31 |
+
public function canceledAction()
|
32 |
+
{
|
33 |
+
$arrParams = $this->getRequest()->getParams();
|
34 |
+
|
35 |
+
|
36 |
+
Mage::getModel('payucheckout/shared')->getResponseOperation($arrParams);
|
37 |
+
|
38 |
+
$this->getCheckout()->clear();
|
39 |
+
$this->loadLayout();
|
40 |
+
$this->renderLayout();
|
41 |
+
}
|
42 |
+
|
43 |
+
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
}
|
48 |
+
|
49 |
+
|
app/code/community/Payu/PayuCheckout/etc/config.xml
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Payu_PayuCheckout>
|
5 |
+
<version>0.1.0</version>
|
6 |
+
</Payu_PayuCheckout>
|
7 |
+
</modules>
|
8 |
+
<global>
|
9 |
+
<models>
|
10 |
+
<payucheckout>
|
11 |
+
<class>Payu_PayuCheckout_Model</class>
|
12 |
+
<resourceModel>payucheckout_mysql4</resourceModel>
|
13 |
+
</payucheckout>
|
14 |
+
<payucheckout_mysql4>
|
15 |
+
<class>Payu_PayuCheckout_Model_Mysql4</class>
|
16 |
+
<entities>
|
17 |
+
<api_debug><table>payucheckout_api_debug</table></api_debug>
|
18 |
+
</entities>
|
19 |
+
</payucheckout_mysql4>
|
20 |
+
</models>
|
21 |
+
<helpers>
|
22 |
+
<payucheckout>
|
23 |
+
<class>Payu_PayuCheckout_Helper</class>
|
24 |
+
</payucheckout>
|
25 |
+
</helpers>
|
26 |
+
<resources>
|
27 |
+
<payucheckout_setup>
|
28 |
+
<setup>
|
29 |
+
<module>Payu_PayuCheckout</module>
|
30 |
+
<class>Payu_PayuCheckout_Model_Mysql4_Setup</class>
|
31 |
+
</setup>
|
32 |
+
<connection>
|
33 |
+
<use>core_setup</use>
|
34 |
+
</connection>
|
35 |
+
</payucheckout_setup>
|
36 |
+
<payucheckout_write>
|
37 |
+
<connection>
|
38 |
+
<use>core_write</use>
|
39 |
+
</connection>
|
40 |
+
</payucheckout_write>
|
41 |
+
<payucheckout_read>
|
42 |
+
<connection>
|
43 |
+
<use>core_read</use>
|
44 |
+
</connection>
|
45 |
+
</payucheckout_read>
|
46 |
+
</resources>
|
47 |
+
<blocks>
|
48 |
+
<payucheckout><class>Payu_PayuCheckout_Block</class></payucheckout>
|
49 |
+
</blocks>
|
50 |
+
</global>
|
51 |
+
<frontend>
|
52 |
+
<secure_url>
|
53 |
+
<payucheckout_shared>/payucheckout/shared</payucheckout_shared>
|
54 |
+
</secure_url>
|
55 |
+
<routers>
|
56 |
+
<payucheckout>
|
57 |
+
<use>standard</use>
|
58 |
+
<args>
|
59 |
+
<module>Payu_PayuCheckout</module>
|
60 |
+
<frontName>payucheckout</frontName>
|
61 |
+
</args>
|
62 |
+
</payucheckout>
|
63 |
+
</routers>
|
64 |
+
<translate>
|
65 |
+
<modules>
|
66 |
+
<Payu_PayuCheckout>
|
67 |
+
<files>
|
68 |
+
<default>Payu_PayuCheckout.csv</default>
|
69 |
+
</files>
|
70 |
+
</Payu_PayuCheckout>
|
71 |
+
</modules>
|
72 |
+
</translate>
|
73 |
+
<layout>
|
74 |
+
<updates>
|
75 |
+
<payucheckout>
|
76 |
+
<file>payucheckout.xml</file>
|
77 |
+
</payucheckout>
|
78 |
+
</updates>
|
79 |
+
</layout>
|
80 |
+
</frontend>
|
81 |
+
<adminhtml>
|
82 |
+
<translate>
|
83 |
+
<modules>
|
84 |
+
<Payu_PayuCheckout>
|
85 |
+
<files>
|
86 |
+
<default>Payu_PayuCheckout.csv</default>
|
87 |
+
</files>
|
88 |
+
</Payu_PayuCheckout>
|
89 |
+
</modules>
|
90 |
+
</translate>
|
91 |
+
</adminhtml>
|
92 |
+
<default>
|
93 |
+
<payment>
|
94 |
+
<payucheckout_shared>
|
95 |
+
<customer_id backend_model="adminhtml/system_config_backend_encrypted"/>
|
96 |
+
<currency>USD</currency>
|
97 |
+
<model>payucheckout/shared</model>
|
98 |
+
<title>Payu Checkout</title>
|
99 |
+
<secret_word>PUT SECRET WORD HERE</secret_word>
|
100 |
+
<check_hash>1</check_hash>
|
101 |
+
<direct_return>redirect</direct_return>
|
102 |
+
<demo_mode></demo_mode>
|
103 |
+
<skip_landing>0</skip_landing>
|
104 |
+
<order_status>processing</order_status>
|
105 |
+
<fraud_wait>holded</fraud_wait>
|
106 |
+
<fraud_passed>pending</fraud_passed>
|
107 |
+
<fraud_failed>canceled</fraud_failed>
|
108 |
+
<invoice_pending></invoice_pending>
|
109 |
+
<invoice_deposited></invoice_deposited>
|
110 |
+
<invoice_declined>canceled</invoice_declined>
|
111 |
+
<refund_issued>canceled</refund_issued>
|
112 |
+
<allowspecific>0</allowspecific>
|
113 |
+
</payucheckout_shared>
|
114 |
+
</payment>
|
115 |
+
</default>
|
116 |
+
</config>
|
app/code/community/Payu/PayuCheckout/etc/system.xml
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<config>
|
4 |
+
<sections>
|
5 |
+
<payment>
|
6 |
+
<groups>
|
7 |
+
<payucheckout_shared translate="label" module="payucheckout">
|
8 |
+
<label>PayuCheckout</label>
|
9 |
+
<frontend_type>text</frontend_type>
|
10 |
+
<sort_order>303</sort_order>
|
11 |
+
<show_in_default>1</show_in_default>
|
12 |
+
<show_in_website>1</show_in_website>
|
13 |
+
<show_in_store>0</show_in_store>
|
14 |
+
<fields>
|
15 |
+
<active translate="label">
|
16 |
+
<label>Enabled</label>
|
17 |
+
<frontend_type>select</frontend_type>
|
18 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
19 |
+
<sort_order>1</sort_order>
|
20 |
+
<show_in_default>1</show_in_default>
|
21 |
+
<show_in_website>1</show_in_website>
|
22 |
+
<show_in_store>0</show_in_store>
|
23 |
+
</active>
|
24 |
+
<title translate="label">
|
25 |
+
<label>Title</label>
|
26 |
+
<comment>This is what the customers will see as the name of the payment option</comment>
|
27 |
+
<frontend_type>text</frontend_type>
|
28 |
+
<sort_order>2</sort_order>
|
29 |
+
<show_in_default>1</show_in_default>
|
30 |
+
<show_in_website>1</show_in_website>
|
31 |
+
<show_in_store>0</show_in_store>
|
32 |
+
</title>
|
33 |
+
|
34 |
+
<key translate="label">
|
35 |
+
<label>Merchant Id</label>
|
36 |
+
|
37 |
+
<frontend_type>text</frontend_type>
|
38 |
+
<sort_order>3</sort_order>
|
39 |
+
<show_in_default>2</show_in_default>
|
40 |
+
<show_in_website>2</show_in_website>
|
41 |
+
<show_in_store>0</show_in_store>
|
42 |
+
</key>>
|
43 |
+
|
44 |
+
<salt translate="label">
|
45 |
+
<label>Salt</label>
|
46 |
+
<comment>This is salt hash key provided by Payu</comment>
|
47 |
+
<frontend_type>text</frontend_type>
|
48 |
+
<sort_order>4</sort_order>
|
49 |
+
<show_in_default>3</show_in_default>
|
50 |
+
<show_in_website>3</show_in_website>
|
51 |
+
<show_in_store>0</show_in_store>
|
52 |
+
</salt>
|
53 |
+
|
54 |
+
|
55 |
+
<demo_mode translate="label">
|
56 |
+
<label>Transaction Mode?</label>
|
57 |
+
<frontend_type>select</frontend_type>
|
58 |
+
<source_model>payucheckout/source_DemoModes</source_model>
|
59 |
+
<sort_order>55</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>0</show_in_store>
|
63 |
+
</demo_mode>
|
64 |
+
|
65 |
+
<order_status translate="label">
|
66 |
+
<label>New order status</label>
|
67 |
+
<frontend_type>select</frontend_type>
|
68 |
+
<source_model>adminhtml/system_config_source_order_status</source_model>
|
69 |
+
<sort_order>6</sort_order>
|
70 |
+
|
71 |
+
<show_in_default>1</show_in_default>
|
72 |
+
<show_in_website>1</show_in_website>
|
73 |
+
<show_in_store>0</show_in_store>
|
74 |
+
</order_status>
|
75 |
+
|
76 |
+
<debug_mode translate="label">
|
77 |
+
<label>Debug Mode</label>
|
78 |
+
<frontend_type>select</frontend_type>
|
79 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
80 |
+
<sort_order>10</sort_order>
|
81 |
+
<show_in_default>1</show_in_default>
|
82 |
+
<show_in_website>1</show_in_website>
|
83 |
+
<show_in_store>0</show_in_store>
|
84 |
+
</debug_mode>
|
85 |
+
|
86 |
+
|
87 |
+
</fields>
|
88 |
+
</payucheckout_shared>
|
89 |
+
</groups>
|
90 |
+
</payment>
|
91 |
+
</sections>
|
92 |
+
</config>
|
app/code/community/Payu/PayuCheckout/sql/payucheckout_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
$installer = $this;
|
5 |
+
|
6 |
+
$installer->startSetup();
|
7 |
+
|
8 |
+
$installer->run("
|
9 |
+
|
10 |
+
-- DROP TABLE IF EXISTS `{$this->getTable('payucheckout/api_debug')}`;
|
11 |
+
CREATE TABLE `{$this->getTable('payucheckout/api_debug')}` (
|
12 |
+
`debug_id` int(10) unsigned NOT NULL auto_increment,
|
13 |
+
`debug_at` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
|
14 |
+
`request_body` text,
|
15 |
+
`response_body` text,
|
16 |
+
PRIMARY KEY (`debug_id`),
|
17 |
+
KEY `debug_at` (`debug_at`)
|
18 |
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
19 |
+
|
20 |
+
");
|
21 |
+
|
22 |
+
$installer->endSetup();
|
app/design/frontend/default/default/layout/payucheckout.xml
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<layout version="0.1.0">
|
4 |
+
<!-- Payucgeckout Failure Response Review -->
|
5 |
+
<payucheckout_shared_failure>
|
6 |
+
<reference name="root">
|
7 |
+
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
|
8 |
+
</reference>
|
9 |
+
<reference name="content">
|
10 |
+
<block type="payucheckout/shared_failure" name="payucheckout_shared_failure" template="payucheckout/shared/failure.phtml">
|
11 |
+
</block>
|
12 |
+
|
13 |
+
</reference>
|
14 |
+
<reference name="content">
|
15 |
+
|
16 |
+
</reference>
|
17 |
+
</payucheckout_shared_failure>
|
18 |
+
|
19 |
+
|
20 |
+
<!-- Payucgeckout Cancel Response Review -->
|
21 |
+
<payucheckout_shared_canceled>
|
22 |
+
<reference name="root">
|
23 |
+
<action method="setTemplate"><template>page/2columns-right.phtml</template></action>
|
24 |
+
</reference>
|
25 |
+
<reference name="content">
|
26 |
+
<block type="payucheckout/shared_canceled" name="payucheckout_shared_canceled"
|
27 |
+
template="payucheckout/shared/canceled.phtml">
|
28 |
+
</block>
|
29 |
+
|
30 |
+
</reference>
|
31 |
+
<reference name="content">
|
32 |
+
|
33 |
+
</reference>
|
34 |
+
</payucheckout_shared_canceled>
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
|
39 |
+
</layout>
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
|
app/design/frontend/default/default/template/payucheckout/form.phtml
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
|
app/design/frontend/default/default/template/payucheckout/info.phtml
ADDED
File without changes
|
app/design/frontend/default/default/template/payucheckout/shared/canceled.phtml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
<div class="page-head">
|
3 |
+
<h3><?php echo $this->__('Payment transaction has been canceled.') ?></h3>
|
4 |
+
</div>
|
5 |
+
<p><?php //echo $this->getErrorMessage() ?>.</p>
|
6 |
+
<p><?php echo $this->__('Please <a href="%s">continue shopping</a>.', $this->getContinueShoppingUrl()) ?></p>
|
app/design/frontend/default/default/template/payucheckout/shared/failure.phtml
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
<div class="page-head">
|
3 |
+
<h3><?php echo $this->__('Order payment has been failed') ?></h3>
|
4 |
+
</div>
|
5 |
+
<p><?php echo $this->getErrorMessage() ?>.</p>
|
6 |
+
<p><?php echo $this->__('Please <a href="%s">continue shopping</a>.', $this->getContinueShoppingUrl()) ?></p>
|
app/design/frontend/default/default/template/payucheckout/shared/form.phtml
ADDED
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
<fieldset class="form-list">
|
3 |
+
<?php $_code=$this->getMethodCode() ?>
|
4 |
+
<ul id="payment_form_<?php echo $_code ?>" style="display:none">
|
5 |
+
<li>
|
6 |
+
<?php echo $this->__('You will be redirected to PayuCheckout website when you place an order.') ?>
|
7 |
+
</li>
|
8 |
+
</ul>
|
9 |
+
</fieldset>
|
app/etc/modules/Payu_PayuCheckout.xml
ADDED
@@ -0,0 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<Payu_PayuCheckout>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
<depends>
|
8 |
+
<Mage_Payment/>
|
9 |
+
</depends>
|
10 |
+
</Payu_PayuCheckout>
|
11 |
+
</modules>
|
12 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>payu_payment</name>
|
4 |
+
<version>0.1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>PayU v1.0.5</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>PayU Payment Gateway</summary>
|
10 |
+
<description>PayU Payment Gateway</description>
|
11 |
+
<notes>you can use this extension for integrating PayU payment gateway</notes>
|
12 |
+
<authors><author><name>Ramakant</name><user>ramakant2you</user><email>ramakant2you@gmail.com</email></author></authors>
|
13 |
+
<date>2012-01-19</date>
|
14 |
+
<time>13:16:45</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="Payu"><dir name="PayuCheckout"><dir name="Block"><dir name="Shared"><file name="Canceled.php" hash="bb19a12f92b3f4813dfbea0b39d54239"/><file name="Failure.php" hash="08abafbca12b0b90026f868f94baff29"/><file name="Form.php" hash="1910d6be84e75325aea85821133ce73c"/><file name="Redirect.php" hash="62bd8f284ca07038f11b81ddcdefe1ff"/></dir></dir><dir name="Controller"><file name="Abstract.php" hash="35e4b83aa3aed060125fbeb653192b4f"/></dir><dir name="Helper"><file name="Data.php" hash="896c95a620ad4ecc5aaa93e157e369fb"/></dir><dir name="Model"><dir name="Api"><file name="Debug.php" hash="b841c48492958030919d40f1e106755c"/></dir><dir name="Mysql4"><dir name="Api"><dir name="Debug"><file name="Collection.php" hash="f6c9e33b04b46242737204488fcd9081"/></dir><file name="Debug.php" hash="7d02543559f7d7cca60d8339898ad76b"/></dir><file name="Setup.php" hash="a03cdaf2dda7cb47e5cab334aa15cebd"/></dir><file name="Shared.php" hash="a13530746c7ff6adb8bf0317e9baf27e"/><dir name="Source"><file name="DemoModes.php" hash="3bd1cc16836adecb9d29a55ba9d3bffc"/><file name="DirectReturn.php" hash="be10b40fe41199d36d1d49c1e1af59cb"/><file name="PaymentRoutines.php" hash="5e6e78e13cf245c790762bf5e754fad3"/></dir></dir><dir name="controllers"><file name="SharedController.php" hash="a4979e849b15b46ff7d5133b2a4c43b8"/><file name="SharedController26.php" hash="2af9a71dc45c8e7f6c3a7c731dce8b25"/></dir><dir name="etc"><file name="config.xml" hash="8d61170d5acbebf04feefffd6e00b468"/><file name="system.xml" hash="f4c823828cb787d107c6e204f4342226"/></dir><dir name="sql"><dir name="payucheckout_setup"><file name="mysql4-install-0.1.0.php" hash="e551af7989f2bdca0e863ccdd14cfa56"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="default"><dir name="default"><dir name="template"><dir name="payucheckout"><file name="form.phtml" hash="68b329da9893e34099c7d8ad5cb9c940"/><file name="info.phtml" hash="d41d8cd98f00b204e9800998ecf8427e"/><dir name="shared"><file name="canceled.phtml" hash="bdef89131c08a83d3c1742399d58b433"/><file name="failure.phtml" hash="a54ece778621c5e2b35f4983923bfeb3"/><file name="form.phtml" hash="f8f62958bac1bf15fde40ed24078d97f"/></dir></dir></dir><dir name="layout"><file name="payucheckout.xml" hash="c77d92a6c0a9fe598e61525658382fe6"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Payu_PayuCheckout.xml" hash="284666c8d3fdb0742ceb390ee7081e80"/></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
+
</package>
|