smsUtil.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. const request = require('request')
  2. const username = 'BJHHEhy'
  3. const password = 'jMRYvR4f)!qD#T^IfqoNnX8F!*Kq!HZN'
  4. /**
  5. * 东八区当前时间戳,精确到秒,10位长度。
  6. */
  7. const timest = () => {
  8. var tmp = Date.parse( new Date() ).toString()
  9. tmp = tmp.substr(0,10)
  10. return tmp
  11. }
  12. /**
  13. * 密码,密码采用32位小写MD5二次加密,例:md5( md5( password ) + tKey ) , +为拼接符,不参与加密。
  14. * @param {*} data 明文密码
  15. */
  16. const md5 = data => {
  17. var Buffer = require('buffer').Buffer
  18. var buf = new Buffer(data)
  19. var str = buf.toString('binary')
  20. var crypto = require('crypto')
  21. return crypto.createHash('md5WithRSAEncryption').update(str).digest('hex')
  22. }
  23. /**
  24. * 处理请求, 使用Promise将异步操作变为同步
  25. * @param {*} event
  26. */
  27. const handleRequest = options => {
  28. return new Promise((resolve, reject) => {
  29. request(options, (error, response, body) => {
  30. if (!error && response.statusCode === 200) {
  31. resolve(body)
  32. } else {
  33. reject(error)
  34. }
  35. })
  36. })
  37. }
  38. /**
  39. * 短信模板查询
  40. * @param {*} event
  41. */
  42. const templateQuery = event => {
  43. //生成十位时间戳
  44. const tKey = timest()
  45. // 配置 POST 请求的选项
  46. const options = {
  47. // url: 'https://api-shss.zthysms.com/v2/sendSms',
  48. url: 'https://api-shss.zthysms.com/sms/v2/template/query',
  49. method: 'POST',
  50. headers: { 'Content-Type': 'application/json' },
  51. json: true,
  52. body: {
  53. username,
  54. password: md5(md5(password) + tKey),
  55. tKey,
  56. temId: 397495,
  57. }
  58. }
  59. return handleRequest(options)
  60. }
  61. /**
  62. * 短信模板列表查询
  63. * @param {*} event
  64. */
  65. const templateList = event => {
  66. //生成十位时间戳
  67. const tKey = timest()
  68. // 配置 POST 请求的选项
  69. const options = {
  70. url: 'https://api-shss.zthysms.com/sms/v2/template/list',
  71. method: 'POST',
  72. headers: { 'Content-Type': 'application/json' },
  73. json: true,
  74. body: {
  75. username,
  76. password: md5(md5(password) + tKey),
  77. tKey,
  78. page: 1,
  79. size: 10,
  80. }
  81. }
  82. return handleRequest(options)
  83. }
  84. /**
  85. * 短信签名列表查询
  86. * @param {*} event
  87. */
  88. const signList = event => {
  89. //生成十位时间戳
  90. const tKey = timest()
  91. // 配置 POST 请求的选项
  92. const options = {
  93. url: 'https://api-shss.zthysms.com/sms/v1/sign/list',
  94. method: 'POST',
  95. headers: { 'Content-Type': 'application/json' },
  96. json: true,
  97. body: {
  98. username,
  99. password: md5(md5(password) + tKey),
  100. tKey,
  101. // 审核状态 (1.待审核 2.审核通过 3.审核不通过)
  102. status: 2,
  103. page: 1,
  104. size: 10,
  105. }
  106. }
  107. return handleRequest(options)
  108. }
  109. /**
  110. * 模板短信发送
  111. * @param {*} event
  112. */
  113. const sendSmsTp = event => {
  114. //生成十位时间戳
  115. const tKey = timest()
  116. // 配置 POST 请求的选项
  117. const options = {
  118. url: 'https://api-shss.zthysms.com/v2/sendSmsTp',
  119. method: 'POST',
  120. headers: { 'Content-Type': 'application/json' },
  121. json: true,
  122. body: {
  123. username,
  124. password: md5(md5(password) + tKey),
  125. tKey,
  126. // 已报备的签名
  127. signature: '【红孩儿智慧教育】',
  128. // 模板id
  129. tpId: 397495,
  130. // 扩展号。纯数字,最多8位。
  131. ext: '',
  132. // 发送时间。若为空,立即发送;若不为空,设置定时字符串日期,定时时间必须大于当前时间,格式:yyyy-MM-dd HH:mm:ss
  133. time: '',
  134. // 自定义参数,在获取状态报告时返回,最大长度100。
  135. extend: '',
  136. records: [
  137. {
  138. mobile: event.mobile,
  139. tpContent: {
  140. valid_code: event.code,
  141. }
  142. }
  143. ]
  144. }
  145. }
  146. return handleRequest(options)
  147. }
  148. module.exports = {
  149. // 根据模版Id查询模版
  150. templateQuery,
  151. // 查询所有模版
  152. templateList,
  153. // 短信签名列表查询
  154. signList,
  155. // 模板短信发送
  156. sendSmsTp,
  157. }