* This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace Overtrue\EasySms\Gateways; use Overtrue\EasySms\Contracts\MessageInterface; use Overtrue\EasySms\Exceptions\GatewayErrorException; use Overtrue\EasySms\Support\Config; use Overtrue\EasySms\Traits\HasHttpRequest; /** * Class JuheGateway. * * @see https://www.juhe.cn/docs/api/id/54 */ class JuheGateway extends Gateway { use HasHttpRequest; const ENDPOINT_URL = 'http://v.juhe.cn/sms/send'; const ENDPOINT_FORMAT = 'json'; /** * @param array|int|string $to * @param \Overtrue\EasySms\Contracts\MessageInterface $message * @param \Overtrue\EasySms\Support\Config $config * * @return array * * @throws \Overtrue\EasySms\Exceptions\GatewayErrorException; */ public function send($to, MessageInterface $message, Config $config) { $params = [ 'mobile' => $to, 'tpl_id' => $message->getTemplate($this), 'tpl_value' => $this->formatTemplateVars($message->getData($this)), 'dtype' => self::ENDPOINT_FORMAT, 'key' => $config->get('app_key'), ]; $result = $this->get(self::ENDPOINT_URL, $params); if ($result['error_code']) { throw new GatewayErrorException($result['reason'], $result['error_code'], $result); } return $result; } /** * @param array $vars * * @return string */ protected function formatTemplateVars(array $vars) { $formatted = []; foreach ($vars as $key => $value) { $formatted[sprintf('#%s#', trim($key, '#'))] = $value; } return http_build_query($formatted); } }