短信发送方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.7 KiB

package sms
import (
"errors"
"git.tetele.net/tgo/helper"
"log"
"time"
)
/**
* 企业信息服务平台--一信通短信,健帆用
* @spCode 企业编号
* @appKey 登录的用户名
* @secretKey 接口业务--接口申请里的秘钥
* @templateId 短信模板id
* @mobiles 手机号,多个用逗号隔开
* @content 短信内容
*/
func SendByUms(spCode, appKey, secretKey, mobiles, templateId, content string) (bool, error) {
if spCode == "" || appKey == "" || secretKey == "" || mobiles == "" || templateId == "" || content == "" {
return false, errors.New("参数不全")
}
api := "https://api.ums86.com/api/sms/send"
timestamp := helper.ToStr(time.Now().UnixNano() / 1e6)
num_rand := helper.GetRandomNumber(7)
serialNumber := timestamp + num_rand
// 短信请求字段
body_data := map[string]string{
"userNumber": mobiles,
"templateId": templateId,
"messageContent": content,
"serialNumber": serialNumber,
}
// 请求头封装
six_rand := helper.GetRandomString(6)
request_id := timestamp + six_rand
headers := map[string]string{
"x-sp-code": spCode,
"x-app-key": appKey,
"x-request-id": request_id,
"X-Forwarded-For": "120.78.230.86",
}
// 签名
sign := UmsSetSign(body_data, headers, secretKey)
headers["x-sign"] = sign
reply, err := PostJsonData(api, body_data, headers)
if err != nil {
log.Println("post err", err)
return false, err
}
var reply_data map[string]interface{}
err = json.Unmarshal(reply, &reply_data)
if err != nil {
log.Println(string(reply), err)
return false, err
}
if helper.ToStr(reply_data["code"]) != "0" {
return false, errors.New("短信发送失败," + helper.ToStr(reply_data["msg"]))
}
return true, nil
}