官方 SDK
五种语言 SDK 封装了全部开放接口(余额、长效号码、在线接码),并内置「等待验证码」轮询助手。源码托管在 GitHub,欢迎 Star / 反馈 Issue。
| 语言 | 要求 | 获取方式 |
|---|---|---|
| Node.js | Node 18+(原生 fetch) | sdk/nodejs 目录 / npm(发布后) |
| Python | Python 3.8+,requests | sdk/python 目录 / PyPI(发布后) |
| Go | Go 1.20+,零依赖 | sdk/go 目录 / go get(发布后) |
| Java | Java 11+,零依赖 | sdk/java 目录 / Maven(发布后) |
| JavaScript | 现代浏览器 ESM | sdk/js 目录直接引入 |
Node.js SDK
npm install yinglangsms # 发布后;或直接复制 sdk/nodejs 目录
const { YinglangSMS } = require("yinglangsms");
const client = new YinglangSMS("你的API_KEY");
// 余额
const me = await client.getUserInfo();
console.log(me.balance);
// 在线接码:取号 → 等验证码(自动轮询)
const [session] = (await client.onlineBuy({ appId: "1001", country: "52" })).list;
try {
const done = await client.onlineWaitCode(session.session_no, { timeout: 300 });
console.log("验证码:", done.code);
} catch (e) {
await client.onlineRelease(session.session_no); // 未收到则释放退款
}
// 长效号码:购买 → 等短信
const { order, phones } = await client.createOrder({ appId: 123, num: 1 });
const sms = await client.waitForSms(phones[0].token, { timeout: 300 });
console.log("短信:", sms);Python SDK
pip install yinglangsms # 发布后;或直接复制 sdk/python 目录
from yinglangsms import YinglangSMS
client = YinglangSMS("你的API_KEY")
# 余额
print(client.get_user_info()["balance"])
# 在线接码:取号 → 等验证码(自动轮询)
session = client.online_buy(app_id="1001", country="52")["list"][0]
try:
done = client.online_wait_code(session["session_no"], timeout=300)
print("验证码:", done["code"])
except TimeoutError:
client.online_release(session["session_no"]) # 未收到则释放退款
# 长效号码:购买 → 等短信
result = client.create_order(app_id=123, num=1)
sms = client.wait_for_sms(result["phones"][0]["token"], timeout=300)
print("短信:", sms)Go SDK
go get github.com/yinglangS/yinglangsms-sdk/go # 发布后;或直接复制 sdk/go 目录
client := yinglangsms.New("你的API_KEY")
// 余额
info, _ := client.GetUserInfo(ctx)
fmt.Println(info.Balance)
// 在线接码:取号 → 等验证码
buy, _ := client.OnlineBuy(ctx, yinglangsms.OnlineBuyReq{AppID: "1001", Country: "52"})
session := buy.List[0]
done, err := client.OnlineWaitCode(ctx, session.SessionNo, 5*time.Minute)
if err != nil {
client.OnlineRelease(ctx, session.SessionNo) // 未收到则释放退款
} else {
fmt.Println("验证码:", done.Code)
}Java SDK
// Maven 发布后引入坐标,或直接复制 sdk/java 源码
YinglangSmsClient client = new YinglangSmsClient("你的API_KEY");
// 余额
JsonObject me = client.getUserInfo();
System.out.println(me.get("balance"));
// 在线接码:取号 → 等验证码
JsonObject session = client.onlineBuy("1001", "52", 1)
.getAsJsonArray("list").get(0).getAsJsonObject();
String sessionNo = session.get("session_no").getAsString();
try {
JsonObject done = client.onlineWaitCode(sessionNo, 300);
System.out.println("验证码: " + done.get("code").getAsString());
} catch (Exception e) {
client.onlineRelease(sessionNo); // 未收到则释放退款
}浏览器 JavaScript SDK
注意:API Key 等同账户权限,请勿在公开网页中明文使用浏览器 SDK,建议仅在内部工具 / Electron / 油猴脚本等可控环境使用。
<script type="module">
import { YinglangSMS } from "./yinglangsms.esm.js";
const client = new YinglangSMS("你的API_KEY");
const me = await client.getUserInfo();
console.log(me.balance);
</script>SDK 方法与接口对照
| SDK 方法(Node.js 命名) | 对应接口 |
|---|---|
getUserInfo() | GET /api/v1/user/info |
getCategories() | GET /api/v1/app/categories |
getApps(query) | GET /api/v1/apps |
getPrefixes(appId, query) | GET /api/v1/apps/{id}/prefixes |
createOrder(body) | POST /api/v1/orders |
listOrders(query) | GET /api/v1/orders |
listPhones(query) | GET /api/v1/phones |
getSms(token) / waitForSms(token) | GET /api/v1/sms |
onlineApps(keyword) | GET /api/v1/online/apps |
onlineCountries(appId) | GET /api/v1/online/countries |
onlineBuy(body) | POST /api/v1/online/orders |
onlineGetCode(no) / onlineWaitCode(no) | GET /api/v1/online/orders/{no}/code |
onlineRelease(no) | POST /api/v1/online/orders/{no}/release |
onlineOrders(query) | GET /api/v1/online/orders |