打开网址   ThinkPHP服务市场

市场入住说明  入驻产品信息 · ThinkPHP应用服务市场入驻申请 · 看云

举例短信接口

短信API文档

接口使用参考这里:短信API服务 · ThinkAPI 统一API调用服务 · 看云

功能介绍

  1. 支持国内快速发送验证码、短信通知,服务范围覆盖全国。
  2. 支持三网合一专属通道,与工信部携号转网平台实时互联。
  3. 电信级运营保障,到达率高达99%,支持大容量高并发。
  4. 超低资费,多种阶梯套餐任意选择

内置安全策略

  1. 限制每天单个号码的发送次数,默认为10条,可根据业务自行调整。
  2. 限制单个号码一分钟内不超过1条,一小时内不超过5条,可以根据业务自行调整。

短信防轰炸建议

  1. 有效的图片验证(图形、滑动拼图验证码、减少被轰炸机识别的可能性)及不低于60S倒计时。
  2. 设置IP白名单。(可绑定多个IP地址)
  3. 设置短信预警提醒功能。
  4. APP端建议采用秘钥签名校验请求合法性。
  5. 由于短信轰炸机可以模拟IP且取用随机号码,所以在进行整改时不要只限制IP和单号码发送次数,因为这样无法限制大量号码异常下发。

签名及模板审核要求(支持接口申请)

短信发送审核要求大致包括:

1、短信模板需明确表述短信发送的实际内容。
2、所有模板均禁止发送金融相关的所有内容。
3、不支持发送未经许可的发送行为,主要指邀请注册、邀请成为会员的商业性信息 。
4、禁止发送涉及:色情、赌博、毒品、党政、法律维权、众筹、慈善募捐、宗教、迷信、股票、留学移民、面试招聘、博彩、贷款、催款还款、信用卡提额、投资理财、中奖、抽奖、一元夺宝、一元秒杀、一元云购、二类电商、A货、整形、烟酒、交友、暴力、恐吓、皮草、返现返利、代开发票、运营商禁止发送的信息、代理注册、代办证件、加群、加QQ或者加微信、贩卖个人信息、运营商策反、流量营销、违反广告法用语、殡葬、刷单、空包网、邀请好评、转店类业务等信息的短信。
5、禁止在关键字或关键信息中出现错别字、变体字、异体字、各类干扰符号等;禁止出现各类非正常混合字以及非常用的表达法。
6、不支持内容中含有直接或间接访问应用内测分发平台的行为。

接口费用( 点击购买)

最低 0.035元/次

计费规则

短信最终是否成功的确认是运营商异步确认的,所以需要在我的服务->短信服务->发信记录里面确认,最终的计费也是以发信记录里面的成功次数来计费,如果短信内容长度超过70个字符可能会造成多次计费,请悉知。

短信字数=短信模版内容字数 + 签名字数
短信字数≤70个字数,按照70个字数一条短信计算
短信字数>70个字数,即为长短信,按照67个字数记为一条短信计算。客户感知还是一条短信。

在统计短信字数时,小数点、字母、汉字以及其他符号、空格均按照一个字符位进行统计。最终按照实际发送成功的短信条数计费。

接口调用(调用须知)

调用步骤:申请签名-> 申请模板(如果使用系统自带模板可跳过)->调用接口

短信发送之前,首先要完成模板和签名的申请,登录市场后点击右上角用户头像选择“我的服务->短信服务”,在签名管理和模板管理里面申请即可,审核通过后才可以进行短信发送调用。一旦检查发现有任何违规内容发送的话,我们将会对签名和模板进行冻结,已购买的套餐资费不退,并且保留追究相关责任的权利。开发对接测试的时候,也不要使用带有测试字样的内容(如果产品尚未上线,可以先申请一个公司简称用于测试对接,后续再申请产品相关签名)。

签名提交注意事项

