'mac校验不通过。', 'IllegalSignId' => '无效的签名编码。', 'InvalidMessage' => '非法消息,请求数据解析失败。', 'InvalidUsrOrPwd' => '非法用户名/密码。', 'NoSignId' => '未匹配到对应的签名信息。', 'success' => '数据验证通过。', 'TooManyMobiles' => '手机号数量超限(>5000),应≤5000。', ]; /** * 短信发送 * @param $mobile * @param $smslog_param * @return array */ public function send($mobile, $smslog_param) { $config = SettingModel::getConfigValue(['sms_mas_url', 'sms_mas_ecName', 'sms_mas_apId', 'sms_mas_secretKey', 'sms_mas_sign']); if (empty($config['sms_mas_url']) || empty($config['sms_mas_ecName']) || empty($config['sms_mas_apId']) || empty($config['sms_mas_secretKey']) || empty($config['sms_mas_sign'])) { return ['code' => 1, 'msg' => '请绑定模板参数']; } $templateId = $smslog_param['template']['mas']; if (empty($templateId)) { return ['code' => 1, 'msg' => '系统未配置移动模板编号']; } //请求参数 $params = [""]; if (!empty($smslog_param['template_param'])) { $params = []; foreach ($smslog_param['template_param'] as $v) { $params[] = $v; } } $param = [ 'ecName' => $config['sms_mas_ecName'], 'apId' => $config['sms_mas_apId'], 'mobiles' => $mobile, 'templateId' => $templateId, 'params' => json_encode($params), 'sign' => $config['sms_mas_sign'], 'addSerial' => '', ]; $param['mac'] = md5($param['ecName'] . $param['apId'] . $config['sms_mas_secretKey'] . $param['templateId'] . $param['mobiles'] . $param['params'] . $param['sign'] . $param['addSerial']); $postFields = base64_encode(json_encode($param)); //发送请求 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $config['sms_mas_url']); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json; charset=utf-8', //json版本需要填写 Content-Type: application/json; ] ); curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); //若果报错 name lookup timed out 报错时添加这一行代码 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); curl_setopt($ch, CURLOPT_TIMEOUT, 60); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $ret = curl_exec($ch); curl_close($ch); $rsp = json_decode($ret, true); if (!$rsp['success']) { Log::error('短信发送失败:' . json_encode($rsp) . "。原始参数:" . $postFields); $error = $this->_error_arr[$rsp['rspcod']] ?? '未知错误'; return ['code' => 1, 'msg' => $error]; } else { return ['code' => 0]; } } }