天翼模板短信

浏览:2158 发布日期:2014/05/23 分类:技术分享 关键字: 短信
通过电信天翼平台发送模板短信
基本流程

配置类
return array(
'appid' => '',
'appSecret'=> '',
'acUrl'=> 'https://oauth.api.189.cn/emp/oauth2/v3/authorize', // 授权码地址
'tokenUrl'=> 'https://oauth.api.189.cn/emp/oauth2/v3/access_token', // 表单令牌地址
'smsUrl'=> 'http://api.189.cn/v2/emp/templateSms/sendSms',
'acredirectUrl'=> 'http://127.0.0.1', // ac回调地址
'atredirectUrl'=> 'http://127.0.0.1',//at回调地址
'sendSms' => 'http://api.189.cn/v2/emp/templateSms/sendSms'//发短信接口
);
短信类
class Sms {
var $config;
public function __construct() {
$this->config = require dirname(__FILE__).'/config.php';
}

/**
* http请求
*/
private function httpRequest($url, $param, $method) {
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
if ($method == 'post') {
//拼装param
if( is_array( $param ) ){
foreach( $param as $key => $value ){
$postdata .= $key .'=' .$value.'&';
}
//去除最后一个&;
$postdata = substr( $postdata, 0,-1);
}
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $postdata );
}
ob_start ();
curl_exec ( $ch );
$result = ob_get_contents ();
ob_end_clean ();
curl_close ( $ch );
// 处理返回值
$result = preg_replace ( '/((\r)*(\s)*(\n)+(\s)*)/i', '', $result );
$retarr = json_decode($result,true);
return $retarr;
}

/**
*
* @param unknown $data
*/
public function getSmsVerify( $data ){
//获取授权码
$code = mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9);
//设置带过期时间的验证码
$codet = $code.','.time();
session('smsverify',$codet,60);
$url = $this->config['sendSms'];
$post['app_id'] = $this->config['appid'];
$post['access_token'] = $this->getAccessToken();
$post['acceptor_tel'] = $data['phonenum'];
$post['template_id'] = 91001137;
$post['template_param'] = json_encode(array('app_name'=>$data['username'],'verify_code'=>$code,'valid'=>'60秒'));
$post['timestamp'] = urlencode(date('Y-m-d H:i:s', time()));
ksort( $post );
$res = $this->httpRequest( $url, $post, 'post');
return $res['res_code'];
}

/**
*
* @param unknown $data
*/
public function sendSmsVerify( $data ){
$code = mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9).mt_rand(0,9);
session('smsverify',$code,60);
$url = $this->config['sendSms'];
$post['app_id'] = $this->config['appid'];
$post['access_token'] = $this->getAccessToken( $data['code'] );
$post['acceptor_tel'] = $data['phonenum'];
$post['template_id'] = 91001137;
$post['template_param'] = json_encode(array('app_name'=>$data['username'],'verify_code'=>$code,'valid'=>'60秒'));
$post['timestamp'] = urlencode(date('Y-m-d H:m:s', time()));
$res = $this->httpRequest( $url, $post, 'post');
return $res['res_code'];
}


/**
* 获取AccessToken
*/
private function getAccessToken( $code ) {
$url = $this->config ['tokenUrl'];
$post ['grant_type'] = 'client_credentials';
$post ['app_id'] = $this->config ['appid'];
$post ['app_secret'] = $this->config ['appSecret'];
$res = $this->httpRequest ( $url, $post, 'post' );
return $res['access_token'];
}
}
短信验证
public function verifySmsCode(){
$codet = explode( ',',session('smsverify'));
$code = $codet[0];
$time = $codet[1];
if( !$code ){
//验证码过期
$res['status'] = '-1';
$res['msg'] = '验证码过期';
}else if( (time() - $time) > 60 ){//判断是否过期
//验证码过期
$res['status'] = '-1';
$res['msg'] = '验证码过期';
}else if( I('request.smscode') != $code ){
//验证码不正确
$res['status'] = '0';
$res['msg'] = '验证码错误';
}else{
$res['status'] = '1';
$res['msg'] = '验证码通过';
}
echo json_encode_cn( $res );
}
最佳答案
评论( 相关
后面还有条评论,点击查看>>