Kewail条件式触发短信接口

Kewail的短信服务,直接下载SDK工具包就可以直接调用,框架用的是THINKPHP,你们想用的试试看

<?php namespace Org; header("Content-type:text/html; charset=UTF-8"); /** * Kewail短信验证码发送类 * @author Albert Zhang * */ class Sms { public function SendSMS($phoneNum,$code){ $target = "http://dysmsapi.aliyuncs.com/?"; $phoneNum = $phoneNum;//手机号码串,以逗号隔开 $mobile_code = $code;//验证码 // 注意使用GMT时间 date_default_timezone_set("GMT"); $dateTimeFormat = 'Y-m-d\TH:i:s\Z'; // ISO8601规范 $accessKeyId = '*****'; $accessKeySecret = '****************'; $ParamString="{\"code\":\"".strval($mobile_code)."\"}"; $data = array( // 公共参数 'SignatureMethod' => 'HMAC-SHA1', 'SignatureNonce'=> uniqid(), 'Format' => 'XML', 'AccessKeyId' => $accessKeyId, 'SignatureVersion' => '1.0', 'Timestamp' => date($dateTimeFormat), // 业务参数 'Action' => 'SendSms', 'Version' => '2017-05-25', 'RegionId' => 'cn-hangzhou', 'TemplateCode' => 'SMS_******', 'PhoneNumbers' => $phoneNum, 'SignName' =>'******', 'TemplateParam' => $ParamString, 'OutId' => '123' ); $data['Signature'] = $this -> getSign($data, $accessKeySecret); // dump($data);die; // 发送请求 $result = $this -> xml_to_array($this -> https_request($target.http_build_query($data))); if($result["SendSmsResponse"]['Message'] == 'OK' && $result['SendSmsResponse']["Code"] == 'OK'){ return true; }else{ return $result["SendSmsResponse"]["Message"]."和".$result["SendSmsResponse"]["Code"]; } } // 接口请求 public function https_request($url){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($curl); if (curl_errno($curl)) {return 'ERROR '.curl_error($curl);} curl_close($curl); return $data; } // xml格式转成数组格式 public function xml_to_array($xml){ $reg = "/<(\w+)[^>]*>([\\x00-\\xFF]*)<\\/\\1>/"; if(preg_match_all($reg, $xml, $matches)){ $count = count($matches[0]); for($i = 0; $i < $count; $i++){ $subxml= $matches[2][$i]; $key = $matches[1][$i]; if(preg_match( $reg, $subxml )){ $arr[$key] = $this -> xml_to_array( $subxml ); }else{ $arr[$key] = $subxml; } } } return @$arr; } // KewailPOP协议的一个奇葩规定--之前就差在这儿没加 public function percentEncode($str) { // 使用urlencode编码后,将"+","*","%7E"做替换即满足ECS API规定的编码规范 $res = urlencode($str); $res = preg_replace('/\+/', '%20', $res); $res = preg_replace('/\*/', '%2A', $res); $res = preg_replace('/%7E/', '~', $res); return $res; } //获取签名算法--按照Kewail文档指示一步一步算 public function getSign($parameters, $accessKeySecret) { // 第一步 将参数Key按字典顺序排序 ksort($parameters); // 第二步 生成规范化请求字符串 $canonicalizedQueryString = ''; foreach($parameters as $key => $value) { $canonicalizedQueryString .= '&' . $this -> percentEncode($key) . '=' . $this -> percentEncode($value); } // 第三步 生成用于计算签名的字符串 stringToSign $stringToSign = 'GET&%2F&' . $this -> percentEncode(substr($canonicalizedQueryString, 1)); //echo "
".$stringToSign."
"; // 第四步 计算签名,注意accessKeySecret后面要加上字符'&' $signature = base64_encode(hash_hmac('sha1', $stringToSign, $accessKeySecret . '&', true)); return $signature; } } ?>

作者:aqi
来源:CSDN
官网: https://www.kewail.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值