【问题标题】:Integrating CCAvenue with php将 CCAvenue 与 php 集成
【发布时间】:2014-02-13 14:02:25
【问题描述】:

我是支付网关的新手。 我想使用 PHP 将 CCAvenue 集成到我的网站。 我已经下载了他们的集成工具包,包括我的商家 ID 和工作密钥,将帐户设置为活动并尝试对他们在我的本地主机中提供的索引文件进行虚拟交易。

但是,当我点击表单上的提交时,它会将我带到 CCAvenue 交易错误页面,没有任何错误代码和错误描述。

请让我知道我在哪里犯了错误以及我还需要做什么。

如果有人给我指点 CCAvenue 集成手册以外的教程,我会很好。

代码: 结帐.php

<html>
<head>
<title> Checkout</title>
</head>
<body>

 <?php include('adler32.php')?>
 <?php include('Aes.php')?>
 <?php 

 error_reporting(0);
 $merchant_id=$_POST['Merchant_Id'];  // Merchant id(also User_Id) 
 $amount=$_POST['Amount'];            // your script should substitute the amount here                        in the quotes provided here
 $order_id=$_POST['Order_Id'];        //your script should substitute the order   description here in the quotes provided here
 $url=$_POST['Redirect_Url'];         //your redirect URL where your customer will be redirected after authorisation from CCAvenue
 $billing_cust_name=$_POST['billing_cust_name'];
 $billing_cust_address=$_POST['billing_cust_address'];
 $billing_cust_country=$_POST['billing_cust_country'];
 $billing_cust_state=$_POST['billing_cust_state'];
 $billing_city=$_POST['billing_city'];
 $billing_zip=$_POST['billing_zip'];
 $billing_cust_tel=$_POST['billing_cust_tel'];
 $billing_cust_email=$_POST['billing_cust_email'];
 $delivery_cust_name=$_POST['delivery_cust_name'];
 $delivery_cust_address=$_POST['delivery_cust_address'];
 $delivery_cust_country=$_POST['delivery_cust_country'];
 $delivery_cust_state=$_POST['delivery_cust_state'];
 $delivery_city=$_POST['delivery_city'];
 $delivery_zip=$_POST['delivery_zip'];
 $delivery_cust_tel=$_POST['delivery_cust_tel'];
 $delivery_cust_notes=$_POST['delivery_cust_notes'];


$working_key=/*MY working Key*/;    //Put in the 32 bit alphanumeric key in the quotes provided here.


 $checksum=getchecksum($merchant_id,$amount,$order_id,$url,$working_key); // Method to       generate checksum

  $merchant_data=    'Merchant_Id='.$merchant_id.'&Amount='.$amount.'&Order_Id='.$order_id.'&Redirect_Url='.$url  '&billing_cust_name='.$billing_cust_name.'&billing_cust_address='.$billing_cust_address.'&billing_cust_country='.$billing_cust_country.'&billing_cust_state='.$billing_cust_state.'&billing_cust_city='.$billing_city.'&billing_zip_code='.$billing_zip.'&billing_cust_tel='.$billing_cust_tel.'&billing_cust_email='.$billing_cust_email.'&delivery_cust_name='.$delivery_cust_name.'&delivery_cust_address='.$delivery_cust_address.'&delivery_cust_country='.$delivery_cust_country.'&delivery_cust_state='.$delivery_cust_state.'&delivery_cust_city='.$delivery_city.'&delivery_zip_code='.$delivery_zip.'&delivery_cust_tel='.$delivery_cust_tel.'&billing_cust_notes='.$delivery_cust_notes.'&Checksum='.$checksum  ;

$encrypted_data=encrypt($merchant_data,$working_key); // Method for encrypting the data.

?>

<form method="post" name="redirect"   action="http://www.ccavenue.com/shopzone/cc_details.jsp"> 
<?php
   echo "<input type=hidden name=encRequest value=$encrypted_data>";
   echo "<input type=hidden name=Merchant_Id value=$merchant_id>";

    ?>
 </form>
 <script type='text/javascript'>document.redirect.submit();</script>
 </body>
 </html>

还有我的 Redirecturl.php

<?php include('Aes.php')?>
<?php include('adler32.php')?>
<?php


error_reporting(0);
$workingKey=/*My Working Key*/;     //Working Key should be provided here.
$encResponse=$_POST["encResponse"];         //This is the response sent by the CCAvenue Server


$rcvdString=decrypt($encResponse,$workingKey);      //AES Decryption used as per the specified working key.
$AuthDesc="";
$MerchantId="";
$OrderId="";
$Amount=0;
$Checksum=0;
$veriChecksum=false;

