sms = [ "status" => "1", //是否开启 "access_key_id" => "LTAI5tSePVz6X1EXi6tBHzVg", "access_key_secret" => "ppd5xa2o8b9oKalOiUqQFnYLYq4xlX", "sign_name" => "萧康医药", //签名 "captcha" => [ //验证码格式设置 //'template_code' => 'SMS_274460204', // 模板code "template_id" => "SMS_275060336", // 模板id "template_variable" => "code", //模板变量 ], "doctor" => [ "register" => [ //挂号订单提醒 "template_id" => "SMS_462205458", "template_variable" => "" ], "prescription_pass" => [ "template_id" => "SMS_462260412", "template_variable" => "order" ], "prescription_refuse" => [ "template_id" => "SMS_462230433", "template_variable" => [ "order", "cause" ] ] ], "pharmacist" => [ "wait_approval" => [ "template_id" => "SMS_462255406", "template_variable" => "" ] ] ]; $this->config = [ // HTTP 请求的超时时间(秒) 'timeout' => 5.0, // 默认发送配置 'default' => [ // 网关调用策略,默认:顺序调用 'strategy' => \Overtrue\EasySms\Strategies\OrderStrategy::class, // 默认可用的发送网关 'gateways' => [ 'aliyun', ], ], // 可用的网关配置 'gateways' => [ 'errorlog' => [ 'file' => '/tmp/easy-sms.log', ], 'aliyun' => [ 'access_key_id' => $this->sms['access_key_id'], 'access_key_secret' => $this->sms['access_key_secret'], 'sign_name' => $this->sms['sign_name'], ], ], ]; $this->easySms = new EasySms($this->config); } public function send($mobile, $message) { try { $this->easySms->send($mobile, $message); return true; } catch (NoGatewayAvailableException $exception) { $es = $exception->getExceptions(); foreach ($es as $e) { /** @var GatewayErrorException $e */ if (isset($e->raw) && isset($e->raw['Code']) && $e->raw['Code'] == 'isv.MOBILE_NUMBER_ILLEGAL') { throw new GatewayErrorException("无效的号码 {$mobile}", $e->getCode(), $e->raw); } if ($e instanceof ClientException) { $result = json_decode($e->getResponse()->getBody()->getContents(), true); if ($result && is_array($result) && isset($result['Message']) && isset($result['Code'])) { if ($result['Code'] == 'InvalidAccessKeyId.NotFound') { throw new GatewayErrorException("无效的AccessKeyId", $e->getCode(), $result); } if ($result['Code'] == 'SignatureDoesNotMatch') { throw new GatewayErrorException( "Signature不匹配,请检查AccessKeySecret是否正确", $e->getCode(), $result ); } throw new GatewayErrorException($result['Message'], $e->getCode(), $result); } } throw $e; } } } public function sendCaptcha($mobile, $captcha) { // $captcha = (string)mt_rand(100000, 999999); $message = new CaptchaMessage($captcha, $this->sms['captcha']); return $this->send($mobile, $message); } public function sendRegister($mobile){ $message = new RegisterMessage($this->sms['doctor']['register']); return $this->send($mobile, $message); } public function sendWaitApproval($mobile){ $message = new WaitApprovalMessage($this->sms['pharmacist']['wait_approval']); return $this->send($mobile, $message); } public function sendPrescriptionPass($mobile,$prescription_no){ $message = new PrescriptionPassMessage($prescription_no, $this->sms['doctor']['prescription_pass']); return $this->send($mobile, $message); } public function sendPrescriptionRefuse($mobile,$prescription){ $message = new PrescriptionRefuseMessage($prescription,$this->sms['doctor']['prescription_refuse']); return $this->send($mobile, $message); } }