You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

225 lines
8.5 KiB

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
use app\libraries\StripePayment;
use app\core\auth\User as UserAuth;
class Payment extends MY_Controller {
public function __construct()
{
$this->my_parent_controller();
$this->load->model("event_model");
$this->load->model("user_model");
}
public function send_payment_request() {
$event = json_decode(get_cookie($this->config->item('sess_cookie_name').'_event_data'));
$event_details = (array)$this->event_model->event_details($event->event_id);
$event_details = array_merge($event_details, ["seats_reserved" => $event->seats_reserved]);
$user_iban = $this->user_model->get_user_iban($this->session->userdata('logged_in')['user_id']);
$apiData = json_encode([
'Autorization' => $_SESSION['user_token'],
'montant' => $event_details['event_rate'],
'app' => "cpay",
'iban' => $user_iban,
'cle' => 'sk_test_51HfABCDEF1234567890qwertyuio98765lkjhgfdsazxcvbnm',
'action' => "make_payment",
'motif' => 'Achat cous xxx ohatra'
]);
// Prepare HTTP headers
$httpHeaders = [
"Content-Type: application/json", // Ensure the API interprets the request correctly
"Content-Length: " . strlen($apiData), // Set Content-Length for php://input
"authority: secure.c4m.mg",
"cache-control: max-age=0",
"upgrade-insecure-requests: 1",
"user-agent: " . ($_SERVER['HTTP_USER_AGENT'] ?? 'Unknown'),
"sec-fetch-user: ?1",
"accept-language: en-US,en;q=0.9"
];
// Initialize cURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.c-pay.me/',
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 => $apiData, // Send data via php://input
CURLOPT_HTTPHEADER => $httpHeaders,
CURLOPT_SSL_VERIFYPEER => false, // Disable SSL peer verification
CURLOPT_SSL_VERIFYHOST => 0 // Disable SSL host verification
]);
$response1 = curl_exec($curl);
$response = json_decode($response1, true);
$err = curl_error($curl);
curl_close($curl);
dd($response);
if ($response['status'] !== "error") {
echo json_encode([
'status' => 'success',
'redirect' => 'otp_verification'
]);
}
}
public function confirm_payment() {
$event = json_decode(get_cookie($this->config->item('sess_cookie_name').'_event_data'));
$event_details = (array)$this->event_model->event_details($event->event_id);
$event_details = array_merge($event_details, ["seats_reserved" => $event->seats_reserved]);
$user_iban = $this->user_model->get_user_iban($this->session->userdata('logged_in')['user_id']);
$otp_code = $this->input->post('otp');
$apiData = json_encode([
'Autorization' => $_SESSION['user_token'],
'montant' => $event_details['event_rate'],
'app' => "cpay",
'iban' => $user_iban,
'cle' => 'sk_test_51HfABCDEF1234567890qwertyuio98765lkjhgfdsazxcvbnm',
'action' => "make_payment",
'motif' => 'achat' . $event_details['event_rate'],
'code' => $otp_code
]);
// Prepare HTTP headers
$httpHeaders = [
"Content-Type: application/json", // Ensure the API interprets the request correctly
"Content-Length: " . strlen($apiData), // Set Content-Length for php://input
"authority: secure.c4m.mg",
"cache-control: max-age=0",
"upgrade-insecure-requests: 1",
"user-agent: " . ($_SERVER['HTTP_USER_AGENT'] ?? 'Unknown'),
"sec-fetch-user: ?1",
"accept-language: en-US,en;q=0.9"
];
// Initialize cURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.c-pay.me/',
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 => $apiData, // Send data via php://input
CURLOPT_HTTPHEADER => $httpHeaders,
CURLOPT_SSL_VERIFYPEER => false, // Disable SSL peer verification
CURLOPT_SSL_VERIFYHOST => 0 // Disable SSL host verification
]);
$response1 = curl_exec($curl);
$response = json_decode($response1, true);
dd($response);
$err = curl_error($curl);
curl_close($curl);
if($response['status'] !== 'error') {
echo json_encode([
'status' => 'success',
]);
}
}
/**
* Create payment intent API
*/
// public function create () {
// $event = json_decode(get_cookie($this->config->item('sess_cookie_name').'_event_data'));
// $event_details = (array)$this->event_model->event_details($event->event_id);
// $event_details = array_merge($event_details, ["seats_reserved" => $event->seats_reserved]);
// $user_iban = $this->user_model->get_user_iban($this->session->userdata('logged_in')['user_id']);
// if($event->booking->workshop_session =='DISTANCE-PRESENTIEL') {
// $ncp = json_decode($event_details['night_class_prices']);
// if($event->booking->session_type == 'soir-presentiel') {
// $event_details['discount_apply'] = $ncp->presentiel->discount_apply;
// $event_details['event_rate'] = $ncp->presentiel->rate;
// } else {
// $event_details['discount_apply'] = $ncp->distance->discount_apply;
// $event_details['event_rate'] = $ncp->distance->rate;
// }
// Stripe setup
// $stripePayment = new StripePayment();
// // Total amount calculation
// if(UserAuth::isPremium() == true && $event->event_id == EVENT_ID) {
// $event_details['discount_percent'] = 5;
// $event_details['subtotal_amount'] = ($event_details['event_rate'] - 5) * $event_details['seats_reserved'];
// $event_details['service_charge'] = 0;
// $event_details['total_amount'] = $event_details['subtotal_amount'] + $event_details['service_charge'];
// } else {
// $discount = 0;
// if(UserAuth::isPremium() == true) {
// $discount = $event_details['discount_apply'];
// }
// $event_details['discount_percent'] = $discount;
// $event_details['subtotal_amount'] = ($event_details['event_rate'] - $discount) * $event_details['seats_reserved'];
// $event_details['service_charge'] = 0;
// $event_details['total_amount'] = $event_details['subtotal_amount'] + $event_details['service_charge'];
// }
// // Create stripe paymentIntent
// $paymentIntent = $stripePayment->createPaymentIntent([
// 'amount' => $event_details['total_amount'] * 100,
// 'currency' => 'EUR',
// 'payment_method_types' => ['card'],
// // Store important info in metadata
// 'metadata' => [
// 'event_id' => $event->event_id,
// 'event_rate' => $event_details['event_rate'],
// 'seats_reserved' => $event_details['seats_reserved'],
// 'service_charge' => $event_details['service_charge'],
// 'discount_percent' => $event_details['discount_percent'],
// 'total_amount' => $event_details['total_amount'],
// 'user_id' => $this->session->userdata('logged_in')['user_id'],
// 'login_id' => $this->session->userdata('logged_in')['login_id'],
// 'booking' => json_encode($event->booking),
// 'formData' => json_encode($this->input->post())
// ],
// ]);
// output_to_json($this, json_encode($paymentIntent));
// }
// }
}