thinkphp API 使用知识
打开网址 ThinkPHP服务市场
市场入住说明 入驻产品信息 · ThinkPHP应用服务市场入驻申请 · 看云
举例短信接口
短信API文档
接口使用参考这里:短信API服务 · ThinkAPI 统一API调用服务 · 看云
功能介绍
- 支持国内快速发送验证码、短信通知,服务范围覆盖全国。
- 支持三网合一专属通道,与工信部携号转网平台实时互联。
- 电信级运营保障,到达率高达99%,支持大容量高并发。
- 超低资费,多种阶梯套餐任意选择
内置安全策略
- 限制每天单个号码的发送次数,默认为10条,可根据业务自行调整。
- 限制单个号码一分钟内不超过1条,一小时内不超过5条,可以根据业务自行调整。
短信防轰炸建议
- 有效的图片验证(图形、滑动拼图验证码、减少被轰炸机识别的可能性)及不低于60S倒计时。
- 设置IP白名单。(可绑定多个IP地址)
- 设置短信预警提醒功能。
- APP端建议采用秘钥签名校验请求合法性。
- 由于短信轰炸机可以模拟IP且取用随机号码,所以在进行整改时不要只限制IP和单号码发送次数,因为这样无法限制大量号码异常下发。
签名及模板审核要求(支持接口申请)
短信发送审核要求大致包括:
1、短信模板需明确表述短信发送的实际内容。
2、所有模板均禁止发送金融相关的所有内容。
3、不支持发送未经许可的发送行为,主要指邀请注册、邀请成为会员的商业性信息 。
4、禁止发送涉及:色情、赌博、毒品、党政、法律维权、众筹、慈善募捐、宗教、迷信、股票、留学移民、面试招聘、博彩、贷款、催款还款、信用卡提额、投资理财、中奖、抽奖、一元夺宝、一元秒杀、一元云购、二类电商、A货、整形、烟酒、交友、暴力、恐吓、皮草、返现返利、代开发票、运营商禁止发送的信息、代理注册、代办证件、加群、加QQ或者加微信、贩卖个人信息、运营商策反、流量营销、违反广告法用语、殡葬、刷单、空包网、邀请好评、转店类业务等信息的短信。
5、禁止在关键字或关键信息中出现错别字、变体字、异体字、各类干扰符号等;禁止出现各类非正常混合字以及非常用的表达法。
6、不支持内容中含有直接或间接访问应用内测分发平台的行为。
接口费用( 点击购买)
最低 0.035元/次
计费规则
短信最终是否成功的确认是运营商异步确认的,所以需要在我的服务->短信服务->发信记录里面确认,最终的计费也是以发信记录里面的成功次数来计费,如果短信内容长度超过70个字符可能会造成多次计费,请悉知。
短信字数=短信模版内容字数 + 签名字数
短信字数≤70个字数,按照70个字数一条短信计算
短信字数>70个字数,即为长短信,按照67个字数记为一条短信计算。客户感知还是一条短信。
在统计短信字数时,小数点、字母、汉字以及其他符号、空格均按照一个字符位进行统计。最终按照实际发送成功的短信条数计费。
接口调用(调用须知)
调用步骤:申请签名-> 申请模板(如果使用系统自带模板可跳过)->调用接口
短信发送之前,首先要完成模板和签名的申请,登录市场后点击右上角用户头像选择“我的服务->短信服务”,在签名管理和模板管理里面申请即可,审核通过后才可以进行短信发送调用。一旦检查发现有任何违规内容发送的话,我们将会对签名和模板进行冻结,已购买的套餐资费不退,并且保留追究相关责任的权利。开发对接测试的时候,也不要使用带有测试字样的内容(如果产品尚未上线,可以先申请一个公司简称用于测试对接,后续再申请产品相关签名)。
签名提交注意事项
签名的规范建议使用公司名(通常是简写)、品牌名(或商标)、网站名称、产品名、公众号名称等,尽量避免使用生僻字,会比较容易通过审核。签名中不要包含任何特殊字符,包括【】、[],不要使用带有测试字样的签名,申请签名的时候务必注明你的使用场景,便于快速完成审核。为了企业安全考虑,签名使用公司名或简称的话,请先完成企业认证。
模板提交注意事项
模板内容里面如果需要使用变量,变量定义格式为
${变量名}
,其中变量名规范为英文大小写字母及下划线(请避免包含数字和特殊符号,并且不能使用系统内置变量,包括id
、mobile
、nick
、site
)。并且模板内容里面不要包含【】符号,否则会误判为签名,导致发送较慢或者拦截,如非必要,避免在模板中使用特殊字符,单个模板中不得超过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:申请模板
申请短信通知模板
模板提交注意事项
模板内容里面如果需要使用变量,变量定义格式为
${变量名}
,其中变量名规范为英文大小写字母及下划线(请避免包含数字和特殊符号,并且不能使用系统内置变量,包括id
、mobile
、nick
、site
)。并且模板内容里面不要包含【】符号,否则会误判为签名,导致发送较慢或者拦截,如非必要,避免在模板中使用特殊字符,单个模板中不得超过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 使用知识相关推荐
- Vue 2.0 官网 API 零碎知识整理
Vue API 零碎知识整理 最近抽空重新看了一遍Vue官网的API,对一些经常使用的.经常忘记用法的.经常错用的API进行了梳理,并以个人学习笔记的形式记录,以降低再次阅读的成本和提高查阅文档的效率 ...
- php api开发书籍,概述 · ThinkPHP API开发入门 · 看云
[![邀请链接](https://img.kancloud.cn/bd/9e/bd9ee1bb6c29f7cad10b6e069b1907da_728x90.jpg)](https://www.kan ...
- 用ASP.NET Core 2.0 建立规范的 REST API -- 预备知识
什么是REST REST 是 Representational State Transfer 的缩写. 它是一种架构的风格, 这种风格基于一套预定义的规则, 这些规则描述了网络资源是如何定义和寻址的. ...
- 产品经理须知 | API接口知识小结
作者:椒图 (转载已取得作者授权) 应用程序接口API(Application Programming Interface),是提供特定业务输出能力.连接不同系统的一种约定.这里包括外部系统与提供服务 ...
- 小程序 长按api_微信小程序API相关知识科普
微信小程序API(Application Programming Interface),即应用程序编程接口.API是一种接口函数,把函数封装起来,给开发者,这样好多的功能就不需要你去实现了,只要会调用 ...
- 大数据技术之_11_HBase学习_03_HBase 实战之谷粒微博(练习API) + 扩展知识(布隆过滤器+HBase2.0 新特性)
大数据技术之_11_HBase学习_03 第8章 HBase 实战之谷粒微博 8.1 需求分析 8.2 代码实现 第9章 扩展知识 9.1 HBase 在商业项目中的能力 9.2 布隆过滤器 9.3 ...
- 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据
跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...
- ThinkPHP 的一些知识
1.定义控制器层不一定要继承Controller,但是要输出模板的话,却是必须继承了. 2.通过设置CONTROLLER_LEVEL(默认为1),可以通过子目录把控制器分层存放.(比如 'CONTRO ...
- thinkPHP开发基础知识 包括变量神马的
2019独角兽企业重金招聘Python工程师标准>>> thinkPHP框架开发的应用程序,一般都采用单一入口的方式,下面是在应用首页文件中实现的定义: 1.在首页定义thinkPH ...
最新文章
- 获取表单内部元素的N种方法
- 独家干货 | 吴恩达深度学习专项课程精炼笔记!
- java 异常 规范_java 异常规范
- mysql性能优化:my.cnf配置文件
- 如何才能成为编程高手?别人都不告诉你的东西,我来说给你听!
- pta-2、求三角形面积及周长 (10 分)
- pcl中ransac提取直线_SIFT关键点提取
- ibm服务器怎么装win7系统安装系统,教你thinkpad电脑重装win7系统
- matlab 暴雨强度公式,利用MATLAB推导城市暴雨强度公式
- php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
- 计算机学win7画图,win7自带画图工具(mspaint.exe)
- Tslib1.20和Qt 4.8.4与在ARM开发板上的移植 多点触摸
- c语言地铁系统设计,城市地铁报站系统设计.doc
- 国外邮件服务器,在国外发邮件连不上国内的邮件服务器
- compat-mysql安装_Centos7 rpm方式安装Percona Mysql 8
- eclipse字体颜色设置的方法
- 数据挖掘的R包和函数的集合
- 记openssh升级,telnet安装(环境CentOS 7.9。 晗旧版本的不同补充)
- OpenCV 进行图像相似度对比的几种办法-【顺带附py对比学习案例】
- 风信子 - 基于Django开发的APP内测平台