A. First way
Goto https://test.instamojo.com.
Copy Crediential from https://test.instamojo.com/integrations. (API & Plugins)
Goto https://docs.instamojo.com/reference/payments-api for php api.
OR
Download src folder from here: https://github.com/Instamojo/instamojo-php/tree/master
B. View:
<form method="POST" action="{{route('paynow')}}" style="text-align: center;">
{{ csrf_field() }}
<div class="form-group">
<img src="https://play-lh.googleusercontent.com/eKx11Wg-Eq0D6dG3kxRNG3DnZjPdLLYN6jdOwYo4k0CmgKQbzi5sJQfNJygJZSAAdA" id="instamojoImg" />
</div> <br/>
@php $finalamount=$payments->amount*100; @endphp
<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 ?>" />
<input type="hidden" name="purpose" value="Premium Services" /><input type="hidden" name="amount" value="{{$amount}}" />
<input type="hidden" name="name" id="firstname" value="<?php echo $name ?>" />
<input type="hidden" name="email" id="email" value="<?php echo $email ?>" />
<input type="hidden" name="productinfo" value="TheDDS">
<input type="hidden" name="surl" value="{{env('APP_URL')}}payment/payment-success/{{$enquirydata->id}}" />
<input type="hidden" name="furl" value="{{env('APP_URL')}}payment/payment-failed/{{$enquirydata->id}}" />
<input type="hidden" name="service_provider" value="instamojo" />
<button type="submit" name="form-sbmt" class="btn btn-rose btn-round btn-blockpk">
Pay ₹{{$payments->amount}} Online
</button>
</form>
D. PaymentController.php:
function payNow(Request $req){
$key = $req->key;
$hash = $req->hash;
$txnid = $req->txnid;
$purpose = $req->purpose;
$amount = $req->amount;
$name = $req->name;
$email = $req->email;
$productinfo = $req->productinfo;
$surl = $req->surl;
$furl = $req->furl;
$service_provider = $req->service_provider;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://test.instamojo.com/api/1.1/payment-requests/');
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array("X-Api-Key:test_5e11468d99ef42536ec4d6b3f64",
"X-Auth-Token:test_4e83800c189d8acf279a858483d"));
$payload = Array(
'purpose' => $purpose,
'amount' => $amount,
'phone' =>'1234567890',
'buyer_name' => $name,
'redirect_url' => $surl,
'send_email' => true,
// 'webhook' => 'https://india-at-trading.in/instamojo/webhook.php',
'send_sms' => true,
'email' => $email,
'allow_repeated_payments' => false
);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload));
$response = curl_exec($ch);
curl_close($ch);
$response=json_decode($response);
echo '<pre>';
// print_r($response->payment_request->longurl);
$_SESSION['TID']=$response->payment_request->id;
header('location:'.$response->payment_request->longurl);
}
A. Install Instamojo Package
composer require instamojo/instamojo-php
B. Open services.php file and add the following code into it, which is inside config/services.php directory:
'instamojo' => [ 'api_key' => env('IM_API_KEY'), 'auth_token' => env('IM_AUTH_TOKEN'), 'redirect_url' => env('IM_URL'), ],
C. Make Model & Migration:
php artisan make:model Payment -m
D. Make Model & Migration:
public function up() { Schema::create('payments', function (Blueprint $table) { $table->increments('id'); $table->string('i_payment_id'); $table->string('user_id'); $table->string('amount'); $table->timestamps(); }); }
php artisan migrate
E. Create Controller:
php artisan make:controller PayController
F. Create Controller:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class PayController extends Controller { public function index() { return view('event'); } public function pay(Request $request){ $api = new \Instamojo\Instamojo( config('services.instamojo.api_key'), config('services.instamojo.auth_token'), config('services.instamojo.url') ); try { $response = $api->paymentRequestCreate(array( "purpose" => "FIFA 16", "amount" => $request->amount, "buyer_name" => "$request->name", "send_email" => true, "email" => "$request->email", "phone" => "$request->mobile_number", "redirect_url" => "http://127.0.0.1:8000/pay-success" )); header('Location: ' . $response['longurl']); exit(); }catch (Exception $e) { print('Error: ' . $e->getMessage()); } } public function success(Request $request){ try { $api = new \Instamojo\Instamojo( config('services.instamojo.api_key'), config('services.instamojo.auth_token'), config('services.instamojo.url') ); $response = $api->paymentRequestStatus(request('payment_request_id')); if( !isset($response['payments'][0]['status']) ) { dd('payment failed'); } else if($response['payments'][0]['status'] != 'Credit') { dd('payment failed'); } }catch (\Exception $e) { dd('payment failed'); } dd($response); } }
G. Make Router:
use App\Http\Controllers\PayController;
Route::get('event', [PayController::class, 'index']);
Route::post('pay', [PayController::class, 'pay']);
Route::get('pay-success', [PayController::class, 'success']);