跳到主要内容

API 详解

核心类型​

类型模块作用
SmsClientapi发信门面:send / sendBatch / sendAsync / sendText / sendTemplate
SmsClientsruntime工厂:SmsClients.builder()
SmsClientBuilderruntime配置默认通道、failover、限流等
SmsSendRequestapi手机号、内容/模板、凭证、provider、callbackUrl
SmsSendResultapisuccess、messageId、providerMessageId、errorCode
SmsCredentialsapiapiKey/Secret 或 accessKeyId/Secret
SmsChannelapifailover 通道(provider + credentials)
SmsWebhookHandlerapi回执 / 上行 / 查状态 / 号码校验 / verifyWebhook
SmsProviderTypeapi核心通道枚举
SmsProviderConfigapi非敏感默认项 + 代理超时等
SmsErrorCodesapi统一错误码
SmsMetricsapi可观测性钩子

SmsClient​

SmsSendResult send(SmsSendRequest request);
SmsSendResult send(SmsSendRequest request, SmsProviderConfig config);
List<SmsSendResult> sendBatch(List<SmsSendRequest> requests);
CompletableFuture<SmsSendResult> sendAsync(SmsSendRequest request);

// 快捷方法
SmsSendResult sendText(String to, String content);
SmsSendResult sendText(String to, String content, SmsCredentials credentials);
SmsSendResult sendText(String to, String content, String providerCode, SmsCredentials credentials);
SmsSendResult sendTemplate(String to, String templateId, Map<String, String> params);
SmsSendResult sendTemplate(String to, String templateId, Map<String, String> params, SmsCredentials credentials);

SmsSendRequest 常用字段​

字段说明
to接收方手机号
content正文(内容通道)
templateId / templateParams模板通道
from发送方 / SenderId / 通道号(视厂商)
providerSmsProviderType
providerCode扩展厂商编码(与 SPI 一致)
credentials动态凭证
callbackUrl本条消息回执 URL(优先于 Client 默认)
referenceId业务关联号

callback 优先级: request.callbackUrl > deliveryReceiptUrl > callbackUrl

SmsCredentials​

// Twilio / 云片 / 创蓝 等
SmsCredentials.builder().apiKey("...").apiSecret("...").build();

// 阿里 / 腾讯 / 华为 / 百度 / 天翼云 等
SmsCredentials.builder().accessKeyId("...").accessKeySecret("...").build();

具体字段映射见 厂商接入说明。

SmsWebhookHandler​

SmsReceipt parseReceipt(SmsProviderType provider, Map<String, Object> payload);
SmsReceipt parseReceipt(Map<String, Object> payload); // 尝试自动识别

SmsInboundMessage parseInbound(SmsProviderType provider, Map<String, Object> payload);

SmsReport fetchReport(SmsProviderType provider, String messageId, SmsCredentials credentials);

String verifyWebhook(long timestampMs, String nonce, String rawBody, String signature);

SDK 不监听端口;由你的 Controller 收 POST 后再调用。

错误码​

代码说明
E001请求参数不合法
E002缺少发送凭证
E003黑名单
E004限流
E005Webhook 签名/时间窗失败
E006Webhook 重放
AUTH_FAILED鉴权失败
INVALID_NUMBER号码非法
CONTENT_REJECTED内容/模板/签名拒收
QUOTA_EXCEEDED余额或配额不足
TIMEOUT / NETWORK_ERROR超时 / 网络
PROVIDER_ERROR其他厂商错误
SEND_ERROR发送过程异常
ALL_CHANNELS_FAILED全部 failover 通道失败

SmsSendResult.errorCode 优先使用 mappedErrorCode(经 ProviderErrorMapper)。

模块依赖关系​

sms-api
↑
sms-core
↑
├─ sms-runtime → sms-spring-boot-starter
├─ sms-providers-cn
└─ sms-providers-intl

sms-all = starter + cn + intl

下一篇:厂商接入说明