调用PHP说明
短信验证码PHP接口文档下载:点击下载普通短信发送用户在遵循HTTP协议的前提下,可通过GET和POST方式提交短信发送请求普通短信发送短信可以提交不超过50000个手机号码,每个号码用英文逗号间隔。 (一次提交发送超过200个手机号码,请使用POST请求)
乱码问题解决方案:
UTF-8编码的将content 做urlencode编码后,带入encode=utf8或utf-8实例:http://www.n1m.cn/send.do?username= system &password=MD5(123456201710101520)&mobile=8613800000001,8613800000002&content=验证码1234。&international=true
内容转码问题解决方案:
1、 UTF-8 转 GBK:$content = iconv(“UTF-8″,”GBK//IGNORE”);
2、 GBK 转 UTF-8:$content = iconv(“GBK”,”UTF-8″,$content);
发送接口返回结果
示例:
{ “status”:”0″,
“msgId”:”d72f33697f8443b397bddba173e30410″,
“responseTime”:”2017-12-12 00:00:00″,
“statusDesc”:”发送成功”
}
状态码说明
序号 | 参数 | 说明 |
1 | 170 | 短信内容为空 |
2 | 171 | 短信签名为空 |
3 | 172 | 号码为空 |
4 | 173 | 号码格式错误 |
5 | 174 | 客户端短信ID为空 |
6 | 175 | 短信类型错误 |
7 | 176 | 无任何有效号码 |
8 | 177 | 短信内容超长 |
9 | 181 | 用户状态异常 |
10 | 182 | 用户会话失效 |
11 | 183 | 系统错误 |
12 | 184 | 已存在的队列任务 |
13 | 185 | 未找到的队列任务 |
14 | 186 | 长短信拼接失败 |
15 | 191 | 队列超限 |
16 | 155 | 用户名或者密码错误 |
17 | 157 | 未开通接口,或者开通的接口类型错误 |
18 | 161 | 用户名为空 |
19 | 162 | 用户状态异常 |
20 | 164 | 无此用户 |
PHP代码示例:
header("Content-type: text/html; charset=utf-8");
$url = "http://www.n1m.cn:18002/send.do"; //短信网关地址
$username='用户名'; //用户名
$password='密码'; //明文密码
$mobile='13811299934'; //发多个号码:13800000001,13800000002,...N 。使用半角逗号分隔。
$content='【数巨牛】您好,您的验证码是:12345'; //短信内容,注意:短信内容中请包含签名,示例:【淘宝网】。
$ex="07mx";//拓展号
/*
* 注意:如果您的页面编码为GBK,或发送短信乱码时,请去除下面编码转换语句的注释。
* $content = iconv("GBK","UTF-8",$content); //编码转换语句
*/
$result = sendSMS($url,$username,$password,$mobile,$content.$ex); //调用发送短信函数
$resultJsonArray = json_decode($result,true);//将JSON转化为数组
if($resultJsonArray['statusDesc'] == "ok") { //提交短信成功
$statusDesc = $resultJsonArray['statusDesc']; //请求成功结果描述字符
$responseTime = $resultJsonArray['responseTime']; //请求成功响应时间
$msgId = $resultJsonArray['msgId']; //短信唯一MsgId,该MsgId是作为状态匹配使用
$status = $resultJsonArray['status']; //请求成功返回值,成功为:0
//业务逻辑代码
echo "请求发送短信成功";
} else {
//提交失败
//逻辑代码
echo "请求发送短信失败";
}
echo $result; //输入完整JSON返回值,如返回值乱码,请使用:echo iconv("UTF-8","GBK",$result); 显示正常中文返回值
/**
* 拼装发送短信请求参数并发送短信
* @param $url 短信网关地址
* @param $username 用户名
* @param $password MD5密码
* @param $mobile 手机号
* @param $content 短信内容
* @return 返回请求结果
*/
function sendSMS($url,$username,$password,$mobile,$content,$ex) {
$international = "false"; //是否发送国际短信,默认为false表示发送中国地区短信
$extNumber = ""; //短信扩展号,默认留空
$nowDate = date("YmdHi"); //当天年月日时分
$md5Password = md5($password.$nowDate); //生成MD5密码
$data=array (
'username'=>$username,
'password'=>$md5Password,
'mobile'=>$mobile,
'content'=>$content,
'extnumber'=>$ex
);
$result = sendRequest($url,$data);
return $result;
}
/**
* 发送短信函数
* @param $url 短信网关API地址
* @param array $post_fields 请求参数数组
* @return 返回请求结果
*/
function sendRequest($url,$post_fields=array()) {
$sendResult = ""; //请求发送短信返回结果
$query = http_build_query($post_fields); //将请求参数格式化为URL字符串
if(function_exists('curl_init')) {
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);//用PHP取回的URL地址(值将被作为字符串)
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//使用curl_setopt获取页面内容或提交数据,有时候希望返回的内容作为变量存储,而不是直接输出,这时候希望返回的内容作为变量
curl_setopt($ch,CURLOPT_TIMEOUT,30);//30秒超时限制
curl_setopt($ch,CURLOPT_HEADER,1);//将文件头输出直接可见。
curl_setopt($ch,CURLOPT_POST,1);//设置这个选项为一个零非值,这个post是普通的application/x-www-from-urlencoded类型,多数被HTTP表调用。
curl_setopt($ch,CURLOPT_POSTFIELDS,$query);//post操作的所有数据的字符串。 $data = curl_exec($ch);//抓取URL并把他传递给浏览器
$data = curl_exec($ch);//运行curl
curl_close($ch);//释放CURL资源
$res = explode("\r\n\r\n",$data);//格式化请求结果
$sendResult = $res[1];
} else {
//拼接Context上下文参数
$options['http'] = array(
'timeout'=>30,
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $query
);
$context = stream_context_create($options);
$sendResult = file_get_contents($url, false, $context);
}
return $sendResult;
}
0 条评论