2014-10-28 1 views
1

PayU 서버에 의해 반환 된 Hash와 일치하지 않는 HashPayUMoney 통합 - 응답과 비교하기 위해 해시를 계산하는 방법?

$retHashSeq = $salt.'|'.$status.'||||||||'.$udf3.'|'.$udf2.'|'.$udf1.'|'.$email.'|||'.$amount.'|'.$txnid.'|'.$key; 
$hash = hash("sha512", $retHashSeq); 

그러나 생성 된 Hash를 생성 성공적인 응답을받은 후 Post 요청

$hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|" 
        ."udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10"; 
    $hashVarsSeq = explode('|', $hashSequence); 
    $hashString = ''; 
    foreach ($hashVarsSeq as $hashVar) { 
     $hashString .= isset($payObject['params'][$hashVar]) ? $payObject['params'][$hashVar] : ''; 
     $hashString .= '|'; 
    } 
    $hashString .= $salt; 
    //generate hash 
    $hash = strtolower(hash('sha512', $hashString)); 

에 대한 Hash 생성. 무엇이 문제 일 수 있습니까 ?? 어떤 도움을 주시면 감사하겠습니다.

+0

당신은 PayU 언급하는,하지만 난 그것이 있어야 무엇에 대해 아무것도 찾을 수 없습니다. – magnetik

+0

그것은 PayUMoney입니다. –

답변

1

PayU REST API을 다시 구현하려는 것 같습니다. 현재 버전의 REST API에서 $hashSequence의 패턴에 대한 참조를 찾을 수 없습니다.

official SDK을 사용해 보셨습니까?

+0

그래서 당신에게 효과가 있습니까? 네가 가진 문제가 뭐니? 어떻게 그걸 해결 했니? –

0

이 코드는 내가이 질문에 대답하기 위해 말을 알고 있지만,이 대답은 미래 수색자 도움이 될 서버 측

<?php 

$key=$_POST["key"]; 

$salt="xxxxx"; #your payumoney salt 
$txnId=$_POST["txnid"]; 
$amount=$_POST["amount"]; 
$productName=$_POST["productInfo"]; 
$firstName=$_POST["firstName"]; 
$email=$_POST["email"]; 
$udf1=$_POST["udf1"]; 
$udf2=$_POST["udf2"]; 
$udf3=$_POST["udf3"]; 
$udf4=$_POST["udf4"]; 
$udf5=$_POST["udf5"]; 

$payhash_str = $key . '|' . checkNull($txnId) . '|' .checkNull($amount) . '|' .checkNull($productName) . '|' . checkNull($firstName) . '|' . checkNull($email) . '|' . checkNull($udf1) . '|' . checkNull($udf2) . '|' . checkNull($udf3) . '|' . checkNull($udf4) . '|' . checkNull($udf5) . '|' . $salt; 


function checkNull($value) { 
      if ($value == null) { 
        return ''; 
      } else { 
        return $value; 
      } 
     } 


$hash = strtolower(hash('sha512', $payhash_str)); 
$arr['result'] = $hash; 
$arr['status']=0; 
$arr['errorCode']=null; 
$arr['responseCode']=null; 
$arr['hashtest']=$payhash_str; 
$output=$arr; 


echo json_encode($output); 

?> 
0

에 안드로이드 hashcodegeneration입니다. 공식 웹 사이트에서 최신 PayUMoney 키트를 다운로드하고 success.php 페이지에도 SALT 키를 넣으십시오.

은 여기 내 최신 success.php

<?php 
include'config/db.php'; // Your database connection file if needed 
$status=$_POST["status"]; 
$firstname=$_POST["firstname"]; 
$amount=$_POST["amount"]; 
$txnid=$_POST["txnid"]; 
$posted_hash=$_POST["hash"]; 
$key=$_POST["key"]; 
$productinfo=$_POST["productinfo"]; 
$email=$_POST["email"]; 

$salt=""; // PLACE YOUR SALT KEY HERE 

// Salt should be same Post Request 
if(isset($_POST["additionalCharges"])){ 
    $additionalCharges=$_POST["additionalCharges"]; 
    $retHashSeq = $additionalCharges.'|'.$salt.'|'.$status.'|||||||||||'.$email.'|'.$firstname.'|'.$productinfo.'|'.$amount.'|'.$txnid.'|'.$key; 
}else{ 
    $retHashSeq = $salt.'|'.$status.'|||||||||||'.$email.'|'.$firstname.'|'.$productinfo.'|'.$amount.'|'.$txnid.'|'.$key; 
} 

$hash = strtolower(hash('sha512', $retHashSeq)); // NOTE: THIS PART IN YOUR KIT MAY HAVE AN ERROR. THERE YOU MIGHT GET $hash_string instead of $retHashSeq. JUST REPLACE $hash_string with $retHashSeq. 

if($hash != $posted_hash){ 
    // Transaction completed but is Invalid as Hash Values are not Matching. Notify Admin. 
    //header('Location: fail.php'); 
    //exit(); 
}else{ 
    // Transaction is Valid. Process orders here. 
    //header('Location: thanks.php'); 
    //exit(); 
} 
?> 
관련 문제