Instamojo Payment Gateway Integration in PHP
Let's Start.
How it Works?
First I create a payment Form (form.php)
<!DOCTYPE html> <html> <head> <title>Instamojo payment </title> </head> <body> <form action="pay.php" method="post"> Amount <input type="text" name="amount"><br> Purpose <input type="text" name="purpose"><br> Name <input type="text" name="buyer_name"><br> Email <input type="text" name="email"><br> phone <input type="text" name="phone"><br> <input type="submit" value="Pay"> </form> </body> </html>
Now form submit page (pay.php)
<?php //database connection $con=mysql_connect("localhost","root",""); if($con){ echo "Database Host Connected "; } else{ echo mysql_error(); die(); } $ch2=mysql_select_db("payment",$con); if($ch2){ echo "Database Connected "; } else{ echo mysql_error(); die(); } $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:YOUR_API_KEY", "X-Auth-Token:YOUR_AUTH_KEY")); $payload = Array( 'purpose' => $_REQUEST['purpose'], 'amount' => $_REQUEST['amount'], 'phone' => $_REQUEST['phone'], 'buyer_name' => $_REQUEST['buyer_name'], 'redirect_url' => 'https://postlocaldata.000webhostapp.com/post.php', 'send_email' => true, 'webhook' => 'https://postlocaldata.000webhostapp.com/post.php', 'send_sms' => true, 'email' => $_REQUEST['email'], 'allow_repeated_payments' => false ); //===note = instamojo does not localhost link in redirect_url so i use live then its tranfer the post data to localhost url curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($payload)); $response = curl_exec($ch); curl_close($ch); //echo $response; $payment=json_decode($response,true); if($payment['success']==true){ echo "success"; //Payment Data $successdata=$payment['payment_request']; $qr=mysql_query("INSERT INTO `payment`(`id`, `phone`, `email`, `buyer_name`, `amount`, `purpose`, `status`) VALUES ('".$successdata['id']."','".$successdata['phone']."','".$successdata['email']."','".$successdata['buyer_name']."','".$successdata['amount']."','".$successdata['purpose']."','".$successdata['status']."')"); if($qr){ echo "Inserted "; echo "<script>location='".$successdata['longurl']."'</script>"; } else{ echo mysql_error(); die(); } } else{ echo "failed to create order"; } //===================test card======================= //=======no. 4242 4242 4242 4242======================== //========cvv 111 ====================== // ============ date = any future dat ========================= //===========code 1221 ========================= ?>
Now Payment Response Page (payresponse.php)
<?php //print_r($_REQUEST); $con=mysql_connect("localhost","root",""); if($con){ echo "Database Host Connected "; } else{ echo mysql_error(); die(); } $ch2=mysql_select_db("payment",$con); if($ch2){ echo "Database Connected "; } else{ echo mysql_error(); die(); } $pay_id=$_REQUEST['payment_id']; $req=$_REQUEST['payment_request_id']; //print_r($_REQUEST); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://test.instamojo.com/api/1.1/payments/'.$pay_id.'/'); 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:YOUR_API_KEY", "X-Auth-Token:YOUR_AUTH_KEY")); $response = curl_exec($ch); curl_close($ch); $json=json_decode($response,TRUE); if($json['success']==true){ echo "payment done"; $status=$json['payment']; $up=mysql_query("UPDATE `payment` SET `status`='".$status['status']."' WHERE id='".$req."'"); } else{ echo "payment failed"; }
Live Server (post.php) for data transfer to localhost.
<?php echo "<form id='forms' action='http://localhost/payment/payresponse.php' method='post'>"; foreach ($_REQUEST as $key => $value) { echo '<input type="hidden" name="'.$key.'" value="'.$_REQUEST[$key].'">'; } echo "<form>"; ?> <script type="text/javascript"> document.getElementById("forms").submit(); </script>
Databse Table payment.sql
CREATE TABLE `payment` ( `id` text NOT NULL, `phone` text NOT NULL, `email` text NOT NULL, `buyer_name` text NOT NULL, `amount` text NOT NULL, `purpose` text NOT NULL, `status` text NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
For Docs : https://docs.instamojo.com/docs/get-payment-details
for Live Post Request to localhost : http://postlocaldata.000webhostapp.com/post.php
for Test Login : https://test.instamojo.com/integrations
Payments Gateway in Qatar solution is a technique that requires the internet as a stage to complete installment processing. There are different techniques for online installment solutions accessible and most organizations endeavor to offer an assortment with the goal that they claim to a bigger crowd.
ReplyDeleteWow, excellent post. I'd like to draft like this too - taking time and real hard work to make a great article. This post has encouraged me to write some posts that I am going to write soon. UK VPS
ReplyDeleteI think one of your ads triggered my internet browser to resize, you might want to put that on your blacklist. web design in new york
ReplyDelete