401 lines
15 KiB
PHP
401 lines
15 KiB
PHP
<?php
|
|
class Send_whatsappv2 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_hs.hs_token";
|
|
$qrydelete = $this->db->query($sqldelete);
|
|
if (!$qrydelete) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("delete hs_token error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
// insert data ke dalam database
|
|
$sql = "INSERT INTO one_hs.hs_token(
|
|
HS_TokenDate,
|
|
HS_TokenToken,
|
|
HS_TokenCreated,
|
|
HS_TokenLastUpdated) VALUES(NOW(),?,NOW(),NOW())";
|
|
|
|
$qry = $this->db->query($sql, array($idtoken));
|
|
if (!$qry) {
|
|
$this->db->trans_rollback();
|
|
$this->sys_error_db("insert hs_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("hs_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/hs/send_whatsappv2/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_new($template_name = "geths")
|
|
{
|
|
$sql = "SELECT HS_WhatsAppID,
|
|
HS_WhatsAppName,
|
|
HS_WhatsAppNoHP,
|
|
HS_WhatsAppIsSent,
|
|
HS_WhatsAppType,
|
|
DATE_FORMAT(T_OrderDate, '%d-%m-%Y') as orderDate,
|
|
T_OrderTime
|
|
FROM one_hs.hs_whatsapp
|
|
JOIN one_hs.t_order ON T_OrderT_TransactionID = HS_WhatsAppT_TransactionID
|
|
AND T_OrderIsActive = 'Y'
|
|
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'NEW'
|
|
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
|
|
ORDER BY HS_WhatsAppID";
|
|
|
|
$token = $this->get_token();
|
|
|
|
$qry = $this->db->query($sql);
|
|
if ($qry) {
|
|
$rows = $qry->result_array();
|
|
} else {
|
|
$this->sys_error_db("select whatsapp error", $this->db);
|
|
exit;
|
|
}
|
|
|
|
$url = "https://api.krmpesan.app/messages";
|
|
// print_r($rows);
|
|
foreach ($rows as $key => $value) {
|
|
// print_r($value);
|
|
$waId = $value["HS_WhatsAppID"];
|
|
$phone = $value["HS_WhatsAppNoHP"];
|
|
$name = $value["HS_WhatsAppName"];
|
|
$orderdate = $value["orderDate"];
|
|
$ordertime = $value["T_OrderTime"];
|
|
$data = json_encode([
|
|
"phone" => $phone,
|
|
"template_name" => $template_name,
|
|
"template_language" => "id",
|
|
"template" => [
|
|
"body" => [
|
|
$name,
|
|
$orderdate . ' ' . 'jam' . ' ' . $ordertime
|
|
]
|
|
]
|
|
]);
|
|
|
|
$messages = $orderdate . ' ' . $ordertime;
|
|
|
|
// echo $data;
|
|
$resp = $this->post($url, $data, $token);
|
|
$j_response = json_decode($resp, true);
|
|
|
|
if ($j_response["code"] == 200) {
|
|
$queueid = $j_response["data"]["id"];
|
|
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
|
HS_WhatsAppMessage = ?,
|
|
HS_WhatsAppIsSent = 'Y',
|
|
HS_WhatsAppSentDate = NOW(),
|
|
queue_id = ?
|
|
WHERE HS_WhatsAppID = ?";
|
|
$qry_update = $this->db->query($sql_update, array(
|
|
$messages,
|
|
$queueid,
|
|
$waId
|
|
));
|
|
if (!$qry_update) {
|
|
$this->sys_error_db("update whatsapp error", $this->db);
|
|
exit;
|
|
}
|
|
$result = [
|
|
"status" => "OK"
|
|
];
|
|
} else {
|
|
$sql_update = "UPDATE one_hs.hs_whatsapp SET
|
|
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
|
|
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
|
|
WHERE HS_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_process($template_name = "homeservice2")
|
|
{
|
|
$sql = "SELECT HS_WhatsAppID,
|
|
HS_WhatsAppName,
|
|
HS_WhatsAppNoHP,
|
|
HS_WhatsAppIsSent,
|
|
HS_WhatsAppType,
|
|
T_OrderDate,
|
|
T_OrderTime,
|
|
M_StaffName
|
|
FROM one_hs.hs_whatsapp
|
|
JOIN one_hs.t_order ON HS_WhatsAppT_TransactionID = T_OrderT_TransactionID
|
|
AND T_OrderIsActive = 'Y'
|
|
JOIN one_hs.hs_deliveryorderdetail ON HS_WhatsAppT_TransactionID = HS_DeliveryOrderDetailT_TransactionID
|
|
AND HS_DeliveryOrderDetailIsActive = 'Y'
|
|
JOIN one_hs.hs_deliveryorder ON HS_DeliveryOrderDetailHS_DeliveryOrderID = HS_DeliveryOrderID
|
|
AND HS_DeliveryOrderIsActive = 'Y'
|
|
JOIN one.m_user ON HS_DeliveryOrderM_UserID = M_UserID
|
|
AND M_UserIsActive = 'Y'
|
|
JOIN one.m_staff ON M_UserM_StaffID = M_StaffID
|
|
AND M_StaffIsActive = 'Y'
|
|
WHERE HS_WhatsAppIsActive = 'Y' AND HS_WhatsAppType = 'PROCESS'
|
|
AND (HS_WhatsAppIsSent = 'N' OR HS_WhatsAppIsSent = 'R')
|
|
ORDER BY HS_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["HS_WhatsAppID"];
|
|
$phone = $value["HS_WhatsAppNoHP"];
|
|
$name = $value["HS_WhatsAppName"];
|
|
$staff = $value["M_StaffName"];
|
|
$data = json_encode([
|
|
"phone" => $phone,
|
|
"template_name" => $template_name,
|
|
"template_language" => "id",
|
|
"template" => [
|
|
"body" => [
|
|
$name,
|
|
$staff
|
|
]
|
|
]
|
|
]);
|
|
|
|
// 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_hs.hs_whatsapp SET
|
|
HS_WhatsAppMessage = ?,
|
|
HS_WhatsAppIsSent = 'Y',
|
|
HS_WhatsAppSentDate = NOW(),
|
|
queue_id = ?
|
|
WHERE HS_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_hs.hs_whatsapp SET
|
|
HS_WhatsAppIsSent = if(HS_WhatsAppRetry >= 3, 'E', 'N'),
|
|
HS_WhatsAppRetry = HS_WhatsAppRetry + 1
|
|
WHERE HS_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()
|
|
{
|
|
// send new
|
|
$resultnew = $this->send_new();
|
|
if ($resultnew === false) {
|
|
echo json_encode(array(
|
|
'status' => 'ERR',
|
|
'message' => 'Send Message Error'
|
|
));
|
|
exit;
|
|
}
|
|
|
|
// send process
|
|
$resultprocess = $this->send_process();
|
|
if ($resultprocess === false) {
|
|
echo json_encode(array(
|
|
'status' => 'ERR',
|
|
'message' => 'Send Message Error'
|
|
));
|
|
exit;
|
|
}
|
|
|
|
echo json_encode(array(
|
|
'status' => 'OK',
|
|
'wa_message_new' => $resultnew,
|
|
'wa_message_process' => $resultprocess
|
|
));
|
|
}
|
|
|
|
function sendv2()
|
|
{
|
|
$prm = $this->sys_input;
|
|
$template_new = $prm['template_new'];
|
|
$template_process = $prm['template_process'];
|
|
|
|
// send new
|
|
$resultnew = $this->send_new($template_new);
|
|
if ($resultnew === false) {
|
|
echo json_encode(array(
|
|
'status' => 'ERR',
|
|
'message' => 'Send Message Error'
|
|
));
|
|
exit;
|
|
}
|
|
|
|
// send process
|
|
$resultprocess = $this->send_process($template_process);
|
|
if ($resultprocess === false) {
|
|
echo json_encode(array(
|
|
'status' => 'ERR',
|
|
'message' => 'Send Message Error'
|
|
));
|
|
exit;
|
|
}
|
|
|
|
echo json_encode(array(
|
|
'status' => 'OK',
|
|
'wa_message_new' => $resultnew,
|
|
'wa_message_process' => $resultprocess
|
|
));
|
|
}
|
|
}
|