作者:廖飞 - CRMEB小程序商城研发项目组长

前言

cremb小程序商城v4.0版本支持短信平台为云信,但有部分用户有需求对接阿里云短信,这篇文章将对阿里云短信平台如何对接方以及对接流程详细说明.

开通阿里云短信

1. 首先登陆阿里云后台找到短信服务,点击控制台 - 进入短信服务

2. 点击国内消息右侧得添加签名按钮,填写必填项申请签名

3. 申请模板

  • 3.1 点击添加模板进入添加模板页面

  • 3.2 选择模板类型,填写模板名称,模板类型可选择常用模板库内得内容。

  • 3.3 等待签名和模板审核通过。

增加阿里云短信驱动

1. 修改文件CRMEB小程序商城/config/sms.php文件第44行增加阿里云对应的驱动方式和模板id

return [
...
'stores' => [
//云信
'yunxin' => [
...
],
//阿里云 增加阿里云驱动
'aliyun' => [
//这里填写阿里云模板id可和运行的模板名称对应,方便开发
'template_id' => [ ]
]
]
];

通过composer安装SDK

2. 在项目根目录下打开命令行输入:composer require alibabacloud/client 按回车进行安装sdk



注意:如提示composer不是一个命令请先安装composer

增加阿里云短信发送类

1. 新建文件crmeb\services\sms\storage\Aliyun.php

<?php
/**
* @author: liaofei<136327134@qq.com>
* @day: 2020/8/19
*/ namespace crmeb\services\sms\storage; use crmeb\basic\BaseSms;
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use think\exception\ValidateException; /**
* 阿里云短信发送
* Class Aliyun
* @package crmeb\services\sms\storage
*/
class Aliyun extends BaseSms
{ /**
* AccessKeyId
* @var string
*/
protected $accessKeyId; /**
* AccessKeySecret
* @var string
*/
protected $accessKeySecret; /**
* 签名
* @var string
*/
protected $signName; /**
* 区域 默认杭州
* @var string
*/
protected $regionId = 'cn-hangzhou'; /**
* 初始化
* @param array $config
* @return mixed|void
*/
protected function initialize(array $config)
{
parent::initialize($config); // TODO: Change the autogenerated stub
$this->accessKeyId = $config['accessKeyId'] ?? null;
$this->accessKeySecret = $config['accessKeySecret'] ?? null;
$this->signName = $config['signName'] ?? null;
if (isset($config['regionId'])) {
$this->regionId = $config['regionId'];
}
} /**
* 初始化阿里云短信
*/
protected function app()
{ } /**
* 发送短信
* @param string $phone
* @param string $templateId
* @param array $data
* @return mixed|void
*/
public function send(string $phone, string $templateId, array $data = [])
{
// TODO: Implement send() method.
} }

2. 完成本类的app()方法,app()方法主要处理初始化阿里云短信的逻辑

/**
* 初始化阿里云短信
*/
protected function app()
{
// 判断下accessKeyId和accessKeySecret存在
if (!$this->accessKeyId || !$this->accessKeySecret) {
throw new ValidateException('请传入阿里云短信配置');
}
//调用阿里云SDK初始化
AlibabaCloud::accessKeyClient($this->accessKeyId, $this->accessKeySecret)
->regionId($this->regionId)
->asDefaultClient();
}

send()方法主要负责执行发送逻辑的处理

/**
* 发送短信
* @param string $phone
* @param string $templateId
* @param array $data
* @return mixed|void
*/
public function send(string $phone, string $templateId, array $data = [])
{
//参数判断
if (!$phone) {
throw new ValidateException('请传入手机号');
}
if (!$templateId) {
throw new ValidateException('请传入发送模板id');
}
//初始化阿里云SDK
$this->app(); try {
//执行发送
$result = AlibabaCloud::rpc()
->product('Dysmsapi')
->version('2017-05-25')
->action('SendSms')
->method('POST')
->host('dysmsapi.aliyuncs.com')
->options([
'query' => [
'RegionId' => $this->regionId,
'PhoneNumbers' => $phone,
'SignName' => $this->signName,
'TemplateCode' => $templateId,
'TemplateParam' => json_encode($data),
],
])->request()->toArray();
return $result;
} catch (ClientException $e) {
throw new ValidateException($e->getMessage());
} catch (ServerException $e) {
throw new ValidateException($e->getMessage());
}
}

调用实例:

//实例化短信类
/** @var Sms $services */
$services = app()->make(Sms::class, [
'aliyun',
[
'accessKeyId' => '阿里云短信accessKeyId',
'accessKeySecret' => '阿里云短信accessKeyId',
'signName' => '阿里云短信签名',
]
]); try {
// 执行发送
$res = $services->send('15594500000', 'VERIFICATION_CODE', ['code'=>1234]);
dump($res);
} catch (\Throwable $e) {
dump($e->getMessage());
}

