使用Ruby语言调用短信接口发送验证码短信教程
作者:小编更新时间:2026-08-11点击数:

Web 应用里,短信验证码是常见的安全验证手段,注册、登录、找回密码都会用到。这篇文章讲怎么用 Ruby 调用短信接口,发送验证码短信。接口选用 https://api.3yit.com/api/send-sms-single,支持 POST 请求,返回 JSON 格式的数据。
准备工作
- 获取接口文档:到短信服务商处下载接口文档,找到自己的
sp_id、password(或签名算法)等关键信息。 - Ruby 环境:确认电脑上装好了 Ruby。
- HTTP 客户端库:Ruby 的选择不少,比如
Net::HTTP、RestClient、HTTParty。这里以Net::HTTP为例。
获取接口参数
登录智慧云信官网,选择对应的产品(如【验证码】),在上方选项卡中点击【开发者】→【HTTP开发文档】,就能看到具体的 API 方法名称,以及各参数的 key 和对应值,通常包括 sp_id、mobile、content、password 等。各参数含义如下:
sp_id:产品编号,全局唯一,一般由 6 位数字组成。mobile:接收短信的手机号码。content:短信内容,包含签名和正文。例如“【智慧云信】您的验证码是456790,请妥善保管”,其中【智慧云信】是签名,需在签名报备中申请;后面的提示语是短信模板,需在模板报备中申请,审核通过后才能发送。password:用 SP_ID 密码经 MD5 加密后生成的接口密码(非登录密码),由 32 位随机字符串组成。
编写代码
下面是一个简单的 Ruby 脚本,用来调用短信接口发送验证码短信:
require 'net/http'
require 'uri'
require 'openssl'
require 'json'
# 接口配置
API_URL = 'https://api.3yit.com/api/send-sms-single'
SP_ID = '5xxxxx' # 从接口文档中获取
PASSWORD = 'xxxxxxxxxxx' # 32位md5处理后的密码,从接口文档中获取
# 待发送的手机号和短信内容(假设验证码为123456)
MOBILE = '176xxxxxxxx'
CONTENT = '【签名】验证码:123456'
# 构建请求参数
params = URI.encode_www_form({
'sp_id' => SP_ID,
'mobile' => MOBILE,
'content' => CONTENT,
# 如果有签名算法,则计算签名并添加到params中,这里以密码方式为例
'password' => PASSWORD,
# 扩展号(可选)
'ext' => '123'
})
# 发送POST请求
uri = URI(API_URL)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri.request_uri)
request['Content-Type'] = 'application/x-www-form-urlencoded'
request.body = params
response = http.request(request)
# 解析响应内容
json_response = JSON.parse(response.body)
# 输出结果
puts json_response
# 检查响应状态
if json_response['code'] == 0
puts "验证码发送成功,msg_id: #{json_response['msg_id']}"
else
puts "发送失败:#{json_response['msg']}"
end
注意事项
- 密码、签名属于敏感信息,不要硬编码在代码里,建议用配置文件或环境变量管理。
- 示例只处理了返回码为 0 的情况,实际项目建议把网络错误、请求超时等各类错误都处理到。
- 如果服务商提供签名算法且选用签名方式,要按算法要求计算签名,再把它加到请求参数里(示例以密码方式为例)。
- 建议记录发送日志,包括发送时间、手机号、验证码、响应结果,方便排查问题。
- 正式上线前,对发送功能做充分测试,确认功能正常稳定。
按上面几步走,用 Ruby 调短信接口发验证码就不成问题。