2013-11-20 18 views
0
<?php 

function generateToken($encrypted_data) 
{ 
    $_id = "63574"; 
    $api_key = "0za2fOfdWU5OKYwMBnTH"; 
    // CC data to tokenize.. 

    //Payload to be sent to 
    $data = array(
     'ID' => _id, 
     'APIKey' => $api_key, 
     'EcryptedData' => $encrypted_data, 
     'TokenScheme' => 4 
    ); 
    //convert to JSON 
    $json = json_encode($data); 
    //curl config 
     $ch = curl_init("https://test-api..com:8081/TokenServices.svc/REST/TokenizeFromEncryptedValue"); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json', //we are using json in this example, you could use xml as well 
            'Content-Length: '.strlen($json), 
            'Accept: application/json')  //we are using json in this example, you could use xml as well 
            ); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

     $outputjson = curl_exec($ch);  

     //echo "URL error: ",curl_error($ch),PHP_EOL; 
     if(curl_errno($ch)){ 
     $output = curl_error($ch); 
     } else { 
     $outputobj = json_decode($outputjson); 
     $output = $outputobj->{'Token'}; 
     }   

     curl_close($ch); 
     return $output; 
} 

function encryptText_3des($plainText, $key) { 
    $key = hash("md5", $key, TRUE); 
    for ($x=0;$x<8;$x++) { 
     $key = $key.substr($key, $x, 1); 
    } 
    $padded = pkcs5_pad($plainText, 
     mcrypt_get_block_size(MCRYPT_3DES, MCRYPT_MODE_CBC)); 
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_3DES, $key, $padded, MCRYPT_MODE_CBC)); 
    return $encrypted; 
} 