签名的规范建议使用公司名(通常是简写)、品牌名(或商标)、网站名称、产品名、公众号名称等,尽量避免使用生僻字,会比较容易通过审核。签名中不要包含任何特殊字符,包括【】、[],不要使用带有测试字样的签名,申请签名的时候务必注明你的使用场景,便于快速完成审核。为了企业安全考虑,签名使用公司名或简称的话,请先完成企业认证。

模板提交注意事项

模板内容里面如果需要使用变量,变量定义格式为 ${变量名},其中变量名规范为英文大小写字母及下划线(请避免包含数字和特殊符号,并且不能使用系统内置变量,包括idemailmobilenicksite)。并且模板内容里面不要包含【】符号,否则会误判为签名,导致发送较慢或者拦截,如非必要,避免在模板中使用特殊字符,单个模板中不得超过8个变量,并且单个变量不能超过50个字符(如果你要在变量中传URL地址 尽可能使用短网址)。

接口1:发送短信

GET https://api.topthink.com/sms/send

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
signId Number 签名id,在我的服务->短信服务->签名管理里面查看
templateId Number 模板id,在我的服务->短信服务->模板管理里面查看
phone String 要发送的国内手机号码
params Json 模板变量 使用Json对象格式

返回data参数

名称 类型 说明
id String 短信发送任务id

SDK调用

$client = new Client("YourAppCode");$result = $client->smsSend()->withSignId('78')->withTemplateId('234')->withPhone('15687902345')->withParams('{"code": "7865"}')->request();
dump($result);

注意:如果你的模板没有变量,请不要传任何变量参数,否则会提示变量错误。

返回结果示例:

{
"code": 0,
"message": "发送成功",
"data":{"id": "6055df2f45e10"}
}

接口2:查询短信发送状态

短信最终是否成功的确认是运营商异步确认的,你可以在我的服务->短信服务->发信设置里面设置数据推送的回调地址,用于支持短信发送回执的推送。

回调请求类型为POST, 请求的头部包含

X-ThinkPHP-Event: sms

请求的数据为json格式的

{'action' : 'report',   'sms': {'id':'6055075678d9' // 短信任务ID'phone'  : '13509898765', // 发送手机号码 'content'  : '短信内容', // 短信内容'sendDate' : '2021-04-20 04:19:33', // 发送时间'receiveDate': '2021-04-20 04:21:30', // 接收时间'status': 1,// 1 成功 -1 失败 0 发送中'message':'', // 错误提示}
}

数据推送只会推送一次,如果没有收到的话,也可以通过以下接口主动查询短信的发送状态

GET https://api.topthink.com/sms/query_status

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id String 短信发送任务id

返回data参数

名称 类型 说明
id String 短信发送任务id
phone Number 发送手机号码
content string 短信内容
sendDate String 发送时间
reveiveDate String 接收时间
status int 发送状态 0 发送中 1 成功 -1 失败
message String 错误信息

SDK调用

$client = new Client("YourAppCode");$result = $client->smsQueryStatus()->withId('6055075678d9')->request();
dump($result);

接口3:申请签名

申请短信签名

签名提交注意事项

签名的规范建议使用公司名(通常是简写)、品牌名(或商标)、网站名称、产品名、公众号名称等,尽量避免使用生僻字,会比较容易通过审核。签名中不要包含任何特殊字符,包括【】、[],不要使用带有测试字样的签名,申请签名的时候务必注明你的使用场景,便于快速完成审核。为了企业安全考虑,签名使用公司名或简称的话,请先完成企业认证。

接口地址

GET https://api.topthink.com/sms/add_sign

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
name String 短信签名
remark String 签名描述

返回data参数

名称 类型 说明
name String 短信签名
remark string 签名描述
user_id int 用户id
create_time String 创建时间
update_time String 更新时间
id int 签名ID

SDK调用

$client = new Client("YourAppCode");$result = $client->smsAddSign()->withName('顶想云')->withRemark('用于topthink.com顶想云短信通知和验证码发送')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "添加成功",
"data":{"name": "顶想云","remark": "用于topthink.com顶想云服务短信通知和验证码","user_id": 1,"create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:28:04","id": "471"}
}

