步骤 1 使用阿里云短信服务正常发短信需要

  • 短信签名
  • 短信模板
  1. 1申请短信签名

      根据用户属性来创建符合自身属性的签名信息。企业用户需要上传相关企业资质证明,个人用户需要上传证明个人身份的证明。

      短信签名需要审核通过后才可以使用。



    1.2 申请短信模板

      短信模板,即具体发送的短信内容。短信模板可以支持验证码、短信通知、推广短信、国际/港澳台消息四种模式。验证码和短信通知,通过变量替换实现个性短信定制。推广短信不支持在模板中添加变量。

      短信模板需要审核通过后才可以使用。

步骤 2 获取阿里云访问密钥

调用短信API还需要两个参数:

  • Access Key ID
  • Access Key Secret

  可以通过阿里云控制台的 秘钥管理页面 创建、管理所有的访问秘钥对,且保证它处于“启用”状态。由于访问秘钥是阿里云对 API 请求进行安全验证的关键因子,请妥善保管你的访问秘钥。如果某些秘钥对出现泄漏风险,建议及时删除该秘钥对并生成新的替代秘钥对。

步骤 3 将阿里云短信整合进Laravel进行开发



  下载阿里云提供的SDK开发并将api_sdk/lib/Core和api_sdk/lib/Api复制一份放到项目app/Tools/dysms下,没有的话需要自己创建。



打开项目根目录下的composer.json文件,在classmap,加上图示代码



打开命令行工具在项目根目录输入:

composer dumpautoload

执行成功如下图



接下来就是正式的开发了,直接使用sdk里面导入包的方式进行引入:



第一次postman测试运行报错如下:



这是因为EndpointerProvider里面,没有setEndpoints就直接使用了getEndpointers,所以返回为空信息,setEndpoints操作是在EndpointConf中调用的,加载xml中的endpoints,在调用代码中加入

// 手动加载endpoint
EndpointConfig::load();

再次运行代码发现报如下错误:



这是因为代理的原因,注释一下代码就可以了:

开发完整代码,github源码地址

<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input; use Aliyun\Core\Profile\DefaultProfile;
use Aliyun\Core\DefaultAcsClient;
use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest;
use Aliyun\Core\Regions\EndpointConfig; class Dysms extends Controller
{
static $acsClient = null; //阿里短信
public function Dysms()
{
// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new SendSmsRequest(); //可选-启用https协议
//$request->setProtocol("https"); // 必填,设置短信接收号码
$request->setPhoneNumbers(Input::get('phone')); // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign
$request->setSignName("签名"); // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template
$request->setTemplateCode("模版CODE"); // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项
$request->setTemplateParam(json_encode(array(
// 短信模板中字段的值
"code" => rand(000000, 999999),
"product" => "dsd"
), JSON_UNESCAPED_UNICODE)); // 可选,设置流水号
$request->setOutId("1234567"); // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段)
// $request->setSmsUpExtendCode("1234567");
// 发起访问请求
$acsResponse = static::getAcsClient()->getAcsResponse($request);
//打印执行结果
dd($acsResponse);
// 执行成功后的返回状态
// {#1538
// +"Message": "OK"
// +"RequestId": "0CE56BFE-5E9A-4F3F-8AEC-5C524720CE83"
// +"BizId": "480519725607521112^0"
// +"Code": "OK"
// }
} /**
* 取得AcsClient
*
* @return DefaultAcsClient
*/
public static function getAcsClient()
{
//产品名称:云通信流量服务API产品,开发者无需替换
$product = "Dysmsapi";
//产品域名,开发者无需替换
$domain = "dysmsapi.aliyuncs.com";
// TODO 此处需要替换成开发者自己的AK (https://ak-console.aliyun.com/)
// AccessKeyId
$accessKeyId = "AccessKeyId";
// AccessKeySecret
$accessKeySecret = "AccessKeySecret";
// 暂时不支持多Region
$region = "cn-hangzhou";
// 服务结点
$endPointName = "cn-hangzhou";
if (static::$acsClient == null) {
//初始化acsClient,暂不支持region化
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
// 手动加载endpoint
EndpointConfig::load();
// 增加服务结点
DefaultProfile::addEndpoint($endPointName, $region, $product, $domain);
// 初始化AcsClient用于发起请求
static::$acsClient = new DefaultAcsClient($profile);
}
return static::$acsClient;
}
}

PS:最后不得不吐槽下,阿里用OSS和阿里短信好多坑啊,这么大的一个公司。

