CRMEB小程序商城v4.0二次开发对接集成阿里云短信
生活随笔
收集整理的這篇文章主要介紹了
CRMEB小程序商城v4.0二次开发对接集成阿里云短信
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:廖飛 - CRMEB小程序商城研發項目組長
- 前言
cremb小程序商城v4.0版本支持短信平臺為云信,但有部分用戶有需求對接阿里云短信,這篇文章將對阿里云短信平臺如何對接方以及對接流程詳細說明.
開通阿里云短信
1. 首先登陸阿里云后臺找到短信服務,點擊控制臺 - 進入短信服務
2. 點擊國內消息右側得添加簽名按鈕,填寫必填項申請簽名
3. 申請模板
- 3.1 點擊添加模板進入添加模板頁面
- 3.2 選擇模板類型,填寫模板名稱,模板類型可選擇常用模板庫內得內容。
- 3.3 等待簽名和模板審核通過。
增加阿里云短信驅動
- 驅動詳細架構流程可參考:http://help.crmeb.net/crmeb-v4/1863575
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二次开发对接集成阿里云短信的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java多线程基础(十三)——Threa
- 下一篇: UG NX 工程图视图概述