在ccavenue中实现状态API

问题描述 投票:0回答:2

我已完成 ccavenue 网关集成其银行审核的网关 银行要求实施状态 API, 下面是示例代码。我如何实现这个来共享响应和请求状态?

<?php
error_reporting(0);
$working_key = ''; //Shared by CCAVENUES
$access_code = '';

$merchant_json_data =
array(
    'order_no' => '',
    'reference_no' =>''
);

$merchant_data = json_encode($merchant_json_data);
$encrypted_data = encrypt($merchant_data, $working_key);
$final_data = 'enc_request='.$encrypted_data.'&access_code='.$access_code.'&command=orderStatusTracker&request_type=JSON&response_type=JSON';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://apitest.ccavenue.com/apis/servlet/DoWebTrans");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER,'Content-Type: application/json') ;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $final_data);
// Get server response ...
$result = curl_exec($ch);
curl_close($ch);
$status = '';
$information = explode('&', $result);

$dataSize = sizeof($information);
for ($i = 0; $i < $dataSize; $i++) {
    $info_value = explode('=', $information[$i]);
    if ($info_value[0] == 'enc_response') {
        $status = decrypt(trim($info_value[1]), $working_key);
        
    }
}

echo 'Status revert is: ' . $status.'<pre>';
$obj = json_decode($status);
print_r($obj);
?>

<?php
//ADD NEW ENCRYPT Function

function encrypt($plainText,$key)
{
    $key = hextobin(md5($key));
    $initVector = pack("C*", 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f);
    $openMode = openssl_encrypt($plainText, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $initVector);
    $encryptedText = bin2hex($openMode);
    return $encryptedText;
}

function decrypt($encryptedText,$key)
{
    $key = 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);
    $decryptedText = openssl_decrypt($encryptedText, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $initVector);
    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; 
} 
?>

我期待状态 API 应该给出这种类型的响应:

{"reference_no":"309001234567","order_no":"abc123","order_currncy":"INR","order_amt":1049.0,"order_date_time":"2020-10-20 17:14:18.42"," order_bill_name":"","order_bill_address":"","order_bill_zip":"","order_bill_tel":"","order_bill_email":"","order_bill_country":"","order_ship_name":"yang"," order_ship_address":"fthfyggg","order_ship_country":"印度","order_ship_tel":"185"}

php status ccavenue
2个回答
0
投票

非常简单,只需使用所需参数执行statusAPI.php文件(由CCAvenue共享)即可。

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

$merchant_json_data = array(
   'order_no' => '', //your app's internal order no
   'reference_no' =>'' //ccavenue tracking no
);

0
投票

您可以使用以下简单的函数和必要的参数。

function processStatusCallback() {
    // Read the callback data from the input stream
    $callbackData = file_get_contents("php://input");
    
    // Parse the JSON data
    $data = json_decode($callbackData, true);
    
    // Verify the authenticity of the callback (assuming secure hash validation)
    $secureHash = '########'; // Replace with your actual secure hash
    
    // Generate hash from the received data
    $generatedHash = hash('sha256', implode('|', $data) . '|' . $secureHash);
    
    // Compare generated hash with received hash
    if ($data['secure_hash'] === $generatedHash) {
        // Hash validation successful, process the payment status
        $orderId = $data['order_id'];
        $paymentStatus = $data['payment_status'];
                
        // Send a response back to CCAvenue
        echo json_encode(['status' => 'success']);
    } else {        
        // Send an error response back to CCAvenue
        echo json_encode(['status' => 'error', 'message' => 'Invalid secure hash']);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.