php写短信接口怎么写,短信接口php接口示例_sms程序开发_sms平台_sms接口_sms_php接口示例...

本文详细介绍了如何使用PHP结合smsapi.class.php类库来发送短信,包括变量模板和全文模板的发送方法。示例代码展示了如何设置接口账号、密码、手机号码、内容参数等,并解释了各种返回状态码的含义。此外,还提供了获取剩余短信条数、发送状态等功能的调用方法。
摘要由CSDN通过智能技术生成

php短信接口示例

/*--------------------------------

功能:使用smsapi.class.php类发送短信

说明:http://api.sms7.cn/sms/?ac=send&uid=用户账号&pwd=MD5位32密码&mobile=号码&content=内容

官网:www.sms7.cn

状态:{"stat":"100","message":"发送成功"}

100 发送成功

101 验证失败

102 短信不足

103 操作失败

104 非法字符

105 内容过多

106 号码过多

107 频率过快

108 号码内容空

109 账号冻结

112号码错误

116 禁止接口发送

117 绑定IP不正确

161 未添加短信模板

162 模板格式不正确

163 模板ID不正确

164 全文模板不匹配

--------------------------------*/

include 'smsapi.class.php';

//接口账号

$uid = 'testsms';

//登录密码

$pwd = 'test22224234';

/**

* 实例化接口

*

* @param string $uid 接口账号

* @param string $pwd 接口密码

*/

$api = new SmsApi($uid,$pwd);

/*

* 变量模板发送示例

* 模板内容:您的验证码是:{$code},对用户{$username}操作绑定手机号,有效期为5分钟。如非本人操作,可不用理会。【云信】

* 变量模板ID:100003

*/

//发送的手机 多个号码用,英文逗号隔开

$mobile = '15900000000';

//短信内容参数

$contentParam = array(

'code'=> $api->randNumber(),

'username'=> '您好'

);

//变量模板ID

$template = '100005';

//发送变量模板短信

$result = $api->send($mobile,$contentParam,$template);

if($result['stat']=='100')

{

echo '发送成功';

}

else

{

echo '发送失败:'.$result['stat'].'('.$result['message'].')';

}

/*

* 全文模板发送示例

* 模板内容:登录验证码:{**}。如非本人操作,可不用理会!【云信】

*

*/

//发送的手机 多个号码用,英文逗号隔开

$mobile = '15900000000';

//短信内容

$content = '登录验证码:'.$api->randNumber().'。如非本人操作,可不用理会!【云信】';

//发送全文模板短信

$result = $api->sendAll($mobile,$content);

if($result['stat']=='100')

{

echo '发送成功';

}

else

{

echo '发送失败:'.$result['stat'].'('.$result['message'].')';

}

//当前请求返回的原始信息

//echo $api->getResult();

//取剩余短信条数

//print_r($api->getNumber());

//获取发送状态

//print_r($api->getStatus());

//接收上行短信(回复)

//print_r($api->getReply());

?>

smsapi.class.php

/**

SMS短信接口类

@authorsms7.cn

@linkhttp://www.sms7.cn

*/

