<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 服務研發 * * * * * ### 需求分析 服務架構中已經講過服務與驅動的概念了,現在來研發一個服務與驅動,本來還在考慮弄個神馬服務,得有代表性并且易用才行,看到群里小伙伴發言于是決定就弄個短信服務好咯。 ![](https://box.kancloud.cn/f6947dcec2a176abaab575745506b608_400x282.png) 那就來個短信服務,并且集成阿里大魚驅動,希望此篇看完后童鞋們可以自己動手研發各種服務。 阿里大魚。。。說實話作者只是聽說過并沒有使用過。。但是覺得這些根本不是啥問題。 百度了一下阿里大魚,找到了阿里大魚的PHP版本SDK,解壓后里面有 4個 文件:Demo.php EnvTest.php SignatureHelper.php SmsApi.php 然后就直接來看看Demo 畢竟之前也沒有使用過。。 ![](https://box.kancloud.cn/0769cd96fbb6e0098ed61f2979a9a3ff_1311x901.png) 看到這個Demo 就分析出了一些問題: 第19行,需要準備兩個參數 雖然沒有看阿里大魚的技術文檔,但是通過項目經驗猜測也應該類似七牛的SK 與 AK,應該是在阿里云后臺設置的。 第21行-30行,里面這些參數可能也是阿里云后臺設置的,奇怪的是短信簽名也要設置嗎?于是打開阿里大魚后臺看了下,的確是有短信簽名申請,這樣就大概明白了,除了接收者 也就是 手機號碼 還有 code 也就是驗證碼 其他的應該都是短信后臺能找到的參數。 好了,分析出了需要準備哪些參數,那么就去阿里大魚的后臺把這些信息找出來,進去后發現申請簽名和申請模板功能,再看看 21 - 30 行的參數里面有短信簽名和模板編號,那就知道了 需要申請這些,申請后發現還需要漫長的等待。 ![](https://box.kancloud.cn/963e85dfc72c4d5efd6e0eb5a55154cf_1868x350.png) ![](https://box.kancloud.cn/5028c0fac56c5383c3ebc552c3216aec_1865x393.png) 好了,等待過后申請的短信簽名【OneBase架構】和短信驗證碼模板都審核通過了。 那接下來咱們來看看 sk 和 ak 到哪里弄,于是接下來各種搜索各種找終于發現了在哪里弄。 ![](https://box.kancloud.cn/a232e54cbeaabd3f724688cead2a4ab9_1918x613.png) 在阿里云的 訪問控制 RAM 里面,加一個用戶然后就有 sk 和 ak 了,一切就緒,那么來開始接入。 * * * * * ### 服務研發 不管三七二十一,先按之前已經研發好的服務,先將目錄及文件結構弄出來再說。 ![](https://box.kancloud.cn/d0cef147f824c8e454073dcb61fc06df_396x902.png) 可以看到sms短信服務是參考支付服務把目錄和文件都建好了,driver/alidy 下的兩個文件是從大魚的SDK里面復制過來的類,當然文件里面的命名空間需要修改為咱們當前目錄對應的命名空間。 下面來從外面Sms.php 挨著往里面實現,打開服務基礎接口BaseInterface一看就知道 serviceInfo 方法是所有服務都要實現的,于是先將 serviceInfo 信息改改。 Sms.php 寫完后的代碼如下: ~~~ <?php // +---------------------------------------------------------------------+ // | OneBase | [ WE CAN DO IT JUST THINK ] | // +---------------------------------------------------------------------+ // | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) | // +---------------------------------------------------------------------+ // | Author | Bigotry <3162875@qq.com> | // +---------------------------------------------------------------------+ // | Repository | https://gitee.com/Bigotry/OneBase | // +---------------------------------------------------------------------+ namespace app\common\service; /** * 短信服務 */ class Sms extends ServiceBase implements BaseInterface { /** * 服務基本信息 */ public function serviceInfo() { return ['service_name' => '短信服務', 'service_class' => 'Sms', 'service_describe' => '系統短信服務,用于整合多個短信平臺', 'author' => 'Bigotry', 'version' => '1.0']; } } ~~~ 再打開支付服務的驅動接口文件Driver.php文件,可以發現,前面三個方法是服務通用方法,那我們copy前面三個方法過來,再加一個 發送短信的方法,實現 sms 的 Driver.php 代碼如下: ~~~ <?php // +---------------------------------------------------------------------+ // | OneBase | [ WE CAN DO IT JUST THINK ] | // +---------------------------------------------------------------------+ // | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) | // +---------------------------------------------------------------------+ // | Author | Bigotry <3162875@qq.com> | // +---------------------------------------------------------------------+ // | Repository | https://gitee.com/Bigotry/OneBase | // +---------------------------------------------------------------------+ namespace app\common\service\sms; use app\common\service\BaseInterface; /** * 短信服務驅動 */ interface Driver extends BaseInterface { /** * 獲取驅動參數 */ public function getDriverParam(); /** * 獲取基本信息 */ public function driverInfo(); /** * 配置信息 */ public function config(); /** * 發送短信 */ public function sendSms($parameter); } ~~~ OK 了,接口方法都定義完成了,下面來實現具體驅動方法,sms/driver/Alidy.php 實現后的代碼如下: ~~~ <?php // +---------------------------------------------------------------------+ // | OneBase | [ WE CAN DO IT JUST THINK ] | // +---------------------------------------------------------------------+ // | Licensed | http://www.apache.org/licenses/LICENSE-2.0 ) | // +---------------------------------------------------------------------+ // | Author | Bigotry <3162875@qq.com> | // +---------------------------------------------------------------------+ // | Repository | https://gitee.com/Bigotry/OneBase | // +---------------------------------------------------------------------+ namespace app\common\service\sms\driver; use app\common\service\sms\Driver; use app\common\service\Sms; /** * 阿里大魚短信服務驅動 */ class Alidy extends Sms implements Driver { /** * 驅動基本信息 */ public function driverInfo() { return ['driver_name' => '阿里大魚驅動', 'driver_class' => 'Alidy', 'driver_describe' => '阿里大魚短信驅動', 'author' => 'Bigotry', 'version' => '1.0']; } /** * 獲取驅動參數 */ public function getDriverParam() { return ['access_key' => '阿里大魚密鑰AK', 'secret_key' => '阿里大魚密鑰SK']; } /** * 獲取配置信息 */ public function config() { return $this->driverConfig('Alidy'); } /** * 發送短信 */ public function sendSms($parameter = []) { $alidy_config = $this->config(); $sms = new alidy\SmsApi($alidy_config['access_key'], $alidy_config['secret_key']); $response = $sms->sendSms( $parameter['sign_name'], $parameter['template_code'], $parameter['phone_number'], $parameter['template_param'] ); return $response->Code == 'OK' ? true : false; } } ~~~ 為什么知道阿里大魚 $response->Code 等于 OK 就是 成功呢? 知道的渠道有兩種,一種是查看阿里大魚提供的手冊或Demo,還有一種是通過返回的結果進行分析,作者是將 $response 輸出后看到 Code 是 OK,就明白了 返回 OK 就是發送成功。 下面來看看短信服務如何使用。 * * * * * ### 服務使用 打開系統的服務管理 ![](https://box.kancloud.cn/61d04f98dc907a7fddce39027557221b_1918x591.png) 可以看到剛才研發的短信服務了,咱們再點開驅動。 ![](https://box.kancloud.cn/a5e7c8b4ffc7ba830298a649a2ad729d_1911x587.png) 可以看到阿里大魚驅動了,那么再點一下安裝呢。 ![](https://box.kancloud.cn/9ae91d0a7e1fe9510cdfa1cb495fe84b_1915x584.png) 想必大家有個疑問,系統怎么知道阿里大魚需要 ak 和 sk 呢? 萬一以后我們整合其他短信平臺需要 username 和 password 咋辦? ![](https://box.kancloud.cn/b56ad2a7e76e703435a4982f742c0166_1219x642.png) 看明白了吧,不管驅動依賴啥,在驅動參數這里根據驅動所需依賴的數據進行配置就好了,這樣在安裝驅動的時候 就會自動生成表單錄入這些信息,這里就把上面作者找了好久的ak和sk輸入進去安裝一下,提示安裝成功咯。 關鍵時刻到了,來測試一下短信發送功能。 測試短信服務業務邏輯層代碼如下: ~~~ /** * 測試短信服務 */ public function sendSms() { $parameter['sign_name'] = 'OneBase架構'; $parameter['template_code'] = 'SMS_113455309'; $parameter['phone_number'] = '18555550710'; $parameter['template_param'] = ['code' => '123456']; return $this->serviceSms->driverAlidy->sendSms($parameter); } ~~~ 測試短信服務控制器層代碼如下: ~~~ $test = new LogicTest(); $test->sendSms(); ~~~ 執行一下,于是聽到叮咚~。 嘿嘿,大功告成。 ![](https://box.kancloud.cn/193f9679a0feaace485511e5bf0b1bac_639x1136.png) ![](https://box.kancloud.cn/0e5467d5c3c7a722b1d4fd070acbc713_639x1136.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看