Files
BE_IBL/application/controllers/mockup/rujukan-eksternal/Send_wa.php
2026-04-15 15:24:12 +07:00

269 lines
9.2 KiB
PHP

<?php
class Send_wa extends MY_Controller
{
var $db;
var $REFRESH_TOKEN = 'eyJjdHkiOiJKV1QiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAifQ.tkPaJP6aq5gFQ-PzoxqMxB1gke7HGFf86mDEF7UkKQvcjLW8f0FaxG-yU2Unm37BeRtKyeqF-31qfuFOqIhOOf_qqPxp6akEIgtX5i_QEd_ixCWn3ZEA8Aa5_KsRdVQP6b3wYxdp82khY2w1y8qi-Y1omDv2tsq2eLuyj_lgz9__bsbvLyRxvlUj-0-TW2ScWan3T6vFL-J6_aqZyKmiv3nOhf1nfueFVDRlw6H6O3J3x_VCxVzoF66ey9P0PBlqiHCC3boWE6df1akJKPy0RzomW-T9U_NhP7TtbC6i5dikrrUMf7wgFX1h4ksdgQFvZT__VDw5XPNxhzpi7xmfcw.kN6y_8O03otAK3Ad.2VKKY-zRg1vAgIPXWenNvloKOprYBjfFvl41r3NnnER8R8LFF1AfXAgfEJlGoYRaHEakC2t9jHwmW3hG-_x1pTTtho7mjYWDl3x-Cqn5sGjHBeiFYHDP-PD8nv8kdU3cZ8HJqEhUloOPxQLa-5ajaoPYetM483QVLkoYZXpTDh9uSk2cR5MpdEpQsGK2JSH8w7c7ZgHCotBu0cjOFMYBfnZ9ebKHtL0pvqs9WdDlEZbukdHv-9XWLVtFSmKyaEWfMks9sBS20hOcRvpwyB4MrRsRyjMfO8QZFOgpeU1dH-vtDumMASUDlZb6Lb6IKmpvYmu9FdfCeiHXML3D_MVrq_HIC5mO6qb3s5O1yfKQ0jWEzSFdlJIzYyqzwVkgEwC6X_FxtxxqY7wlRxUhIxkS5Qy29CNNueGGWIYqd5E4CmXJylIIzAa6Ak2fBXXScG3tW9DyaopOAQpY8QOTaEXfJeSfbX-f5hvGqP6Av5KD3Gncy1sgO2Fy91gj_1ObGp3iTimsMpMgvvh7PVEENMzRXT3rkkFyOfleI0gcKKXwaJGbTJKYoD9mMeVoBEXsGi4xlKkLEqJFXRAo2EWwApACEzk5EnriPN4HHarj92QChMP80eLOt7X_wzN3D9uB_6aVgZ593JGE2LnRSWSfO8VtyAGQXn3yF7kcX00Ax4iDhxw9OzzFICBqL8lZf5tWngVqdH4SJWbLht-FjEt3VVV3CVNPUCbD8xsOvucjlD0aVeThaNsyMYOBZ2Dsz1nE3nBXEa9v-cTdGGNhuvpja1lXC9uDtv9npfdtGiiPOVON-em1AGMSLfG_JcVPIfIniyJEuyFTK-fUu0axX28oeiGSNZksJzvaXWAPtP3rgGBI_FiSa_2ZL3D0fBKY3YexmxwoRgmzWdH4N79x8DRlYvrC-QYnWHfs_kBBkpvRr6b5OnIyJVNhK3Ah6PuMuxSOP5r0Z9Ja-rTxS2sf2oe1W92rdM4eqEPLqtS-FwAubHulkgu6oQSmhLcIBKio4dPgas24raSRK8D8hm-yByLT_oKWL2QI0RcxAlBwDlzj3WjEOOhtkLHOm_D_pQXYId9JVbhsHNspUEbnYWc9dxVp9diVxgNaAMvOQhUw3cSs64rVUv2Xj46zAzM3JOEzAV_qmte91SFsP0lWpsUW_wstY0nLIzVkiZcSiu95n1bOvyjadAbH-8Kw1etPs2LrnRP5k1btRxRnZ9C5tQqwgDoirXnbw8ouAb5OxOxfwLS1tKaFEYqgxkkoeV625cPeuFN6yGbxSlYPG6CxAyx-HSOPCThyinYDrQh2kJhmTZijCtfs0mAPXtI31QTNWQ43-PXWE-fX_kau-uGODhxLE5wChv9RoSYoLbx5-iY1nm0JdoHuWLtcLvgLZOdNPrTnFoa9YvinVIPOgk7w9LI7po5IepthvRoGpf9AqywChRPYgWoSPHLdAq_j_q7Aip4rURXpoVXFHaMW4N7t.carI0aLu4lVYKxzFGJfD4g';
var $DEVICE_kEY = 'ap-southeast-1_6d1abc9e-1d27-4bb0-ba1e-d34d9d3d537e';
function __construct()
{
parent::__construct();
}
function index()
{
echo "API SEND WHATSAPP";
}
function refreshtoken()
{
$this->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 = "rujukan01", $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
));
}
}