天翼云开放平台短信接口php类

<?php
/**
* 手机验证码类
*/
class phone_verify
{
	/*
	*获取手机验证码
	*/
	public static function get_phone($phone)
	{
		$app_id = '2';
		$app_secret = '8';
		$data = self::get_access_token($app_id,$app_secret);
		$token = self::get_token($data['access_token'],$app_id,$app_secret);
		$callBackData = self::get_verify($phone,$token,$app_id,$app_secret,$data['access_token']);
		echo '<pre>';
		var_dump($callBackData);die;
	}

	/*
	*获取临时token
	*res_code状态码
	*res_message状态消息
	*access_token令牌
	*expires_in有效时间
	*/
	private static function get_access_token($app_id,$app_secret)
	{
		date_default_timezone_set('PRC'); 
		$nowdata = "app_id=".$app_id."&app_secret=".$app_secret."&grant_type=client_credentials";
		$ch = curl_init("https://oauth.api.189.cn/emp/oauth2/v3/access_token"); 
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
		curl_setopt($ch,CURLOPT_POST,1);//使用post提交数据 
		curl_setopt($ch,CURLOPT_POSTFIELDS,$nowdata);//设置 post提交的数据 
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
		// 从证书中检查SSL加密算法是否存在 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
		$access_token = curl_exec($ch); 
		curl_close($ch);
		$data = json_decode($access_token,true);
		$time = $data['expires_in'];
		if($time < 0){
			get_access_token();
		}
		return $data;
	}

	private static function get_token($access_token,$app_id,$app_secret)
	{
		$timestamp = date('Y-m-d H:i:s');
		$url = "http://api.189.cn/v2/dm/randcode/token?";
        $param['app_id']= "app_id=".$app_id;
        $param['access_token'] = "access_token=" . $access_token;
        $param['timestamp'] = "timestamp=".$timestamp;
        ksort($param);
        $plaintext = implode("&",$param);
        $param['sign'] = "sign=".rawurlencode(base64_encode(hash_hmac("sha1", $plaintext, $app_secret, $raw_output=True)));
        ksort($param);
        $url .= implode("&",$param);
        $result = self::curl_get($url);
        $resultArray = json_decode($result,true);
        return $token = $resultArray['token'];
	}

	/*
	*获取验证码
	*param $exptime 默认2分钟
	*/
	private static function get_verify($phone,$token,$app_id,$app_secret,$access_token)
	{
		$timestamp = date('Y-m-d H:i:s');
		$exp_time = 3;
		$dataurl = 'http://proxy.php';
		$url = "http://api.189.cn/v2/dm/randcode/send";
        
        $param['app_id']= "app_id=".$app_id;
        $param['access_token'] = "access_token=".$access_token;
        $param['timestamp'] = "timestamp=".$timestamp;
        $param['token'] = "token=".$token;
        $param['phone'] = "phone=".$phone;
        $param['url'] = "url=".$dataurl;
        if(isset($exp_time))
            $param['exp_time'] = "exp_time=".$exp_time;
        ksort($param);
        $plaintext = implode("&",$param);
        $param['sign'] = "sign=".rawurlencode(base64_encode(hash_hmac("sha1", $plaintext, $app_secret, $raw_output=True)));
        ksort($param);
        $str = implode("&",$param);
        $result = self::curl_post($url,$str);
        return $resultArray = json_decode($result,true);
	}

	private static function curl_get($url='', $options=array())
	{
	    $ch = curl_init($url);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    if (!empty($options)){
	        curl_setopt_array($ch, $options);
	    }
	    $data = curl_exec($ch);
	    curl_close($ch);
	    return $data;
	}

	private static function curl_post($url='', $postdata='', $options=array())
	{
	    $ch = curl_init($url);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_POST, 1);
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    if (!empty($options)){
	        curl_setopt_array($ch, $options);
	    }
	    $data = curl_exec($ch);
	    curl_close($ch);
	    return $data;
	}

}
	phone_verify::get_phone(132);
关于回调URL,这个东西恶心,都返回成功的状态了,还要走回调URL,并且还不好操作,不是上面要用这个平台,真心没兴趣,恶心。。php可以拿去用了,只要改几个地方就行。