function makePayment() { 
    $checksum = $_POST['merchantId']."|".$_POST['amount']."|".$_POST['customerReferenceNo'];  
    echo "<b>Checksum </b>".$checksum."<br>"; 
    $checksum = hash('sha256', $checksum); 
    echo "<b>Hash Checksum </b>".$checksum."<br>"; 
    $data = http_build_query(array('cardProvider' => $_POST['cardProvider'],'cardType' => $_POST['cardType'],'cardNumber' => $_POST['cardNumber'],'securityCode' => $_POST['securityCode'],'cardExpiryMonth' => $_POST['cardExpiryMonth'],'cardExpiryYear' => $_POST['cardExpiryYear'],'cardHolderName' => $_POST['cardHolderName'],'currencyCode' => $_POST['currencyCode'],'customerReferenceNo' => $_POST['customerReferenceNo'],'name' => $_POST['name'],'mobileNo' => $_POST['mobileNo'],'email' => $_POST['email'],'password' => $_POST['password'],'remoteIP' => $_POST['remoteIP'],'checkSum' => $checksum)); 
    echo "<b>Data </b>".$data."<br>"; 
    $encryption_key = "HG58YZ3CR9"; 
    $desEncryptedData = encryptText_3des($data, $encryption_key); 
    $desEncryptedData = urlencode($desEncryptedData); 
    echo "<b>3DES Encrypted Data </b>".$desEncryptedData."<br>"; 

/* $ch = curl_init("https://cellpay.essecom.com/PGCCDCToken/TokenPayment.jsp"); 
    //$ch = curl_init("http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_body_onload"); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('merchantId' => $_POST['merchantId'],'data' => $desEncryptedData))); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

    $output = curl_exec($ch);  
    echo "<b>URL error: </b>",curl_error($ch)."<br>"; 
    curl_close($ch); 
    //echo "<b>Output: </b>",$output."<br>"; */ 
     $merchantid=$_POST['merchantId']; 
     $url='https://cellpay.essecom.com/PGCCDCToken/TokenPayment.jsp?merchantId='.$merchantid.'&data='.$desEncryptedData; //$encrypted_data; 

傢伙一切都工作完美,直到下面這一行,echo語句。我想要的是通過使用下面的代碼,在同一窗口中傳遞兩個值到上面的URL。但它的沒有得到重定向。爲什麼會發生這種情況?爲什麼這個php語句不起作用?使用網址不能發送數據

echo "<script type='text/javascript'> window.open('$url');</script>"; 




} 

    $strHeading = "<h1>Hello </h1>"; 

    if(empty($_POST['name'])){ 
      $name = 'Anonymous'; 
     }  
    else $name = $_POST['name']; 
    if(empty($_POST[_cipherText'])){ 
      $encrypted = 'none'; 
     $token = 'no token';  
     }  
    else {_cipherText']; 
     $token = generateToken($encrypted); 
    } 
    if(empty($_POST['cardNumber'])){ 
     }  
    else { 
     makePayment(); 
    } 

?> 
<html> 
<head> 
<script type="text/javascript" src="https://test-api..com:8081/inpage/js-client-2.1.2.min.js"></script> 
</head> 
<body> 
<!-- 
<input type="text" name="name" value="<?php echo htmlentities($username); ?>" /> 
Welcome <?php echo $_POST["name"]; ?><br> 
Your email address is: <?php echo $_POST["email"]; ?> 
CipherText is: <?php echo $_POST["_cipherText"]; ?> 
    <input type="text" name="name" value="<?php echo htmlentities($username); ?>" /> 
--> 
    <?php echo $strHeading; ?> 
    <h2>Step1. Enter the customer details and submit</h2> 
    <form action="TokenProcess.php" method="post"> 
     <input id="txtEncryptionKey" name="txtEncryptionKey" class=_encryptionkey" 
     type="hidden" value="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvWpIQFjQQCPpaIlJKpeg 
     irp5kLkzLB1AxHmnLk73D3TJbAGqr1QmlsWDBtMPMRpdzzUM7ZwX3kzhIuATV4Pe 
     7RKp3nZlVmcrT0YCQXBrTwqZNh775z58GP2kZs+gVfNqBampJPzSB/hB62KkByhE 
     Cn6grrRjiAVwJyZVEvs/2vrxaEpO+aE16emtX12RgI5JdzdOiNyZEQteU6zRBRJE 
     ocPWVxExaOpVVVJ5+UnW0LcalzA+lRGRTrQJ5JguAPiAOzRPTK/lYFFpCAl/F8wt 
     oAVG1c8zO2NcQ0Pko+fmeidRFxJ/did2btV+9Mkze3mBphwFmvnxa35LF+Cs/XJH 
     DwIDAQAB" /> 
     <table> 
     <tr> 
     <th>Name: </th><td><input type="text" name="name" value="<?php echo htmlentities($name); ?>"></td> 
     </tr> 
     <tr> 
     <th>CardNumber: </th><td><input type="text" name="ccnumber" id="ccnumber" class=_data"></td> 
     </tr> 
     </table> 
     <input type="submit" name="btn_process" value="Submit" id="btn_process" class="_submit btn btn-success"> 
    </form> 
    <h2>Step2. Submit when encrypted data is available</h2> 
    <form action="TokenProcess.php" method="post"> 
     <table> 
     <tr> 
     <th>Encrypted CardNumber: </th><td><input type="text" name="_cipherText" value="<?php echo htmlentities($encrypted); ?>" /></td> 
     </tr> 
     <tr>   
     <th>Merchant ID: </th><td><input type="text" name="merchantId" value="iZwipe1"></td>   
     </tr> 
     <tr> 
     <th>Password : </th><td><input type="text" name="password" value="iZwipe"></td> 
     </tr> 
     <tr> 
     <th>customerReferenceNo : </th><td><input type="text" name="customerReferenceNo" value="iZwipe"></td>  
     </tr> 
     <tr> 
     <th>remoteIP : </th><td><input type="text" name="remoteIP" value="10.10.10.80"></td> 
     </tr> 
     <tr> 
     <th>amount : </th><td><input type="text" name="amount" value="10"></td> 
     </tr> 
     <tr> 
     <th>currencyCode : </th><td><input type="text" name="currencyCode" value="356"></td> 
     </tr> 
     <tr> 
     <th>cardNumber : </th><td><input type="text" name="cardNumber" value="<?php echo htmlentities($token); ?>"></td> 
     </tr> 
     <tr> 
     <th>cardExpiryMonth : </th><td><input type="text" name="cardExpiryMonth" value="12"></td> 
     </tr> 
     <tr> 
     <th>cardExpiryYear : </th><td><input type="text" name="cardExpiryYear" value="2014"></td> 
     </tr> 
     <tr> 
     <th>securityCode: </th><td><input type="text" name="securityCode" value="123"></td> 
     </tr> 
     <tr> 
     <th>cardHolderName : </th><td><input type="text" name="cardHolderName" value="<?php echo htmlentities($name); ?>"></td> 
     </tr> 
     <tr> 
     <th>cardType : </th><td><input type="text" name="cardType" value="CC"></td> 
     </tr> 
     <tr> 
     <th>cardProvider: </th><td><input type="text" name="cardProvider" value="VISA"></td> 
     </tr> 
     <tr> 
     <th>name: </th><td><input type="text" name="name" value="<?php echo htmlentities($name); ?>"></td> 
     </tr> 
     <tr> 
     <th>mobileNo : </th><td><input type="text" name="mobileNo" value="9008032751"></td> 
     </tr> 
     <tr> 
     <th>email : </th><td><input type="text" name="email" value="9008032751"></td> 
     </tr> 
     </table> 
     <input type="submit" name="token_process" value="Make Payment" id="token_process" class="btn btn-success"/> 
    </form> 

</body> 
</html> 
+2

這個問題似乎是題外話,因爲它是關於基本調試,任何基本的IDE會很快趕上 –

回答

1

附上您的</script>標記,它沒有正確封閉,

echo "<script type='text/javascript'> window.open('$url');</script>"; 

而在function encryptText_3des()沒有function pkcs5_pad()

pkcs5_pad()在您的代碼中缺失。

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

然後,

從代碼中刪除此行// echo "<script type='text/javascript'> window.open('$url')<\script>";

加入這一行,而不是header("location:$url");

注:使用一些標準的IDE它主要是解決你的基本錯誤。使用apache錯誤日誌文件查找錯誤。

編號:http://php.net/manual/en/ref.mcrypt.php

+0

thanks.but這是一個打字錯誤 – Ajeesh

+0

否,再次看到你不關閉你的標籤正常。 –

+0

Corrected.Still不被重定向:( – Ajeesh

相關問題