附录
一、签名算法
签名将只对推送参数中的 data 进行签名,其他参数不做处理
第一步
首先将 data 参数通过 json 序列化转换成 string,如果 data 参数为加密后的 string 则,无需经过此步骤。以下为伪代码
$first = json_encode($data)
第二步
第二步,也是最后一步,得到签名值
$sign = md5($first + SECRET)
上面的 SECRET 为双方约定的秘钥,请勿泄露此秘钥
二、加密算法
推送参数支持数据加密,以防止数据泄露,具体加密算法如下
第一步
首先得到待加密的数据,将 data 参数通过 json 序列化转换成 string
$waitingEncrypt = json_encode($data)
第二步
通过 openssl 进行加密,且先保证您的应用有相关扩展
$encryptData = open_encrypt($waitingEncrypt, $method = 'AES-256-CFB', SECRET, $options = OPENSSL_RAW_DATA, $iv = {SECRET 前16位})
第三步
通过 base64 加密得到最终加密数据
$encrypt = base64_encode($encryptData)
三、解密算法
第一步
$waitingDecrypt = base64_decode($data)
第二步
$decryptData = open_decrypt($waitingEncrypt, $method = 'AES-256-CFB', SECRET, $options = OPENSSL_RAW_DATA, $iv = {SECRET 前16位})
第三步
通过 base64 加密得到最终加密数据
$decrypt = json_decode($decryptData)
四、常用 release_cause 说明
参数 | 说明 |
---|---|
1 | 运营商原因: 未分配的号码 |
2 | 运营商原因: 无路由到指定的转接网 |
3 | 运营商原因: 无路由到目的地 |
4 | 运营商原因: 发送专用信息音 |
6 | 运营商原因: 不可接受的通路 |
16 | 正常的呼叫拆线 |
17 | 用户忙 |
18 | 用户未响应 |
19 | 用户未应答 |
20 | 用户缺席 |
21 | 呼叫拒收 |
22 | 运营商原因: 号码改变 |
27 | 运营商原因: 目的地不可达 |
28 | 运营商原因: 无效的号码格式(地址不全) |
29 | 运营商原因: 性能拒绝 |
31 | 正常—未指定 |
34 | 运营商原因: 无可用的电路/通路 |
38 | 运营商原因: 网络失序 |
39 | 运营商原因: 永久帧方式连接未开放业务 |
41 | 运营商原因: 临时故障,网络问题 |
42 | 运营商原因: 交换设备拥塞 |
47 | 运营商原因: 资源不可用,未规定 |
50 | 运营商原因: 所请求的性能未预定 |
53 | 运营商原因: CUG 中限制去呼叫 |
55 | 运营商原因: CUG 中限制来呼叫 |
57 | 运营商原因: 承载能力无权 |
58 | 运营商原因: 承载能力目前不可用 |
65 | 运营商原因: 承载能力未实现 |
69 | 运营商原因: 所请求的性能未实现 |
79 | 运营商原因: 业务或任选未实施,未规定 |
87~95 | 运营商原因: 无效的消息 |
102 | 运营商原因: 未接通,定时器超时 |
109 | 运营商原因: 协议类错误 |
127 | 运营商原因: 互通,未规定 |
147 | 平台原因释放: 被叫侧摘记消息超时,平台释放,一般未收到运营商anm |
206 | 平台原因释放: 消息错序 |