array( 'partnerCode' => '110', ), 'VTB' => array( 'partnerCode' => '102', ), 'MB' => array( 'partnerCode' => '301', ), 'ACB' => array( 'partnerCode' => '115', ), 'VCB' => array( 'partnerCode' => '12345', ), 'VPB' => array( 'partnerCode' => '103', ), 'VIB' => array( 'partnerCode' => '113', ), 'EXB' => array( 'partnerCode' => '107', ), 'OCB' => array( 'partnerCode' => '104', ), 'SCB' => array( 'partnerCode' => '111', ), ); private $ohash; private $TimeSetUp = 600; // seconds private $amount = 100000; private $hours = 200; private $keys; private $send = array(); private $rsa; private $URLAction = array( "CHECK_USER_BE_MSG" => "https://api.momo.vn/backend/auth-app/public/CHECK_USER_BE_MSG", //Check người dùng "SEND_OTP_MSG" => "https://api.momo.vn/backend/otp-app/public/SEND_OTP_MSG", //Gửi OTP "REG_DEVICE_MSG" => "https://api.momo.vn/backend/otp-app/public/REG_DEVICE_MSG", // Xác minh OTP "QUERY_TRAN_HIS_MSG" => "https://owa.momo.vn/api/QUERY_TRAN_HIS_MSG", // Check ls giao dịch "USER_LOGIN_MSG" => "https://owa.momo.vn/public/login", // Đăng Nhập "QUERY_TRAN_HIS_MSG_NEW" => "https://m.mservice.io/hydra/v2/user/noti", // check ls giao dịch "M2MU_INIT" => "https://owa.momo.vn/api/M2MU_INIT", // Chuyển tiền "M2MU_CONFIRM" => "https://owa.momo.vn/api/M2MU_CONFIRM", // Chuyển tiền "LOAN_MSG" => "https://owa.momo.vn/api/LOAN_MSG", // yêu cầu chuyển tiền 'M2M_VALIDATE_MSG' => 'https://owa.momo.vn/api/M2M_VALIDATE_MSG', // Ko rõ chức năng 'CHECK_USER_PRIVATE' => 'https://owa.momo.vn/api/CHECK_USER_PRIVATE', // Check người dùng ẩn 'TRAN_HIS_INIT_MSG' => 'https://owa.momo.vn/api/TRAN_HIS_INIT_MSG', // Rút tiền, chuyển tiền 'TRAN_HIS_CONFIRM_MSG' => 'https://owa.momo.vn/api/TRAN_HIS_CONFIRM_MSG', // rút tiền chuyển tiền 'GET_CORE_PREPAID_CARD' => 'https://owa.momo.vn/api/sync/GET_CORE_PREPAID_CARD', 'ins_qoala_phone' => 'https://owa.momo.vn/proxy/ins_qoala_phone', 'GET_DETAIL_LOAN' => 'https://owa.momo.vn/api/GET_DETAIL_LOAN', // Get danh sách yêu cầu chuyển 'LOAN_UPDATE_STATUS' => 'https://owa.momo.vn/api/LOAN_UPDATE_STATUS', // Từ chỗi chuyển tiền 'CANCEL_LOAN_REQUEST' => 'https://owa.momo.vn/api/CANCEL_LOAN_REQUEST', // Huỷe chuyển tiền 'LOAN_SUGGEST' => 'https://owa.momo.vn/api/LOAN_SUGGEST', 'STANDARD_LOAN_REQUEST' => 'https://owa.momo.vn/api/STANDARD_LOAN_REQUEST', 'SAY_THANKS' => 'https://owa.momo.vn/api/SAY_THANKS', // Gửi lời nhắn khi nhận tiền 'HEARTED_TRANSACTIONS' => 'https://owa.momo.vn/api/HEARTED_TRANSACTIONS', 'VERIFY_MAP' => 'https://owa.momo.vn/api/VERIFY_MAP', // Liên kết ngân hàng 'service' => "https://owa.momo.vn/service", // Check ngân hàng qua stk 'NEXT_PAGE_MSG' => 'https://owa.momo.vn/api/NEXT_PAGE_MSG', // mua thẻ điện thoại 'dev_backend_gift-recommend' => 'https://owa.momo.vn/proxy/dev_backend_gift-recommend', // check gift 'ekyc_init' => 'https://owa.momo.vn/proxy/ekyc_init', // Xác minh cmnd 'ekyc_ocr' => 'https://owa.momo.vn/proxy/ekyc_ocr', // xác minh cmnd 'GetDataStoreMsg' => 'https://owa.momo.vn/api/GetDataStoreMsg', // Get danh sách ngân hàng đã chuyển 'VOUCHER_GET' => 'https://owa.momo.vn/api/sync/VOUVHER_GET', // get voucher 'END_USER_QUICK_REGISTER' => 'https://api.momo.vn/backend/auth-app/public/END_USER_QUICK_REGISTER', // đăng kí 'AGENT_MODIFY' => 'https://api.momo.vn/backend/auth-app/api/AGENT_MODIFY', // Cập nhật tên email 'ekyc_ocr_result' => 'https://owa.momo.vn/proxy/ekyc_ocr_result', // xác minh cmnd 'CHECK_INFO' => 'https://owa.momo.vn/api/CHECK_INFO', // Check hóa đơn 'BANK_OTP' => 'https://owa.momo.vn/api/BANK_OTP', // Rút tiền 'SERVICE_UNAVAILABLE' => 'https://owa.momo.vn/api/SERVICE_UNAVAILABLE', // Bên bảo mật 'ekyc_ocr_confirm' => 'https://owa.momo.vn/proxy/ekyc_ocr_confirm', //Xác minh cmnd 'sync' => 'https://owa.momo.vn/api/sync', // Lấy biến động số dư 'MANAGE_CREDIT_CARD' => 'https://owa.momo.vn/api/MANAGE_CREDIT_CARD', //Thêm visa marter card 'UN_MAP' => 'https://owa.momo.vn/api/UN_MAP', // Hủy liên kết thẻ 'WALLET_MAPPING' => 'https://owa.momo.vn/api/WALLET_MAPPING', // Liên kết thẻ 'NAPAS_CASHIN_INIT_MSG' => 'https://owa.momo.vn/api/NAPAS_CASHIN_INIT_MSG', "CARD_GET" => "https://owa.momo.vn/api/sync/CARD_GET", 'NAPAS_CASHIN_DELETE_TOKEN_MSG' => 'https://owa.momo.vn/api/NAPAS_CASHIN_DELETE_TOKEN_MSG', 'API_DEFAULT_SOURCE' => 'https://owa.momo.vn/api/API_DEFAULT_SOURCE' ); private $momo_data_config = array( "appVer" => 31110, "appCode" => "3.1.11" ); public function SendOTP($data) { $result = $this->SEND_OTP_MSG($data); if ($result["errorCode"] != 0) { return array( "status" => "error", "code" => $result["errorCode"], "message" => $result["errorDesc"] ); } else { return array( "status" => "success", "message" => "Thành công" ); } return $result; } private function SEND_OTP_MSG($data) { $header = array( "agent_id: undefined", "sessionkey:", "user_phone: undefined", "authorization: Bearer undefined", "msgtype: SEND_OTP_MSG", "Host: api.momo.vn", "User-Agent: okhttp/3.14.17", "app_version: " . $this->momo_data_config["appVer"], "app_code: " . $this->momo_data_config["appCode"], "device_os: ANDROID" ); $microtime = $this->get_microtime(); $Data = array( 'user' => $data['phone'], 'msgType' => 'SEND_OTP_MSG', 'cmdId' => (string) $microtime . '000000', 'lang' => 'vi', 'time' => $microtime, 'channel' => 'APP', 'appVer' => $this->momo_data_config["appVer"], 'appCode' => $this->momo_data_config["appCode"], 'deviceOS' => 'ANDROID', 'buildNumber' => 0, 'appId' => 'vn.momo.platform', 'result' => true, 'errorCode' => 0, 'errorDesc' => '', 'momoMsg' => array( '_class' => 'mservice.backend.entity.msg.RegDeviceMsg', 'number' => $data['phone'], 'imei' => $data["imei"], 'cname' => 'Vietnam', 'ccode' => '084', 'device' => $data["device"], 'firmware' => '23', 'hardware' => $data["hardware"], 'manufacture' => $data["facture"], 'csp' => '', 'icc' => '', 'mcc' => '452', 'device_os' => 'Ios', 'secure_id' => $data['SECUREID'], ), 'extra' => array( 'action' => 'SEND', 'rkey' => $data["rkey"], 'AAID' => $data["AAID"], 'IDFA' => '', 'TOKEN' => $data["TOKEN"], 'SIMULATOR' => '', 'SECUREID' => $data['SECUREID'], 'MODELID' => $data["MODELID"], 'isVoice' => false, 'REQUIRE_HASH_STRING_OTP' => true, 'checkSum' => '', ), ); return $this->CURL("SEND_OTP_MSG", $header, $Data); } public function REG_DEVICE_MSG($data) { $microtime = $this->get_microtime(); $header = array( "agent_id: undefined", "sessionkey:", "user_phone: undefined", "authorization: Bearer undefined", "msgtype: REG_DEVICE_MSG", "Host: api.momo.vn", "User-Agent: okhttp/3.14.17", "app_version: " . $this->momo_data_config["appVer"], "app_code: " . $this->momo_data_config["appCode"], "device_os: ANDROID" ); $Data = '{ "user": "' . $data["phone"] . '", "msgType": "REG_DEVICE_MSG", "cmdId": "' . $microtime . '000000", "lang": "vi", "time": ' . $microtime . ', "channel": "APP", "appVer": ' . $this->momo_data_config["appVer"] . ', "appCode": "' . $this->momo_data_config["appCode"] . '", "deviceOS": "ANDROID", "buildNumber": 0, "appId": "vn.momo.platform", "result": true, "errorCode": 0, "errorDesc": "", "momoMsg": { "_class": "mservice.backend.entity.msg.RegDeviceMsg", "number": "' . $data["phone"] . '", "imei": "' . $data["imei"] . '", "cname": "Vietnam", "ccode": "084", "device": "' . $data["device"] . '", "firmware": "23", "hardware": "' . $data["hardware"] . '", "manufacture": "' . $data["facture"] . '", "csp": "", "icc": "", "mcc": "", "device_os": "Android", "secure_id": "' . $data["SECUREID"] . '" }, "extra": { "ohash": "' . $data['ohash'] . '", "AAID": "' . $data["AAID"] . '", "IDFA": "", "TOKEN": "' . $data["TOKEN"] . '", "SIMULATOR": "", "SECUREID": "' . $data["SECUREID"] . '", "MODELID": "' . $data["MODELID"] . '", "checkSum": "" } }'; return $this->CURL("REG_DEVICE_MSG", $header, $Data); } public function USER_LOGIN_MSG($data) { $microtime = $this->get_microtime(); $header = array( "agent_id: " . $data["agent_id"], "user_phone: " . $data["phone"], "sessionkey: " . (!empty($data["sessionkey"])) ? $data["sessionkey"] : "", "authorization: Bearer " . $data["authorization"], "msgtype: USER_LOGIN_MSG", "Host: owa.momo.vn", "user_id: " . $data["phone"], "User-Agent: okhttp/3.14.17", "app_version: " . $this->momo_data_config["appVer"], "app_code: " . $this->momo_data_config["appCode"], "device_os: ANDROID" ); $Data = array( 'user' => $data['phone'], 'msgType' => 'USER_LOGIN_MSG', 'pass' => $data['password'], 'cmdId' => (string) $microtime . '000000', 'lang' => 'vi', 'time' => $microtime, 'channel' => 'APP', 'appVer' => $this->momo_data_config["appVer"], 'appCode' => $this->momo_data_config["appCode"], 'deviceOS' => 'ANDROID', 'buildNumber' => 0, 'appId' => 'vn.momo.platform', 'result' => true, 'errorCode' => 0, 'errorDesc' => '', 'momoMsg' => array( '_class' => 'mservice.backend.entity.msg.LoginMsg', 'isSetup' => false, ), 'extra' => array( 'pHash' => $this->get_pHash($data), 'AAID' => $data['AAID'], 'IDFA' => '', 'TOKEN' => $data['TOKEN'], 'SIMULATOR' => '', 'SECUREID' => $data['SECUREID'], 'MODELID' => $data['MODELID'], 'checkSum' => $this->generateCheckSum('USER_LOGIN_MSG', $microtime, $data), ), ); return $this->CURL("USER_LOGIN_MSG", $header, $Data); } public function CheckHisNew($hours = 5, $data) { $begin = (time() - (3600 * $hours)) * 1000; $header = array( "authorization: Bearer " . $data["authorization"], "user_phone: " . $data["phone"], "sessionkey: " . $data["sessionkey"], "agent_id: " . $data["agent_id"], 'app_version: ' . $this->momo_data_config["appVer"], 'app_code: ' . $this->momo_data_config["appCode"], "Host: m.mservice.io" ); $Data = '{ "userId": "' . $data['phone'] . '", "fromTime": ' . $begin . ', "toTime": ' . $this->get_microtime() . ', "limit": 5000, "cursor": "", "cusPhoneNumber": "" }'; $result = $this->CURL("QUERY_TRAN_HIS_MSG_NEW", $header, $Data); if (!is_array($result)) { return array( "status" => "error", "code" => -5, "message" => "Hết thời gian truy cập vui lòng đăng nhập lại" ); } $tranHisMsg = $result["message"]["data"]["notifications"]; $return = array(); foreach ($tranHisMsg as $value) { if($value["type"] != 77) continue; $extra = json_decode($value["extra"],true); $amount = $value['caption']; $name = explode("từ", $amount)[1] ?: ""; if (strpos($amount, "Nhận") !== false && $name) { preg_match('#Nhận (.+?)đ#is', $amount, $amount); $amount = str_replace(".", "", $amount[1]) > 0 ? str_replace(".", "", $amount[1]) : '0'; //Cover body to comment $comment = $value['body']; $comment = ltrim($comment, '"'); $comment = explode('"', $comment); $comment = $comment[0]; if ($comment == "Nhấn để xem chi tiết.") { $comment = ""; } $return[] = array( "tranId" => $value["tranId"], "ID" => $value["ID"], "patnerID" => $value["sender"], "partnerName" => $name, "comment" => $comment, "amount" => (int)$amount, "millisecond" => $value["time"] ); } } return array('status' => 'success', 'author' => 'DUNGA', 'data' => $return); } public function CHECK_USER_PRIVATE($receiver, $data) { $microtime = $this->get_microtime(); $requestkeyRaw = $this->generateRandom(32); $requestkey = $this->RSA_Encrypt($data["RSA_PUBLIC_KEY"], $requestkeyRaw); $header = array( "agent_id: " . $data["agent_id"], "user_phone: " . $data["phone"], "sessionkey: " . $data["sessionkey"], "authorization: Bearer " . $data["authorization"], "msgtype: CHECK_USER_PRIVATE", "userid: " . $data["phone"], "requestkey: " . $requestkey, "Host: owa.momo.vn" ); $Data = '{ "user":"' . $data['phone'] . '", "msgType":"CHECK_USER_PRIVATE", "cmdId":"' . $microtime . '000000", "lang":"vi", "time":' . (int) $microtime . ', "channel":"APP", "appVer": ' . $this->momo_data_config["appVer"] . ', "appCode": "' . $this->momo_data_config["appCode"] . '", "deviceOS":"ANDROID", "buildNumber":1916, "appId":"vn.momo.transfer", "result":true, "errorCode":0, "errorDesc":"", "momoMsg": { "_class":"mservice.backend.entity.msg.LoginMsg", "getMutualFriend":false }, "extra": { "CHECK_INFO_NUMBER":"' . $receiver . '", "checkSum":"' . $this->generateCheckSum('CHECK_USER_PRIVATE', $microtime, $data) . '" } }'; return $this->CURL("CHECK_USER_PRIVATE", $header, $this->Encrypt_data($Data, $requestkeyRaw)); } public function CHECK_USER_BE_MSG($data) { $microtime = $this->get_microtime(); $header = array( "agent_id: undefined", "sessionkey:", "user_phone: undefined", "authorization: Bearer undefined", "msgtype: CHECK_USER_BE_MSG", "Host: api.momo.vn", "User-Agent: okhttp/3.14.17", "app_version: ".$this->momo_data_config["appVer"], "app_code: ", "device_os: ANDROID" ); $Data = array ( 'user' => $data['phone'], 'msgType' => 'CHECK_USER_BE_MSG', 'cmdId' => (string) $microtime. '000000', 'lang' => 'vi', 'time' => $microtime, 'channel' => 'APP', 'appVer' => $this->momo_data_config["appVer"], 'appCode' => $this->momo_data_config["appCode"], 'deviceOS' => 'ANDROID', 'buildNumber' => 0, 'appId' => 'vn.momo.platform', 'result' => true, 'errorCode' => 0, 'errorDesc' => '', 'momoMsg' => array ( '_class' => 'mservice.backend.entity.msg.RegDeviceMsg', 'number' => $data['phone'], 'imei' => $data["imei"], 'cname' => 'Vietnam', 'ccode' => '084', 'device' => $data["device"], 'firmware' => '23', 'hardware' => $data["hardware"], 'manufacture' => $data["facture"], 'csp' => 'Viettel', 'icc' => '', 'mcc' => '452', 'device_os' => 'Android', 'secure_id' => $data["SECUREID"], ), 'extra' => array ( 'checkSum' => '', ), ); return $this->CURL("CHECK_USER_BE_MSG",$header,$Data); } public function M2MU_INIT($dataPhone, $dataSend) { $microtime = $this->get_microtime(); $requestkeyRaw = $this->generateRandom(32); $requestkey = $this->RSA_Encrypt($dataPhone["RSA_PUBLIC_KEY"],$requestkeyRaw); $header = array( "agent_id: ".$dataPhone["agent_id"], "user_phone: ".$dataPhone["phone"], "sessionkey: ".$dataPhone["sessionkey"], "authorization: Bearer ".$dataPhone["authorization"], "msgtype: M2MU_INIT", "userid: ".$dataPhone["phone"], "requestkey: ".$requestkey, "Host: owa.momo.vn" ); $ipaddress = $this->get_ip_address(); $Data = array ( 'user' => $dataPhone['phone'], 'msgType' => 'M2MU_INIT', 'cmdId' => (string) $microtime.'000000', 'lang' => 'vi', 'time' => (int) $microtime, 'channel' => 'APP', 'appVer' => $this->momo_data_config["appVer"], 'appCode' => $this->momo_data_config["appCode"], 'deviceOS' => 'ANDROID', 'buildNumber' => 0, 'appId' => 'vn.momo.platform', 'result' => true, 'errorCode' => 0, 'errorDesc' => '', 'momoMsg' => array ( 'clientTime' => (int) $microtime - 221, 'tranType' => 2018, 'comment' => $dataSend['comment'], 'amount' => $dataSend['amount'], 'partnerId' => $dataSend['receiver'], 'partnerName' => $dataSend['partnerName'], 'ref' => '', 'serviceCode' => 'transfer_p2p', 'serviceId' => 'transfer_p2p', '_class' => 'mservice.backend.entity.msg.M2MUInitMsg', 'tranList' => array ( 0 => array ( 'partnerName' => $dataSend['partnerName'], 'partnerId' => $dataSend['receiver'], 'originalAmount' => $dataSend['amount'], 'serviceCode' => 'transfer_p2p', 'stickers' => '', 'themeBackground' => '#f5fff6', 'themeUrl' => 'https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png', 'transferSource' => '', 'socialUserId' => '', '_class' => 'mservice.backend.entity.msg.M2MUInitMsg', 'tranType' => 2018, 'comment' => $dataSend['comment'], 'moneySource' => 1, 'partnerCode' => 'momo', 'serviceMode' => 'transfer_p2p', 'serviceId' => 'transfer_p2p', 'extras' => '{"loanId":0,"appSendChat":false,"loanIds":[],"stickers":"","themeUrl":"https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png","hidePhone":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'","vpc_PaymentGateway":""}', ), ), 'extras' => '{"loanId":0,"appSendChat":false,"loanIds":[],"stickers":"","themeUrl":"https://cdn.mservice.com.vn/app/img/transfer/theme/Corona_750x260.png","hidePhone":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'","vpc_PaymentGateway":""}', 'moneySource' => 1, 'partnerCode' => 'momo', 'rowCardId' => '', 'giftId' => '', 'useVoucher' => 0, 'prepaidIds' => '', 'usePrepaid' => 0, ), 'extra' => array ( 'checkSum' => $this->generateCheckSum('M2MU_INIT', $microtime, $dataPhone), ), ); return $this->CURL("M2MU_INIT",$header,$this->Encrypt_data($Data,$requestkeyRaw)); } public function M2MU_CONFIRM($ID, $data, $dataSend) { $microtime = $this->get_microtime(); $requestkeyRaw = $this->generateRandom(32); $requestkey = $this->RSA_Encrypt($data["RSA_PUBLIC_KEY"],$requestkeyRaw); $header = array( "agent_id: ".$data["agent_id"], "user_phone: ".$data["phone"], "sessionkey: ".$data["sessionkey"], "authorization: Bearer ".$data["authorization"], "msgtype: M2MU_INIT", "userid: ".$data["phone"], "requestkey: ".$requestkey, "Host: owa.momo.vn" ); $ipaddress = $this->get_ip_address(); $Data = array( 'user' => $data['phone'], 'pass' => $data['password'], 'msgType' => 'M2MU_CONFIRM', 'cmdId' => (string) $microtime.'000000', 'lang' => 'vi', 'time' =>(int) $microtime, 'channel' => 'APP', 'appVer' => $this->momo_data_config["appVer"], 'appCode' => $this->momo_data_config["appCode"], 'deviceOS' => 'ANDROID', 'buildNumber' => 0, 'appId' => 'vn.momo.platform', 'result' => true, 'errorCode' => 0, 'errorDesc' => '', 'momoMsg' => array( 'ids' => array ( 0 => $ID, ), 'totalAmount' => $dataSend['amount'], 'originalAmount' => $dataSend['amount'], 'originalClass' => 'mservice.backend.entity.msg.M2MUConfirmMsg', 'originalPhone' => $data['phone'], 'totalFee' => '0.0', 'id' => $ID, 'GetUserInfoTaskRequest' => $dataSend['receiver'], 'tranList' => array ( 0 => array( '_class' => 'mservice.backend.entity.msg.TranHisMsg', 'user' => $data['phone'], 'clientTime' => (int) ($microtime - 211), 'tranType' => 36, 'amount' => (int) $dataSend['amount'], 'receiverType' => 1, ), 1 => array( '_class' => 'mservice.backend.entity.msg.TranHisMsg', 'user' => $data['phone'], 'clientTime' => (int) ($microtime - 211), 'tranType' => 36, 'partnerId' => $dataSend['receiver'], 'amount' => 100, 'comment' => '', 'ownerName' => $data['Name'], 'receiverType' => 0, 'partnerExtra1' => '{"totalAmount":'.$dataSend['amount'].'}', 'partnerInvNo' => 'borrow', ), ), 'serviceId' => 'transfer_p2p', 'serviceCode' => 'transfer_p2p', 'clientTime' => (int) ($microtime - 211), 'tranType' => 2018, 'comment' => '', 'ref' => '', 'amount' => $dataSend['amount'], 'partnerId' => $dataSend['receiver'], 'bankInId' => '', 'otp' => '', 'otpBanknet' => '', '_class' => 'mservice.backend.entity.msg.M2MUConfirmMsg', 'extras' => '{"appSendChat":false,"vpc_CardType":"SML","vpc_TicketNo":"'.$ipaddress.'"","vpc_PaymentGateway":""}', ), 'extra' => array( 'checkSum' => $this-> generateCheckSum('M2MU_CONFIRM',$microtime, $data), ), ); return $this->CURL("M2MU_CONFIRM",$header,$this->Encrypt_data($Data,$requestkeyRaw)); } private function CURL($Action, $header, $data) { $Data = is_array($data) ? json_encode($data) : $data; $curl = curl_init(); // echo strlen($Data); die; $header[] = 'Content-Type: application/json'; $header[] = 'accept: application/json'; $header[] = 'Content-Length: ' . strlen($Data); $opt = array( CURLOPT_URL => $this->URLAction[$Action], CURLOPT_RETURNTRANSFER => TRUE, CURLOPT_POST => empty($data) ? FALSE : TRUE, CURLOPT_POSTFIELDS => $Data, CURLOPT_CUSTOMREQUEST => empty($data) ? 'GET' : 'POST', CURLOPT_HTTPHEADER => $header, CURLOPT_ENCODING => "", CURLOPT_HEADER => FALSE, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_TIMEOUT => 20, ); curl_setopt_array($curl, $opt); $body = curl_exec($curl); // echo strlen($body); die; if (is_object(json_decode($body))) { return json_decode($body, true); } return json_decode($this->Decrypt_data($body), true); } public function Decrypt_data($data) { $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return openssl_decrypt(base64_decode($data), 'AES-256-CBC', $this->keys, OPENSSL_RAW_DATA, $iv); } public function generateCheckSum($type, $microtime, $data) { $Encrypt = $data["phone"] . $microtime . '000000' . $type . ($microtime / 1000000000000.0) . 'E12'; $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return base64_encode(openssl_encrypt($Encrypt, 'AES-256-CBC', $data["setupKeyDecrypt"], OPENSSL_RAW_DATA, $iv)); } private function get_pHash($data) { $key = $data["imei"] . "|" . $data["password"]; $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return base64_encode(openssl_encrypt($key, 'AES-256-CBC', $data['setupKeyDecrypt'], OPENSSL_RAW_DATA, $iv)); } public function get_setupKey($setUpKey, $data) { $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return openssl_decrypt(base64_decode($setUpKey), 'AES-256-CBC', $data["ohash"], OPENSSL_RAW_DATA, $iv); } public function generateRandom($length = 20) { $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } private function get_SECUREID($length = 17) { $characters = '0123456789abcdef'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function get_microtime() { return round(microtime(true) * 1000); } public function generateImei() { return $this->generateRandomString(8) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(4) . '-' . $this->generateRandomString(12); } private function generateRandomString($length = 20) { $characters = '0123456789abcdef'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function get_TOKEN() { return $this->generateRandom(22) . ':' . $this->generateRandom(9) . '-' . $this->generateRandom(20) . '-' . $this->generateRandom(12) . '-' . $this->generateRandom(7) . '-' . $this->generateRandom(7) . '-' . $this->generateRandom(53) . '-' . $this->generateRandom(9) . '_' . $this->generateRandom(11) . '-' . $this->generateRandom(4); } public function Encrypt_data($data,$key) { $iv = pack('C*', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); $this->keys = $key; return base64_encode(openssl_encrypt(is_array($data) ? json_encode($data) : $data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv)); } public function RSA_Encrypt($key,$content) { if(empty($this->rsa)){ $this->INCLUDE_RSA($key); } return base64_encode($this->rsa->encrypt($content)); } private function INCLUDE_RSA($key) { require_once ('Crypt/RSA.php'); $this->rsa = new Crypt_RSA(); $this->rsa->loadKey($key); $this->rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); return $this; } private function get_ip_address() { $isValid = filter_var($_SERVER['REMOTE_ADDR'], FILTER_VALIDATE_IP,FILTER_FLAG_IPV4); if(!empty($isValid)){ return $_SERVER['REMOTE_ADDR']; } try { $isIpv4 = json_decode(file_get_contents('https://api.ipify.org?format=json'), true); return $isIpv4['ip']; } catch (\Throwable $e){ return '116.107.187.109'; } } }