原来测试短信免费的20条要这样玩走URL,真实短信就不用了。下面是线上玩法。

<?php
/**
* 手机验证码类
*/

class sendSMS
{
	/*
	*获取手机验证码
	*/
	public static function get_phone($phone,$rand_code)
	{
		$app_id = '';
		$app_secret = '';
		$data = self::get_access_token($app_id,$app_secret);
		$token = self::get_token($data['access_token'],$app_id,$app_secret);
		$callBackData = self::get_verify($phone,$token,$app_id,$app_secret,$data['access_token'],$rand_code);
		return $callBackData;
	}

	/*
	*获取临时token
	*res_code状态码
	*res_message状态消息
	*access_token令牌
	*expires_in有效时间
	*/
	private static function get_access_token($app_id,$app_secret)
	{
		date_default_timezone_set('PRC'); 
		$nowdata = "app_id=".$app_id."&app_secret=".$app_secret."&grant_type=client_credentials";
		$ch = curl_init("https://oauth.api.189.cn/emp/oauth2/v3/access_token"); 
		curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
		curl_setopt($ch,CURLOPT_POST,1);//使用post提交数据 
		curl_setopt($ch,CURLOPT_POSTFIELDS,$nowdata);//设置 post提交的数据 
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
		// 从证书中检查SSL加密算法是否存在 
		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); 
		$access_token = curl_exec($ch); 
		curl_close($ch);
		$data = json_decode($access_token,true);
		$time = $data['expires_in'];
		if($time < 0){
			get_access_token();
		}
		return $data;
	}

	private static function get_token($access_token,$app_id,$app_secret)
	{
		$timestamp = date('Y-m-d H:i:s');
		$url = "http://api.189.cn/v2/dm/randcode/token?";
        $param['app_id']= "app_id=".$app_id;
        $param['access_token'] = "access_token=" . $access_token;
        $param['timestamp'] = "timestamp=".$timestamp;
        ksort($param);
        $plaintext = implode("&",$param);
        $param['sign'] = "sign=".rawurlencode(base64_encode(hash_hmac("sha1", $plaintext, $app_secret, $raw_output=True)));
        ksort($param);
        $url .= implode("&",$param);
        $result = self::curl_get($url);
        $resultArray = json_decode($result,true);
        return $token = $resultArray['token'];
	}

	/*
	*获取验证码
	*param $exptime 默认3分钟
	*/
	private static function get_verify($phone,$token,$app_id,$app_secret,$access_token,$rand_code)
	{
		$timestamp = date('Y-m-d H:i:s');
		$exp_time = 3;
		$dataurl = 'http://proxy.php';
		$url = "http://api.189.cn/v2/dm/randcode/sendSms";
        
        $param['app_id']= "app_id=".$app_id;
        $param['access_token'] = "access_token=".$access_token;
        $param['timestamp'] = "timestamp=".$timestamp;
        $param['token'] = "token=".$token;
        $param['phone'] = "phone=".$phone;
        $param['randcode'] = "randcode=".$rand_code;
        $param['url'] = "url=".$dataurl;
        if(isset($exp_time))
            $param['exp_time'] = "exp_time=".$exp_time;
        ksort($param);
        $plaintext = implode("&",$param);
        $param['sign'] = "sign=".rawurlencode(base64_encode(hash_hmac("sha1", $plaintext, $app_secret, $raw_output=True)));
        ksort($param);
        $str = implode("&",$param);
        $result = self::curl_post($url,$str);
        return $resultArray = json_decode($result,true);
	}

	private static function curl_get($url='', $options=array())
	{
	    $ch = curl_init($url);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    if (!empty($options)){
	        curl_setopt_array($ch, $options);
	    }
	    $data = curl_exec($ch);
	    curl_close($ch);
	    return $data;
	}

	private static function curl_post($url='', $postdata='', $options=array())
	{
	    $ch = curl_init($url);
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	    curl_setopt($ch, CURLOPT_POST, 1);
	    curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    if (!empty($options)){
	        curl_setopt_array($ch, $options);
	    }
	    $data = curl_exec($ch);
	    curl_close($ch);
	    return $data;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值