短信接入SDK其实说难不难说,说简单很简单,只要你能吃的准他的套路就没有问题了
第一步,找到第三方短信SDK找到客服,要测试的短信,一般情况下只会给到10条左右测试短信(不排除有200条不可变动短信)
第二步,找到官方文档,看需要什么参数,返回什么参数等等
第三步,打开编辑器,废话太多,直接上代码了
需要加群沟通的 加wx poison_robot 发送 互联网交流 进群
SendSMS.php
<?php
/**
* Created by Zend studio.
* name: Poison
*/
$aa = include_once 'conf.php';
include_once 'Tools.php';
$randnum = rand(1000,9999);//这个可以自己确定,就是一个随机数
$send_arr = array( //将需要的参数放入数组中
'account' =>$aa['SMS_ACCOUNT'] ,
'password' => $aa['SMS_PWD'],
'content' =>str_replace('$code$',$randnum,$aa['SMS_WORD']),
'mobile' =>'15609220575'
);
$returnStr = invoke_fraud_api($aa['SMS_URL'],$send_arr);//调用下面的方法,下面的方法不不要动,直接使用就好了
$ins = new Tools();//调用Tools
$ins -> decodeXml($returnStr);//此方法用来解析返回来的XML文件
$code = $ins -> getXmlData('code');//取出返回值
if($code === '2'){//这个短信返回2为发送成功,返回给前端
echo json_encode(array('result' => 1));
}else{
echo json_encode(array('result' => 2,'reason' => $ins -> getXmlData('msg') ));
}
function invoke_fraud_api($url,array $params, $isPost = true,$timeout = 5000, $connection_timeout = 5000) {
$api_url = $url;
if($isPost){
$options['CURLOPT_POST'] = 1;
}
$options = array(
CURLOPT_URL => $api_url, // 请求URL
CURLOPT_RETURNTRANSFER => 1, // 获取请求结果
// -----------请确保启用以下两行配置------------
CURLOPT_SSL_VERIFYPEER => 1, // 验证证书
CURLOPT_SSL_VERIFYHOST => 2, // 验证主机名
// -----------否则会存在被窃听的风险------------
CURLOPT_POSTFIELDS => http_build_query($params) // 注入接口参数
);
if (defined("CURLOPT_TIMEOUT_MS")) {
$options[CURLOPT_NOSIGNAL] = 1;
$options[CURLOPT_TIMEOUT_MS] = $timeout;
} else {
$options[CURLOPT_TIMEOUT] = ceil($timeout / 1000);
}
if (defined("CURLOPT_CONNECTTIMEOUT_MS")) {
$options[CURLOPT_CONNECTTIMEOUT_MS] = $connection_timeout;
} else {
$options[CURLOPT_CONNECTTIMEOUT] = ceil($connection_timeout / 1000);
}
$ch = curl_init();
$cacert = getcwd() . '/ca-bundle.crt';
curl_setopt ($ch, CURLOPT_CAINFO, $cacert);
curl_setopt_array($ch, $options);
if(!($response = curl_exec($ch))) {
// 错误处理,按照同盾接口格式fake调用结果
return array(
"success" => "false",
"reason_code" => "000:调用API时发生错误[".curl_error($ch)."]"
);
}
curl_close($ch);
return $response;
}
Tools()//这个是用来json、xml发送和解析的工具类
public function decodeJson($str){
$this -> jsonResult = (array)json_decode($str);
}
public function getJsonData($key){
return $this -> jsonResult[$key];
}
public function encodeXml($parent,$arr){
$xml = new DOMDocument('1.0','utf-8');
$parentObj = $xml -> createElement($parent);
$xml -> appendChild($parentObj);
foreach($arr as $key => $val){
$obj = $xml -> createElement($key,$val);
$parentObj -> appendChild($obj);
}
$str = $xml -> saveXML();
if($parent === 'xml'){
$arr = explode('?>',$str);
return end($arr);
}else{
return $str;
}
}
public function decodeXml($str){
$xml = simplexml_load_string($str);
$this -> xmlResult = (array)$xml;
}
public function getXmlData($key){
return (string)$this -> xmlResult[$key];
}
}
最后放入一个最最关键的文件,ca-bundle.crt 放在更目录下