Snippets

EasyPaymentGateway PHP - EPG integration

Created by Ruben Fernandez
<?php 	include 'security.php'; 	 	

$parameters = "amount=100"; 		
$parameters .= "&currency=USD"; 		
$parameters .= "&country=US"; 		
$parameters .= "&customerId=100"; 		
$parameters .= "&merchantId=2150"; 		
$parameters .= "&merchantTransactionId=1234567890"; 		
$parameters .= "&language=en"; 		
$parameters .= "&topLogo=http://www.mysite.com/logo.png"; 		
$parameters .= "&successURL=http://www.mysite.com/success"; 		
$parameters .= "&errorURL= http://www.mysite.com/error"; 		
$parameters .= "&statusURL= http://www.mysite.com/status";
$parameters .= "&cancelURL= http://www.mysite.com/cancel"; 		
$parameters .= "&paymentSolution="; 		
$parameters .= "&test=1"; 	 	 	

$value = $parameters; 	

$key = "myPassWord1234"; //16 Character Key 	 	
$md5Key = hash('md5', $key); 	
$sha256ParamsIntegrityCheck = hash('sha256', $value); 	 	
$encryptedValue = Security::encrypt($value, $md5Key); 	 	

//URL ENCODED IS NEEDED BEFORE POSTING 	
$encoded = urlencode($encryptedValue); 	  	
$url = 'https://staging.easypaymentgateway.com/EPGCheckout/rest/online/tokenize'; 	
$myvars = 'merchantId=1002&encrypted=' . $encoded . '&integrityCheck=' . $sha256ParamsIntegrityCheck;  
	
$ch = curl_init( $url ); 	
curl_setopt( $ch, CURLOPT_POST, 1); 	
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars); 	
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1); 	
curl_setopt( $ch, CURLOPT_HEADER, 0); 	
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);  	
$response = curl_exec( $ch );  ?> 	 	

<HTML> 	 	
<HEAD> 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 	
<TITLE>Test </TITLE> 	 	
<script language=javascript> 	
function redirect(){ 		
var EPGResponse = "<?= $response ?>" 		
if (EPGResponse == "error") { 			
//something went wrong when calling EPG. Deal with the error 			alert('ERROR'); 		
} else { 	  		
window.location = EPGResponse; 	  	
} 	} 	
</script>  	
</HEAD> 	
<body onLoad="redirect()"> 		 	
</body> 	</HTML>


<?php

class Security { 	

public static function encrypt($input, $key) { 		
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);  	$input = Security::pkcs5_pad($input, $size);  		
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');  	
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);  	mcrypt_generic_init($td, $key, $iv);  		
$data = mcrypt_generic($td, $input);  		mcrypt_generic_deinit($td);  		
mcrypt_module_close($td);  		
$data = base64_encode($data);  		
return $data;  	
}   	

private static function pkcs5_pad ($text, $blocksize) {  		
$pad = $blocksize - (strlen($text) % $blocksize);  		
return $text . str_repeat(chr($pad), $pad);  	
}   	

public static function decrypt($sStr, $sKey) { 		
$decrypted= mcrypt_decrypt(			
MCRYPT_RIJNDAEL_128, 			
$sKey,  			
base64_decode($sStr),  			
MCRYPT_MODE_ECB 		
); 		
$dec_s = strlen($decrypted);  		
$padding = ord($decrypted[$dec_s-1]);  		
$decrypted = substr($decrypted, 0, -$padding); 		
return $decrypted; 	
}	

}
?>

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.