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 / Port52.66.92.153:2775
测试 Host / Port52.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 应用或默认营销模版。

账号用途规则
OTPshort_message 中必须包含一个 4-8 位数字 OTP,网关会提取首个 OTP 并调用平台发送。
营销short_message 直接作为最终短信内容提交,并使用该账号绑定的营销模版发送。
字段要求
destination_addr印度手机号,支持 +91xxxxxxxxxx / 91xxxxxxxxxx / 10位本地号
source_addr可选,建议填业务标识或 Sender 说明
short_messageOTP 账号必须包含 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
可接收 Bindbind_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目标手机号格式错误
13bind 失败,例如 IP 不在白名单或 bind 类型不允许
14密码错误
15system_id 不存在或已停用
88触发节流限制

对接步骤

  1. 联系平台管理员创建 SMPP 账号,并绑定默认 OTP 应用或默认营销模版。
  2. 提供商户出口 IP,由管理员配置白名单。
  3. 获取对应环境的接入参数:生产环境 52.66.92.153:2775,测试环境 52.66.92.153:2776,以及各自的 system_id、password。
  4. 使用 bind_transceiver 完成连接鉴权。
  5. 通过 submit_sm 提交目标手机号和短信内容;OTP 账号提交 OTP,营销账号提交最终短信正文。
  6. 根据 submit_sm_resp 的 command_status 判断是否受理成功。
  7. 保持 bind_transceiver 或 bind_receiver 在线,接收平台通过 deliver_sm 推送的最终状态回执。