Sms.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 山西牛酷信息科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com.cn
  8. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用。
  9. * 任何企业和个人不允许对程序代码以任何形式任何目的再发布。
  10. * =========================================================
  11. */
  12. namespace addon\alisms\model;
  13. use app\model\BaseModel;
  14. use Overtrue\EasySms\EasySms;
  15. use Overtrue\EasySms\Exceptions\InvalidArgumentException;
  16. use Overtrue\EasySms\Exceptions\NoGatewayAvailableException;
  17. use Overtrue\EasySms\Strategies\OrderStrategy;
  18. /**
  19. * 阿里云短信
  20. */
  21. class Sms extends BaseModel
  22. {
  23. /**
  24. * 短信发送
  25. * @param array $param
  26. * @return array|mixed
  27. * @throws InvalidArgumentException
  28. */
  29. public function send($param = [])
  30. {
  31. $config_model = new Config();
  32. $config_result = $config_model->getSmsConfig();
  33. if ($config_result["data"]["is_use"]) {
  34. $config = $config_result["data"]["value"];
  35. $sms_info = $param["message_info"]["sms_json_array"];//消息类型模板 短信模板信息
  36. if (empty($sms_info["alisms"])) return $this->error([], "消息模板尚未配置");
  37. $sms_info = $sms_info["alisms"];
  38. $var_parse = $param["var_parse"];//变量解析
  39. $account = $param["sms_account"];//发送手机号
  40. //加入阿里云短信配置
  41. $sms_config = [
  42. // HTTP 请求的超时时间(秒)
  43. 'timeout' => 5.0,
  44. // 默认发送配置
  45. 'default' => [
  46. // 网关调用策略,默认:顺序调用
  47. 'strategy' => OrderStrategy::class,
  48. // 默认可用的发送网关
  49. 'gateways' => [ 'aliyun' ],
  50. ],
  51. // 可用的网关配置
  52. 'gateways' => [
  53. "aliyun" => [
  54. 'access_key_id' => $config["access_key_id"],
  55. 'access_key_secret' => $config["access_key_secret"],
  56. 'sign_name' => $config["smssign"],
  57. ]
  58. ],
  59. ];
  60. try {
  61. unset($var_parse['site_name']);
  62. $easySms = new EasySms($sms_config);
  63. $easySms->send($account, [
  64. 'template' => $sms_info["template_id"],
  65. 'data' => $var_parse,
  66. ]);
  67. return $this->success([ "addon" => "alisms", "addon_name" => "阿里云短信", "content" => $sms_info["content"] ]);
  68. } catch (NoGatewayAvailableException $exception) {
  69. $message = $exception->getException('aliyun')->getMessage();
  70. return $this->error([ "content" => $sms_info["content"] ], $message ? : '短信发送异常');
  71. }
  72. }
  73. }
  74. }