$decryptValues=explode('&', $rcvdString);
$dataSize=sizeof($decryptValues);
//******************************    Messages based on Checksum & AuthDesc   **********************************//
echo "<center>";


for($i = 0; $i < $dataSize; $i++) 
{
    $information=explode('=',$decryptValues[$i]);
    if($i==0)   $MerchantId=$information[1];    
    if($i==1)   $OrderId=$information[1];
    if($i==2)   $Amount=$information[1];    
    if($i==3)   $AuthDesc=$information[1];
    if($i==4)   $Checksum=$information[1];  
}

$rcvdString=$MerchantId.'|'.$OrderId.'|'.$Amount.'|'.$AuthDesc.'|'.$workingKey;
$veriChecksum=verifyChecksum(genchecksum($rcvdString), $Checksum);

if($veriChecksum==TRUE && $AuthDesc==="Y")
{
    echo "<br>Thank you for shopping with us. Your credit card has been charged and your transaction is successful. We will be shipping your order to you soon.";

    //Here you need to put in the routines for a successful 
    //transaction such as sending an email to customer,
    //setting database status, informing logistics etc etc
}
else if($veriChecksum==TRUE && $AuthDesc==="B")
{
    echo "<br>Thank you for shopping with us.We will keep you posted regarding the status of your order through e-mail";

    //Here you need to put in the routines/e-mail for a  "Batch Processing" order
    //This is only if payment for this transaction has been made by an American Express Card
    //since American Express authorisation status is available only after 5-6 hours by mail from ccavenue and at the "View Pending Orders"
}
else if($veriChecksum==TRUE && $AuthDesc==="N")
{
    echo "<br>Thank you for shopping with us.However,the transaction has been declined.";

    //Here you need to put in the routines for a failed
    //transaction such as sending an email to customer
    //setting database status etc etc
}
else
{
    echo "<br>Security Error. Illegal access detected";

    //Here you need to simply ignore this and dont need
    //to perform any operation in this condition
}


echo "<br><br>";


//************************************  DISPLAYING DATA RCVD ******************************************//

echo "<table cellspacing=4 cellpadding=4>";
for($i = 0; $i < $dataSize; $i++) 
{
    $information=explode('=',$decryptValues[$i]);
        echo '<tr><td>'.$information[0].'</td><td>'.$information[1].'</td></tr>';
}

echo "</table><br>";
echo "</center>";
?>

我还包括了集成工具包附带的 Adler.php 和 Aes.php

【问题讨论】:

  • 显示一些你在哪里集成的代码。
  • 我已经添加了代码。
  • 你解决了这个问题吗?现在我也面临同样的问题。

标签: php ccavenue


【解决方案1】:

集成支付网关的步骤:

  1. 首先在 https://dashboard.ccavenue.com/web/registration.do?command=Preview

  2. 注册成功后,CCavenue 团队将验证您提供的电话号码。和电子邮件 ID。

  3. 帐户激活后,您的网站将得到验证,团队将提供您的商家 ID 和工作密钥,这是集成支付网关时所需的。

  4. https://dashboard.ccavenue.com/jsp/merchant/merchantLogin.jsp上登录您的帐户

  5. 转到仪表板并单击设置选项卡,然后选择 API KEYS。

  6. 复制所有三个密钥 Merchant ID、Access Code 和 Working Key。

    现在按照以下代码步骤来集成 Ccavenue:

    创建一个包含表单的文件,例如index.php 并粘贴以下代码:

    按照以下链接逐步执行:

https://www.lelocode.com/posts/integrate-ccavenue-payment-gateway-in-php-with-simple-step---lelocode

