1. 程式人生 > >PHP對接阿里大魚實現簡訊的傳送

PHP對接阿里大魚實現簡訊的傳送

背景知識:

  1. 手機驗證碼這個功能幾乎哪裡都可以看到,那麼PHP如何實現手機驗證碼的傳送呢?下面介紹PHP對接阿里大魚實現簡訊驗證碼傳送。

1.首先登陸阿里雲,點選控制檯:

2.選擇簡訊服務:

3.由於阿里雲的簡訊服務,需要簽名模板,因此需要先申請:

4.申請好了簽名和模板之後,別忘了往賬戶裡充錢哦。

5.下載SDK,SDK下載地址,我這邊選擇PHP的輕量版SDK。下載之後解壓,我們只需要SignatureHelper.php這個檔案,為了下面清晰的演示,我將該檔案單獨拿出來,並新建一個sms目錄。具體如下(注意將SignatureHelper類的名稱空間去掉):

6.新建一個index.php檔案,寫上如下程式碼:

<?php

require_once './SignatureHelper.php';

class Phone {

    public static function  sendSms($phone,$code){

        $params = array ();

        //阿里雲的AccessKey
        $accessKeyId = '你自己的AK';

        //阿里雲的Access Key Secret
        $accessKeySecret = '你自己的AS';

        //要傳送的手機號
        $params["PhoneNumbers"] = $phone;

        //簽名,第三步申請得到
        $params["SignName"] = '簽名';

        //模板code,第三步申請得到
        $params["TemplateCode"] = '模板code';

        //模板的引數,注意code這個鍵需要和模板的佔位符一致
        $params['TemplateParam'] = Array (
            "code" => $code
        );

        // *** 需使用者填寫部分結束, 以下程式碼若無必要無需更改 ***
        if(!empty($params["TemplateParam"]) && is_array($params["TemplateParam"])) {
            $params["TemplateParam"] = json_encode($params["TemplateParam"], JSON_UNESCAPED_UNICODE);
        }

        // 初始化SignatureHelper例項用於設定引數,簽名以及傳送請求
        $helper = new SignatureHelper();
        try{
            // 此處可能會丟擲異常,注意catch
            $content = $helper->request(
                $accessKeyId,
                $accessKeySecret,
                "dysmsapi.aliyuncs.com",
                array_merge($params, array(
                    "RegionId" => "cn-hangzhou",
                    "Action" => "SendSms",
                    "Version" => "2017-05-25",
                ))
            // fixme 選填: 啟用https
            // ,true
            );
            $res=array('errCode'=>0,'msg'=>'ok');
            if($content->Message!='OK'){
                $res['errCode']=1;
                $res['msg']=$content->Message;
            }
            echo json_encode($res);
        }catch(\Exception $e){
            echo '簡訊介面請求錯誤';exit;
        }

    }
}

Phone::sendSms('測試手機號','驗證碼');


7.以上我們就完成了基於阿里雲平臺的簡訊傳送。