<?php
namespace app\common\util;

use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\Client\Exception\ClientException;
use AlibabaCloud\Client\Exception\ServerException;
use think\facade\Log;

class AliSms
{
    /**
     * 发送短信验证码
     * @param $phone
     * @param $code
     * @throws ClientException
     */
    public function sendMessageCode($phone, $code){
        Log::record("sendMessageCode begin:".$phone.",code:".$code,"debug");
        AlibabaCloud::accessKeyClient(config('ali_msm.accessKeyId'), config('ali_msm.accessKeySecret'))
            ->regionId('cn-hangzhou')
            ->asDefaultClient();

        try {
            $result = AlibabaCloud::rpc()
                ->product('Dysmsapi')
                // ->scheme('https') // https | http
                ->version('2017-05-25')
                ->action('SendSms')
                ->method('POST')
                ->host('dysmsapi.aliyuncs.com')
                ->options([
                    'query' => [
                        'RegionId' => config('message.RegionId'),
                        'PhoneNumbers' => $phone,
                        'SignName' => config('message.SignName'),
                        'TemplateCode' => config('message.TemplateCode'),
                        'TemplateParam' => "{'code': $code}",
                    ],
                ])
                ->request();
            Log::record("短信验证码发送结果:","debug");
            Log::record(print_r($result->toArray(),true),"debug");
        } catch (ClientException|ServerException $e) {
            Log::record("短信验证码发送结果:","debug");
            Log::record($e->getErrorMessage(),"debug");
//        echo $e->getErrorMessage() . PHP_EOL;
        }
    }
}