AMS_Backend/app/Controllers/Frontend/PaymentController.php
2025-11-06 13:41:06 +08:00

98 lines
3.2 KiB
PHP

<?php
namespace App\Controllers\Frontend;
use App\Controllers\BaseController;
use CodeIgniter\HTTP\ResponseInterface;
use CodeIgniter\API\ResponseTrait;
use App\Models\Orders;
class PaymentController extends BaseController
{
use ResponseTrait;
private $fiuu;
private $order;
public function __construct()
{
$this->fiuu = new \App\Libraries\Fiuu();
$this->order = new Orders();
}
// public function createPayment()
// {
// $data = $this->request->getJSON(true); // true = associative array
// $amount = $data['amount'] ?? '0.00';
// $orderId = $data['order_id'] ?? 'UNKNOWN';
// // log_message('debug', " order_id: $orderId, amount: $amount");
// $result = $this->fiuu->createPayment($orderId, $amount);
// return $this->response->setJSON($result);
// }
public function createPayment()
{
$data = $this->request->getJSON(true);
$orderId = $data['order_id'] ?? 'UNKNOWN';
$amount = $data['amount'] ?? '0.00';
$customer = [
'name' => $data['bill_name'] ?? 'John Doe',
'email' => $data['bill_email'] ?? 'johndoe@example.com',
'mobile' => $data['bill_mobile'] ?? '601133094116',
'desc' => $data['bill_desc'] ?? 'Test payment',
'address' => $data['bill_address'] ?? '123 Jalan Teknologi',
'postcode' => $data['bill_postcode'] ?? '47000',
'city' => $data['bill_city'] ?? 'Petaling Jaya',
'state' => $data['bill_state'] ?? 'Selangor',
'country' => $data['bill_country'] ?? 'MY'
];
// Call the updated Fiuu library method
$result = $this->fiuu->createPayment($orderId, $amount, $customer);
return $this->response->setJSON($result);
}
public function fiuuPaymentReturn()
{
$data = $this->request->getPost();
$this->fiuu->paymentNotification($data);
}
public function fiuuPaymentNotification()
{
$data = $this->request->getPost();
$this->fiuu->paymentNotification($data);
}
public function payAgain($order_id){
$order = $this->order->select('orders.*, customers.name, customers.email, customers.phone')
->join('customers', 'customers.id = orders.customer_id')
->where('orders.id', $order_id)
->where('orders.payment_status', 'unpaid')
->first();
if(!$order){
return $this->fail('Order not found', 400);
}
$payment_details = [
'bill_name' => $order['name'],
'bill_email' => $order['email'],
'bill_mobile' => $order['phone'],
'bill_desc' => 'US Pizza - Payment for ' . ucfirst($order['order_type']) . ' - ' . $order['order_so'],
];
$respond_data = [];
$result = $this->fiuu->createPayment($order['order_so'], $order['grand_total'], $payment_details);
$respond_data['redirect_url'] = $result['redirect_url'];
$respond_data['status'] = 200;
$respond_data['message'] = 'Payment link generated successfully';
return $this->respond($respond_data);
}
}