weijiajia/saloonphp-sms-activate

基于 SaloonPHP 构建的 SMS-Activate.io API 客户端扩展包,支持虚拟手机号码获取和短信验证码接收服务

dev-main 2025-05-28 14:03 UTC

This package is auto-updated.

Last update: 2025-05-28 14:08:49 UTC


README

PHP Version Saloon Version License

基于 SaloonPHP 构建的 SMS-Activate.io API 客户端扩展包。SMS-Activate.io 是一个提供虚拟电话号码服务的平台,用于接收短信验证码。

特性

  • 🚀 现代 PHP 8.1+ 语法支持
  • 🔒 强类型安全,使用枚举类型
  • 📱 完整的 SMS-Activate.io API 支持
  • 🎯 智能 IDE 自动补全
  • 🔄 支持 V1 和 V2 API
  • 🌐 多语言和多国家支持
  • 💰 价格查询和余额管理
  • 🛡️ 错误处理和异常管理

安装

使用 Composer 安装:

composer require weijiajia/saloonphp-sms-activate

快速开始

基本用法

<?php

use Weijiajia\SmsActivate\SmsActivateConnector;
use Weijiajia\SmsActivate\Enums\Country;
use Weijiajia\SmsActivate\Enums\Service;
use Weijiajia\SmsActivate\Enums\Operator;

// 创建连接器实例
$connector = new SmsActivateConnector('您的API密钥');

// 获取资源实例
$resource = $connector->resource();

// 获取用户余额
$balance = $resource->getBalance();
echo "余额: {$balance->balance} RUB" . PHP_EOL;

// 购买号码
$phoneNumber = $resource->getNumber(
    service: Service::TELEGRAM,
    country: Country::RUSSIA
);

echo "获得号码: {$phoneNumber->phone}" . PHP_EOL;
echo "激活ID: {$phoneNumber->id}" . PHP_EOL;

// 等待短信
sleep(30);

// 获取短信验证码
$sms = $resource->getSms($phoneNumber->id);
if ($sms->code) {
    echo "验证码: {$sms->code}" . PHP_EOL;

    // 完成激活
    $resource->finishActivation($phoneNumber->id);
    echo "激活完成!" . PHP_EOL;
} else {
    echo "暂未收到短信" . PHP_EOL;
}

查询服务和价格

// 获取支持的国家列表
$countries = $resource->getCountries();
foreach ($countries->countries as $country) {
    echo "国家: {$country->name} (ID: {$country->id})" . PHP_EOL;
}

// 获取支持的服务列表
$services = $resource->getServices();
foreach ($services->services as $service) {
    echo "服务: {$service->name} (ID: {$service->id})" . PHP_EOL;
}

// 获取价格列表
$prices = $resource->getPrices();
foreach ($prices->prices as $countryId => $countryPrices) {
    echo "国家 {$countryId} 的价格:" . PHP_EOL;
    foreach ($countryPrices->services as $serviceId => $price) {
        echo "  服务 {$serviceId}: {$price->cost} RUB" . PHP_EOL;
    }
}

// 获取特定服务的价格
$telegramPrice = $resource->getServicePrice(Service::TELEGRAM, Country::RUSSIA);
echo "Telegram 俄罗斯号码价格: {$telegramPrice} RUB" . PHP_EOL;

高级功能

购买指定运营商的号码

$phoneNumber = $resource->getNumberWithOperator(
    Service::TELEGRAM,
    Country::RUSSIA,
    Operator::MEGAFON
);

语音激活

use Weijiajia\SmsActivate\Enums\Language;

$phoneNumber = $resource->getNumberWithVoiceActivation(
    Service::TELEGRAM,
    Country::RUSSIA,
    Language::RUSSIAN
);

// 获取语音激活状态
$status = $resource->getStatusV2($phoneNumber->id);
if ($status->callInfo) {
    echo "语音激活码: {$status->callInfo->code}" . PHP_EOL;
}

设置最高价格

$phoneNumber = $resource->getNumberWithFreePrice(
    Service::TELEGRAM,
    Country::RUSSIA,
    5.0 // 最高价格 5 RUB
);

号码转发

$phoneNumber = $resource->getNumberWithForward(
    Service::TELEGRAM,
    Country::RUSSIA
);

支持的枚举类型

主要服务

  • Service::TELEGRAM - Telegram
  • Service::WHATSAPP - WhatsApp
  • Service::FACEBOOK - Facebook
  • Service::INSTAGRAM - Instagram
  • Service::AMAZON - Amazon
  • Service::GOOGLE - Google
  • 更多服务请查看 Service 枚举类

主要国家

  • Country::RUSSIA - 俄罗斯
  • Country::UKRAINE - 乌克兰
  • Country::CHINA - 中国
  • Country::USA - 美国
  • Country::INDIA - 印度
  • 更多国家请查看 Country 枚举类

运营商

  • Operator::ANY_OPERATOR - 任意运营商
  • Operator::MEGAFON - Megafon
  • Operator::BEELINE - Beeline
  • Operator::MTS - MTS
  • Operator::TELE2 - Tele2

API 方法参考

基础方法

  • getBalance() - 获取账户余额
  • getNumber() - 购买号码 (V1 API)
  • getNumberV2() - 购买号码 (V2 API)
  • getSms() - 获取短信验证码
  • getStatusV2() - 获取状态 (支持语音)
  • setStatus() - 设置激活状态

查询方法

  • getServices() - 获取服务列表
  • getCountries() - 获取国家列表
  • getPrices() - 获取价格列表
  • getNumbersStatus() - 获取号码状态

便捷方法

  • requestSms() - 请求重发短信
  • finishActivation() - 完成激活
  • cancelActivation() - 取消激活
  • isServiceAvailable() - 检查服务可用性
  • getServicePrice() - 获取服务价格

高级方法

  • getNumberWithOperator() - 购买指定运营商号码
  • getNumberWithVoiceActivation() - 购买语音激活号码
  • getNumberWithForward() - 购买转发号码
  • getNumberWithCashBack() - 使用返现购买号码
  • getNumberWithFreePrice() - 设置最高价格购买号码
  • getRussianNumberWithExclusion() - 购买排除特定字冠的俄罗斯号码
  • getNumberWithOrderId() - 使用订单 ID 购买号码(幂等性)

错误处理

use Weijiajia\SmsActivate\Exceptions\SmsActivateException;

try {
    $phoneNumber = $resource->getNumber(Service::TELEGRAM, Country::RUSSIA);
} catch (SmsActivateException $e) {
    echo "API 错误: " . $e->getMessage() . PHP_EOL;
    echo "错误代码: " . $e->getCode() . PHP_EOL;
}

开发

运行测试

# 安装开发依赖
composer install

# 运行测试
./vendor/bin/pest

代码格式化

# 格式化代码
./vendor/bin/php-cs-fixer fix

生成枚举

# 生成国家枚举
php generate_country_enum.php

# 生成服务枚举
php generate_service_enum.php

贡献

欢迎提交 Issue 和 Pull Request 来帮助改进这个项目。

许可证

本项目基于 MIT 许可证开源。详见 LICENSE 文件。

相关链接