How To Integrate PayU Money Payment Gateway in PHP

In this tutorial, I am going to explain How to Integrate PayU Money Payment Gateway in PHP. Most of the thing are already in PayU documentation I am just going to explain it in step so you will easily integrate without reading the whole document. You may also like Paypal Payment using PHP and How to integrate Paypal payment gateway using Laravel 5.

Steps For How to Integrate PayU Money Payment Gateway in PHP

Step 1. Create PayU Money account

Go to http://payumoney.com/ and sign up as a merchant account.

Step 2. At the time of sign up using your valid email.

Step 3. Fill in all required business details.

Step 4. Add your bank detail.

Step 5. PHP Code (index.php)

<?php
// Merchant key here as provided by Payu

$MERCHANT_KEY = "D6DcgJMT";

// Merchant Salt as provided by Payu

$SALT = "yO7Ss6abcD";
    
// End point - change to https://secure.payu.in for LIVE mode

$PAYU_BASE_URL = "https://test.payu.in";

//$PAYU_BASE_URL = "https://secure.payu.in";

$action = '';
$posted = array();
if(!empty($_POST)) 
{
    foreach($_POST as $key => $value) {    
        $posted[$key] = $value; 
    }
}

$formError = 0;

if(empty($posted['txnid'])) {
  $txnid = substr(hash('sha256', mt_rand() . microtime()), 0, 20);
} else {
  $txnid = $posted['txnid'];
}

$hash = '';
/* Hash Sequence */
$hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10";
if(empty($posted['hash']) && sizeof($posted) > 0) {
    if(empty($posted['key']) || empty($posted['txnid']) || empty($posted['amount']) || empty($posted['firstname']) || empty($posted['email']) || empty($posted['phone']) || empty($posted['productinfo']) || empty($posted['surl']) || empty($posted['furl']) || empty($posted['service_provider'])) 
    {
        $formError = 1;
    }
    else 
    {
        $hashVarsSeq = explode('|', $hashSequence);
        $hash_string = '';	
        foreach($hashVarsSeq as $hash_var) {
          $hash_string .= isset($posted[$hash_var]) ? $posted[$hash_var] : '';
          $hash_string .= '|';
        }

        $hash_string .= $SALT;
        $hash = strtolower(hash('sha512', $hash_string));
        $action = $PAYU_BASE_URL . '/_payment';
    }
}
elseif(!empty($posted['hash'])) 
{
    $hash = $posted['hash'];
    $action = $PAYU_BASE_URL . '/_payment';
}
?>
<html>
  <head>
  <script>
    var hash = '<?php echo $hash ?>';
    function submitPayuForm() {
        if(hash == '') {
          return;
        }
        var payuForm = document.forms.payuForm;
        payuForm.submit();
    }
  </script>
  </head>
  <body onload="submitPayuForm()">
    <h2>PayU Form</h2>
    <br/>
    <?php if($formError) { ?>
	
      <span style="color:red">Please fill all mandatory fields.</span>
      <br/>
      <br/>
    <?php } ?>
    <form action="<?php echo $action; ?>" method="post" name="payuForm">
      <input type="hidden" name="key" value="<?php echo $MERCHANT_KEY ?>" />
      <input type="hidden" name="hash" value="<?php echo $hash ?>"/>
      <input type="hidden" name="txnid" value="<?php echo $txnid ?>" />
      <table>
        <tr>
          <td><b>Mandatory Parameters</b></td>
        </tr>
        <tr>
          <td>Amount: </td>
          <td><input name="amount" value="<?php echo (empty($posted['amount'])) ? '' : $posted['amount'] ?>" /></td>
          <td>First Name: </td>
          <td><input name="firstname" id="firstname" value="<?php echo (empty($posted['firstname'])) ? '' : $posted['firstname']; ?>" /></td>
        </tr>
        <tr>
          <td>Email: </td>
          <td><input name="email" id="email" value="<?php echo (empty($posted['email'])) ? '' : $posted['email']; ?>" /></td>
          <td>Phone: </td>
          <td><input name="phone" value="<?php echo (empty($posted['phone'])) ? '' : $posted['phone']; ?>" /></td>
        </tr>
        <tr>
          <td>Product Info: </td>
          <td colspan="3"><textarea name="productinfo"><?php echo (empty($posted['productinfo'])) ? '' : $posted['productinfo'] ?></textarea></td>
        </tr>
        <tr>
          <td>Success URI: </td>
          <td colspan="3"><input name="surl" value="<?php echo (empty($posted['surl'])) ? '' : $posted['surl'] ?>" size="64" /></td>
        </tr>
        <tr>
          <td>Failure URI: </td>
          <td colspan="3"><input name="furl" value="<?php echo (empty($posted['furl'])) ? '' : $posted['furl'] ?>" size="64" /></td>
        </tr>

        <tr>
          <td colspan="3"><input type="hidden" name="service_provider" value="payu_paisa" size="64" /></td>
        </tr>
         <tr>
          <?php if(!$hash) { ?>
            <td colspan="4"><input type="submit" value="Submit" /></td>
          <?php } ?>
        </tr>
      </table>
    </form>
  </body>
</html>

Step 6. PHP Code (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 = "yO7Ss6abcD";

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

Step 7. PHP Code (cancel.php)

<?php
    $status = $_POST["status"];
    $email = $_POST["email"];
    $firstname = $_POST["firstname"];
    $amount = $_POST["amount"];
    $txnid = $_POST["txnid"];
    $posted_hash = $_POST["hash"];
    $key = $_POST["key"];
    $productinfo = $_POST["productinfo"];
    $salt = "yO7Ss6abcD";

    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>Your order status is " . $status . ".</h3>";
        echo "<h4>Your transaction id for this transaction is " . $txnid . ". You may try making the payment by clicking the link below.</h4>";
    }
?>

And if you like this tutorial please share it with your friends via Email or Social Media.

Leave a Reply

Your email address will not be published. Required fields are marked *