phppayumoney

In PayuMoney Web Integration with PHP I am reaching at success.php page but getting msg "Invalid Transaction. Please try again"


As there is a code in success.php, where it compare the equality of $hash variable sent to PayUMoney and the one which is received by us, and if they are not equal it shows the message:

Invalid Transaction. Please try again

So I am getting this message, and I don’t know how to solve this problem.

There is some sample code for success.php

<?php
$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="salt";

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 = hash("sha512", $retHashSeq);

   if ($hash != $posted_hash) {
       echo "Invalid Transaction. Please try again";
       }
   else {

      echo "<h3>Thank You. Your order status is ". $status .".</h3>";
      echo "<h4>Your Transaction ID for this transaction is ".$txnid.".   </h4>";
      echo "<h4>We have received a payment of Rs. " . $amount . ". Your    order will soon be shipped.</h4>";

       }         
?>

Solution

  • Line no 10. $salt ="salt";

    It should be $salt = "your salt from your payumoney accountenter code here"

    example

    $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="GQs7yium";
    

    that is why $retHastseq is not equal to $posted_hash.

    Give it a try.