我正在尝试将 ccavenue IFRAME payment gateway 集成到我的 wordpress 网站中 . 除了IFRAME没有发生之外,ccavenue集成运作良好 . 我使用了ccavenue提供的插件 . 当我联系ccavenue的时候,他们告诉我插件不支持IFRAME集成 . 因此我们应该使用他们提供的php工具包手动集成它 . 使用php工具包我不知道哪个文件放在哪里以及放置代码的位置 . 帮助将非常感激 . 文档在这里

Set Up: 按照此处的说明下载CCAvenue客户端库 . 您必须使用CCAvenue iframe代码(例如JSP的transaction.jsp)来启动付款流程 .
Configure: 每个商家都会收到一组唯一的交易处理密钥 . 这些需要在用于启动付款流程的事务文件中进行配置 .

在“设置”标签>“API密钥”页面下的MARS帐户中;复制商家ID,访问代码和秘密加密 .

您必须将iFrame代码集成到付款页面中才能加载iFrame . 请参阅下面的代码 . 您还需要在付款文件中设置密钥以处理交易 .

Payment Processing:
在您的付款页面上向CCAvenue PG发送请求,其中包含加载CCAvenue iFrame的订单信息,如商家ID,金额,货币,送货信息(可选)和结算信息(可选) . CCAvenue iFrame将显示供客户选择的付款选项 .

要启动iframe,请将以下位代码添加到您的网站结帐页面 . 您下载的套件中提供了此代码以用于集成目的 . php工具包包含代码

  • ccavrequesthandler,

  • ccaverequesthandler,

  • ccavresponsehandler,

  • 加密,

  • dataform

  • jquery.1.7.2

我没有包含jquery文件 .

CCavrequesthandler

<html>
 <head>
 <title> Iframe</title>
 </head>
 <body>
  <center>
 <?php include('Crypto.php')?>
 <?php 

  error_reporting(0);

  $working_key='';//Shared by CCAVENUES
  $access_code='';//Shared by CCAVENUES
  $merchant_data='';

  foreach ($_POST as $key => $value){
    $merchant_data.=$key.'='.$value.'&';
   }
   $encrypted_data=encrypt($merchant_data,$working_key);//Method for
                                                    encrypting the date.
     $production_url='https://secure.ccavenue.com/transaction/
      transaction.do?command=initiateTransaction&encRequest='
      .$encrypted_data.'&access_code='.$access_code;   
       ?>
       <iframe src="<?php echo $production_url?>"  
        id="paymentFrame" width="482" height="450" frameborder="0"
        scrolling="No"
         ></iframe>

          <script type="text/javascript" src="jquery-1.7.2.js"></script>
           <script type="text/javascript">
            $(document).ready(function(){
         window.addEventListener('message', function(e) {
       $("#paymentFrame").css("height",e.data['newHeight']+'px');    
           }, false);

          });
      </script>
      </center>
  </body>
 </html>

CCaverequesthandler

<html>
    <head>
    <title> Iframe</title>
    </head>
    <body>
<center>
  <?php include('Crypto.php')?>
 <?php 

error_reporting(0);

$working_key='';//Shared by CCAVENUES
$access_code='';//Shared by CCAVENUES
$merchant_data='';

 foreach ($_POST as $key => $value){
    $merchant_data.=$key.'='.$value.'&';
   }

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

$production_url='https://secure.ccavenue.com/transaction/transaction.do?command=initiateTransaction&encRequest='.$encrypted_data.'&access_code='.$access_code;
     ?>
      <iframe src="<?php echo $production_url?>" id="paymentFrame" width="482" height="450" frameborder="0" scrolling="No" ></iframe>

    <script type="text/javascript" src="jquery-1.7.2.js"></script>
     <script type="text/javascript">
    $(document).ready(function(){
         window.addEventListener('message', function(e) {
                 $("#paymentFrame").css("height",e.data['newHeight']+'px');      
         }, false);

         });
           </script>
          </center>
         </body>
         </html>

CCaveresponsehandler

