阿里云发送短信

admin8个月前Laravel430

public function sms()
{

   $moile = request()->input('mobile');
   if (!$moile) {
       return $this->error('请输入手机号');
   }
   $info = Db::table('code')->insert(['phone' => $moile, 'code' => 123456, 'status' => '0', 'time' => time()]);

   return $this->success('发送成功');
   exit;

   $code = mt_rand(100000, 999999);
   $templateParam = array(
       'code' => $code // 模板中变量的值
   );

   $params = array(
       'PhoneNumbers' => $moile,
       'SignName' => $this->signName,
       'TemplateCode' => $this->templateCode,
       'TemplateParam' => json_encode($templateParam),
   );

   $params['RegionId'] = 'cn-hangzhou';
   $params['Action'] = 'SendSms';
   $params['Version'] = '2017-05-25';
   $params['Format'] = 'JSON';
   $params['SignatureMethod'] = 'HMAC-SHA1';
   $params['SignatureVersion'] = '1.0';
   $params['SignatureNonce'] = uniqid();
   $params['Timestamp'] = gmdate('Y-m-d\TH:i:s\Z');
   $params['AccessKeyId'] = $this->accessKeyId;
   ksort($params);
   $canonicalizedQueryString = '';
   foreach ($params as $key => $value) {
       $canonicalizedQueryString .= '&' . $this->encode($key) . '=' . $this->encode($value);
   }
   $stringToSign = 'GET&%2F&' . $this->encode(substr($canonicalizedQueryString, 1));
   $signature = base64_encode(hash_hmac('sha1', $stringToSign, $this->accessKeySecret . '&', true));
   $requestUrl = 'http://dysmsapi.aliyuncs.com/?Signature=' . $this->encode($signature) . $canonicalizedQueryString;

   // 发送 HTTP 请求并处理响应
   $response = file_get_contents($requestUrl);
   $responseObject = json_decode($response);

   if ($responseObject->Code == 'OK') {
       Db::beginTransaction();
       $info = Db::table('code')->insert(['phone' => $moile, 'code' => $code, 'status' => '0', 'time' => time()]);
       if ($info) {
           Db::commit();
           return $this->success('发送成功');
       } else {
           Db::rollBack();
           return $this->error("发送失败");
       }
   } else {
       return $this->error($responseObject->Message);
   }
}


protected function encode($str)
{
   $res = urlencode($str);
   $res = str_replace('+', '%20', $res);
   $res = str_replace('*', '%2A', $res);
   $res = str_replace('%7E', '~', $res);
   return $res;
}


相关文章

laravel 加cache锁

use Illuminate\Support\Facades\Redis; use Illuminate\Support\Facades\Cache; $lock = Ca...

下载文件

public function img_url() { $id = request()->param('id', 1122); $info = Db::name('...

微信开放平台-扫码登录

public function wx_info(){    $code = request()->input('code');    if...

手机号替换

 $vv = substr_replace($vv, '****', 3, 4) ....

上传图片

public function image(){    $obFile = request()->file('image');    if...

抖音小程序码

public function dyqrcode($uid){    $url = "https://open.douyin.com/api/apps/v1/qrcode...