Initial import
This commit is contained in:
400
application/controllers/hs/Send_whatsappv2.php
Normal file
400
application/controllers/hs/Send_whatsappv2.php
Normal file
@@ -0,0 +1,400 @@
|
||||
<?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
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user