-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
93bad86
commit aa55bf8
Showing
177 changed files
with
4,334 additions
and
4,697 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# Paytm Payment plugin for Magento version 1.x | ||
* Developer Docs: https://developer.paytm.com/docs/eCommerce-plugin/magento/#v1-x |
72 changes: 72 additions & 0 deletions
72
Magento_V1.x/app/code/community/One97/Paytm/Block/Adminhtml/Order/View/Tab/Contents.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
<?php | ||
class One97_Paytm_Block_Adminhtml_Order_View_Tab_Contents extends Mage_Adminhtml_Block_Template implements Mage_Adminhtml_Block_Widget_Tab_Interface { | ||
public function _construct() | ||
{ | ||
parent::_construct(); | ||
$this->setTemplate('paytm/order/view/tab/contents.phtml'); | ||
} | ||
|
||
public function getTabLabel() { | ||
return $this->__('Paytm Response'); | ||
} | ||
|
||
public function getTabTitle() { | ||
// return $this->__($test); | ||
return $this->__('Paytm Response'); | ||
} | ||
|
||
public function canShowTab() { | ||
$order=$this->getOrder(); | ||
$orderId=$order->getIncrementId(); | ||
$connectionRead = Mage::getSingleton('core/resource')->getConnection('core_write'); | ||
$tableName = Mage::getSingleton('core/resource')->getTableName('paytm_order_data'); | ||
$query="SELECT id FROM ".$tableName." WHERE order_id='".$orderId."' ORDER BY ID DESC"; | ||
$results = $connectionRead->fetchAll($query); | ||
if(isset($results[0]['id'])){ | ||
return true; | ||
}else{ | ||
return false; | ||
} | ||
} | ||
|
||
public function isHidden() { | ||
return false; | ||
} | ||
|
||
public function getOrder(){ | ||
return Mage::registry('current_order'); | ||
} | ||
|
||
public function paytmResponse($fetchButton=false){ | ||
$order=$this->getOrder(); | ||
$orderId=$order->getIncrementId(); | ||
$connectionRead = Mage::getSingleton('core/resource')->getConnection('core_write'); | ||
$tableName = Mage::getSingleton('core/resource')->getTableName('paytm_order_data'); | ||
$query="SELECT * FROM ".$tableName." WHERE order_id='".$orderId."' ORDER BY ID DESC"; | ||
$results = $connectionRead->fetchAll($query); | ||
if($fetchButton){ | ||
if(isset($results[0]['paytm_response'])){ | ||
$tableBody='<button title="Update Status" type="button" id="fetchStatusBtn" class="scalable" onclick="fetchStatus()" style="float:right;"><span><span><span>Fetch Status</span></span></span></button> <input type="hidden" class="paytmResponseId" value="'.$results[0]['id'].'">'; | ||
} | ||
}else{ | ||
$tableBody='<tr class="even pointer"> <td colspan="2" style="text-align: center;">No Data</td> </tr>'; | ||
if(isset($results[0]['paytm_response'])){ | ||
if(trim($results[0]['paytm_response'])!=''){ | ||
$jsonResponse = json_decode($results[0]['paytm_response'], true); | ||
if(is_array($jsonResponse)){ | ||
$tableBody=''; | ||
ksort($jsonResponse); | ||
foreach($jsonResponse as $key=>$value){ | ||
if($key=="STATUS"){ | ||
$tableBody.='<tr class="even pointer"> <td class=" ">'.$key.'</td> <td class="a-right a-right "><span style=" font-weight: 900;">'.$value.'</span> </td> </tr>'; | ||
}else{ | ||
$tableBody.='<tr class="even pointer"> <td class=" ">'.$key.'</td> <td class="a-right a-right ">'.$value.' </td> </tr>'; | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} | ||
return $tableBody; | ||
} | ||
} |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
216 changes: 216 additions & 0 deletions
216
Magento_V1.x/app/code/community/One97/Paytm/Helper/Data.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,216 @@ | ||
<?php | ||
//contains utility functions for encryption decrytion | ||
|
||
class One97_paytm_Helper_Data extends Mage_Payment_Helper_Data { | ||
// PaytmConstants.php start | ||
CONST TRANSACTION_URL_PRODUCTION = "https://securegw.paytm.in/order/process"; | ||
CONST TRANSACTION_STATUS_URL_PRODUCTION = "https://securegw.paytm.in/order/status"; | ||
|
||
CONST TRANSACTION_URL_STAGING ="https://securegw-stage.paytm.in/order/process"; | ||
CONST TRANSACTION_STATUS_URL_STAGING = "https://securegw-stage.paytm.in/order/status"; | ||
|
||
CONST SAVE_PAYTM_RESPONSE = true; | ||
CONST CHANNEL_ID = "WEB"; | ||
CONST APPEND_TIMESTAMP = false; | ||
CONST X_REQUEST_ID = "PLUGIN_MAGENTO_"; | ||
|
||
CONST MAX_RETRY_COUNT = 3; | ||
CONST CONNECT_TIMEOUT = "10"; | ||
CONST TIMEOUT = "10"; | ||
|
||
CONST LAST_UPDATED = "20200120"; | ||
CONST PLUGIN_VERSION = "2.0"; | ||
|
||
CONST CUSTOM_CALLBACK_URL = ""; | ||
// PaytmConstants.php end | ||
|
||
public function getPendingPaymentStatus() | ||
{ | ||
if (version_compare(Mage::getVersion(), '1.4.0', '<')) { | ||
return Mage_Sales_Model_Order::STATE_HOLDED; | ||
} | ||
return Mage_Sales_Model_Order::STATE_PENDING_PAYMENT; | ||
} | ||
|
||
// PaytmChecksum.php start | ||
private static $iv = "@@@@&&&&####$$$$"; | ||
static public function encrypt($input, $key) { | ||
$key = html_entity_decode($key); | ||
|
||
if(function_exists('openssl_encrypt')){ | ||
$data = openssl_encrypt ( $input , "AES-128-CBC" , $key, 0, self::$iv ); | ||
} else { | ||
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, 'cbc'); | ||
$input = self::pkcs5Pad($input, $size); | ||
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', ''); | ||
mcrypt_generic_init($td, $key, self::$iv); | ||
$data = mcrypt_generic($td, $input); | ||
mcrypt_generic_deinit($td); | ||
mcrypt_module_close($td); | ||
$data = base64_encode($data); | ||
} | ||
return $data; | ||
} | ||
|
||
static public function decrypt($encrypted, $key) { | ||
$key = html_entity_decode($key); | ||
|
||
if(function_exists('openssl_decrypt')){ | ||
$data = openssl_decrypt ( $encrypted , "AES-128-CBC" , $key, 0, self::$iv ); | ||
} else { | ||
$encrypted = base64_decode($encrypted); | ||
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', 'cbc', ''); | ||
mcrypt_generic_init($td, $key, self::$iv); | ||
$data = mdecrypt_generic($td, $encrypted); | ||
mcrypt_generic_deinit($td); | ||
mcrypt_module_close($td); | ||
$data = self::pkcs5Unpad($data); | ||
$data = rtrim($data); | ||
} | ||
return $data; | ||
} | ||
|
||
static public function generateSignature($params, $key) { | ||
if(!is_array($params) && !is_string($params)){ | ||
throw new Exception("string or array expected, ".gettype($params)." given"); | ||
} | ||
if(is_array($params)){ | ||
$params = self::getStringByParams($params); | ||
} | ||
return self::generateSignatureByString($params, $key); | ||
} | ||
|
||
static public function verifySignature($params, $key, $checksum){ | ||
if(!is_array($params) && !is_string($params)){ | ||
throw new Exception("string or array expected, ".gettype($params)." given"); | ||
} | ||
if(is_array($params)){ | ||
$params = self::getStringByParams($params); | ||
} | ||
return self::verifySignatureByString($params, $key, $checksum); | ||
} | ||
|
||
static private function generateSignatureByString($params, $key){ | ||
$salt = self::generateRandomString(4); | ||
return self::calculateChecksum($params, $key, $salt); | ||
} | ||
|
||
static private function verifySignatureByString($params, $key, $checksum){ | ||
$paytm_hash = self::decrypt($checksum, $key); | ||
$salt = substr($paytm_hash, -4); | ||
return $paytm_hash == self::calculateHash($params, $salt) ? true : false; | ||
} | ||
|
||
static private function generateRandomString($length) { | ||
$random = ""; | ||
srand((double) microtime() * 1000000); | ||
|
||
$data = "9876543210ZYXWVUTSRQPONMLKJIHGFEDCBAabcdefghijklmnopqrstuvwxyz!@#$&_"; | ||
|
||
for ($i = 0; $i < $length; $i++) { | ||
$random .= substr($data, (rand() % (strlen($data))), 1); | ||
} | ||
|
||
return $random; | ||
} | ||
|
||
static private function getStringByParams($params) { | ||
ksort($params); | ||
$params = array_map(function ($value){ | ||
return ($value == null) ? "" : $value; | ||
}, $params); | ||
return implode("|", $params); | ||
} | ||
|
||
static private function calculateHash($params, $salt){ | ||
$finalString = $params . "|" . $salt; | ||
$hash = hash("sha256", $finalString); | ||
return $hash . $salt; | ||
} | ||
|
||
static private function calculateChecksum($params, $key, $salt){ | ||
$hashString = self::calculateHash($params, $salt); | ||
return self::encrypt($hashString, $key); | ||
} | ||
|
||
static private function pkcs5Pad($text, $blocksize) { | ||
$pad = $blocksize - (strlen($text) % $blocksize); | ||
return $text . str_repeat(chr($pad), $pad); | ||
} | ||
|
||
static private function pkcs5Unpad($text) { | ||
$pad = ord($text{strlen($text) - 1}); | ||
if ($pad > strlen($text)) | ||
return false; | ||
return substr($text, 0, -1 * $pad); | ||
} | ||
// PaytmChecksum.php end | ||
|
||
// PaytmHelper.php start | ||
/** | ||
* exclude timestap with order id | ||
*/ | ||
public static function getTransactionURL($isProduction = 0){ | ||
if($isProduction == 1){ | ||
$transactionURL= One97_paytm_Helper_Data::TRANSACTION_URL_PRODUCTION; | ||
}else{ | ||
$transactionURL= One97_paytm_Helper_Data::TRANSACTION_URL_STAGING; | ||
} | ||
return $transactionURL; | ||
} | ||
/** | ||
* exclude timestap with order id | ||
*/ | ||
public static function getTransactionStatusURL($isProduction = 0){ | ||
if($isProduction == 1){ | ||
return One97_paytm_Helper_Data::TRANSACTION_STATUS_URL_PRODUCTION; | ||
}else{ | ||
return One97_paytm_Helper_Data::TRANSACTION_STATUS_URL_STAGING; | ||
} | ||
} | ||
|
||
public static function getcURLversion(){ | ||
if(function_exists('curl_version')){ | ||
$curl_version = curl_version(); | ||
if(!empty($curl_version['version'])){ | ||
return $curl_version['version']; | ||
} | ||
} | ||
return false; | ||
} | ||
|
||
public static function executecUrl($apiURL, $requestParamList) { | ||
$responseParamList = array(); | ||
$JsonData = json_encode($requestParamList); | ||
$postData = 'JsonData='.urlencode($JsonData); | ||
$ch = curl_init($apiURL); | ||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); | ||
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); | ||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | ||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, One97_paytm_Helper_Data::CONNECT_TIMEOUT); | ||
curl_setopt($ch, CURLOPT_TIMEOUT, One97_paytm_Helper_Data::TIMEOUT); | ||
|
||
/* | ||
** default value is 2 and we also want to use 2 | ||
** so no need to specify since older PHP version might not support 2 as valid value | ||
** see https://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html | ||
*/ | ||
// curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2); | ||
|
||
// TLS 1.2 or above required | ||
// curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); | ||
|
||
curl_setopt($ch, CURLOPT_HTTPHEADER, array( | ||
'Content-Type: application/json', | ||
'Content-Length: ' . strlen($postData)) | ||
); | ||
$jsonResponse = curl_exec($ch); | ||
|
||
if (!curl_errno($ch)) { | ||
return json_decode($jsonResponse, true); | ||
} else { | ||
return false; | ||
} | ||
} | ||
// PaytmHelper.php end | ||
} |
Oops, something went wrong.