AliYunSmsService.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020-05-18
  7. *
  8. *
  9. */
  10. namespace crmeb\services;
  11. use AlibabaCloud\Client\AlibabaCloud;
  12. use think\Exception;
  13. use think\facade\Db;
  14. use GuzzleHttp\Exception\ClientException;
  15. use GuzzleHttp\Exception\ServerException;
  16. use think\facade\Log;
  17. /**
  18. * Class YunxinSmsService
  19. * @package crmeb\services
  20. * @author xaboy
  21. * @day 2020-05-18
  22. */
  23. class AliYunSmsService
  24. {
  25. public function send($mobile, $code, $templateId = 'AUTHCODE')
  26. {
  27. if($templateId=='') $templateId = 'AUTHCODE';
  28. // AlibabaCloud::accessKeyClient('LTAI5tPv49zdudnbTGExNKd3', 'nS7eFuPfI92i5h0MSvcAkpbyGsmkeF')
  29. // ->regionId('cn-hangzhou')
  30. // ->asDefaultClient();
  31. AlibabaCloud::accessKeyClient('LTAI5tKivJSckMYz5BHev3u8', 'nvetSdLB1YP7OgvpJcVeyhdJDVs4Ik')
  32. ->regionId('cn-hangzhou')
  33. ->asDefaultClient();
  34. $templateParam['code'] = $code;
  35. $content = '';
  36. log::info("发送短信方法");
  37. switch ($templateId) {
  38. case 'AUTHCODE':
  39. // 移除所有非数字字符(保留+)
  40. $mobile = preg_replace('/[^0-9+]/', '', $mobile);
  41. if (strpos($mobile, '+') === false || strpos($mobile, '+86') === 0) {
  42. if (strpos($mobile, '+86') === 0) {
  43. $mobile = substr($mobile, 3);
  44. }
  45. $SignName = '融合华夏';
  46. $TemplateCode = 'SMS_311255692';
  47. $content = '【华夏幸福保】您的验证码是:' . $code;
  48. } else {
  49. if (strpos($mobile, '+') === 0) {
  50. $mobile = substr($mobile, 1);
  51. }
  52. $SignName = '融合华夏';
  53. $TemplateCode = 'SMS_492105133';
  54. $templateParam = [
  55. 'code_zh' => $code,
  56. 'code_en' => $code
  57. ];
  58. $content = '【融合华夏】您的验证码是:' . $code . ',请输入此验证码以完成验证流程。Your verification code is:' . $code . '. Please enter this code to complete your verification process.';
  59. }
  60. break;
  61. case 'ONESELFCARRY':
  62. $SignName = '华夏幸福保';
  63. $TemplateCode = 'SMS_465430830';
  64. $content = '【华夏幸福保】您购买的商品动态码(自提码)为' . $code . ',提货时请出示自提码!';
  65. break;
  66. case 'REDCHANGE':
  67. $SignName = '华夏幸福保';
  68. $TemplateCode = 'SMS_465371794';
  69. $content = '【华夏幸福保】您的短信验证码为' . $code . ',您正在人工调整红积分,如非本人操作,请忽略该短信。';
  70. break;
  71. case 'COMMISSIONCHANGE':
  72. $SignName = '华夏幸福保';
  73. $TemplateCode = 'SMS_465392073';
  74. $content = '【华夏幸福保】您的短信验证码为' . $code . ',您正在人工调整用户佣金,如非本人操作,请忽略该短信。';
  75. break;
  76. }
  77. try {
  78. $result = AlibabaCloud::rpc()
  79. ->product('Dysmsapi')
  80. ->version('2017-05-25')
  81. ->action('SendSms')
  82. ->method('POST')
  83. ->options([
  84. 'query' => [
  85. 'PhoneNumbers' => $mobile,
  86. 'SignName' => $SignName,
  87. 'TemplateCode' => $TemplateCode,//测试的
  88. // 'TemplateCode' => 'SMS_464451169',
  89. 'TemplateParam' => json_encode($templateParam),
  90. ],
  91. ])
  92. ->request();
  93. log::info("短信:返回参数");
  94. log::info(json_encode($result->toArray()));
  95. Db::name('sms_record')->insert(['phone' => $mobile, 'content' => $content, 'template' => $TemplateCode, 'create_time'=>date("Y-m-d H:i:s")]);
  96. return $result->toArray();
  97. // } catch (ClientException $e) {
  98. // return ['code' => 500, 'message' => '阿里云短信客户端异常:' . $e->getErrorMessage()];
  99. // } catch (ServerException $e) {
  100. // return ['code' => 500, 'message' => '阿里云短信服务端异常:' . $e->getErrorMessage()];
  101. } catch (Exception $e) {
  102. return ['code' => 500, 'message' => '阿里云短信服务端异常:' . $e->getMessage()];
  103. }
  104. }
  105. }