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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,我们可以了解到“大鱼吃小鱼”是一个生态系统中的捕食关系,而Matlab是一种数学计算软件,因此我们可以使用Matlab来模拟这种捕食关系。下面是一个简单的示例代码: ```matlab % 定义初始种群数量 fish_num = 100; shrimp_num = 500; % 定义每个时间步长的时间间隔 dt = 0.01; % 定义每个时间步长中,大鱼和小鱼的捕食率 fish_eat_shrimp_rate = 0.1;shrimp_eat_fish_rate = 0.05; % 定义每个时间步长中,大鱼和小鱼的死亡率 fish_death_rate = 0.01; shrimp_death_rate = 0.02; % 定义每个时间步长中,大鱼和小鱼的繁殖率 fish_reproduce_rate = 0.05; shrimp_reproduce_rate = 0.1; % 定义每个时间步长中,大鱼和小鱼的繁殖成功率 fish_reproduce_success_rate = 0.8; shrimp_reproduce_success_rate = 0.9; % 开始模拟 for t = 1:1000 % 计算每个时间步长中,大鱼和小鱼的数量变化 fish_num_change = fish_num * (fish_eat_shrimp_rate * shrimp_num - fish_death_rate) + fish_num * fish_reproduce_rate * fish_reproduce_success_rate; shrimp_num_change = shrimp_num * (shrimp_eat_fish_rate * fish_num - shrimp_death_rate) + shrimp_num * shrimp_reproduce_rate * shrimp_reproduce_success_rate; % 更新大鱼和小鱼的数量 fish_num = fish_num + fish_num_change * dt; shrimp_num = shrimp_num + shrimp_num_change * dt; end % 输出最终的大鱼和小鱼的数量 fprintf('Final fish number: %d\n', round(fish_num)); fprintf('Final shrimp number: %d\n', round(shrimp_num)); ``` 上述代码中,我们定义了初始的大鱼和小鱼数量,以及每个时间步长中的各种参数,然后使用for循环模拟了1000个时间步长中,大鱼和小鱼的数量变化情况。最后输出了最终的大鱼和小鱼数量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值