chargeAPI($api_url, $server_key, $request_body); // set the response http status code http_response_code($charge_result['http_code']); // then print out the response body echo $charge_result['body']; } /** * call charge API using Curl * @param string $api_url * @param string $server_key * @param string $request_body */ private function chargeAPI($api_url, $server_key, $request_body) { $ch = curl_init(); $curl_options = array( CURLOPT_URL => $api_url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_POST => 1, CURLOPT_HEADER => 0, // Add header to the request, including Authorization generated from server key CURLOPT_HTTPHEADER => array( 'Content-Type: application/json', 'Accept: application/json', 'Authorization: Basic ' . base64_encode($server_key . ':') ), CURLOPT_POSTFIELDS => $request_body ); curl_setopt_array($ch, $curl_options); $result = array( 'body' => curl_exec($ch), 'http_code' => curl_getinfo($ch, CURLINFO_HTTP_CODE), ); return $result; } public function callback() { $data = json_decode($this->security->xss_clean($this->input->raw_input_stream)); $res = new stdClass(); if ($data->transaction_status == "settlement" || $data->transaction_status == "capture" && ($data->fraud_status == "accept" && $data->status_code == "200")) { $this->Model_api->updatePayment($data->order_id); $res->status = "success"; } else { $res->status = "failed"; } echo json_encode($res); } }