看房

  • 预约看房业务流程

  • 预约看房表结构设计

  • 预约看房前后端交互实现

  • 短信发送

  • 环境复杂度

  • 短信通知实现

榛子云

//注册
http://sms_developer.zhenzikj.com/zhenzisms_user/register.html
//登录
http://sms_developer.zhenzikj.com/zhenzisms_user/login.html
//SDK
http://smsow.zhenzikj.com/doc/java_sdk_doc.html

依赖

<dependency>
  <groupId>com.zhenzikj</groupId>
  <artifactId>zhenzisms</artifactId>
  <version>2.0.2</version>
</dependency>

配置

# 榛子云短信
zzy:
  url: https://sms_developer.zhenzikj.com
  appId: 112605
  secret: 6a987156-398b-4c3c-9d84-ce6b3921bd18

代码示例

简单的发送短信:

@GetMapping("/send_sms")
public Boolean sendSMS(String phone) throws Exception {
    ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com", "112605", "6a987156-398b-4c3c-9d84-ce6b3921bd18");
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("number", phone);
    params.put("templateId", "10759");
    String[] templateParams = new String[2];
    templateParams[0] = "3421";
    templateParams[1] = "5";
    params.put("templateParams", templateParams);
    String result = client.send(params);
    System.out.println("sms.result = " + result);
    JSON json = JSONUtil.parse(result);
    Integer code = (Integer) json.getByPath("code");
    return code==0;
}

短信发送失败如何处理

  1. 找到错误的原因 一般可以根据api调用的返回判断,一般发生错误的原因: 格式出错 违禁词汇 区域受限 技术层面出错 达到限额 余额不足

  2. 出现错误怎么解决:
    自己找不到原因时要寻找客服人员的帮助 为预防错误,多使用短信模板或固定模板。

短信接口异常如何处理

可以针对特定异常或异常吗进行重试 记录日志,后期和运营商沟通.

发送短信失败重试,如果三次后仍不成功则打印日志代码示例:

@GetMapping("/send_sms_retry")
public Result<Boolean> sendSms(String phone) throws Exception {
    Boolean success = retrySend(phone,4);
    return Result.ok(success);
}
private Boolean retrySend(String phone, int num) {
    if(num <=0 ){
        log.error("发送短信失败,重试后仍旧失败!" + phone);
        return false;
    }
    ZhenziSmsClient client = new ZhenziSmsClient("https://sms_developer.zhenzikj.com", "112605", "6a987156-398b-4c3c-9d84-ce6b3921bd18");
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("number", phone);
    params.put("templateId", "10759");
    String[] templateParams = new String[2];
    templateParams[0] = "3421";
    templateParams[1] = "5";
    params.put("templateParams", templateParams);
    String result = null;
    try {
        result = client.send(params);
    } catch (Exception e) {
        this.retrySend(phone, num-1);
    }
    System.out.println("sms.result = " + result);
    JSON json = JSONUtil.parse(result);
    Integer code = (Integer) json.getByPath("code");
    if(code != 0){
        this.retrySend(phone, num-1);
    }
    return code==0;
}