這段PHP為什麼簡訊發送無效?
set_time_limit(0);
header("Content-Type: text/html; charset=GBK");
/**
* 定義程式絕對路徑
*/
define('SCRIPT_ROOT', dirname(__FILE__).'/');
require_once SCRIPT_ROOT.'include/Client.php';
/**
* 網關地址
*/
$gwUrl = 'http://sdk.univetro.com.cn:6200/sdk/SDKService';
/**
* 序號,請通過聯合維拓銷售人員擷取
*/
$serialNumber = '7SDK-LHW-0588-PFQUM';
/**
* 密碼,請通過聯合維拓銷售人員擷取
*/
$password = '814177';
/**
* 登入後所持有的SESSION KEY,即可通過login方法時建立
*/
$sessionKey = '063289';
/**
* 連線逾時時間,單位為秒
*/
$connectTimeOut = 2;
/**
* 遠程資訊讀取逾時時間,單位為秒
*/
$readTimeOut = 10;
/**
$proxyhost可選,Proxy 伺服器地址,預設為 false ,則不使用Proxy 伺服器
$proxyport可選,Proxy 伺服器連接埠,預設為 false
$proxyusername可選,Proxy 伺服器使用者名稱,預設為 false
$proxypassword可選,Proxy 伺服器密碼,預設為 false
*/
$proxyhost = false;
$proxyport = false;
$proxyusername = false;
$proxypassword = false;
$client = new Client($gwUrl,$serialNumber,$password,$sessionKey,$proxyhost,$proxyport,$proxyusername,$proxypassword,$connectTimeOut,$readTimeOut);
/**
* 發送向服務端的編碼,如果本頁面的編碼為GBK,請使用GBK
*/
$client->setOutgoingEncoding("GBK");
// login(); //啟用序號
// updatePassword(); //修改密碼
// logout(); //登出序號
// registDetailInfo();//註冊公司資訊
// getEachFee(); //得到單價
// getMO(); //接收簡訊
// getVersion(); //得到版本號碼
// sendSMS(); //傳送簡訊
// getBalance(); //得到餘額
// chargeUp(); //儲值
//----------------------------------------------------------------------
// 注:
// 1. 下面是各介面的使用用例,Client.php 還有每一個介面更詳細的參數說明
// 2. 凡是返回 $statusCode 的, 都是相關操作的狀態代碼
// 3. 由於php是弱類型語言,當服務端沒返回時,也會等同認為 $statusCode=='0', 所以在判斷時應該使用 if ($statusCode!=null && $statusCode==0)
//----------------------------------------------------------------------
/**
* 介面調用錯誤查看 用例
*/
function chkError()
{
global $client;
$err = $client->getError();
if ($err)
{
/**
* 調用出錯,可能是網路原因,介面版本原因 等非業務上錯誤的問題導致的錯誤
* 可在每個方法調用後查看,用於開發人員調試
*/
echo $err;
}
}
/**
* 登入 用例
*/
function login()
{
global $client;
/**
* 下面的操作是產生隨機6位元 session key
* 注意: 如果要更換新的session key,則必須要求先成功執行 logout(登出操作)後才能更換
* 我們建議 sesson key不用常變
*/
//$sessionKey = $client->generateKey();
//$statusCode = $client->login($sessionKey);
$statusCode = $client->login();
echo "處理狀態代碼:".$statusCode."
";
if ($statusCode!=null && $statusCode=="0")
{
//登入成功,並且做儲存 $sessionKey 的操作,用於以後相關操作的使用
echo "登入成功, session key:".$client->getSessionKey()."
";
}else{
//登入失敗處理
echo "登入失敗";
}
}
/**
* 登出登入 用例
*/
function logout()
{
global $client;
$statusCode = $client->logout();
echo "處理狀態代碼:".$statusCode;
}
/**
* 擷取版本號碼 用例
*/
function getVersion()
{
global $client;
echo "版本:". $client->getVersion();
}
/**
* 取消簡訊轉寄 用例
*/
function cancelMOForward()
{
global $client;
$statusCode = $client->cancelMOForward();
echo "處理狀態代碼:".$statusCode;
}
/**
* 簡訊儲值 用例
*/
function chargeUp()
{
global $client;
/**
* $cardId [儲值卡卡號]
* $cardPass [密碼]
*
* 請通過聯合維拓銷售人員擷取 [儲值卡卡號]長度為20內 [密碼]長度為6
*
*/
$cardId = 'EMY00000000000000000';
$cardPass = '000000';
$statusCode = $client->chargeUp($cardId,$cardPass);
echo "處理狀態代碼:".$statusCode;
}
/**
* 查詢單條費用 用例
*/
function getEachFee()
{
global $client;
$fee = $client->getEachFee();
echo "費用:".$fee;
}
/**
* 企業註冊 用例
*/
function registDetailInfo()
{
global $client;
$eName = "xx公司";
$linkMan = "陳xx";
$phoneNum = "010-1111111";
$mobile = "18795551561";
$email = "[email protected]";
$fax = "010-1111111";
$address = "xx路";
$postcode = "111111";
/**
* 企業註冊 [郵遞區號]長度為6 其它參數長度為20以內
*
* @param string $eName 企業名稱
* @param string $linkMan 連絡人姓名
* @param string $phoneNum 聯絡電話
* @param string $mobile 聯絡手機號碼
* @param string $email 聯絡電子郵件
* @param string $fax 傳真號碼
* @param string $address 聯絡地址
* @param string $postcode 郵遞區號
*
* @return int 操作結果狀態代碼
*
*/
$statusCode = $client->registDetailInfo($eName,$linkMan,$phoneNum,$mobile,$email,$fax,$address,$postcode);
echo "處理狀態代碼:".$statusCode;
}
/**
* 更新密碼 用例
*/
function updatePassword()
{
global $client;
/**
* [密碼]長度為6
*
* 如下面的例子是將密碼修改成: 654321
*/
$statusCode = $client->updatePassword('654321');
echo "處理狀態代碼:".$statusCode;
}
/**
* 簡訊轉寄 用例
*/
function setMOForward()
{
global $client;
/**
* 向 159xxxxxxxx 進行轉寄簡訊
*/
$statusCode = $client->setMOForward('18795551561');
echo "處理狀態代碼:".$statusCode;
}
/**
* 得到上行簡訊 用例
*/
function getMO()
{
global $client;
$moResult = $client->getMO();
echo "返回數量:".count($moResult);
foreach($moResult as $mo)
{
//$mo 是位於 Client.php 裡的 Mo 對象
// 執行個體代碼為直接輸出
echo "寄件者附加碼:".$mo->getAddSerial();
echo "接收者附加碼:".$mo->getAddSerialRev();
echo "通道號:".$mo->getChannelnumber();
echo "手機號:".$mo->getMobileNumber();
echo "發送時間:".$mo->getSentTime();
/**
* 由於服務端返回的編碼是UTF-8,所以需要進行編碼轉換
*/
echo "簡訊內容:".iconv("UTF-8","GBK",$mo->getSmsContent());
// 上行簡訊務必要儲存,加入商務邏輯代碼,如:儲存資料庫,寫檔案等等
}
}
/**
* 簡訊發送 用例
*/
function sendSMS($tel,$msg)
{
global $client;
/**
* 下面的代碼將發送內容為 test 給 159xxxxxxxx 和 159xxxxxxxx
* $client->sendSMS還有更多可用參數,請參考 Client.php
*/
/*$statusCode = $client->sendSMS(array('18136963895'),"【好網中國】尊敬的會員您好!感謝您註冊好網中國,您的驗證碼是921057,請勿泄露您的驗證碼,如有疑問,請致電4000600011");*/
$client->sendSMS($tel,$msg);
//echo "處理狀態代碼:".$statusCode;
}
/**
* 餘額查詢 用例
*/
function getBalance()
{
global $client;
$balance = $client->getBalance();
echo "餘額:".$balance;
}
/**
* 簡訊轉寄擴充 用例
*/
function setMOForwardEx()
{
global $client;
/**
* 向多個號碼進行轉寄簡訊
*
* 以數組形式填寫手機號碼
*/
$statusCode = $client->setMOForwardEx(
array('18795551561')
);
echo "處理狀態代碼:".$statusCode;
}
//login(); //啟用序號
// updatePassword(); //修改密碼
// logout(); //登出序號
//registDetailInfo();//註冊公司資訊
// getEachFee(); //得到單價
// getMO(); //接收簡訊
// getVersion(); //得到版本號碼
//sendSMS(); //傳送簡訊
// getBalance(); //得到餘額
// chargeUp(); //儲值
if($_GET[type]=='sendmsg'){
$msg="您好,感謝您線上申請註冊銀利多貴金屬喊單直播間會員,您的手機驗證碼為:".$_POST[validate].",有效期間3分鐘。註冊成功就可以免費獲得資深分析師買賣點+倉位+止盈點+止損點明確操作建議,讓您的投資利益最大化!詳情請諮詢0931-6180388【貴金屬領航者--銀利多】";
$tel=array($_POST[telephone]);
//$_POST[validate].$_POST[telephone];
sendSMS($tel,$msg);
echo 'success';
}
if($_GET[type]=='checkzh'){
$msg="【好網中國】尊敬的會員您好!您的密碼是".$_POST[password]."請勿泄露您的密碼,如有疑問,請致電4000600011";
$tel=array($_POST[telephone]);
//$_POST[validate].$_POST[telephone];
sendSMS($tel,$msg);
echo 'success';
}
?>
------解決思路----------------------
看看返回的數據與API文檔是否一致。
看看return code是什麼意思。
------解決思路----------------------
和我用的一個供應商的,第一次用的時候要手機執行了LOGO。以後就可以正常使用。
給你一個段片段
$send_code="您的驗證碼是:".$_POST['send_code']."。請不要把驗證碼泄露給其他人!";
$statusCode = $client->sendSMS(array("$mobile"),"$send_code");
//echo $statusCode;
if ($statusCode==0) {
$data['msg']="提交成功";
$data['status']=1;
}else{
$data="提交失敗";
$data['status']=0;
}
------解決思路----------------------
引用:
和我用的一個供應商的,第一次用的時候要手機執行了LOGO。以後就可以正常使用。
給你一個段片段
$send_code="您的驗證碼是:".$_POST['send_code']."。請不要把驗證碼泄露給其他人!";
$statusCode = $client->sendSMS(array("$mobile"),"$send_code");
//echo $statusCode;
if ($statusCode==0) {
$data['msg']="提交成功";
$data['status']=1;
}else{
$data="提交失敗";
$data['status']=0;
}
第一次用的時候要手動執行了Login。以後就可以正常使用。
------解決思路----------------------
你發送驗證碼,肯定會去請求url地址,看下返回什麼東西。
------解決思路----------------------
引用:
Quote: 引用:
Quote: 引用:
和我用的一個供應商的,第一次用的時候要手機執行了LOGO。以後就可以正常使用。
給你一個段片段
$send_code="您的驗證碼是:".$_POST['send_code']."。請不要把驗證碼泄露給其他人!";
$statusCode = $client->sendSMS(array("$mobile"),"$send_code");
//echo $statusCode;
if ($statusCode==0) {
$data['msg']="提交成功";
$data['status']=1;
}else{
$data="提交失敗";
$data['status']=0;
}
第一次用的時候要手動執行了Login。以後就可以正常使用。
這段話寫在哪裡?
放在的DOME檔案裡也可以,如果想更靈活一點,重建一個檔案引用dome.php然後下面寫上面的發送代碼了