db->trans_begin(); $prm = $this->sys_input; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => "https://api.krmpesan.app/tokens?refresh_token=$this->REFRESH_TOKEN&device_key=$this->DEVICE_kEY", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'GET', )); $response = curl_exec($curl); curl_close($curl); if ($response === false) { return false; } $resp = json_decode($response, true); $idtoken = $resp['IdToken']; // hapus data sebelumnya $sqldelete = "DELETE FROM one_rujukan_eksternal.t_token"; $qrydelete = $this->db->query($sqldelete); if (!$qrydelete) { $this->db->trans_rollback(); $this->sys_error_db("delete t_token error", $this->db); exit; } // insert data ke dalam database $sql = "INSERT INTO one_rujukan_eksternal.t_token( T_TokenDate, T_TokenToken, T_TokenCreated, T_TokenLastUpdated) VALUES(NOW(),?,NOW(),NOW())"; $qry = $this->db->query($sql, array($idtoken)); if (!$qry) { $this->db->trans_rollback(); $this->sys_error_db("insert t_token error", $this->db); exit; } $this->db->trans_commit(); echo $idtoken; } function get_refreshtoken() { $sql = "SELECT HS_TokenID, HS_TokenDate, HS_TokenToken FROM one_hs.hs_token"; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); } else { $this->sys_error_db("t_token select", $this->db); exit; } foreach ($rows as $k => $v) { $tokenhs = $v["HS_TokenToken"]; } echo $tokenhs; } function get_token() { $urltoken = 'http://devone.aplikasi.web.id/one-api/mockup/rujukan-eksternal/send_wa/get_refreshtoken'; $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $urltoken); $result = curl_exec($ch); curl_close($ch); return $result; } function post($url, $data, $token) { $prm = $this->sys_input; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, 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 => $data, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Accept: application/json', 'Authorization: Bearer ' . $token, ] )); $response = curl_exec($curl); if (curl_error($curl) != "") { echo json_encode([ "status" => "ERR", "message" => "Http Error : " . curl_error($curl), ]); curl_close($curl); exit(); } curl_close($curl); return $response; } function send_process($template_name = "rujukan1",$sdate) { $sql = "SELECT T_WhatsAppID, T_WhatsAppName, T_WhatsAppPetugas, T_WhatsAppNoHP, T_WhatsAppIsSent, T_WhatsAppType, '' as T_OrderDate, '' as T_OrderTime, M_StaffName, M_BranchID, M_BranchName, M_BranchPhone FROM one_rujukan_eksternal.t_whatsapp JOIN one_rujukan_eksternal.t_orderdelivery ON T_OrderDeliveryID = T_WhatsAppT_OrderDeliveryID JOIN one_rujukan_eksternal.t_deliverycourier ON T_DeliveryCourierID = T_WhatsAppT_DeliveryCourierID left join m_staff ON M_StaffID = T_DeliveryCourierM_StaffID JOIN m_branch ON M_BranchIsActive = 'Y' AND M_BranchIsDefault = 'Y' WHERE T_WhatsAppIsActive = 'Y' AND T_WhatsAppType = 'PROCESS' AND (T_WhatsAppIsSent = 'N' OR T_WhatsAppIsSent = 'R') AND (date(T_WhatsAppLastUpdated) = '{$sdate}' OR date(T_WhatsAppLastUpdated + interval 1 day ) = '{$sdate}') ORDER BY T_WhatsAppID"; $qry = $this->db->query($sql); if ($qry) { $rows = $qry->result_array(); } else { $this->sys_error_db("select whatsapp error", $this->db); exit; } $token = $this->get_token(); // print_r($rows); $url = "https://api.krmpesan.app/messages"; foreach ($rows as $key => $value) { // print_r($value); $waId = $value["T_WhatsAppID"]; $phone = $value["T_WhatsAppNoHP"]; $phonebranch = $value["M_BranchPhone"]; $name = $value["T_WhatsAppPetugas"]; $data = json_encode([ "phone" => $phone, "template_name" => $template_name, "template_language" => "id", "template" => [ "body" => [ $phonebranch ] ] ]); // echo $data; $resp = $this->post($url, $data, $token); $j_response = json_decode($resp, true); // print_r($j_response); if ($j_response["code"] == 200) { $queueid = $j_response["data"]["id"]; $sql_update = "UPDATE one_rujukan_eksternal.t_whatsapp SET T_WhatsAppMessage = ?, T_WhatsAppIsSent = 'Y', T_WhatsAppSentDate = NOW(), queue_id = ? WHERE T_WhatsAppID = ?"; $qry_update = $this->db->query($sql_update, array( $staff, $queueid, $waId )); if (!$qry_update) { $this->sys_error_db("update whatsapp error", $this->db); exit; } $result = [ "status" => "OK" ]; } else { $sql_update = "UPDATE one_rujukan_eksternal.t_whatsapp SET T_WhatsAppIsSent = if(T_WhatsAppRetry >= 3, 'E', 'N'), T_WhatsAppRetry = T_WhatsAppRetry + 1 WHERE T_WhatsAppID = ?"; $qry_update = $this->db->query($sql_update, array( $waId )); if (!$qry_update) { $this->sys_error_db("update whatsapp error", $this->db); exit; } $result = [ "status" => "ERR", "message" => $resp ]; } } return $result; } function send() { $prm = $this->sys_input; $sdate = $prm['sdate']; $template_process = $prm['template_process']; if ($sdate == "") { $sdate = date("Y-m-d"); } // send process $resultprocess = $this->send_process($template_process,$sdate); if ($resultprocess === false) { echo json_encode(array( 'status' => 'ERR', 'message' => 'Send Message Error' )); exit; } echo json_encode(array( 'status' => 'OK', 'wa_message_process' => $resultprocess )); } }