# 附录

### 1. 状态码(code)说明
- 0    -- 提交成功
- 101 -- 必填字段不能空（注意请求方式为GET）
- 102 -- 验证失败（Unix timestamp不分时区，要验证时间，确保误差范围 [-10s, 10s]）
- 103 -- spid 不存在
- 104 -- 密码不匹配（参数必须包含timestamp）
- 105 -- 无可用通道(请联系管理员确认通道配置情况)
- 106 -- 配置错误
- 107 -- 手机已在黑名单
- 108 -- 内容超过最大字数
- 109 -- 扣费失败，请确定账户金额
- 110 -- 请求IP限制
- 111 -- 该手机号发送限制（发送次数过多）
- 120 -- 系统错误，请稍后再试 （**重要提示1.1**）

### 2. 单条短信状态码(state)说明
- 0    -- 提交成功
- 105 -- 无可用通道（请联系管理员确认通道配置情况）
- 106 -- 模版错误
- 107 -- 手机已在黑名单
- 108 -- 内容超过最大字符
- 109 -- 扣费失败，请确定账户金额
- 120 -- 系统错误，请稍后再试
- 130 -- 内容无法解析

### 3 字符转16进制（Hex）示例代码
<span id="hexsamplecode"></span>

#### 3.1 Java
```java
public static String strToHex(String str) {
    String st = "";
    try {
        byte[] by = str.getBytes("utf8");
        for (int i = 0; i < by.length; i++) {
            String strs = Integer.toHexString(by[i]);
            if (strs.length() > 2){
                strs = strs.substring(strs.length() - 2);
            } else if (strs.length() == 1) {
                //补足16进制 00~0F补足
                strs = String.format("%02x", by[i]);
            }
            st += strs;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return st;
}
```

#### 3.2 PHP
```php
bin2hex($utf8Str);
```

#### 3.2 Golang
```go
package main

import (
    "encoding/hex"
    "fmt"
)

func main() {
    // 转换字符串为字节切片
    byteData := []byte("测试数据")
    // 编码为十六进制字符串
    hexString := hex.EncodeToString(byteData)
    fmt.Println(hexString) // 输出十六进制表示
}

```