功能示例 / Example

您正在进行会员注册,验证码:【变量】。请于30分钟内完成验证,切勿泄露!

您的支付验证码为:【变量】,请于30分钟内输入验证,请勿向他人泄露。工作人员不会以任何方式向您索要短信验证码,谨防欺诈短信。

验证码短信

开发流程 / Process

  • 注册开发者账号

  • 免费测试短信发送

  • 购买短信套餐

  • 快速调用接口

  • 完成开发

接口介绍 / Introduction

  • 灵活接入

    支持HTTPS、CMPP、SMPP协议标准,提供多种开发语言文档

  • 超高并发

    智能运维系统实时监控,一主四备短信通道,保障超高到达率

  • 专业服务

    专业技术团队答疑解难,24小时运维监控

应用场景 / Scenes

  • 登录注册

    适用于网站/APP的短信登录、账号注册场景,保障企业账号体系安全

  • 安全支付

    适用于有线上付款环节的行业,保障用户财产安全

  • 信息变更

    适用于有会员账号体系的企业,维护企业账号体系安全

  • 概要
  • 短信发送
  • 余额查询
  • 发送回执推送
  • 上行回复推送
  • 提交模板
  • 生成动态密码
  • 常见问题
  • 短信插件

1、概要

1.1 文档说明

本文档主要提供给互亿平台的用户对接接口的使用说明,开发者可以利用 ihuyi 提供的 HTTP 接口,调用 ihuyi 的短信验证码/通知服务。

1.2 接口内容

本文档包含短信发送、余额查询、发送回执推送、上行回复推送等。

1.3 提交方式

GET / POST

1.4 加密方式

1、采用HTTPS协议提交请求
2、通过MD5动态签名方式加密

1.5 API ID / API KEY

登录用户中心,进入【验证码通知短信】模块,在【产品总揽】页面右上角,如下图所示:

1.6 短信模版

短信模板是对您将要发送的短信进行相似性提取后的内容。举个例子,

A 用户在您平台注册会员,需要发送一条短信,内容如下:
您好,您的验证码是:666666
同时,B 用户也在您的平台注册会员,发送了如下短信:
您好,您的验证码是:888888
我们提取相似度以后,可以制作以下短信模板:
您好,您的验证码是:【变量】
其中,变量是可变的,可以是 数字、字母、汉字。

注意:未付费用户仅可使用默认短信模板,付费用户可以通过左侧导航【验证码通知短信】 -【短信发送】-【签名/模版管理】新增短信模板,运营商审核通过之后即可正式使用。

1.7 短信签名

短信签名是加在短信的开头或结尾,在【】加上您的公司名称或店铺名称的标识符,例如:【互亿无线】。 根据电信基础运营商的规定,每条短信必须附加短信签名,否则将无法正常发送。

注意:未付费用户仅可使用默认短信签名【互亿无线】,付费用户可以通过点击左侧导航【验证码通知短信】-【短信发送】-【签名/模版管理】修改签名,运营商审核通过之后即可正式使用。

2、短信发送

2.1 接口描述

通过POST、 GET 方式进行短信提交,数据编码采用utf-8格式,24小时全天发送。

2.2 请求地址

https://106.ihuyi.com/webservice/sms.php?method=Submit

2.3 请求参数

参数名称 参数值描述 必填
account APIID(用户中心【验证码通知短信】-【产品纵览】查看)
password 1、APIKEY(用户中心【验证码通知短信】-【产品纵览】查看)
2、动态密码(生成动态密码方式请看该文档末尾的说明)
mobile 接收手机号码,只能提交1个号码
content 短信内容(编码格式为 UTF-8,支持 300 个字的长短信,长短信 按多条计费)
例如:您的验证码是:1234。请不要把验证码泄露给其他人。
time Unix时间戳(10位整型数字,当使用动态密码方式时为必填)
format 返回格式(可选值为:xml或json,系统默认为xml)

用户通过http 或 https提交发送短信请求到服务器后,服务器会返回一串xml格式的字符串,SubmitResult结构说明如下:

参数名称 类型 描述
code int 返回值为2时,表示提交成功
smsid string 当提交成功后,此字段为流水号,否则为0
msg string 提交结果描述

2.4 响应示例

示例(成功)

  2         提交成功 14745625541233112231 

示例(失败)

  405 用户名或密码不正确 0     

2.5 响应参数

 

