beego 阿里大鱼短信验证码接口

工作中需要用到短信登录注册验证,所以自己用beego写了个阿里大鱼的短信验证码接口

一、配置,beego的配置文件  conf/app.conf,这些注册阿里大鱼帐号就会分配给你,注册地址:http://www.alidayu.com/

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

二、阿里大鱼的短信发送工具函数,我参照了https://github.com/ltt1987/alidayu这个包写的

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
}

三、使用方法,beego的controller中直接使用

func (this *Register) Test() {
	req, err := tools.Send_alidayu("15953163355", "{code:'8558',product:'一点通'}")
	fmt.Println(err)
	this.Ctx.WriteString(req)
}

 

转载于:https://my.oschina.net/tongjh/blog/701886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值