load->model('payments_model'); $this->load->model('Api_model'); } /** * @api {get} api/payments/:id List all Payments * @apiVersion 0.3.0 * @apiName GetPayment * @apiGroup Payments * * @apiHeader {String} authtoken Authentication token, generated from admin area * * @apiParam {Number} payment_id Optional payment unique ID
Note : if you don't pass Payment id then it will list all payments records * * @apiSuccess {Array} Payments List all Payment Records. * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * [ * { * "id": "3", * "invoiceid": "7", * "amount": "1000.00", * "paymentmode": "3", * "paymentmethod": "", * "date": "2020-06-08", * "daterecorded": "2020-06-08 20:29:54", * "note": "", * "transactionid": "000355795931", * "invoiceid": "UPI", * "description": "", * "show_on_pdf": "0", * "invoices_only": "0", * "expenses_only": "0", * "selected_by_default": "0", * "active": "1", * "paymentid": "1" * }, * { * "id": "4", * "invoiceid": "12", * "amount": "-3.00", * "paymentmode": "4", * "paymentmethod": "", * "date": "2020-07-04", * "daterecorded": "2020-07-04 15:32:59", * "note": "", * "transactionid": "P228210122733439", * "invoiceid": "Stripe", * "description": "", * "show_on_pdf": "0", * "invoices_only": "0", * "expenses_only": "0", * "selected_by_default": "0", * "active": "1", * "paymentid": "2" * }, * { * "id": "1", * "invoiceid": "14", * "amount": "8.00", * "paymentmode": "1", * "paymentmethod": "", * "date": "2020-07-04", * "daterecorded": "2020-07-04 15:47:30", * "note": "", * "transactionid": "000360166374", * "invoiceid": "Bank", * "description": null, * "show_on_pdf": "0", * "invoices_only": "0", * "expenses_only": "0", * "selected_by_default": "1", * "active": "1", * "paymentid": "3" * }, * { * "id": "2", * "invoiceid": "13", * "amount": "3.00", * "paymentmode": "2", * "paymentmethod": "Credit card", * "date": "2020-07-04", * "daterecorded": "2020-07-04 15:49:56", * "note": "", * "transactionid": "0124875873", * "invoiceid": "paypal", * "description": "", * "show_on_pdf": "0", * "invoices_only": "0", * "expenses_only": "0", * "selected_by_default": "0", * "active": "1", * "paymentid": "4" * } * ] * @apiError {Boolean} paymentmode Request paymentmode. * @apiError {String} message No data were found. * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "paymentmode": false, * "message": "No data were found" * } */ public function data_get($id = '') { // If the id parameter doesn't exist return all the $data = $this->Api_model->payment_get($id); // Check if the data store contains if ($data) { // Set the response and exit $this->response($data, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code } else { // Set the response and exit $this->response(['paymentmode' => FALSE, 'message' => 'No data were found'], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code } } /** * @api {get} api/payments/search/:keysearch Search Payments Information * @apiVersion 0.3.0 * @apiName GetPaymentSearch * @apiGroup Payments * * @apiHeader {String} authtoken Authentication token, generated from admin area * * @apiParam {String} keysearch Search Keywords * * @apiSuccess {Array} Payments Payments information * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * [ * { * "id": "3", * "invoiceid": "14", * "amount": "8.00", * "paymentmode": "2", * "paymentmethod": "", * "date": "2020-07-04", * "daterecorded": "2020-07-04 15:47:30", * "note": "", * "transactionid": "", * ... * } * ] * * @apiError {Boolean} paymentmode Request paymentmode * @apiError {String} message No data were found * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "paymentmode": false, * "message": "No data were found" * } */ public function data_search_get($key = '') { // If the key parameter doesn't exist return all the $data = $this->Api_model->search('payments', $key); // Check if the data store contains if ($data) { // Set the response and exit $this->response($data, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code } else { // Set the response and exit $this->response(['paymentmode' => FALSE, 'message' => 'No data were found'], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code } } /** * @api {post} api/payments Add New Payment * @apiName PostPayment * @apiGroup Payments * * @apiHeader {String} authtoken Authentication token, generated from admin area * * @apiParam {String} invoiceid Mandatory Invoice ID associated with the payment. * @apiParam {String} amount Mandatory Payment amount. * @apiParam {String} paymentmode Mandatory Payment mode (e.g., cash, credit card, etc.). * @apiParam {String} [paymentmethod] Optional Payment method details. * @apiParam {String} [note] Optional Additional payment note. * @apiParam {String} [transactionid] Optional Transaction ID. * @apiParam {String} [custom_fields] Optional Custom fields data. * * @apiParamExample {Multipart Form} Request-Example: * array (size=6) * 'invoiceid' => string '123' (length=3) * 'amount' => string '250.00' (length=6) * 'paymentmode' => string '1' (length=1) * 'paymentmethod' => string 'Visa' (length=4) * 'note' => string 'Payment for Invoice #123' (length=25) * 'transactionid' => string 'TXN123456789' (length=12) * 'custom_fields' => string '{"field1": "value1", "field2": "value2"}' (JSON format) * * @apiSuccess {Boolean} paymentmode Status of the request. * @apiSuccess {String} message Payment add successful. * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * { * "paymentmode": true, * "message": "Payment add successful." * } * * @apiError {Boolean} paymentmode Status of the request. * @apiError {String} message Payment add fail. * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "paymentmode": false, * "message": "Payment add fail." * } */ public function data_post() { \modules\api\core\Apiinit::the_da_vinci_code('api'); // form validation $this->form_validation->set_rules('invoiceid', 'Payment Name', 'trim|required|max_length[600]', array('is_unique' => 'This %s already exists please enter another Payment Name')); $this->form_validation->set_rules('amount', 'Source', 'trim|required', array('is_unique' => 'This %s already exists please enter another Payment amount')); $this->form_validation->set_rules('paymentmode', 'Status', 'trim|required', array('is_unique' => 'This %s already exists please enter another Status')); if ($this->form_validation->run() == FALSE) { // form validation error $message = array('paymentmode' => FALSE, 'error' => $this->form_validation->error_array(), 'message' => validation_errors()); $this->response($message, REST_Controller::HTTP_NOT_FOUND); } else { $insert_data = [ 'invoiceid' => $this->input->post('invoiceid', TRUE), 'amount' => $this->input->post('amount', TRUE), 'paymentmode' => $this->input->post('paymentmode', TRUE), 'paymentmethod' => $this->input->post('paymentmethod', TRUE), 'date' => date('Y-m-d H:i:s'), // Current date and time 'daterecorded' => date('Y-m-d H:i:s'), // Current date and time for recording 'note' => $this->input->post('note', TRUE), // Optional note 'transactionid' => $this->input->post('transactionid', TRUE) ]; if (!empty($this->input->post('custom_fields', TRUE))) { $insert_data['custom_fields'] = $this->Api_model->value($this->input->post('custom_fields', TRUE)); } // insert data $this->load->model('payments_model'); $output = $this->payments_model->add($insert_data); // το $output πρέπει να είναι το ID του νέου payment if ($output > 0 && !empty($output)) { // success $this->handle_payment_attachments_array($output); $message = array( 'status' => TRUE, 'message' => 'Payment add successful.', 'record_id' => $output // επιστρέφουμε το ID του νέου payment ); $this->response($message, REST_Controller::HTTP_OK); } else { // error $message = array('paymentmode' => FALSE, 'message' => 'Payment add fail.'); $this->response($message, REST_Controller::HTTP_NOT_FOUND); } } } }