aliMessage.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. 'use strict';
  2. const Core = require('@alicloud/pop-core');
  3. const _ = require('lodash');
  4. // 阿里云控制台 - 短信服务 - 国内消息
  5. const SignName = '惠金信用信息服务';
  6. const TemplateCode = 'SMS_189617598';
  7. // https://usercenter.console.aliyun.com/
  8. const accessKeyId = 'LTAI4G1eNRqKqqRLP15d3x5h';
  9. const accessKeySecret = 'CJtcZjAu366mmmscIRXfyml9Hx61Bh';
  10. const client = new Core({
  11. accessKeyId,
  12. accessKeySecret,
  13. endpoint: 'https://dysmsapi.aliyuncs.com',
  14. apiVersion: '2017-05-25',
  15. });
  16. // 保存手机号和验证码的对应关系
  17. // phone_code_list = {'18855551234':['1024']}
  18. // const phone_code_list = {};
  19. /**
  20. * sms.send(手机号) 发送短信验证码
  21. **/
  22. exports.send = function(phone) {
  23. // 生成验证码
  24. // const code = '' + _.random(9) + _.random(9) + _.random(9) + _.random(9);
  25. const code = this.randomCode(4);
  26. return new Promise((resolve, reject) => {
  27. try {
  28. client.request('SendSms', {
  29. RegionId: 'cn-hangzhou',
  30. PhoneNumbers: phone,
  31. SignName,
  32. TemplateCode,
  33. TemplateParam: '{code:' + code + '}',
  34. }, {
  35. method: 'POST',
  36. }).then(result => {
  37. console.log('res', result)
  38. if (result.Message && result.Message == 'OK' && result.Code && result.Code == 'OK') { // 短信发送成功
  39. // 保存验证码
  40. result.number = code;
  41. resolve(result);
  42. } else {
  43. console.log('error', result)
  44. reject(result);
  45. }
  46. }, ex => {
  47. console.log('ex', ex)
  48. reject(ex);
  49. });
  50. } catch (error) {
  51. console.log('catch error', error)
  52. reject(error);
  53. }
  54. });
  55. };
  56. exports.randomCode = function(length) {
  57. const chars = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ];
  58. let result = '';
  59. for (let i = 0; i < length; i++) {
  60. const index = Math.ceil(Math.random() * 9);
  61. result += chars[index];
  62. }
  63. return result;
  64. }