encryptPhp7($encryptStr);//加密结果 } $localIV = $this->iv; $encryptKey = $this->encryptKey; if (true == EN_GZIP) $encryptStr = gzencode($encryptStr); //Open module $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, $localIV); mcrypt_generic_init($module, $encryptKey, $localIV); //Padding $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $pad = $block - (strlen($encryptStr) % $block); //Compute how many characters need to pad $encryptStr .= str_repeat(chr($pad), $pad); // After pad, the str length must be equal to block or its integer multiples //encrypt $encrypted = mcrypt_generic($module, $encryptStr); //Close mcrypt_generic_deinit($module); mcrypt_module_close($module); return $encrypted; } //PHP7使用这个加密 public function encryptPhp7($encryptStr) { $localIV = $this->iv; $encryptKey = $this->encryptKey; if (true == EN_GZIP) $encryptStr = gzencode($encryptStr); return openssl_encrypt($encryptStr, 'AES-128-ECB', $encryptKey, OPENSSL_RAW_DATA, $localIV); } //解密 public function decrypt($encryptStr) { if (version_compare(PHP_VERSION, '7.0.0', 'ge')) { $encryptObj = new MagicCrypt(); return $encryptObj->decryptPhp7($encryptStr);//加密结果 } $localIV = $this->iv; $encryptKey = $this->encryptKey; //Open module $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, $localIV); mcrypt_generic_init($module, $encryptKey, $localIV); $encryptedData = mdecrypt_generic($module, $encryptStr); if (true == EN_GZIP) $encryptedData = gzdecode($encryptedData); return $encryptedData; } //PHP7使用这个解密 public function decryptPhp7($encryptStr) { $localIV = $this->iv; $encryptKey = $this->encryptKey; $encryptedData = openssl_decrypt($encryptStr, 'AES-128-ECB', $encryptKey, OPENSSL_RAW_DATA, $localIV); if (true == EN_GZIP) $encryptedData = gzdecode($encryptedData); return $encryptedData; } } error_reporting(0); function http_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, true); $header[] = "appId: " . YM_SMS_APPID; if (true == EN_GZIP) $header[] = "gzip: on"; // echo END; // echo "[send head is] :" . END; // //print_r($header); // echo $header; // echo END; // echo END; curl_setopt($curl, CURLOPT_HTTPHEADER, $header); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_HEADER, true); if (!empty($data)) { curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $res = curl_exec($curl); //var_dump($res); $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); curl_close($curl); $header = substr($res, 0, $headerSize); // echo "[result head is] : " . END; // echo $header; // echo "URL=" . $url . END; $outobj = new stdClass(); $lines = explode("\r\n", $header); foreach ($lines as $line) { $items = explode(": ", $line); if (isset($items[0]) and !empty($items[0]) and isset($items[1]) and !empty($items[1])) $outobj->$items[0] = $items[1]; } $outobj->ciphertext = substr($res, $headerSize); //var_dump($outobj); return $outobj; } function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return (float)sprintf('%.0f', (floatval($t1) + floatval($t2)) * 1000); } function SendSMS($mobile, $content, $timerTime = "", $customSmsId = "", $extendedCode = "2", $validPeriodtime = 120) { // 如果您的系统环境不是UTF-8,内容需要转码到UTF-8。如下:从gb2312转到了UTF-8 // $content = mb_convert_encoding( $content,"UTF-8","gb2312"); $item = new stdClass(); $item->mobile = $mobile; $item->content = $content; /* 选填内容 */ if ("" != $timerTime) $item->timerTime = $timerTime; if ("" != $customSmsId) $item->customSmsId = $customSmsId; if ("" != $extendedCode) $item->extendedCode = $extendedCode; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); // echo "[send json is] :" . END; // echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_SEND_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function SendBatchSMS($mobiles, $content, $timerTime = "", $customSmsId = "", $extendedCode = "", $validPeriodtime = 120) { $item = new stdClass(); $smses = array(); foreach ($mobiles as $mobile) $smses[] = $mobile; $item->smses = $smses; // 如果您的系统环境不是UTF-8,内容需要转码到UTF-8。如下:从gb2312转到了UTF-8 // $content = mb_convert_encoding( $content,"UTF-8","gb2312"); $item->content = $content; /* 选填内容 */ if ("" != $timerTime) $item->timerTime = $timerTime; if ("" != $customSmsId) $item->customSmsId = $customSmsId; if ("" != $extendedCode) $item->extendedCode = $extendedCode; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); // echo "[send json is] :" . END; // echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_SEND_BATCH_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function sendBatchOnlySMS($mobiles, $content, $timerTime = "", $customSmsId = "", $extendedCode = "", $validPeriodtime = 120) { // 如果您的系统环境不是UTF-8,内容需要转码到UTF-8。如下:从gb2312转到了UTF-8 // $content = mb_convert_encoding( $content,"UTF-8","gb2312"); $item = new stdClass(); $item->mobiles = $mobiles; $item->content = $content; /* 选填内容 */ if ("" != $timerTime) $item->timerTime = $timerTime; if ("" != $extendedCode) $item->extendedCode = $extendedCode; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); echo "[send json is] :" . END; echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_SEND_BATCHONLY_SMS_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function sendPersonalitySMS($mobiles, $timerTime = "", $customSmsId = "", $extendedCode = "", $validPeriodtime = 120) { // 如果您的系统环境不是UTF-8,内容需要转码到UTF-8。如下:从gb2312转到了UTF-8 // $content = mb_convert_encoding( $content,"UTF-8","gb2312"); $item = new stdClass(); $smses = array(); foreach ($mobiles as $mobile) $smses[] = $mobile; $item->smses = $smses; /* 选填内容 */ if ("" != $timerTime) $item->timerTime = $timerTime; if ("" != $customSmsId) $item->customSmsId = $customSmsId; if ("" != $extendedCode) $item->extendedCode = $extendedCode; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); echo "[send json is] :" . END; echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_SEND_PERSONALITY_SMS_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function getReport($number = 0, $validPeriodtime = 120) { $item = new stdClass(); /* 选填内容 */ if (0 != $number) $item->number = $number; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); echo "[send json is] :" . END; echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_GETREPORT_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function getMo($number = 0, $validPeriodtime = 120) { $item = new stdClass(); /* 选填内容 */ if (0 != $number) $item->number = $number; $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); echo "[send json is] :" . END; echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_GETMO_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function getBalance($validPeriodtime = 120) { $item = new stdClass(); $item->requestTime = getMillisecond(); $item->requestValidPeriod = $validPeriodtime; $json_data = json_encode($item, JSON_UNESCAPED_UNICODE); echo "[send json is] :" . END; echo "" . $json_data . END; $encryptObj = new MagicCrypt(); $senddata = $encryptObj->encrypt($json_data);//加密结果 $url = YM_SMS_ADDR . YM_SMS_GETBALANCE_URI; $resobj = http_request($url, $senddata); $resobj->plaintext = $encryptObj->decrypt($resobj->ciphertext); return $resobj; } function run_dev() { echo "***************测试单条短信发送***************" . END; $resobj = SendSMS("18001000000", "【某某公司】您的验证码是123");/* 短信内容请以商务约定的为准,如果已经在通道端绑定了签名,则无需在这里添加签名 */ $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试单条短信发送完成***************" . END; //========================================================================================== echo "***************测试多条短信发送(支持SMSID)***************" . END; $mobiles = array(); $mobiles[] = new stdClass(); $mobiles[0]->mobile = "18001000000"; $mobiles[0]->customSmsId = "123"; $mobiles[] = new stdClass(); $mobiles[1]->mobile = "18001000001"; $mobiles[1]->customSmsId = "321"; $resobj = SendBatchSMS($mobiles, "【某某公司】您的验证码是123");/* 短信内容请以商务约定的为准,如果已经在通道端绑定了签名,则无需在这里添加签名 */ $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试多条短信发送(支持SMSID)完成***************" . END; //========================================================================================== echo "***************测试多条短信发送(不支持SMSID)***************" . END; $mobiles = array(); $mobiles[] = "18001000000"; $mobiles[] = "18001000001"; $resobj = sendBatchOnlySMS($mobiles, "【某某公司】您的验证码是123"); $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试多条短信发送(不支持SMSID)完成***************" . END; //========================================================================================== echo "***************测试个性短信接口***************" . END; $mobiles = array(); $mobiles[] = new stdClass(); $mobiles[0]->mobile = "18001000000"; $mobiles[0]->customSmsId = "1111111"; $mobiles[0]->content = "我是个性1号"; $mobiles[] = new stdClass(); $mobiles[1]->mobile = "18001000001"; $mobiles[1]->customSmsId = "2222222"; $mobiles[1]->content = "我是个性2号"; $mobiles[] = new stdClass(); $mobiles[2]->mobile = "18001000002"; $mobiles[2]->customSmsId = "3333333"; $mobiles[2]->content = "我是个性3号"; $resobj = sendPersonalitySMS($mobiles); $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试个性短信接口完成***************" . END; //========================================================================================== echo "***************测试状态报告接口***************" . END; $resobj = getReport(); $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试状态报告接口完成***************" . END; //========================================================================================== echo "***************测试上行接口***************" . END; $resobj = getMo(); $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试上行接口完成***************" . END; //========================================================================================== echo "***************测试余额接口***************" . END; $resobj = getBalance(); $resobj->ciphertext = ""; echo "[result json is] :" . END; echo "" . $resobj->plaintext . END; echo "***************测试余额接口完成***************" . END; } //run_dev(); ?>