code msg
0 提交失败
2 提交成功
400 非法ip访问
401 帐号不能为空
402 密码不能为空
403 手机号码不能为空
4030 手机号码已被列入黑名单
404 短信内容不能为空
405 API ID 或 API KEY 不正确
4050 账号被冻结
40501 动态密码已过期
40502 动态密码校验失败
4051 剩余条数不足
4052 访问 ip 与备案 ip 不符
406 手机格式不正确
407 短信内容含有敏感字符
4070 签名格式不正确
4071 签名格式不正确
4072 签名格式不正确
40722 变量内容超过指定的长度【8】
4073 短信内容超出长度限制
4074 短信内容包含 emoji 符号
4075 签名未通过审核
408 发送超限([20]条),已加入黑名单,可登入平台解除
4080 同一手机号码同一秒钟之内发送频率不能超过 1 条
4082 超出同一手机号一天之内【5】条短信限制
4085 同一手机号验证码短信发送超出【5】条

2.6 请求示例

http://106.ihuyi.com/webservice/sms.php?method=Submit&account=APIID&password=APIKEY&mobile=手机号码&content=您的验证码是:1234。请不要把验证码泄露给其他人。

3、余额查询

3.1 接口描述

通过接口可以方便的查询你的账户验证码通知短信剩余条数。

3.2 请求地址

        http://106.ihuyi.com/webservice/sms.php?method=GetNum

3.3 请求参数

参数名称 参数值描述 是否必填
account APIID(请登录用户中心【验证码通知短信】-【产品纵览】查看)
password 1、APIKEY(请登录用户中心【验证码通知短信】-【产品纵览】查看)
2、动态密码(生成动态密码方式请看该文档末尾的说明)
time Unix时间戳(10位整型数字,当使用动态密码方式时为必填)
format 返回格式(可选值为:xml或json,系统默认为xml)

用户通过http 或 https提交帐户余额查询请求到服务器后,服务器会返回一串xml格式的字符串,GetNumResult结构说明如下:

参数名称 类型 描述
code int 状态返回值
msg string 查询结果描述
num string 剩余数量

3.4 响应示例

示例(成功)

  2 查询成功 856         

示例(失败)

  405 用户名或密码不正确 0 

3.5 响应参数

code msg
2 查询成功
400 非法ip访问
401 帐号不能为空
402 密码不能为空
405 用户名或密码不正确
4050 账号被冻结

3.6 GET请求示例

http://106.ihuyi.com/webservice/sms.php?method=GetNum&account=APIID&password=APIKEY

4、发送回执推送

4.1 接口描述

用户先提供数据接收地址,然后绑定到互亿无线系统后台,平台会以POST方式实时的将回执信息推送到此地址。

4.2 推送参数

参数名称 参数值描述
code 状态值(2成功 其他为失败)
msg 回执状态说明
mobilephone 手机号码
smsid 流水号(对应提交时返回的smsid)
report_time 回执时间 例:2017-08-02 14:31:51

注意: 成功接收请输出字符 “success” (不包含引号)结束推送,否则以接收失败处理。 每个回执最多推送 3 次。每次间隔叠加 60 秒。

5、上行回复推送

5.1 接口描述

用户先提供数据接收地址,然后绑定到互亿无线系统后台,平台会以 POST 方式实时的将 回复信息推送到此地址。

5.2 推送参数

参数名称 参数值描述
mobilephone 手机号码
content 上行内容
smsid 流水号(对应提交时返回的 smsid)(仅作参考)
reply_time 上行时间 例:2017-05-24 17:46:50

注意: 成功接收请输出字符 “success” (不包含引号)结束推送,否则以接收失败处理。每个回执最多推送 3 次。每次间隔叠加 60 秒。

6、提交模板

6.1 接口描述

通过 POST、 GET 方式提交短信模版,数据编码采用 utf-8 格式,24 小时全天发送。

6.2 请求地址

http://106.ihuyi.com/webservice/sms.php?method=AddTemplate&account=APIID&password=APIKEY&content=您的验证码是:【变量】。请不要把验证码泄露给其他人。

6.3 请求参数

参数名称 参数值描述
method AddTemplate
account 提交账户
password 提交账户密码 (可以明文密码或使用 32 位 MD5 加密)
模板内容 模板内容

返回值 AddTemplateResult 结构说明:

参数名称 类型 描述
code int 返回值为 2 时,表示添加成功
msg string 提交状态描述
templateid int 添加成功则返回模板 ID

6.4 响应参数

code msg
2 添加成功
400 提交状态描述
401 添加成功则返回模板 ID
402 密码不能为空
404 模板内容不能为空
405 用户名或密码不正确
4050 账号被冻结
407 模板内容含有敏感字符

6.5 模板审核状态推送

在遵守 HTTP 协议规范的前提下,通过 POST 方式将回执推送到用户指定的 URL 地址。

