接口对接常见问题
基础
1.如何选择短信接口
在对接过程中,用户常常会遇到一个问题:send和xsend接口都是单发API我该如何选择使用哪个接口呢?针对这个问题,这边我们列下各个接口优缺点以及使用场景。
API | 优点 | 缺点 | 应用场景 |
---|---|---|---|
Message/send | 方便、快速对接使用,免模板,可直接提交任意内容(需要符合短信发送规范,短信签名前置) | 并发效率不高(并发效率低指高于每秒 1000 的并发,低于这个并发需求请无视) | 适用于并发小,内容变动或模板变动较多的场景 |
Message/xsend | 高稳定性,低延迟,高并发 | 接入时需要提前创建模板,并指定模板 ID | 适用验证码类要求低延迟,高请求效率的场景 |
Message/multisend | 接入方便,免模板,可直接提交任意内容(需要符合短信发送规范,短信签名前置),支持大批量群发 | 效率低于 multixsend,如果每小时的发送量低于百万级,请无视此缺点 | 适用单小时发送量低于百万级且自定义内容短信群发 |
Message/multixsend | 高效,高稳定性,低延迟,超高并发 | 接入时需要提前创建模板,并指定模板 ID | 适用大批量群发场景( 50 个号码 /API,100 线程并发,每分钟可处理 15 万左右的群发需求) |
2.短信是否可以不报备下发?
所有在线下发短信都需要进行报备模板后才可下发;如接口可以使用 send api 异步审核报备。
3.短信一对一发送和用群发方式只发一个人,有没有什么区别?
短信有专门的 multi/xsend API 群发的,和 xsend 相比,multi/xsend API 效率上翻大约 100 倍以上,但是如果量特别大,我们建议使用进行分包多线程提交。
4.接口对接报 101 错误
A:最常见的原因是,接口没有设置请求。
解决办法:设置 Content-Type: multipart/form-data; 或者 Content-Type: application/x-www-form-urlencoded
第二种: 接口请求地址和参数不匹配。
如: 使用国内的 APPID 请求国际接口,或者使用国际短信 APPID 请求国内接口。
解决办法:创建对应的 APPID
5.接口对接报 102 错误
这种只会出现在请求 send 接口或者 multisend 接口。原因是,早期生成的 APPID 不具备使用 send 接口的权限。
解决办法:
(1)提供 APPID ,在审核后台:短信—》短信应用列表,输入 APPID ,将 SEND API 的参数改成 1。
(2)创建一个新的 APPID ,使用新的 APPID 请求 send 接口。
6.接口对接报 108 错误
签名加密异常,可以将 sign_type 设置成 normal, signature 参数直接传 APPKEY 。
7.接口对接报 109 错误
传入的 APPKEY 值不正确, 请确认 APPKEY 值
8.接口对接报 252 错误
传入的号码不正确。
在国际短信确认号码是正确的情况下,一般是有“+”的编码引起的,建议客户用 urlencode 方法指定下 body 参数为 utf-8 编码。每个语言的方法不一致,以 java 为列:UrlEncode.encode(“xxxx”,“utf-8”);
9.邮件报 206 错误
检查域名解析是否成功, 如果域名解析成功,则检查发件人是否正确创建。
如果发件人正确创建,需要检查代码内,发件人是否正确传入。
10.接口对接报 411 错误
1.content 参数没有传入短信签名(公司名或者产品名).
2.content 参数编码问题,让客户 urlencode 处理下参数编码为 utf-8
11.接口对接返回 420 错误
send 接口自动创建的模板被驳回
解决办法: 登录用户的后台,在模板列表内删除没有通过的模板,然后重新提交一次。
12.接口报 901 错误
APPID 设置了每日发送上限
解决办法: 在 APPID 页面修改上限,或设置为 0, 0 为无限制
13.接口报 902 、903、904 错误
账户内余额不足,需充值
14.接口报 113 错误
APPID 设置了 IP 白名单。非白名单IP无法请求
解决办法: 在 APPID 页面添加请求服务器的 IP ,如果是在线发送,需要添加我们的服务器 IP 为白名单, 具体 IP 可以在报错信息内查看。
15.PHP 请求接口,无报错,无任何返回或返回 NULL
本地没有装 SSL 扩展
解决办法:把请求地址的 HTTPS 换成 HTTP。
16.JAVA 请求,返回 xxxxx.....SSL....xxxxxxx, C# 返回 无法在证书存储区中找到清单签名证书
本地没有装 SSL 扩展
解决办法:把请求地址的 HTTPS 换成 HTTP。
17.请求接口超时 或者请求丢数据
询问用户的服务器是否在国内,如果不在国内,则提供相应的节点。
节点区域 | 请求域名 |
---|---|
美国 | https://us-api.mysubmail.com |
日本 | https://jp-api.mysubmail.com |
德国 | https://de-api.mysubmail.com |
中国香港 | https://hk-api.mysubmail.com |
HTTPS 和 HTTP 通用。