【讨论】:

    【解决方案2】:

    ccavenue 支付网关集成非常简单,请复制下面的 php 代码或 php 脚本进行 ccavenue 支付网关集成,并根据您的帐户设置变量值。

    <?php 
    
    function getchecksum($MerchantId,$Amount,$OrderId ,$URL,$WorkingKey) 
    { 
        $str ="$MerchantId|$OrderId|$Amount|$URL|$WorkingKey"; 
        $adler = 1;
        $adler = adler32($adler,$str); 
        return $adler; 
    }   
    
    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" ; 
    }   
    
    
    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; 
    }  
    
    
    
    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) ; 
    }   
    
    
    function cdec($num) 
    {   
        for ($n = 0 ; $n < strlen($num) ; $n++) 
        { 
            $temp = $num[$n] ; 
            $dec = $dec + $temp*pow(2 , strlen($num) - $n - 1); 
        }   
        return $dec; 
    } 
    
    
    $Merchant_Id = "User ID" ;//This id(also User Id) available at "Generate Working Key" of "Settings & Options" 
    $Amount = 'Total Amount';//your script should substitute the amount in the quotes provided here 
    $Order_Id = "Order ID";//your script should substitute the order description in the quotes provided here 
    $Redirect_Url = "Your Return URL" ;//your redirect URL where your customer will be redirected after authorisation from CCAvenue   
    $WorkingKey = "Your Working Key" ;//put in the 32 bit alphanumeric key in the quotes provided here.Please note that get this key ,login to your CCAvenue merchant account and visit the "Generate Working Key" section at the "Settings & Options" page. 
    $Checksum = getCheckSum($Merchant_Id,$Amount,$Order_Id ,$Redirect_Url,$WorkingKey);   
    $billing_cust_name=$customer_name; 
    $billing_cust_address=$customer_address; 
    $billing_cust_state=$customer_statename; 
    $billing_cust_country=$customer_country;
    $billing_cust_tel=$customer_contact_no;
    $billing_cust_email=$customer_email; 
    $delivery_cust_name=$customer_name; 
    $delivery_cust_address=$customer_address; 
    $delivery_cust_state = $customer_statename; 
    $delivery_cust_country = $customer_country; 
    $delivery_cust_tel=$customer_contact_no; 
    $delivery_cust_notes=$customer_message;  
    $billing_city = $customer_city; 
    $billing_zip = $customer_zipcode; 
    $delivery_city = $customer_city; 
    $delivery_zip = $customer_zipcode; 
    ?> 
    
    
    
    <form name="paymentform" method="post" action="https://www.ccavenue.com/shopzone/cc_details.jsp">
        <input type="hidden" name="Merchant_Id" value="<?php echo $Merchant_Id; ?>"> 
        <input type="hidden" name="Amount" value="<?php echo $Amount; ?>"> 
        <input type="hidden" name="Order_Id" value="<?php echo $Order_Id; ?>">
        <input type="hidden" name="Redirect_Url" value="<?php echo $Redirect_Url; ?>"> 
        <input type="hidden" name="Checksum" value="<?php echo $Checksum; ?>"> 
        <input type="hidden" name="billing_cust_name" value="<?php echo $billing_cust_name; ?>"> 
        <input type="hidden" name="billing_cust_address" value="<?php echo $billing_cust_address; ?>"> 
        <input type="hidden" name="billing_cust_country" value="<?php echo $billing_cust_country; ?>"> 
        <input type="hidden" name="billing_cust_state" value="<?php echo $billing_cust_state; ?>"> 
        <input type="hidden" name="billing_zip" value="<?php echo $billing_zip; ?>"> 
        <input type="hidden" name="billing_cust_tel" value="<?php echo $billing_cust_tel; ?>"> 
        <input type="hidden" name="billing_cust_email" value="<?php echo $billing_cust_email; ?>"> 
        <input type="hidden" name="delivery_cust_name" value="<?php echo $delivery_cust_name; ?>">
        <input type="hidden" name="delivery_cust_address" value="<?php echo $delivery_cust_address; ?>">
        <input type="hidden" name="delivery_cust_country" value="<?php echo $delivery_cust_country; ?>">
        <input type="hidden" name="delivery_cust_state" value="<?php echo $delivery_cust_state; ?>"> 
        <input type="hidden" name="delivery_cust_tel" value="<?php echo $delivery_cust_tel; ?>">
        <input type="hidden" name="delivery_cust_notes" value="<?php echo $delivery_cust_notes; ?>"> 
        <input type="hidden" name="Merchant_Param" value="<?php echo $Merchant_Param; ?>"> 
        <input type="hidden" name="billing_cust_city" value="<?php echo $billing_city; ?>">
        <input type="hidden" name="billing_zip_code" value="<?php echo $billing_zip; ?>">
        <input type="hidden" name="delivery_cust_city" value="<?php echo $delivery_city; ?>"> 
        <input type="hidden" name="delivery_zip_code" value="<?php echo $delivery_zip; ?>"> 
        <INPUT TYPE="submit" value="submit">
    </form>
    

    【讨论】:

    • 我可以在 localhost 中测试吗?如果是这样,我必须进行任何设置吗?
    • 您注册的 ccavenue 账户是印度卢比还是美元? ccavenue avenue 不允许测试来自其他域的美元货币,它只适用于ccavenue 中提到的live site。只能从 localhost 测试印度货币,其他货币不包括在 localhost 中。
    • user2936213,下次我会处理的。
    • @appWOZ 是的,它是印度货币。请检查我的代码,让我知道我做错了什么
    • 你解决了这个问题吗?现在我也面临同样的问题。
    猜你喜欢
    • 2014-09-19
    • 2020-10-18
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    相关资源
    最近更新 更多