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
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));
|
|
// }
|
|
// }
|
|
}
|
|
|
|
|