接口4:查询签名审核状态

短信签名审核是异步确认的,你可以在我的服务->短信服务->发信设置里面设置数据推送的回调地址,用于支持短信签名审核回执的推送。

回调请求类型为POST, 请求的头部包含

X-ThinkPHP-Event: sms

请求的数据为json格式的

{'action' : 'sign',   'sign': {"id": "471","user_id": "1","name": "顶想云","remark": "用于顶想云服务短信通知和验证码","status": 2, // 签名状态 0 审核中 1 通过 2 驳回"error": "请提供网址或公众号", // 驳回原因"create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:28:04",}
}

数据推送只会推送一次(无论是通过审核还是驳回),如果没有收到的话,也可以通过以下接口主动查询短信签名的审核状态

GET https://api.topthink.com/sms/query_sign

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id String 短信签名ID

返回data参数

名称 类型 说明
id int 签名ID
user_id int 用户id
name String 短信签名
remark string 签名描述
status int 签名状态 0 审核中 1 通过审核 2 驳回
error string 签名驳回原因
create_time String 创建时间
update_time String 更新时间

SDK调用

$client = new Client("YourAppCode");$result = $client->smsQuerySign()->withId('471')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "查询成功",
"data":{"id": "471","user_id": "1","name": "顶想云","remark": "用于顶想云服务短信通知和验证码","status": 2, "error": "请提供网址或公众号", "create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:28:04",}
}

接口5:修改签名

如果签名被驳回了 可以通过该接口修改后重新提交申请。(已经通过审核的签名不允许修改 只能删除然后重新申请新的签名)

GET https://api.topthink.com/sms/modify_sign

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id int 签名ID
name String 短信签名
remark String 签名描述

返回data参数

名称 类型 说明
name String 短信签名
remark string 签名描述
user_id int 用户id
create_time String 创建时间
update_time String 更新时间
id int 签名ID

SDK调用

$client = new Client("YourAppCode");$result = $client->smsModifySign()->withId('471')->withName('顶想云')->withRemark('用于topthink.com顶想云短信通知和验证码发送')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "修改成功",
"data":{"name": "顶想云","remark": "用于topthink.com顶想云服务短信通知和验证码","user_id": 1,"create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:38:04","id": "471"}
}

修改签名接口提交后,依然可以通过回调或查询签名状态的接口来查询审核结果。

接口6:删除签名

可以通过该接口删除已经申请的签名(包括驳回和通过审核的)

GET https://api.topthink.com/sms/delete_sign

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id int 签名ID

返回data参数

SDK调用

$client = new Client("YourAppCode");$result = $client->smsDeleteSign()->withId('471')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "删除成功",
}

接口7:申请模板

申请短信通知模板

模板提交注意事项

模板内容里面如果需要使用变量,变量定义格式为${变量名},其中变量名规范为英文大小写字母及下划线(请避免包含数字和特殊符号,并且不能使用系统内置变量,包括idemailmobilenicksite)。并且模板内容里面不要包含【】符号,否则会误判为签名,导致发送较慢或者拦截,如非必要,避免在模板中使用特殊字符,单个模板中不得超过8个变量,并且单个变量不能超过50个字符(如果你要在变量中传URL地址 尽可能使用短网址)。

接口地址

GET https://api.topthink.com/sms/add_template

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
name String 短信模板名称
content String 短信模板内容
remark String 模板描述

返回data参数

名称 类型 说明
name String 短信模板名称
name String 模板内容
remark string 模板描述
user_id int 用户id
create_time String 创建时间
update_time String 更新时间
id int 模板ID

SDK调用

