ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### SMS 短信发送方法 基于阿里大于的API进行封装 2019-02-19 **位置:** Common\Tools\SmsTools.class.php **参数:** * @param $mobile 手机号 * @param $use 用途 * 1.用于注册的验证码 * 2.用于找回密码的验证码 * 3.用于用户登录的验证码 * 4.用于支付成功通知 * 5.用于催款 * 6.用于订单拆分 * 6.用于发货通知 * @param $tpl_params 模板变量数组 * 根据模板中对应的变量构造变量数组 * @return array 短信发送状态信息 **调用:** ~~~ use Common\Tools\SmsTools; // 调用封装 短信操作封装类 public function testSMS() { $sms = new SmsTools(); // 实例化商品组件库类 $moblie = '13434337223'; // 手机号 $use = 6; // 短信用途 $tpl_params = array( // 短信模板变量数组 'name' => '张湖畔', 'delivery_no' => '1500970026', 'express' => '顺丰快递', 'express_no' => '139946438007' ); $response = $sms->sendMessage($moblie, $use, $tpl_params); if ($response['Code'] == 'OK') { $data = array('success' => true, 'code' => 200, 'msg' => '短信发送成功!', 'data' => $use); // 用json格式返回数据 $result = $this->response($data, 'json'); return $result; } } ~~~ **完整代码:** ~~~ /** * @param $mobile 手机号 * @param $use 用途 * 1.用于注册的验证码 * 2.用于找回密码的验证码 * 3.用于用户登录的验证码 * 4.用于支付成功通知 * 5.用于催款 * 6.用于订单拆分 * 7.用于发货通知 * @param $tpl_params 模板变量数组 * 根据模板中对应的变量构造变量数组 * @return array 返回发送状态数组 */ public function sendMessage($mobile, $use, $tpl_params) { // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest(); //可选-启用https协议 //$request->setProtocol("https"); // 必填,设置短信接收号码 $request->setPhoneNumbers($mobile); // 必填,设置签名名称,应严格按"签名名称"填写,请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/sign $request->setSignName("COSCIA"); switch ($use){ case 1: // 用于注册的验证码 $tpl = C('SMS_TEMP_TYPE.REGISTER_CODE'); $tpl_params = $this->createAndSaveCode($mobile, 1); // 生成验证码并保存到缓存 break; case 2: // 用于找回密码的验证码 $tpl = C('SMS_TEMP_TYPE.RESET_PASS'); $tpl_params = $this->createAndSaveCode($mobile, 2); // 生成验证码并保存到缓存 break; case 3: // 用于用户登录的验证码 $tpl = C('SMS_TEMP_TYPE.LOGIN_CODE'); $tpl_params = $this->createAndSaveCode($mobile, 3); // 生成验证码并保存到缓存 break; case 4: // 用于支付成功通知 break; case 5: // 用于催款 break; case 6: // 用于订单拆分 break; case 7: // 用于发货通知 $tpl = C('SMS_TEMP_TYPE.DELIVERY_NOTICE'); break; default: // 默认 } // 必填,设置模板CODE,应严格按"模板CODE"填写, 请参考: https://dysms.console.aliyun.com/dysms.htm#/develop/template $request->setTemplateCode($tpl); // 可选,设置模板参数, 假如模板中存在变量需要替换则为必填项 $request->setTemplateParam( json_encode($tpl_params, JSON_UNESCAPED_UNICODE) ); // 可选,设置流水号 $request->setOutId("yourOutId"); // 选填,上行短信扩展码(扩展码字段控制在7位或以下,无特殊需求用户请忽略此字段) $request->setSmsUpExtendCode("1234567"); // 发起访问请求 $acsResponse = static::getAcsClient()->getAcsResponse($request); // 对象数组转成数组 $arr = object_to_array($acsResponse); // 返回发送状态数组 return $arr; } ~~~