Overview

The document provides an overview and guidelines for integrating pay-in functionalities into your application. It covers the necessary steps, APIs, and considerations required to enable seamless processing of payments within your system. From initiating transactions to handling various payment methods, this document aims to provide a comprehensive understanding of integrating pay-in features effectively.

Payin

Pay-ins are modern payment solutions offered by payment aggregators and payment gateways. Using these solutions, merchants can accept payments from their customers via different payment methods.

Method:- POST
Parameters:-
  • "orderid" => "180000000000027",
  • "name" => "XYZ",
  • "email" => "test@gmail.com",
  • "method" => 1,
  • "phone" => "9999999901",
  • "amount" => 100

Encrypt this all Parameters using your Secret key.

Request:-

    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://payinapi.wavexpay.in/api/Payin',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{"token":"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X","encrypt_data":"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="}',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
    ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    OkHttpClient client = new OkHttpClient().newBuilder()
    .build();
    MediaType mediaType = MediaType.parse("application/json");
    RequestBody body = RequestBody.create(mediaType, "{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}");
    Request request = new Request.Builder()
    .url("https://payinapi.wavexpay.in/api/Payin")
    .method("POST", body)
    .addHeader("Content-Type", "application/json")
    .build();
    Response response = client.newCall(request).execute();

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    const myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/json");

    const raw = JSON.stringify({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    });

    const requestOptions = {
    method: "POST",
    headers: myHeaders,
    body: raw,
    redirect: "follow"
    };

    fetch("https://payinapi.wavexpay.in/api/Payin", requestOptions)
    .then((response) => response.text())
    .then((result) => console.log(result))
    .catch((error) => console.error(error));

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    var client = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Post, "https://payinapi.wavexpay.in/api/Payin");
    var content = new StringContent("{\"token\":\"R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X\",\"encrypt_data\":\"WnZlpdo8SLM\\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0=\"}", null, "application/json");
    request.Content = content;
    var response = await client.SendAsync(request);
    response.EnsureSuccessStatusCode();
    Console.WriteLine(await response.Content.ReadAsStringAsync());

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

    const axios = require('axios');
    let data = JSON.stringify({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    });

    let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: 'https://payinapi.wavexpay.in/api/Payin',
    headers: { 
        'Content-Type': 'application/json'
    },
    data : data
    };

    axios.request(config)
    .then((response) => {
    console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
    console.log(error);
    });


Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    
    
        {
            "token":"R0VSN25EMGUSD5OG1YN01XWGtMU2xsNG1XghgGhgfFKBNMSGRJ",
            "encrypt_data":"WnZlpdo8SLM\/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
        }
    

 
    import http.client
    import json

    conn = http.client.HTTPConnection("https://payinapi.wavexpay.in/api/Payin", 8005)
    payload = json.dumps({
    "token": "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
    "encrypt_data": "WnZlpdo8SLM/q7ELC3nIWHI1NDFMdTFXUWNrYVVYc1UreUZOSkxkRkhiOWIvVy8rdCt1YzB5OHRuRGpYbFNOeS9EekRGdTRYUUEvU3RRVmx5ZHhOY1JIemE1cXdEeGZOK0RaM3kzOUlzdXAzRFhXcGszRHkxd2VvcnJaNlBsTWRvSTQwdEpSK3BLbDA5bzk0d25jYmVtRzZTVThyVlR0NXBvTzhiV3QyUEh5cUdDNHJIVlZxbXJSK2hyST0="
    })
    headers = {
    'Content-Type': 'application/json'
    }
    conn.request("POST", "/api/Payin", payload, headers)
    res = conn.getresponse()
    data = res.read()
    print(data.decode("utf-8"))

Response:-

 Success
    
        {
            "Status":"INITIATE",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Name":"Test Test",
            "Email":"test@gmail.com",
            "Phone":"5768908909",
            "Amount":200,
            "Message":"Transaction Initiate Successfull",
            "UPI_URL":"upi intent"
            "OR"
            "RedirectUrl":"Redirect Url"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Duplicate Transaction",
            "Errorcode":"103"
        }
    

Payin Webhook Response:-

A webhook system needs implementation to receive updates on payment statuses from the Payin API. Data in JSON format will be delivered through the webhook, facilitating efficient tracking and management of payment statuses in real-time.

Webhook Status:-

  • SUCCESS
  • FAILED
  • REVERSAL
  • CANCELLED
  • PENDING
 Response
    
        {
            "Status": "SUCCESS",
            "Txnid": "187500010031002",
            "OrderID" => "187500010031002",
            "Amount": "200",
            "RRN": "53253646467",
            "Message": "NA"
        }
    

Payin Check Response:-

Method:- POST
Status:-
  • PROCESSING
  • PENDING
  • USER DROP
  • SUCCESS
  • FAILED
  • REVERSAL
  • CANCELLED

Request:-

    
        {
            "token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
            "txnid":"WXP9047953036032"
        }
    

    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://payinapi.wavexpay.in/api/PayinCheckStatus',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS =>'{
        "token":"Uzh5WHNuZllrd0R6WEZxaFZJV2VDDDGGBMSlFwMGhZMGxGK2FHM2Np",
        "txnid":"WXP9047953036032"
    }',
    CURLOPT_HTTPHEADER => array(
        'Content-Type: application/json'
    ),
    ));
    $response = curl_exec($curl);
    curl_close($curl);
    echo $response;

Response:-

 Success
    
        {
            "Status":"SUCCESS",
            "TxnID":"187500010031007",
            "OrderID" :"187500010031007",
            "Amount":200,
            "RRN":"1234567890"
        }
    

 ERROR / FAILED
    
        {
            "Status":"ERROR",
            "Message":"Invalid Token",
            "Errorcode":"103"
        }
    

Encrypt Formate:-

    $clientSecretKey = 'eXpKUWlrSWJLdjhPTUJ5UmdJcUJJZmdt';
    $encrydata = [
        "orderid" => "180000000000027",
        "name" => "vikas rai",
        "email" => "test@gmail.com",
        "method" => 1,
        "phone" => "9999999901",
        "amount" => 100
    ];
    $encryptedData = $this->encryptData($encrydata, $clientSecretKey);
    $request = [
        "token" => "R0VSN25EMGU5OG1YN01XWGtMU2xsNG1X",
        "encrypt_data" => $encryptedData
    ];
    
    echo json_encode($request);

    function encryptData($data, $secretKey)
    {
        $iv = random_bytes(16); // 16 bytes for AES-256
        $cipher = 'AES-256-CBC';

        $encrypted = openssl_encrypt(
            json_encode($data), // Convert data to JSON
            $cipher,
            $secretKey,
            0,
            $iv
        );

        return base64_encode($iv . $encrypted); // Combine IV and encrypted data
    }