$client = new Client("YourAppCode");$result = $client->smsAddTemplate()->withName('订单通知')->withContent('你有一个新的${name}订单,请及时处理!')->withRemark('用于顶想云订单通知')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "添加成功",
"data":{"name": "订单通知","content": "你有一个新的${name}订单,请及时处理!","remark": "用于顶想云订单通知","user_id": 1,"create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:28:04","id": "278"}
}

接口8:查询模板审核状态

短信模板审核是异步确认的,你可以在我的服务->短信服务->发信设置里面设置数据推送的回调地址,用于支持短信模板申请回执的推送。

回调请求类型为POST, 请求的头部包含

X-ThinkPHP-Event: sms

请求的数据为json格式的

{'action' : 'template',   'sign': {"id": "278","user_id": "1","name": "订单通知","content": "你有一个新的${name}订单,请及时处理!","remark": "用于顶想云订单通知","status": 1, // 审核状态 0 审核中 1 通过 2 驳回"error": null, // 驳回原因"create_time": "2022-02-13 22:32:04","update_time": "2022-02-13 22:32:04",}
}

数据推送只会推送一次(无论是通过审核还是驳回),如果没有收到的话,也可以通过以下接口主动查询短信模板的审核状态

GET https://api.topthink.com/sms/query_template

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id String 短信模板ID

返回data参数

名称 类型 说明
id int 模板ID
user_id int 用户id
name String 模板名称
content String 模板内容
remark string 模板描述
status int 审核状态 0 审核中 1 通过审核 2 驳回
error string 驳回原因
create_time String 创建时间
update_time String 更新时间

SDK调用

$client = new Client("YourAppCode");$result = $client->smsQueryTemplate()->withId('278')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "查询成功",
"data":{"id": "278","user_id": "1","name": "订单通知","content": "你有一个新的${name}订单,请及时处理!","remark": "用于顶想云订单通知","status": 1, "error": null, "create_time": "2022-02-13 22:48:04","update_time": "2022-02-13 22:48:04",}
}

接口9:修改模板

如果模板被驳回了 可以通过该接口修改后重新提交申请。(已经通过审核的模板不允许修改 只能删除然后重新申请新的模板)

GET https://api.topthink.com/sms/modify_template

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id int 模板ID
name String 短信模板名
remark String 模板描述

返回data参数

名称 类型 说明
name String 短信模板名
content string 模板内容
remark string 模板描述
user_id int 用户id
create_time String 创建时间
update_time String 更新时间
id int 签名ID

SDK调用

$client = new Client("YourAppCode");$result = $client->smsModifyTemplate()->withId('278')->withName('订单通知1')->withContent('你有一个新的${name}订单,请及时处理!')->withRemark('用于顶想云订单通知')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "修改成功",
"data":{"name": "订单通知1","content": "你有一个新的${name}订单,请及时处理!","remark": "用于顶想云订单通知","user_id": 1,"create_time": "2022-02-13 22:28:04","update_time": "2022-02-13 22:38:04","id": "278"}
}

修改模板接口提交后,依然可以通过回调或查询模板审核状态的接口来查询审核结果。

接口10:删除模板

可以通过该接口删除已经申请的模板(包括驳回和通过审核的)

GET https://api.topthink.com/sms/delete_template

请求参数

参数名称 类型 必须 描述
appCode string 用户授权码,参考API调用
id int 签名ID

返回data参数

SDK调用

$client = new Client("YourAppCode");$result = $client->smsDeleteTemplate()->withId('278')->request();
dump($result);

返回结果示例:

{
"code": 0,
"message": "删除成功",
}

