CCAvenue is a popular payment gateway that offers e-merchants a one stop solution for processing e-transaction ranging from credit card transaction to direct debit from their online bank accounts. It is designed to integrate quickly without any hassle.
To integrate CCAvenue payment gateway in your website, you should have CCAvenue account and they will give you a merchant id and a unique key for your website to perform transaction. So here in this tutorial, I have explained easy steps to integrate CCAvenue Payment Gateway with PHP.
Also, read:
- Paypal Express Checkout Integration with PHP
- Paypal Payment Gateway Integration in PHP
- Paytm Payment Gateway Integration in PHP
- EBS Payment Gateway Integration in PHP
- PayUMoney Payment Gateway Integration in PHP
- Stripe Payment Gateway Integration in PHP
- Razorpay Payment Gateway Integration in PHP
As I have explained earlier that it is very easy to integrate, you just need to pass required input filed to CCAvenue to complete transaction. The CCAvenue system expects certain input data with specific names to be sent to the CCAvenue website. For this reason, it is essential that the names of the input fields on the merchant website and the CCAvenue website should match exactly. Also there are some input filed values are mandatory like Merchant_Id, Amount and Order_Id. The Merchant_Id and working key will be assigned to you by CCAvenue. Below is form with action URL to CCAvenue and input field with required values.
<?php // Merchant id provided by CCAvenue $Merchant_Id = "1234566"; // Item amount for which transaction perform $Amount = "100"; // Unique OrderId that should be passed to payment gateway $Order_Id = "006789"; // Unique Key provided by CCAvenue $WorkingKey= ""; // Success page URL $Redirect_Url="success.php"; $Checksum = getCheckSum($Merchant_Id,$Amount,$Order_Id ,$Redirect_Url,$WorkingKey); ?> <form id="ccavenue" method="post" action="https://world.ccavenue.com/servlet/ccw.CCAvenueController"> <input type=hidden name="Merchant_Id" value="Merchant_Id"> <input type="hidden" name="Amount" value="Amount"> <input type="hidden" name="Order_Id" value="Order_Id"> <input type="hidden" name="Redirect_Url" value="<?php echo $Redirect_Url; ?>"> <input type="hidden" name="TxnType" value="A"> <input type="hidden" name="ActionID" value="TXN"> <input type="hidden" name="Checksum" value="<?php echo $Checksum; ?>"> <input type="hidden" name="billing_cust_name" value="name of user"> <input type="hidden" name="billing_cust_address" value="address of user"> <input type="hidden" name="billing_cust_country" value="user country"> <input type="hidden" name="billing_cust_state" value="state of user"> <input type="hidden" name="billing_cust_city" value="city"> <input type="hidden" name="billing_zip" value="zip/pin code"> <input type="hidden" name="billing_cust_tel" value="telphone no"> <input type="hidden" name="billing_cust_email" value="emailid"> <input type="hidden" name="delivery_cust_name" value="user name"> <input type="hidden" name="delivery_cust_address" value="delivering address"> <input type="hidden" name="delivery_cust_country" value="delivering country"> <input type="hidden" name="delivery_cust_state" value="delivering state"> <input type="hidden" name="delivery_cust_tel" value="telphone no"> <input type="hidden" name="delivery_cust_notes" value="this is a test"> <input type="hidden" name="Merchant_Param" value=""> <input type="hidden" name="billing_zip_code" value="zip/pin"> <input type="hidden" name="delivery_cust_city" value="city"> <input type="submit" value="Buy Now" /> </form>
After the successful payment, the CCavenue will redirect to your provided success URL with the some transaction details with $_GET variable having auth_status. If it is “Y” then it is successfully authorized by gateway. If it is “N” then it is unsuccessful transaction. If it is “B” then it is not authenticated at this point of time.
We also need to verify the payment gateway details send by CCavenue is tampered or not for that we have to use the verify checksum function verifychecksum($MerchantId,$OrderId,$Amount,$AuthDesc,$CheckSum,$WorkingKey). We need to pass the transaction details to this function. If it returns true than the details are ok and payment page was successfully redirect to success page. If it returns false then the details are tampered while sending to our application and something wrong has occurred and need to redirect to unsuccessful page .
Use below PHP functions to get check sum using function getchecksum() and verify returned checksum using function verifychecksum().
<?php // Get the checksum function getchecksum($MerchantId,$Amount,$OrderId ,$URL,$WorkingKey) { $str ="$MerchantId|$OrderId|$Amount|$URL|$WorkingKey"; $adler = 1; $adler = adler32($adler,$str); return $adler; } ?>
<?php //Verify the the checksum function verifychecksum($MerchantId,$OrderId,$Amount, $AuthDesc,$CheckSum,$WorkingKey) { $str = "$MerchantId|$OrderId|$Amount|$AuthDesc|$WorkingKey"; $adler = 1; $adler = adler32($adler,$str); if($adler == $CheckSum) return "true"; else return "false" ; } ?>
<?php function leftshift($str , $num) { $str = DecBin($str); for( $i = 0 ; $i < (64 – strlen($str)) ; $i++) $str = "0".$str ; for($i = 0 ; $i < $num ; $i++) { $str = $str."0"; $str = substr($str , 1 ) ; } return cdec($str) ; } ?>
<?php function cdec($num) { for ($n = 0 ; $n < strlen($num) ; $n++) { $temp = $num[$n] ; $dec = $dec + $temp*pow(2 , strlen($num) – $n – 1); } return $dec; } ?>
<?php function adler32($adler , $str) { $BASE = 65521 ; $s1 = $adler & 0xffff ; $s2 = ($adler >> 16) & 0xffff; for($i = 0 ; $i < strlen($str) ; $i++) { $s1 = ($s1 + Ord($str[$i])) % $BASE ; $s2 = ($s2 + $s1) % $BASE ; } return leftshift($s2 , 16) + $s1; } ?>
You may also like:
- Star Rating System with Ajax, PHP and MySQL
- Create Event Calendar with jQuery, PHP and MySQL
- Build Your Own CAPTCHA Script with PHP
- Convert Unix Timestamp To Readable Date Time in PHP
- Inventory Management System with Ajax, PHP & MySQL
- Create Live Editable Table with jQuery, PHP and MySQL
- Live Add Edit Delete datatables Records with Ajax, PHP and MySQL
- Stripe Payment Gateway Integration in PHP
- Export Data to Excel with PHP and MySQL
- Star Rating System with Ajax, PHP and MySQL
- Create Dynamic Bootstrap Tabs with PHP & MySQL
- How To Create Simple REST API in PHP
Add a semicolon after merchant id variable. Also this code is not working. Invalid action id detected by ccavenue
Thanks for comments! You need to pass your valid CCAvenue details like Merchant_Id etc.
where to use this code in codeignator. i mean in view or controller….?
Thanks for comment! You need to use form in view and other functions in controllers.