Stripe payment gateway integration using cUrl - Codeigniter 3
- Sign up for a Stripe account at https://stripe.com/
- Obtain Stripe api key
- Setup Codeigniter 3 Project
- Create a library for Stripe integration
Create library inside libraries folder
application => libraries => Stripe_library.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Stripe_library {
protected $CI;
// Default Constructor
public function __construct() {
$this->CI =& get_instance();
// Load necessary libraries and helpers here if needed
}
// Create function for checkout
public function create_checkout_session($amount, $currency, $success_url, $cancel_url) {
$stripe_secret_key = 'Stripe_secret_key';
$api_url = 'https://api.stripe.com/v1/checkout/sessions';
$stripeamount = $amount * 100;
$data = [
'payment_method_types' => ['card'],
'line_items' => [
[
'price_data' => [
'currency' => $currency,
'product_data' => [
'name' => 'Document Translation',
],
'unit_amount' => $stripeamount,
],
'quantity' => 1,
],
],
'mode' => 'payment',
'success_url' => $success_url,
'cancel_url' => $cancel_url,
];
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_USERPWD, $stripe_secret_key . ':');
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
}
?>
Create controller inside controller folder
Create payment.php file inside views.<?php defined('BASEPATH') OR exit('No direct script access allowed'); header('Access-Control-Allow-Origin: *'); header("Access-Control-Allow-Methods: GET, OPTIONS"); class Payment extends CI_Controller{ public function __construct() { parent::__construct(); $this->load->library('stripe_library'); } public function checkout() { $amount = "Amount"; // Enter Amount $productname = "Payment for"; // Enter Product Name $currency = 'inr'; // Enter Currency $success_url = base_url('payment/success'); $cancel_url = base_url('payment/cancel');
$session = $this->stripe_library->create_checkout_session($amount, $currency, $success_url, $cancel_url); echo json_encode($session['url']); } public function success() { // Handle successful payment here // You can retrieve payment details from $_GET or $_POST } public function cancel() { // Handle cancelled payment here }
Send payment checkout request using ajax. so we have create function paynow on button click.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Stripe Payment Integration</title>
</head>
<body>
<form id="payment-form">
<input type="text" id="amount" placeholder="Enter Amount">
<div id="card-element"></div>
<button id="submit" onclick="paynow()">Pay</button>
</form>
<script>
function paynow(){
var amount = $('#total_amount').text();
$.ajax({
url: "<?php echo base_url('payment/checkout');?>",
dataType: "json",
type: "POST",
data: {amount:amount},
success: function(response){
window.open(response, '_blank');
}
})
}
</script>
</body>
</html>
Comments
Post a Comment