SMPP
OTP + Marketing
2026-04
SMPP 接入文档
适用范围:当前版本支持两类 SMPP 账号:OTP 与 营销。
账号来源:商户需由平台管理员分配 system_id、密码、白名单 IP,并绑定默认 OTP 应用或默认营销模版。
概览
CashGit 提供独立 SMPP Server,商户可通过标准 SMPP 协议接入短信发送能力。当前网关会将 SMPP 请求转发到平台内部发送逻辑,因此模板、DLT、通道路由、日志、计费仍由主平台统一处理。
当前支持:
bind_transceiver、bind_transmitter、bind_receiver、submit_sm、enquire_link、unbind。当前版本支持 OTP 与营销短信提交,支持通过
deliver_sm 推送状态回执 DLR;暂不支持 MO 上行。连接参数
| 参数 | 说明 |
|---|---|
| 生产 Host / Port | 52.66.92.153:2775 |
| 测试 Host / Port | 52.66.92.153:2776 |
| system_id | 平台分配的 SMPP 登录账号 |
| password | 平台分配或重置的 SMPP 密码 |
| 白名单 IP | 仅白名单出口 IP 可连接并完成 bind |
| Bind Type | 当前版本统一按 transceiver 分配,建议商户使用 bind_transceiver |
若商户出口 IP 发生变化,需要先联系平台管理员更新白名单,否则 bind 会失败。
环境说明:生产环境统一使用
52.66.92.153:2775;测试环境统一使用 52.66.92.153:2776。system_id 命名建议:建议使用
商户名_smpp 或 商户名_smpp_01 形式,例如 test123_smpp。Bind 鉴权
网关收到 bind 请求后会校验以下信息:
system_id是否存在且启用password是否正确- 来源 IP 是否命中白名单
- 请求的 bind 类型是否与账号配置兼容
bind_transceiver system_id: merchant_smpp password: ********
如果账号配置为
transceiver,可兼容 transceiver / transmitter / receiver 三种绑定方式。建议优先使用 bind_transceiver。submit_sm 提交规则
当前规则:不同账号用途对应不同提交方式。管理员后台会为每个 SMPP 账号绑定一个默认 OTP 应用或默认营销模版。
| 账号用途 | 规则 |
|---|---|
| OTP | short_message 中必须包含一个 4-8 位数字 OTP,网关会提取首个 OTP 并调用平台发送。 |
| 营销 | short_message 直接作为最终短信内容提交,并使用该账号绑定的营销模版发送。 |
| 字段 | 要求 |
|---|---|
| destination_addr | 印度手机号,支持 +91xxxxxxxxxx / 91xxxxxxxxxx / 10位本地号 |
| source_addr | 可选,建议填业务标识或 Sender 说明 |
| short_message | OTP 账号必须包含 4-8 位数字;营销账号直接填写最终短信内容 |
submit_sm(OTP) source_addr = XTRMPT destination_addr = 918699583803 short_message = 123456
submit_sm(营销) source_addr = XTRMPT destination_addr = 918699583803 short_message = Enjoy special bonus benefits with our mobile app. Download here: https://xtreamshop.in/XTRMPT/demo
submit_sm command_status = 0 message_id = b424f1a1-5fd9-4c02-8358-ffa8d4465453
submit_sm_resp 的 command_status = 0 仅代表平台已受理,不代表最终送达;最终结果以后续 DLR 为准。OTP 账号:同一商户下,同一手机号 60 秒内只能成功发送一次。营销账号:仅支持印度时间 10:00 AM - 9:00 PM 发送,其他时间会被拒绝。字段要求
- 手机号格式:最终会被标准化成
+91...。 - OTP 解析:OTP 账号只提取正文里的首个
4-8位数字。 - 账号绑定对象:每个 SMPP 账号必须绑定一个默认 OTP 应用或一个默认营销模版。
- 营销正文:营销账号提交的
short_message会作为最终发送内容,仍需符合已绑定 DLT 模版和上游通道要求。 - 模板与通道:仍按后台中该账号绑定的 OTP 应用或营销模版,以及当前 DLT 与通道路由执行。
如果商户要区分多个业务场景,建议创建多个 SMPP 账号,分别绑定不同 OTP 应用或营销模版,而不是共用一个账号。
状态回执 DLR
平台会在短信状态变为终态后,通过 SMPP deliver_sm 向商户推送状态回执。商户需要保持 bind_transceiver 或 bind_receiver 连接在线,并正确返回 deliver_sm_resp。
| 项目 | 说明 |
|---|---|
| 推送方式 | SMPP deliver_sm |
| 可接收 Bind | bind_transceiver 或 bind_receiver |
| message_id | 与 submit_sm_resp 返回的 message_id 一致 |
| 是否支持 MO | 暂不支持上行短信 MO |
回执正文示例:
id:b424f1a1-5fd9-4c02-8358-ffa8d4465453 sub:001 dlvrd:001 submit date:2607100630 done date:2607100631 stat:DELIVRD err:000 text:123456
| DLR stat | 说明 |
|---|---|
DELIVRD | 已送达 |
UNDELIV | 未送达 |
REJECTD | 被拒绝 |
EXPIRED | 已过期 |
ENROUTE | 发送中 |
ACCEPTD | 已受理 |
如果商户只使用
bind_transmitter,可以提交短信,但无法接收 DLR。建议使用 bind_transceiver 完成发送和回执接收。OTP 上游提交结果待确认时,已提交的请求按商户 OTP 单价计费,但计费不代表受理或送达。请勿自动重发同一请求。专用到期检查覆盖 SMPP 和 Bulk9 等已支持通道;SMPP 缺失回执时只查询状态,不因超时自动补发,也不会伪造成功回执。
状态码说明
| SMPP status | 说明 |
|---|---|
| 0 | 受理成功 |
| 4 | 未完成 bind 就提交消息 |
| 8 | 系统内部错误或上游发送失败 |
| 10 | 消息内容无效,例如 OTP 账号未解析出有效 OTP,或提交内容为空 |
| 11 | 目标手机号格式错误 |
| 13 | bind 失败,例如 IP 不在白名单或 bind 类型不允许 |
| 14 | 密码错误 |
| 15 | system_id 不存在或已停用 |
| 88 | 触发节流限制 |
对接步骤
- 联系平台管理员创建 SMPP 账号,并绑定默认 OTP 应用或默认营销模版。
- 提供商户出口 IP,由管理员配置白名单。
- 获取对应环境的接入参数:生产环境
52.66.92.153:2775,测试环境52.66.92.153:2776,以及各自的system_id、password。 - 使用
bind_transceiver完成连接鉴权。 - 通过
submit_sm提交目标手机号和短信内容;OTP 账号提交 OTP,营销账号提交最终短信正文。 - 根据
submit_sm_resp的command_status判断是否受理成功。 - 保持
bind_transceiver或bind_receiver在线,接收平台通过deliver_sm推送的最终状态回执。