Go短信营销接口对接示例代码

本示例介绍如何使用Go调用互亿无线短信营销接口,完成短信群发。通过简单的 HTTP POST 请求,开发者即可在业务系统中集成营销短信功能,适用于促销活动通知、会员关怀提醒、节日祝福推送等多类营销场景。

示例将展示接口请求的基本流程、参数配置以及响应解析,帮助开发者快速掌握短信营销接口的调用方式。

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "strings"
)

const strUrl = "https://api.ihuyi.com/sms-yx/v1/batchSend"

func main() {

    params := map[string]interface{}{
        "api_id": "sms-yx-xxxxxxxx", //APIID(用户中心【文本短信】-【会员营销短信】-【产品总览】查看)
        "signature": "xxxxxxxxx", //请求验证加密签名(非短信签名);签名生成方式:仅公共参数以ASCII码从小到大排序值,key=value,多值以“&”隔开,拼接之后md5 32位小写; 如:md5(api_id=xxxx&api_key=xxxx&request_id=xxxxxxxx&timestamp=xxxxxxx)APIKEY(用户中心【文本短信】-【会员营销短信】-【产品总览】查看)2、动态密码(生成动态密码方式请看该文档末尾的说明)
        "timestamp": 1623643787, //东八时区;10位时间戳,时间允许相差±60S
        "request_id": "xxxxxxxxxxxx", //请求方请求ID,建议使用唯一ID,比如使用uuid;我方系统会2小时内去重验证处理,防止网络重复攻击;
        "product_id": 1001, //产品ID
        "phone": []string{"18800000000", "18800000002"}, //手机号数组(最多1万个号码)
        "sign_name": "xxxxxxxx", //短信签名(template_id未填写则必填)
        "content": "尊敬的会员您好:${name},您的订单号是:${order_no},拒收请回复R", //template_id为空时必填;短信内容,如:您的短信群发功能已开通,请在3个工作日之内至平台进行企业认证! 短信内容和模板ID必须传入1个;当短信内容和模板ID都传入时,传入内容生效,模板ID属性失效;
        "template_id": 1, //模板ID(内容为空则必填)
        "template_var": map[string]string{"${name}":"张三","${order_no}":"202009041156181103"}, //选择模板时,且模板是变量模板时,可以传入变量值,需要传入json格式;
        "send_time": "2020-08-26 16:08:14", //定时发送时间
    }

    //将params转成json字符串
    jsonBody, err := json.Marshal(params)
    if err != nil {
        fmt.Println("JSON转换错误:", err)
        return
    }
    body := string(jsonBody)

    client := &http.Client{}
    req, _ := http.NewRequest("POST", strUrl, strings.NewReader(body))
    req.Header.Set("Content-Type", "application/json; charset=utf-8") //form表单提交

    resp, err := client.Do(req) //发送
    if err != nil {
        fmt.Println(err)
    }

    defer resp.Body.Close() //一定要关闭resp.Body
    res, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(res))
}