阿里云短信发送集成还是比较简单的,主要在于二开过程中类的结构和对于php类的设计的理解.

CRMEB小程序商城v4.0二次开发对接集成阿里云短信的更多相关文章

  1. TinkPHP框架开发的CRMEB小程序商城v4.0二次开发集成支付宝支付

    前言 大家都知道支付宝支付和微信支付宝都只能局限在自己的平台,微信内支付宝支付是根本就不能使用,即使是公众号支付也需要跳转到外部浏览器才可以唤起支付宝支付,并且QQ浏览器唤起支付宝支付还是问题很多,所 ...

  2. “微信小程序商城构建全栈应用”开发小记

    注意事项: 1.application\api\extra下的wx.php记得填写小程序的app_id.app_secret: 2.API测试小工具需要APPID:

  3. 小程序后端项目【Springboot框架】部署到阿里云服务器【支持https访问】

    前言: 我的后端项目是Java写的,用的Springboot框架.在部署服务器并配置https访问过程中,因为做了一些令人窒息的操作(事后发现),所以老是不能成功. 不成功具体点说就是:域名地址可以正 ...

  4. CRMEB小程序商城首页强制在微信中打开解决办法

    先说一下,这也算不上二开,小小修改一下而已. CRMEB安装完成后,PC端直接打开首页,真是一言难尽~ 然后,我就想了,用手机浏览器或者PC浏览器直接打开首页也没啥用,干脆直接强制在微信中打开算了! ...

  5. ThinkPHP5.0手把手实现手机阿里云短信验证

    阿里云短信服务介绍阿里云短信服务就是以前的阿里大于,不过现在融合得到阿里云平台了.首先,你需要注册一个阿里云账号,这个自行解决. 仅用于测试使用官方送的代金券够用了.相关配置1.开通阿里云Access ...

  6. 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!

    微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布 Weixin-App-Shop 是捷微团队开发的微信小程序商城开源项目,涵盖了微信商城的全部功能,能够快速发布简单易用的小 ...

  7. 开源微信小程序商城测评

    1. Java版 1)微同商城 减少重复造轮子,开源微信小程序商城 .快速搭建一个属于自己的微信小程序商城. 官网地址:https://fly2you.cn 开源地址:https://gitee.co ...

  8. TP5框架,开源小程序商城源码,前端+后台完整版

    CRMEB微信公众号商城小程序商城数据同步,带积分.优惠券.秒杀.砍价.分销等功能,更是一套方便二次开发的框架 开源地址:https://github.crmeb.net/u/crmeb 商城演示后台 ...

  9. 微信小程序商城 带java后台源码

    微信小程序商城(Java版) 演示地址 账号:admin 密码:admin 小程序体验码: 技术选型 1 后端使用技术 1.1 springframework4.3.7.RELEASE 1.2 myb ...

随机推荐

  1. 3.28 省选模拟赛 染色 LCT+线段树

    发现和SDOI2017树点涂色差不多 但是当时这道题模拟赛的时候不会写 赛后也没及时订正 所以这场模拟赛的这道题虽然秒想到了LCT和线段树但是最终还是只是打了暴力. 痛定思痛 还是要把这道题给补了. ...

  2. 畅购商城(五):Elasticsearch实现商品搜索

    好好学习,天天向上 本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star,更多文章请前往:目录导航 畅购商城(一):环境搭建 畅购商 ...

  3. Jvm相关文章

    深入理解JVM-内存模型(jmm)和GC https://www.jianshu.com/p/76959115d486

  4. 阿里Canal中间件的初步搭建和使用

    一.前言 Binlog是MySQL数据库的二进制日志,用于记录用户对数据库操作的SQL语句(除了数据查询语句)信息.而Binlog格式也有三种,分别为STATEMENT.ROW.MIXED.STATM ...

  5. 使用git将本地仓库上传到远程仓库(转)

    第一步:创建一个工程目录 执行: git init 第二步:把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点".",意为添加文件夹下的所有 ...

  6. C调用C++代码

    有时C程序里需要用到C++的类,但是C语言又不能直接调用类,这时需要把C++的类使用C接口封装后,再调用, 可以将封装后的C++代码编译成库文件,供C语言调用: 需要注意的是,封装的C++代码库文件是 ...

  7. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  8. adb-使用

    1.打印日志 adb logcat -v time > logname.txt adb logcat -v > logname.txt 2.删除手机缓存日志 adb logcat -c 3 ...

  9. [深度学习] Pytorch学习(一)—— torch tensor

    [深度学习] Pytorch学习(一)-- torch tensor 学习笔记 . 记录 分享 . 学习的代码环境:python3.6 torch1.3 vscode+jupyter扩展 #%% im ...

  10. 字节跳动:[编程题]万万没想到之聪明的编辑 Java

    时间限制:1秒 空间限制:32768K 我叫王大锤,是一家出版社的编辑.我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误.但是,优秀的人总能在平凡的工作中发现真理.我发现 ...