工做中須要用到短信登陸註冊驗證,因此本身用beego寫了個阿里大魚的短信驗證碼接口git
1、配置,beego的配置文件 conf/app.conf,這些註冊阿里大魚賬號就會分配給你,註冊地址:http://www.alidayu.com/github
sms_url=http://gw.api.taobao.com/router/rest sms_type=normal sms_AppKey=46745674567 sms_AppSecret=678467456745674567 sms_free_sign_name=一點通 sms_template_code=SMS_11060567
2、阿里大魚的短信發送工具函數,我參照了https://github.com/ltt1987/alidayu這個包寫的json
package tools import ( "crypto/md5" "github.com/astaxie/beego" "github.com/astaxie/beego/httplib" "sort" "strings" "time" "fmt" ) func Send_alidayu(phone, sms_param string) (string, error) { sms_url := beego.AppConfig.String("sms_url") sms_type := beego.AppConfig.String("sms_type") sms_free_sign_name := beego.AppConfig.String("sms_free_sign_name") sms_template_code := beego.AppConfig.String("sms_template_code") sms_AppKey := beego.AppConfig.String("sms_AppKey") sms_AppSecret := beego.AppConfig.String("sms_AppSecret") req := httplib.Post(sms_url) m := map[string]string{ "app_key": sms_AppKey, "timestamp": time.Now().Format("2006-01-02 15:04:05"), "v": "2.0", "method": "alibaba.aliqin.fc.sms.num.send", "partner_id": "top-apitools", "format": "json", "sms_type": sms_type, "rec_num": phone, "sms_free_sign_name": sms_free_sign_name, "sms_template_code": sms_template_code, "force_sensitive_param_fuzzy": "true", "sign_method": "md5", "sms_param": sms_param, } var keys []string for k := range m { keys = append(keys, k) } sort.Strings(keys) singString := sms_AppSecret for _, k := range keys { req.Param(k, m[k]) singString += k + m[k] } singString += sms_AppSecret signByte := md5.Sum([]byte(singString)) sign := strings.ToUpper(fmt.Sprintf("%x", signByte)) req.Param("sign", sign) result, err := req.String() return result, err }
3、使用方法,beego的controller中直接使用api
func (this *Register) Test() { req, err := tools.Send_alidayu("15953163355", "{code:'8558',product:'一點通'}") fmt.Println(err) this.Ctx.WriteString(req) }