thinkphp API 使用知识相关推荐

  1. Vue 2.0 官网 API 零碎知识整理

    Vue API 零碎知识整理 最近抽空重新看了一遍Vue官网的API,对一些经常使用的.经常忘记用法的.经常错用的API进行了梳理,并以个人学习笔记的形式记录,以降低再次阅读的成本和提高查阅文档的效率 ...

  2. php api开发书籍,概述 · ThinkPHP API开发入门 · 看云

    [![邀请链接](https://img.kancloud.cn/bd/9e/bd9ee1bb6c29f7cad10b6e069b1907da_728x90.jpg)](https://www.kan ...

  3. 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识

    什么是REST REST 是 Representational State Transfer 的缩写. 它是一种架构的风格, 这种风格基于一套预定义的规则, 这些规则描述了网络资源是如何定义和寻址的. ...

  4. 产品经理须知 | API接口知识小结

    作者:椒图 (转载已取得作者授权) 应用程序接口API(Application Programming Interface),是提供特定业务输出能力.连接不同系统的一种约定.这里包括外部系统与提供服务 ...

  5. 小程序 长按api_微信小程序API相关知识科普

    微信小程序API(Application Programming Interface),即应用程序编程接口.API是一种接口函数,把函数封装起来,给开发者,这样好多的功能就不需要你去实现了,只要会调用 ...

  6. 大数据技术之_11_HBase学习_03_HBase 实战之谷粒微博(练习API) + 扩展知识(布隆过滤器+HBase2.0 新特性)

    大数据技术之_11_HBase学习_03 第8章 HBase 实战之谷粒微博 8.1 需求分析 8.2 代码实现 第9章 扩展知识 9.1 HBase 在商业项目中的能力 9.2 布隆过滤器 9.3 ...

  7. 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...

  8. ThinkPHP 的一些知识

    1.定义控制器层不一定要继承Controller,但是要输出模板的话,却是必须继承了. 2.通过设置CONTROLLER_LEVEL(默认为1),可以通过子目录把控制器分层存放.(比如 'CONTRO ...

  9. thinkPHP开发基础知识 包括变量神马的

    2019独角兽企业重金招聘Python工程师标准>>> thinkPHP框架开发的应用程序,一般都采用单一入口的方式,下面是在应用首页文件中实现的定义: 1.在首页定义thinkPH ...

最新文章

  1. 获取表单内部元素的N种方法
  2. 独家干货 | 吴恩达深度学习专项课程精炼笔记!
  3. java 异常 规范_java 异常规范
  4. mysql性能优化:my.cnf配置文件
  5. 如何才能成为编程高手?别人都不告诉你的东西,我来说给你听!
  6. pta-2、求三角形面积及周长 (10 分)
  7. pcl中ransac提取直线_SIFT关键点提取
  8. ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
  9. matlab 暴雨强度公式,利用MATLAB推导城市暴雨强度公式
  10. php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
  11. 计算机学win7画图,win7自带画图工具(mspaint.exe)
  12. Tslib1.20和Qt 4.8.4与在ARM开发板上的移植 多点触摸
  13. c语言地铁系统设计,城市地铁报站系统设计.doc
  14. 国外邮件服务器,在国外发邮件连不上国内的邮件服务器
  15. compat-mysql安装_Centos7 rpm方式安装Percona Mysql 8
  16. eclipse字体颜色设置的方法
  17. 数据挖掘的R包和函数的集合
  18. 记openssh升级,telnet安装(环境CentOS 7.9。 晗旧版本的不同补充)
  19. OpenCV 进行图像相似度对比的几种办法-【顺带附py对比学习案例】
  20. 风信子 - 基于Django开发的APP内测平台

热门文章

  1. 高通410芯片16-v3和16-v4版型的随身WiFi进入9008端口
  2. python奇数偶数机器语言_python 学习笔记之基础1
  3. 用PS作出的3D字体
  4. Unite Training Day报名开启,打造精彩游戏世界
  5. three.js 带更新文字的旋转地球
  6. (附源码)ssm中小企业仓库管理信息系统的开发与实现 毕业设计150916
  7. 生活原来真的很忙碌,没心没肺的活着
  8. 别对生活要求太多,生活才会充满惊喜。人生没有过不去的坎
  9. rational rose 2007详细安装教程(图文版-本人亲试)
  10. 在罗湖火车站乘搭 Z24 直达武汉