<?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;
}
}