腾讯云和阿里云短信接口的使用

—————— 腾讯云 ——————

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

 

转载于:https://www.cnblogs.com/windyet/articles/9083118.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值