本教程可以实现给指定手机号发含验证码的短信,用于验证手机号真实性或验证操作安全性。

一、注册、报备及设置

注册云片,完成资质报备签名报备模板报备tips:

  • 报备可以让产品经理、运营等业务人员完成。
  • 开发阶段,建议先关闭IP白名单,或将服务器IP及本地IP均设置在IP白名单内。
  • 为了避免开发调试中,您的手机号被系统防骚扰机制拦截,可以在测试白名单填写您的手机号。

二、调通短信接口

方法一:使用单条发送短信接口API直接开发

特别注意: 验证码建议使用“单条发送短信接口”

HTTP头信息:

  1. Accept:application/json;charset=utf-8;
  2. Content-Type:application/x-www-form-urlencoded;charset=utf-8;

请求

URL:https://sms.yunpian.com/v2/sms/single_send.json

注意:海外服务器地址 us.yunpian.com

访问方式:POST

http支持:支持https 与 http 两种访问,建议使用https

请求参数

参数名类型是否必传是否默认开放描述示例
apikeystring用户唯一标识,在管理控制台获取9b11127a9701975c734b8aee81ee3526
mobilestring接收的手机号,仅支持单号码发送;15205201314
textstring已审核短信模板【云片网】您的验证码是1234
extendstring下发号码扩展号,纯数字001
uidstring该条短信在您业务系统内的ID,如订单号或者短信发送记录流水号。默认不开放,如有需要请联系客服申请。10001
callback_urlstring短信发送后将向这个地址推送(运营商返回的)发送报告。 如推送地址固定,建议在"数据推送与获取”做批量设置。 如后台已设置地址,且请求内也包含此参数,将以请求内地址为准http://your_receive_url_address
registerboolean是否为注册验证码短信,如果传入true,则该条短信作为注册验证码短信统计注册成功率,需联系客服开通。true

附注:如需使用"extend""uid"参数,可免费向客服申请。

请求示例

  1. /**单条短信发送,智能匹配短信模板
  2. * @param apikey成功注册后登录云片官网,进入后台可查看
  3. * @param text需要使用已审核通过的模板或者默认模板
  4. * @param mobile接收的手机号,仅支持单号码发送
  5. * @return json格式字符串
  6. */
  7. public static String singleSend(String apikey, String text, String mobile) {
  8. Map<String, String> params = new HashMap<String, String>();
  9. params.put("apikey", apikey);
  10. params.put("text", text);
  11. params.put("mobile", mobile);
  12. return post("https://sms.yunpian.com/v2/sms/single_send.json", params);
  13. }

响应

名称类型描述
codeinteger0代表发送成功,其他code代表出错,详细见"返回值说明"页面
msgtext例如""发送成功"",或者相应错误信息
countinteger发送成功短信的计费条数(计费条数:70个字一条,超出70个字时按每67字一条计费)
feedouble扣费金额,单位:元,类型:双精度浮点型/double
unitstring计费单位;例如:“RMB”
mobilestring发送手机号
sidlong(64位)短信id,64位整型, 对应Java和C#的long,不可用int解析

Json返回示例

  1. {
  2. "code": 0,
  3. "msg": "发送成功",
  4. "count": 1,
  5. "fee": 0.05,
  6. "unit": "RMB",
  7. "mobile": "13200000000",
  8. "sid": 3310228982
  9. }

方法二:下载、导入SDK,并配置。

目前云片提供JAVA/PHP/Python/C#/Golang 5种语言SDK、如果您的编程语言云片未提供SDK,您可以根据文档自行对接。

SDK下载地址(JAVA/PHP/Python/C#/GOLANG):去下载

JAVA SDK 示例

  1. /**
  2. * 使用SDK发送单条短信,智能匹配短信模板
  3. *
  4. * @param apikey 成功注册后登录云片官网,进入后台可查看
  5. * @param text 需要使用已审核通过的模板或者默认模板
  6. * @param mobile 接收的手机号,仅支持单号码发送
  7. */
  8. public static void testSendSms(String apikey, String mobile, String text) {
  9. //初始化client,apikey作为所有请求的默认值(可以为空)
  10. YunpianClient clnt = new YunpianClient("apikey").init();
  11. Map<String, String> param = clnt.newParam(2);
  12. param.put(YunpianClient.MOBILE, mobile);
  13. param.put(YunpianClient.TEXT, "【云片网】您的验证码是1234");
  14. Result<SmsSingleSend> r = clnt.sms().single_send(param);
  15. //获取返回结果,返回码:r.getCode(),返回码描述:r.getMsg(),API结果:r.getData(),其他说明:r.getDetail(),调用异常:r.getThrowable()
  16. r.getData();
  17. //账户:clnt.user().* 签名:clnt.sign().* 模版:clnt.tpl().* 短信:clnt.sms().* 语音:clnt.voice().* 流量:clnt.flow().* 隐私通话:clnt.call().*
  18. //最后释放client
  19. clnt.close()
  20. }

三、实现业务逻辑

  • 生成短信内容,调用发送接口,传入APIKEY、手机号、内容等参数发送短信。
  • 短信内容需和通过审核的模板匹配上才能发送,如不匹配接口会返回报错信息,报错记录在后台失败请求页可以看到。
  • 如不确定内容是否匹配,后台模板报备页有测试匹配功能。

  • 如短信验证接口用于web、移动网页版,需在注册页增加图形验证码避免恶意轰炸消耗账户余额(什么是验证码轰炸?)。 iOS及Android APP无需在注册页添加图形验证码。

四、按需开发功能

  • 开发“注册成功回调接口”,统计到短信验证码发送效果,用户注册成功率。
  • 对短信发送状态做实时监控如果您需要通过程序对短信的发送状态做实时监控,可以开发“推送/获取状态报告”接口。如果只是想了解短信发送状态,无实时监控需求,"云片管理控制台-国内短信-数据统计" 可以看到实时及历史的到达率、发送量、接口失败原因等报表。
  • 短信平台/代理类客户如果您是短信平台/代理,需要管理众多客户的签名及模板。您可能需要 “签名提交API”、 “模板管理API”、 “账户API”。 从而通过API接口轻松管理签名、模板、账户。
  • 获取上行短信如果您的业务中,需获取用户回复的上行短信,可以开发“推送回复短信API”。通过这个接口,如果用户回复了您的短信,云片会第一时间推送给您。
  • 国外地区使用海外服务器如海外用户可以调用海外服务器地址us.yunpian.com,获得更快的请求和处理速度。例如使用短信接口时,将sms.yunpian.com替换为us.yunpian.com即可。