—————— 腾讯云 ——————
php后台:
// 获取发送短信的信息,并由前端发送和验证 public function getCaptcha() { if (request()->isPost()) { $phone = input('post.phone'); $appid = config('qcloud_sms.sdkAppId'); $appkey = config('qcloud_sms.sdkAppKey'); $random = digital_rand(6); $captcha = digital_rand(4); //随机产生4位的验证码 $time = time(); $url = 'https://yun.tim.qq.com/v5/tlssmssvr/sendsms?sdkappid=' . $appid . '&random=' . $random; $data = [ "ext" => "", "extend" => "", "msg" => $captcha . '为您的验证码,请于2分钟内填写。如非本人操作,请忽略本短信。', "sig" => hash('sha256', 'appkey=' . $appkey . '&random=' . $random . '&time=' . $time . '&mobile=' . $phone), "tel" => [ "mobile" => $phone, "nationcode" => "86" ], "time" => $time, "type" => 0 ]; $res = [ 'url' => $url, 'data' => $data, 'captcha' => $captcha ]; return json($res); } }
前端:
wx.request({ header: { 'content-type': 'application/json' }, method: 'POST', dataType: 'json', url: getApp().globalData.serverUrl + 'api/captcha/getCaptcha', data: { phone: phone }, success: function (res) { var info = res.data; console.log(info); checkCaptcha = info.captcha; //定义验证码,提交的时候进行验证 console.log('发送的验证码是:' + checkCaptcha); var postUrl = info.url; var postData = info.data; // 请求发送短信 wx.request({ header: { 'content-type': 'application/json' }, method: 'POST', dataType: 'json', url: postUrl, data: postData, success: function (res) { if (res.data.result == '0') { wx.showToast({ title: '发送短信成功', }) } } }); } });
—————— 阿里云 ——————
1、下载短信dysmsapi-lite-php.zip(这个是比较小的包),放在extend,并重命名为aliyunsms
2、里面的类的命名空间改为namespace aliyunsms(重要:命名空间必须和目录路径一致)
3、在需要调用处进行测试,代码如下:
<?php namespace app\mobile\controller; ini_set('date.timezone', 'Asia/Shanghai'); use \aliyunsms\SignatureHelper; // 登录控制器 class Login extends Common {//短信发送测试 public function testSendMsg(){ $params = array (); // *** 需用户填写部分 *** //必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息 $accessKeyId = config('aliyunsms.accessKeyId'); $accessKeySecret = config('aliyunsms.accessKeySecret'); //必填: 短信接收号码 $params["PhoneNumbers"] = "186888XXXXX"; // 必填: 短信签名,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign $params["SignName"] = config('aliyunsms.SignName'); // 必填: 短信模板Code,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template $params["TemplateCode"] = config('aliyunsms.TemplateCode'); // 可选: 设置模板参数, 假如模板中存在变量需要替换则为必填项 $code = digital_rand(4); //随机产生4位的验证码 $params['TemplateParam'] = Array ( "code" => $code, //验证码 //"product" => "阿里通信" ); // 可选: 设置发送短信流水号 $params['OutId'] = "12345"; // 可选: 上行短信扩展码, 扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段 $params['SmsUpExtendCode'] = "1234567"; // *** 需用户填写部分结束, 以下代码若无必要无需更改 *** if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) { $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE); } // 初始化SignatureHelper实例用于设置参数,签名以及发送请求 $helper = new SignatureHelper(); // 此处可能会抛出异常,注意catch $content = $helper->request( $accessKeyId, $accessKeySecret, "dysmsapi.aliyuncs.com", array_merge($params, array( "RegionId" => "cn-hangzhou", "Action" => "SendSms", "Version" => "2017-05-25", )) // 选填: 启用https ,true ); $res = (array)$content; $msg = $res['Message']; if($msg == 'ok'){ return 'success'; }else{ return $msg; } } }