欢迎您访问我的笔记本站旨在于记录一些平时工作中遇到的一些问题和解决方法,方便查阅,部分内容来源于网络,如有侵权请联系我删除
  • 微信微信
您现在的位置是:首页 > PHP后端

短信接口----阿里云短信服务-[原创]

日期:2018-09-14 10:18:12 作者:tanyi 来源:我的笔记 浏览:1826 次
实际各大平台的短信接口文档已经写得很详细,但是会有少许新手不会使用,这里简单说下阿里云短信接口的使用

首先登陆阿里云平台,点左侧产品与服务菜单找到短信服务,然后点击进去

image.png

然后点击AccessKey获取你的accessKeyId和accessKeySecret,这个是调用短信接口重要凭证

image.png

这一步获取成功后点击左侧国内短信,在这里面你可以创建你的短信签名和短信模板,这两个东西也是调用短信接口必不可少的

image.png

image.png

上面几步都搞定了现在就可以下载demo开始来调试短信接口的使用了,点左侧帮助文档,鼠标移至开发指南,然后点击SDK及DEMO下载

image.png

选择轻量版下载,前面那个比较大,很多功能使用不到,没必要

image.png

解压下载下来的文件,里面有这些东西

image.png

把SignatureHelper.php和demo文件夹里面的sendSms.php复制出来放在同一文件夹,sendSms.php需要包含引用SignatureHelper.php这个文件,具体位置可以根据你实际需要来放置,这里我直接把它们两个放在同一文件夹里面,然后开始调试

image.png

如图,由于SignatureHelper.php原来是在sendSms.php的上一级目录,现在我们把它放置在同一级目录了,所以先得把这个路径改一下,改成这样

require_once "./SignatureHelper.php";

下面开始配置参数

/**
 * 发送短信
 */
function sendSms() {

    $params = array ();

    // *** 需用户填写部分 ***
    // fixme 必填:是否启用https
    $security = false;
    

    // fixme 必填: 请参阅 https://ak-console.aliyun.com/ 取得您的AK信息
    
    $accessKeyId = "your access key id";  //你获取到的accessKeyId
    
    $accessKeySecret = "your access key secret";  //你获取到的accessKeySecret

    
    
    
    // fixme 必填: 短信接收号码
        
    $params["PhoneNumbers"] = "17000000000";
    
    

    //必填: 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
    $params["SignName"] = "短信签名";
    
    

    //必填:请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
    $params["TemplateCode"] = "SMS_0000001";
    
    

    // fixme 可选: 设置模板参数, 假如模板中存在变量需要替换则为必填项
    //这个数组里面的参数是指你创建的模板里面的参数,比如你模板创建的是这样:欢迎使用${product},你的验证码是${code}。那么你就可以像下面这样配置你的模板参数
    $params['TemplateParam'] = Array (
        "code" => "12345",
        "product" => "阿里通信"
    );
    
    

    // fixme 可选: 设置发送短信流水号
    //$params['OutId'] = "12345";
    
    

    // fixme 可选: 上行短信扩展码, 扩展码字段控制在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",
        )),
        $security
    );

    return $content;
}

上面所有信配置无误后就可以开始发送短信了。直接调用sendSms()方法.

ini_set("display_errors", "on"); // 显示错误提示,仅用于测试时排查问题

set_time_limit(0); // 防止脚本超时,仅用于测试使用,生产环境请按实际情况设置

header("Content-Type: text/plain; charset=utf-8"); // 输出为utf-8的文本格式,仅用于测试

// 验证发送短信(SendSms)接口
print_r(sendSms());


image.png

ok,发送成功,如遇发送失败,根据返回的Code对应查看错误原因


错误码对照:


OK请求成功
isp.RAM_PERMISSION_DENYRAM权限DENY
isv.OUT_OF_SERVICE业务停机
isv.PRODUCT_UN_SUBSCRIPT未开通云通信产品的阿里云客户
isv.PRODUCT_UNSUBSCRIBE产品未开通
isv.ACCOUNT_NOT_EXISTS账户不存在
isv.ACCOUNT_ABNORMAL账户异常
isv.SMS_TEMPLATE_ILLEGAL短信模板不合法
isv.SMS_SIGNATURE_ILLEGAL短信签名不合法
isv.INVALID_PARAMETERS参数异常
isp.SYSTEM_ERROR系统错误
isv.MOBILE_NUMBER_ILLEGAL非法手机号
isv.MOBILE_COUNT_OVER_LIMIT手机号码数量超过限制
isv.TEMPLATE_MISSING_PARAMETERS模板缺少变量
isv.BUSINESS_LIMIT_CONTROL业务限流
isv.INVALID_JSON_PARAMJSON参数不合法,只接受字符串值
isv.BLACK_KEY_CONTROL_LIMIT黑名单管控
isv.PARAM_LENGTH_LIMIT参数超出长度限制
isv.PARAM_NOT_SUPPORT_URL不支持URL
isv.AMOUNT_NOT_ENOUGH账户余额不足


提交评论
评论列表