<?php include('Crypto.php')?>
 <?php

error_reporting(0);

$workingKey='';     //Working Key should be provided here.
$encResponse=$_POST["encResp"];         //This is the response sent by the CCAvenue Server
$rcvdString=decrypt($encResponse,$workingKey);      //Crypto Decryption used as per the specified working key.
$order_status="";
$decryptValues=explode('&', $rcvdString);
$dataSize=sizeof($decryptValues);
echo "<center>";

for($i = 0; $i < $dataSize; $i++) 
{
    $information=explode('=',$decryptValues[$i]);
    if($i==3)   $order_status=$information[1];
}

if($order_status==="Success")
{
    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.";

}
else if($order_status==="Aborted")
{
    echo "<br>Thank you for shopping with us.We will keep you posted regarding the status of your order through e-mail";

}
else if($order_status==="Failure")
{
    echo "<br>Thank you for shopping with us.However,the transaction has been declined.";
}
else
{
    echo "<br>Security Error. Illegal access detected";

}

echo "<br><br>";

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>";
?>

加密文件

<?php

error_reporting(0);

function encrypt($plainText,$key)
{
    $secretKey = hextobin(md5($key));
    $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
    $openMode = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '','cbc', '');
    $blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, 'cbc');
    $plainPad = pkcs5_pad($plainText, $blockSize);
    if (mcrypt_generic_init($openMode, $secretKey, $initVector) != -1) 
    {
          $encryptedText = mcrypt_generic($openMode, $plainPad);
              mcrypt_generic_deinit($openMode);

    } 
    return bin2hex($encryptedText);
}

function decrypt($encryptedText,$key)
{
    $secretKey = hextobin(md5($key));
    $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
    $encryptedText=hextobin($encryptedText);
    $openMode = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '','cbc', '');
    mcrypt_generic_init($openMode, $secretKey, $initVector);
    $decryptedText = mdecrypt_generic($openMode, $encryptedText);
    $decryptedText = rtrim($decryptedText, "\0");
    mcrypt_generic_deinit($openMode);
    return $decryptedText;

}
//*********** Padding Function *********************

 function pkcs5_pad ($plainText, $blockSize)
{
    $pad = $blockSize - (strlen($plainText) % $blockSize);
    return $plainText . str_repeat(chr($pad), $pad);
}

//********** Hexadecimal to Binary function for php 4.0 version ********

function hextobin($hexString) 
 { 
        $length = strlen($hexString); 
        $binString="";   
        $count=0; 
        while($count<$length) 
        {       
            $subString =substr($hexString,$count,2);           
            $packedString = pack("H*",$subString); 
            if ($count==0)
        {
            $binString=$packedString;
        } 

        else 
        {
            $binString.=$packedString;
        } 

        $count+=2; 
        } 
        return $binString; 
      } 
 ?>

数据表格

<html>
<head>
<script>
    window.onload = function() {
    var d = new Date().getTime();
    document.getElementById("tid").value = d;
   };
</script>
 </head>
