Integrating PayUMoney in Laravel 5.6

4.4k Views Asked by At

I am trying integrate PayUMoney in Laravel 5.6. As per the PayUMoney Redirect Checkout document, a form needs to be filled and submitted to "https://sandboxsecure.payu.in/_payment" (using sandbox url for testing). Submitting the html form with necessary fields filled successfully redirects me to the payment gateway page and works fine. But I wanted to implement it in my Laravel controller. I did the following:

my routes are:

    Route::get('book/placeOrder', ['uses' => 'BooksController@placeOrder', 'as' => 'placeOrder']);
Route::get('payumoney/surl', ['uses' => 'BooksController@surl', 'as' => 'payumoneysurl']);
    Route::get('payumoney/furl', ['uses' => 'BooksController@furl', 'as' => 'payumoneyfurl']);

placeOrder function in BooksController:

public function sendCurlPostRequest(){
    //code to add order and order details go here

    $salt = "[my merchant salt]";
    $hash_string = '';
    $hash_string .= "[hash string as per the payumoney checkout document]";
    $hash_string .= $salt;
    $hash = strtolower(hash('sha512', $hash_string));

    $data1 = [
        'key' => "[merchant key]",
        'hash' => $hash,
        'txnid' => "or1234txn",
        'amount' => "10",
        'firstname' => "[sample customer name]",
        'email' => "[sample email]",
        'phone' => "[sample phone number]",
        'productinfo' => "book",
        'surl' =>  "[route to success page]",
        'furl' => "[route to failure page]",
        'service_provider' => "payu_paisa",
    ];

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL => "https://sandboxsecure.payu.in/_payment",
        CURLOPT_RETURNTRANSFER => false,
        CURLOPT_FOLLOWLOCATION => 1,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => $data1,
    ));

    $response = curl_exec($curl);

    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
        echo "cURL Error #:" . $err;
    } else {
        //print_r(json_decode($response));
        //print_r($response);
    }

}

On clicking the checkout button in the cart page, I do get redirected to the PayUMoney page but the page does not load completely. Only the page's html title appears and the page loader appears. Since the page does not load, the loader is all that i can see.

Can you please help me the correct way to implement the PayUMoney payment gateway (preferably without any third party plugin) in my Laravel controller method?

Please point me to the necessary solution...

Thanks

1

There are 1 best solutions below

1
On

I'm just getting started with PayU myself for a client - have you considered using the official SDK?

https://github.com/PayU-EMEA/openpayu_php

or unofficial

https://github.com/tzsk/payu