参数说明:

参数名称 参数值描述
code 状态值(2 成功 0 驳回)
msg 审核状态描述
templateid 模板 ID

注意:

1.成功接收请输出字符 “success” (不包含引号)结束推送,否则以接收失败处理。

2.每个回执最多推送 3 次。每次间隔叠加 60 秒。

3.code 值说明

2 成功

0 驳回(原因请看 msg 字段)

7、生成动态密码方式

以PHP为例,提交语音验证码的生成方式:

$time = time();
$password = md5($account.$apikey.$mobile.$content.$time);

例如:

APIID: test
APIKEY:1q784322ba1d9bb88d50cf5cdfd89k7d
手机号:138xxxxxxxx
内容:您的验证码是:2546。请不要把验证码泄露给其他人。
time:1451544941
结果:$password=md5('test1q784322ba1d9bb88d50cf5cdfd89k7d138xxxxxxxx 您的 验证码是:2546。请不要把验证码泄露给其他人。1451544941');

注意:因为短信内容会包含中文,所以字符编码统一为 UTF-8

查询剩余条数的生成方式:

$time = time();
$password = md5($account.$apikey.$time);

例如:

APIID: test
APIKEY:1q784322ba1d9bb88d50cf5cdfd89k7d
手机号:138xxxxxxxx
time:1451544941
结果:$password=md5('test1q784322ba1d9bb88d50cf5cdfd89k7d1451544941');

Unix时间戳参考地址:http://tool.chinaz.com/Tools/unixtime.aspx

8、常见问题

8.1 如何处理乱码

说明: 将短信内容( content)进行 UTF-8 编码后提交。

PHP 乱码:

$content = iconv("GBK","UTF-8",$content);

JAVA 乱码:

sb.append("&content="+URLEncoder.encode(content,"UTF-8"));

C#乱码:

byte[] bTemp = System.Text.Encoding.GetEncoding("GBK").GetBytes(sbTemp.ToString());

8.2 如何实现 UNIX 时间戳

语言 代码
JAVA String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp *1000))
Linux date -d @Unix timestamp
C strptime(datetime, "%Y-%m-%d %H:%M:%S", &tm_time); unixtime = mktime(&tm_time);
C++ std::time_t t = std::time(0);
DELPHI uses DateUtils;
DateTimeToUnix(Now)
GO import "time"
cur := time.Now()
timestamp := cur.UnixNano() / 1000000
Perl 先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6]
PHP date('r', Unix timestamp)
Node.js var date = new Date( time * 1000 );
var time = date.getTime()/1000;
Python 先 import time 然后 time.gmtime(Unix timestamp)
Ruby Time.at(Unix timestamp)
SHELL date +%s //UNIX 的时间戳;
VBScript / ASP DateAdd("s", Unix timestamp, "01/01/1970 00:00:00")
VB6 DateDiff("s", "1970-1-1 0:0:0", ToUnixTime)
易语言 时间_到时间戳()

9、短信插件

语言 DEMO 地址
ECtouch https://www.ihuyi.com/plugin/sms/ectouch.html
ECshop https://www.ihuyi.com/plugin/sms/ecshop.html
Dedecmsv5.7 https://www.ihuyi.com/plugin/sms/dedecms57.html
小京东 v4.2 https://www.ihuyi.com/plugin/sms/jd.html
快捷订餐系统 https://www.ihuyi.com/plugin/sms/kjcms.html
方维 p2p v2.7 https://www.ihuyi.com/plugin/sms/fanwe_v2.7.html
方维 p2p v3.0 https://www.ihuyi.com/plugin/sms/fanwe_v3.html
方维团购 https://www.ihuyi.com/plugin/sms/fanwe_tuangou.html
ShopNC https://www.ihuyi.com/plugin/sms/shopnc.html
Astgo https://www.ihuyi.com/plugin/sms/astgo.html
Iwebshop https://www.ihuyi.com/plugin/sms/iwebshop.html
Kppw 威客系统 https://www.ihuyi.com/plugin/sms/kppw.html
Phpyun https://www.ihuyi.com/plugin/sms/phpyun.html
芝麻乐 https://www.ihuyi.com/plugin/sms/zhimale.html
小京东 v5.0 https://www.ihuyi.com/plugin/sms/xjd5.html
骑士人才系统 https://www.ihuyi.com/plugin/sms/qscms_v4.1.html
友价源码系统 https://www.ihuyi.com/plugin/sms/yj.html
ThinkSNS https://www.ihuyi.com/plugin/sms/thinksns.html
小猪生活通 o2o https://www.ihuyi.com/plugin/sms/pigo2o.html
CmsEasy https://www.ihuyi.com/plugin/sms/cmseasy.html
Wordpress v4.0 https://www.ihuyi.com/plugin/sms/wordpress4.html
TPShop https://www.ihuyi.com/plugin/sms/tpshop.html
微赞微信管理系统 https://www.ihuyi.com/plugin/sms/weizan.html
微米 CMS https://www.ihuyi.com/plugin/sms/weimi.html
Destoon https://www.ihuyi.com/plugin/sms/Destoonb2b_V6.0.html
ECmall https://www.ihuyi.com/plugin/sms/ecmall_V2.3.html
方维 p2p v3.6 https://www.ihuyi.com/plugin/sms/fanwe_v3.6.html
得推校园 O2O https://www.ihuyi.com/plugin/sms/detuio2o.html
微橙-人人店 https://www.ihuyi.com/plugin/sms/weicheng.html

 

