Integrating on your Website

You will require to write some amount of code to collect the details from your customer and submit those details with PayU using a cURL with PayU Hosted Checkout integration.

This section provides some sample code blocks to submit the details you collected from your customer and they click Pay Now.

🦉

Submitting Payment Request on your Website

Learn how to post a payment request directly from your site

import hashlib
import urllib

# Set the API endpoint URL
apiEndpoint = "https://test.payu.in/_payment"

# Set the merchant key and salt
merchantKey = "your_merchant_key"
salt = "your_salt"

# Set the order details
amount = "100.00"
productInfo = "Test Product"
firstName = "John"
email = "[email protected]"
phone = "9999999999"
txnId = "TXN" + str(int(time.time()))
surl = "https://yourwebsite.com/payment-success"
furl = "https://yourwebsite.com/payment-failure"

# Create a map of parameters to pass to the PayU API
params = {
    "key": merchantKey,
    "txnid": txnId,
    "amount": amount,
    "productinfo": productInfo,
    "firstname": firstName,
    "email": email,
    "phone": phone,
    "surl": surl,
    "furl": furl,
}

# Generate the hash
hashValue = generateHash(params, salt)

# Add the hash to the parameter map
params["hash"] = hashValue

# Encode the parameters for use in the URL
encodedParams = urllib.parse.urlencode(params)

# Build the URL for the PayU API request
url = apiEndpoint + "?" + encodedParams

# Output the URL for the PayU API request
print(url)

def generateHash(params, salt):
    hashString = params["key"] + "|" + params["txnid"] + "|" + params["amount"] + "|" + params["productinfo"] + "|"
<?php

// Set the API endpoint URL
$apiEndpoint = "https://sandboxsecure.payu.in/_payment";

// Set the merchant key and salt
$merchantKey = "your_merchant_key";
$salt = "your_salt";

// Set the order details
$amount = "100.00";
$productInfo = "Test Product";
$firstName = "John";
$email = "[email protected]";
$phone = "9999999999";
$txnId = "TXN" . time();
$surl = "https://yourwebsite.com/payment-success";
$furl = "https://yourwebsite.com/payment-failure";

// Create a map of parameters to pass to the PayU API
$params = array(
    "key" => $merchantKey,
    "txnid" => $txnId,
    "amount" => $amount,
    "productinfo" => $productInfo,
    "firstname" => $firstName,
    "email" => $email,
    "phone" => $phone,
    "surl" => $surl,
    "furl" => $furl,
);

// Generate the hash
$hash = generateHash($params, $salt);

// Add the hash to the parameter map
$params["hash"] = $hash;

// Build the URL for the PayU API request
$url = $apiEndpoint . "?" . http_build_query($params);

// Output the URL for the PayU API request
echo $url;

function generateHash($params, $salt) {
    $hashString = $params["key"] . "|" . $params["txnid"] . "|" . $params["amount"] . "|" . $params["productinfo"] . "|" . $params["firstname"] . "|" . $params["email"] . "||||||" . $salt;

    // Generate the hash
    $hash = hash("sha512", $hashString);

    return $hash;
}
?>
// Set the API endpoint URL
const apiEndpoint = "https://test.payu.in/_payment";

// Set the merchant key and salt
const merchantKey = "your_merchant_key";
const salt = "your_salt";

// Set the order details
const amount = "100.00";
const productInfo = "Test Product";
const firstName = "John";
const email = "[email protected]";
const phone = "9999999999";
const txnId = "TXN" + Date.now();
const surl = "https://yourwebsite.com/payment-success";
const furl = "https://yourwebsite.com/payment-failure";

// Create a map of parameters to pass to the PayU API
const params = {
  "key": merchantKey,
  "txnid": txnId,
  "amount": amount,
  "productinfo": productInfo,
  "firstname": firstName,
  "email": email,
  "phone": phone,
  "surl": surl,
  "furl": furl,
};

// Generate the hash
const hash = generateHash(params, salt);

// Add the hash to the parameter map
params["hash"] = hash;

// Encode the parameters for use in the URL
const encodedParams = new URLSearchParams(params).toString();

// Build the URL for the PayU API request
const url = apiEndpoint + "?" + encodedParams;

// Output the URL for the PayU API request
console.log(url);

function generateHash(params, salt) {
  let hashString = params["key"] + "|" + params["txnid"] + "|" + params["amount"] + "|" + params["productinfo"] + "|" + params["firstname"] + "|" + params["email"] + "||||||" + salt;

  // Generate the hash
  const hash = sha512(hashString);

  return hash;
}

function sha512(str) {
  return crypto.createHash("sha512").update(str).digest("hex");
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class PayUHostedCheckout {

    public static void main(String[] args) throws Exception {

        // Set the API endpoint URL
        String apiEndpoint = "https://test.payu.in/_payment";

        // Set the merchant key and salt
        String merchantKey = "your_merchant_key";
        String salt = "your_salt";

        // Set the order details
        String amount = "100.00";
        String productInfo = "Test Product";
        String firstName = "John";
        String email = "[email protected]";
        String phone = "9999999999";
        String txnId = "TXN" + System.currentTimeMillis();
        String surl = "https://yourwebsite.com/payment-success";
        String furl = "https://yourwebsite.com/payment-failure";

        // Create a map of parameters to pass to the PayU API
        Map<String, String> params = new HashMap<>();
        params.put("key", merchantKey);
        params.put("txnid", txnId);
        params.put("amount", amount);
        params.put("productinfo", productInfo);
        params.put("firstname", firstName);
        params.put("email", email);
        params.put("phone", phone);
        params.put("surl", surl);
        params.put("furl", furl);

        // Generate the hash
        String hash = generateHash(params, salt);

        // Add the hash to the parameter map
        params.put("hash", hash);

        // Encode the parameters for use in the URL
        String encodedParams = encodeParams(params);

        // Build the URL for the PayU API request
        URL url = new URL(apiEndpoint + "?" + encodedParams);

        // Open a connection to the PayU API endpoint
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("POST");

        // Read the response from the PayU API
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        // Output the response from the PayU API
        System.out.println(response.toString());
    }

    private static String generateHash(Map<String, String> params, String salt) throws Exception {
        StringBuilder hashString = new StringBuilder();
        hashString.append(params.get("key"));
        hashString.append("|");
        hashString.append(params.get("txnid"));
        hashString.append("|");
        hashString.append(params.get("amount"));
        hashString.append("|");
        hashString.append(params.get("productinfo"));
        hashString.append("|");
        hashString.append(params.get("firstname"));
        hashString.append("|");
        hashString.append(params.get("email"));
        hashString.append("|");
        hashString.append(params.get("udf1"));
        hashString.append("||||||");
        hashString.append(salt);

        // Generate the hash
        String hash = hashString.toString();
        String hashValue = hashCal("SHA-512", hash);

        return hashValue;
    }

    private static String encodeParams(Map<String, String> params) throws Exception {
        StringBuilder encodedParams = new StringBuilder();
        for (Map.Entry<String, String> entry : params.entrySet()) {

📘

Note:

Javascript requires a crypto library to generate the hash. In this example, the crypto library that is built into Node.js is used, but if you’re running this code in a browser environment, you’ll need to use a different library.