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 }