短信发送错误码参照:

code msg
0 提交失败
2 提交成功
400 非法ip访问
401 帐号不能为空
402 密码不能为空
403 手机号码不能为空
4030 手机号码已被列入黑名单
404 短信内容不能为空
405 API ID 或 API KEY 不正确
4050 账号被冻结
40501 动态密码已过期
40502 动态密码校验失败
4051 剩余条数不足
4052 访问 ip 与备案 ip 不符
406 手机格式不正确
407 短信内容含有敏感字符
4070 签名格式不正确
4071 签名格式不正确
4072 签名格式不正确
40722 变量内容超过指定的长度【8】
4073 短信内容超出长度限制
4074 短信内容包含 emoji 符号
4075 签名未通过审核
408 发送超限([20]条),已加入黑名单,可登入平台解除
4080 同一手机号码同一秒钟之内发送频率不能超过 1 条
4082 超出同一手机号一天之内【5】条短信限制
4085 同一手机号验证码短信发送超出【5】条

余额查询错误码参照:

code msg
2 查询成功
400 非法ip访问
401 帐号不能为空
402 密码不能为空
405 用户名或密码不正确
4050 账号被冻结

提交模板错误码参照:

code msg
2 添加成功
400 提交状态描述
401 添加成功则返回模板 ID
402 密码不能为空
404 模板内容不能为空
405 用户名或密码不正确
4050 账号被冻结
407 模板内容含有敏感字符

代码示例

语言 详情链接
PHP https://www.ihuyi.com/demo/sms/php.html
JAVA https://www.ihuyi.com/demo/sms/java.html
ASP https://www.ihuyi.com/demo/sms/asp.html
ASP.NET(C#) https://www.ihuyi.com/demo/sms/aspx.html
JSP https://www.ihuyi.com/demo/sms/jsp.html
C https://www.ihuyi.com/demo/sms/c.html
C++ https://www.ihuyi.com/demo/sms/cpp.html
DELPHI https://www.ihuyi.com/demo/sms/delphi.html
GO https://www.ihuyi.com/demo/sms/go.html
NODE.JS https://www.ihuyi.com/demo/sms/nodejs.html
PYTHON https://www.ihuyi.com/demo/sms/python.html
RUBY https://www.ihuyi.com/demo/sms/ruby.html
SHELL https://www.ihuyi.com/demo/sms/shell.html
VB6 https://www.ihuyi.com/demo/sms/vb6.html
易语言 https://www.ihuyi.com/demo/sms/eyuyan.html

常见问题

目录 详情链接
模板审核标准 https://www.ihuyi.com/faq/qianmingguifan.html
签名审核标准 https://www.ihuyi.com/faq/qianmingshenhebiaozhun.html
支付问题 https://www.ihuyi.com/faq/pay.html
账号问题 https://www.ihuyi.com/faq/account.html
产品问题 https://www.ihuyi.com/faq/sms.html

客户服务

内容 联系方式
400热线 400-880-8898
联系电话 021-5169 8929
邮箱 service@ihuyi.com
邮政编码 201203

市场合作/渠道代理

内容 联系方式
联系电话 15902129325
邮箱 linsn@ihuyi.com

技术支持

内容 联系方式
联系电话 4008 808 898
邮箱 support@ihuyi.com

公司地址

内容 联系方式
上海总公司 上海市浦东新区纳贤路800号A座401
南京分公司 南京市秦淮区瞻园路19号
成都分公司 中国(四川)自由贸易试验区成都高新区天府街69号

热门接口

在线咨询
电话咨询
服务热线:
4008 808 898



验证码已发送到您的手机,请查收!

填写验证码后,点击“开通体验账户”自动开通体验账户。

收不到短信验证码?
×