class SmsApi {

/**

* SMSAPI请求地址

*/

const API_URL = 'http://api.sms7.cn/sms/';

/**

* 接口账号

*

* @var string

*/

protected $uid;

/**

* 接口密码

*

* @var string

* @link http://sms.sms7.cn/ 请到此处(短信设置->接口密码)获取

*/

protected $pwd;

/**

* sms api请求地址

* @var string

*/

protected $apiURL;

/**

* 短信发送请求参数

* @var string

*/

protected $smsParams;

/**

* 接口返回信息

* @var string

*/

protected $resultMsg;

/**

* 接口返回信息格式

* @var string

*/

protected $format;

/**

* 构造方法

*

* @param string $uid 接口账号

* @param string $pwd 接口密码

*/

public function __construct($uid = '', $pwd = '')

{

//用户和密码可直接写在类里

$def_uid = '';

$def_pwd = '';

$this->uid= $uid ?: $def_uid;

$this->pwd= $pwd ?: $def_pwd;

$this->apiURL = self::API_URL;

$this->format = 'json';

}

/**

* SMS公共参数

* @return array

*/

protected function publicParams()

{

return array(

'uid'=> $this->uid,

'pwd'=> md5($this->pwd.$this->uid),

'format'=> $this->format,

);

}

/**

* 发送变量模板短信

*

* @param string $mobile 手机号码

* @param string $content 短信内容参数

* @param string $template 短信模板ID

* @return array

*/

public function send($mobile, $contentParam,$template='') {

//短信发送参数

$this->smsParams = [

'ac'=> 'send',

'mobile'=> $mobile,

'content'=> json_encode($contentParam),

'template'=> $template

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 发送全文模板短信

*

* @param string $mobile 手机号码

* @param string $content 短信内容

* @return array

*/

public function sendAll($mobile, $content) {

//短信发送参数

$this->smsParams = [

'ac'=> 'send',

'mobile'=> $mobile,

'content'=> $content,

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 取剩余短信条数

*

* @return array

*/

public function getNumber() {

//参数

$this->smsParams = [

'ac'=> 'number',

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 获取发送状态

*

* @return array

*/

public function getStatus() {

//参数

$this->smsParams = [

'ac'=> 'status',

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 接收上行短信(回复)

*

* @return array

*/

public function getReply() {

//参数

$this->smsParams = [

'ac'=> 'reply',

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 取已发送总条数

*

* @return array

*/

public function getSendTotal() {

//参数

$this->smsParams = [

'ac'=> 'number',

'cmd'=> 'send',

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 取发送记录

*

* @return array

*/

public function getQuery() {

//参数

$this->smsParams = [

'ac'=> 'query',

];

$this->resultMsg = $this->request();

return $this->json_to_array($this->resultMsg, true);

}

/**

* 发送HTTP请求

* @return string

*/

private function request()

{

$params = array_merge($this->publicParams(),$this->smsParams);

if( function_exists('curl_init') )

{

return $this->curl_request($this->apiURL,$params);

}

else

{

return $this->file_get_request($this->apiURL,$params);

}

}

/**

* 通过CURL发送HTTP请求

* @param string $url //请求URL

* @param array $postFields //请求参数

* @return string

*/

private function curl_request($url,$postFields){

$postFields = http_build_query($postFields);

//echo $url.'?'.$postFields;

$ch = curl_init ();

curl_setopt ( $ch, CURLOPT_POST, 1 );

curl_setopt ( $ch, CURLOPT_HEADER, 0 );

curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );

curl_setopt ( $ch, CURLOPT_URL, $url );

curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postFields );

$result = curl_exec ( $ch );

curl_close ( $ch );

return $result;

}

/**

* 通过file_get_contents发送HTTP请求

* @param string $url //请求URL

* @param array $postFields //请求参数

* @return string

*/

private function file_get_request($url,$postFields)

{

$post='';

while (list($k,$v) = each($postFields))

{

$post .= rawurlencode($k)."=".rawurlencode($v)."&";//转URL标准码

}

return file_get_contents($url.'?'.$post);

}

/**

* 获取当前HTTP请返回信息

* @return string

*/

public function getResult()

{

$this->resultMsg;

}

/**

* 获取随机位数数字

* @param integer $len 长度

* @return string

*/

public function randNumber($len = 6)

{

$chars = str_repeat('0123456789', 10);

$chars = str_shuffle($chars);

$str = substr($chars, 0, $len);

return $str;

}

//url转码

function json_urlencode($p)

{

if( is_array($p) )

{

foreach( $p as $key => $value )$p[$key] = $this->json_urlencode($value);

}

else

{

$p = urlencode($p);

}

return $p;

}

//把json字符串转数组

function json_to_array($p)

{

if( mb_detect_encoding($p,array('ASCII','UTF-8','GB2312','GBK')) != 'UTF-8' )

{

$p = iconv('GBK','UTF-8',$p);

}

return json_decode($p, true);

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值