PHP开发实用-阿里短信服务(Short Message Service)的更多相关文章

  1. PHP接入阿里云市场 阿里短信服务DEMO

    阿里短信服务:支持三大运营商短信.智能管道等优质能力,产品特点:3秒可达.99%到达率.超低资费. 使用阿里短信服务步骤: 1.购买服务 到https://market.aliyun.com/prod ...

  2. SpringBoot整合阿里短信服务

    导读 由于最近手头上需要做个Message Gateway,涉及到:邮件(点我直达).短信.公众号(点我直达)等推送功能,网上学习下,整理下来以备以后使用. 步骤 点我直达 登录短信服务控制台 点我直 ...

  3. asp.net core 阿里云消息服务(Message Service,原MQS)发送接口的实现

    最近在后台处理订单统计等相关功能用到了大力的mqs,由于官方没有实现asp.net core的sdk,这里简单实现了发送信息的功能,有兴趣的可以参考实现其他相关功能 using System;usin ...

  4. python3配置阿里云短信服务

    1.申请阿里云短信服务,具体步骤看我的python2-Django配置短信服务 2.安装依赖 aliyun-python-sdk-core-v3 aliyun-python-sdk-dysmsapi= ...

  5. 阿里云短信服务(JAVA)

    一,前言 ​ 短信验证码想必大家都不陌生,在很多网站,APP中都有使用到.比如登录,注册,身份校验等场景.不过通常情况下,短信服务都是外包给第三方公司的,接下来向大家分享如何使用阿里的短信服务. 二, ...

  6. 阿里云短信服务发送短信验证码(JAVA开发此功能)

    开发此功能需注册阿里云账号,并开通短信服务(免费开通) 充值后,不会影响业务的正常使用!(因为发送验证类短信:1-10万范围的短信是0.045元/条).开发测试使用,充2块钱测试足够了 可参考阿里云官 ...

  7. springboot 项目使用阿里云短信服务发送手机验证码

    1.注册阿里云账户进行账号实名认证 2.申请短信签名和模板 3.创建access_key和access_secret 4.然后就是代码编写 一.找到产品与服务里面的云通信模块,然后找到短信服务,开通短 ...

  8. php 阿里云短信服务及阿里大鱼实现短信验证码的发送

    一:使用阿里云的短信服务 ① 申请短信签名 ②申请短信模板 ③创建Access Key,获取AccessKeyId 与 AccessKeySecret.(为了安全起见,这里建议使用子用户的Access ...

  9. 阿里云短信服务bug

    接入阿里云短信服务,在springboot中写测试方法,执行到 IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou ...

随机推荐

  1. 关于C++成员函数指针的使用

    在做项目的时候,遇到了在类中根据不同的调用函数,在被调用函数的某处需要做不同的处理,本来就想着直接在类中设个标记变量判断下就好了,不过觉得这样代码可能看起来会有些凌乱,而且效率估计有些低,于是想起来使 ...

  2. spring cloud zuul 配置(Robbin 和 熔断)

    #启动负载均衡的重试机制,默认falsespring.cloud.loadbalancer.retry.enabled=true#Hystrix是否启用超时时间hystrix.command.defa ...

  3. effective javascript 学习心得

    第2条:理解JavaScript的浮点数 1.js数字只有一种类型 2.见代码 /** * Created by Administrator on 2017/7/2. */ console.log(& ...

  4. Redis常用类型数据操作

    sortedset: 添加: zadd key score1 member1 score2 member2...  zad mysort 90 laosong 100 zhangsan 获得:zsco ...

  5. Mybatis 针对ORACLE和MYSQL的批量插入与多参数批量删除

    今天利用Mybatis的<for each>标签做oracle的批量插入数据时,发现和MySQL数据库有区别.在此记录下,以防之后再踩坑. 一.批量插入: 1.controller: /* ...

  6. 学习python必备的学习网站

    Django框架学习必备网站: 官方网站   https://www.djangoproject.com/ 1.11版英文文档   https://docs.djangoproject.com/en/ ...

  7. wamp 初始化 修改mysql密码

    1.设置phpmyadmin 在WampServer安装完成后,通过http://localhost/打开后可以看到WampServer自带的一个简单的页面,里面有phpinfo.phpmyadmin ...

  8. AssetBundle依赖

    [Managing asset dependencies] 一个Asset会依赖其它Asset.可以把一个Asset所依赖的Asset也打包进自己的AssetBundle.可是多个Asset可能依赖同 ...

  9. Cassandra读写性能测试

    1. 测试目的 测试Cassandra集群读写TPS的极值,确定Cassandra读写性能. 2. 测试环境 2.1 硬件信息 CPU 8核 Intel(R) Xeon(R) CPU E5-2650 ...

  10. cf499A-Watching a movie

    http://codeforces.com/problemset/problem/499/A A. Watching a movie   You have decided to watch the b ...