<body>
    <form method="post" name="customerData" action="ccavRequestHandler.php">
    <table width="40%" height="100" border='1' align="center"><caption><font size="4" color="blue"><b>Integration Kit</b></font></caption></table>
        <table width="40%" height="100" border='1' align="center">
            <tr>
                <td>Parameter Name:</td><td>Parameter Value:</td>
            </tr>
            <tr>
                <td colspan="2"> Compulsory information</td>
            </tr>
            <tr>
                <td>TID :</td><td><input type="text" name="tid" id="tid" readonly /></td>
            </tr>
            <tr>
                <td>Merchant Id :</td><td><input type="text" name="merchant_id" value=""/></td>
            </tr>
            <tr>
                <td>Order Id    :</td><td><input type="text" name="order_id" value="123654789"/></td>
            </tr>
            <tr>
                <td>Amount  :</td><td><input type="text" name="amount" value="1.00"/></td>
            </tr>
            <tr>
                <td>Currency    :</td><td><input type="text" name="currency" value="INR"/></td>
            </tr>
            <tr>
                <td>Redirect URL    :</td><td><input type="text" name="redirect_url" value="http://localhost/IFrame_PHP_kit/ccavResponseHandler.php"/></td>
            </tr>
            <tr>
                <td>Cancel URL  :</td><td><input type="text" name="cancel_url" value="http://localhost/IFrame_PHP_kit/ccavResponseHandler.php"/></td>
            </tr>
            <tr>
                <td>Language    :</td><td><input type="text" name="language" value="EN"/></td>
            </tr>
            <tr>
                <td colspan="2">Billing information(optional):</td>
            </tr>
            <tr>
                <td>Billing Name    :</td><td><input type="text" name="billing_name" value="Charli"/></td>
            </tr>
            <tr>
                <td>Billing Address :</td><td><input type="text" name="billing_address" value="Room no 1101, near Railway station Ambad"/></td>
            </tr>
            <tr>
                <td>Billing City    :</td><td><input type="text" name="billing_city" value="Indore"/></td>
            </tr>
            <tr>
                <td>Billing State   :</td><td><input type="text" name="billing_state" value="MP"/></td>
            </tr>
            <tr>
                <td>Billing Zip :</td><td><input type="text" name="billing_zip" value="425001"/></td>
            </tr>
            <tr>
                <td>Billing Country :</td><td><input type="text" name="billing_country" value="India"/></td>
            </tr>
            <tr>
                <td>Billing Tel :</td><td><input type="text" name="billing_tel" value="9595226054"/></td>
            </tr>
            <tr>
                <td>Billing Email   :</td><td><input type="text" name="billing_email" value="atul.kadam@avenues.info"/></td>
            </tr>
            <tr>
                <td colspan="2">Shipping information(optional)</td>
            </tr>
            <tr>
                <td>Shipping Name   :</td><td><input type="text" name="delivery_name" value="Chaplin"/></td>
            </tr>
            <tr>
                <td>Shipping Address    :</td><td><input type="text" name="delivery_address" value="room no.701 near bus stand"/></td>
            </tr>
            <tr>
                <td>shipping City   :</td><td><input type="text" name="delivery_city" value="Hyderabad"/></td>
            </tr>
            <tr>
                <td>shipping State  :</td><td><input type="text" name="delivery_state" value="Andhra"/></td>
            </tr>
            <tr>
                <td>shipping Zip    :</td><td><input type="text" name="delivery_zip" value="425001"/></td>
            </tr>
            <tr>
                <td>shipping Country    :</td><td><input type="text" name="delivery_country" value="India"/></td>
            </tr>
            <tr>
                <td>Shipping Tel    :</td><td><input type="text" name="delivery_tel" value="9595226054"/></td>
            </tr>
            <tr>
                <td>Merchant Param1 :</td><td><input type="text" name="merchant_param1" value="additional Info."/></td>
            </tr>
            <tr>
                <td>Merchant Param2 :</td><td><input type="text" name="merchant_param2" value="additional Info."/></td>
            </tr>
            <tr>
                <td>Merchant Param3 :</td><td><input type="text" name="merchant_param3" value="additional Info."/></td>
            </tr>
            <tr>
                <td>Merchant Param4 :</td><td><input type="text" name="merchant_param4" value="additional Info."/></td>
            </tr>
            <tr>
                <td>Merchant Param5 :</td><td><input type="text" name="merchant_param5" value="additional Info."/></td>
            </tr>
            <tr>
                <td>Promo Code  :</td><td><input type="text" name="promo_code" value=""/></td>
            </tr>
            <tr>
                <td>Vault Info. :</td><td><input type="text" name="customer_identifier" value=""/></td>
            </tr>
            <tr>
                <td>Integration Type    :</td><td><input type="text" name="integration_type" value="iframe_normal"/></td>
            </tr>
            <tr>
                <td></td><td><INPUT TYPE="submit" value="CheckOut"></td>
            </tr>
        </table>
      </form>
</body>
</html>