PHP code example of lujihong / hyperf-sms
1. Go to this page and download the library: Download lujihong/hyperf-sms library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
lujihong / hyperf-sms example snippets
use HyperfLibraries\Sms\Sms;
$config = [
// HTTP 请求的超时时间(秒)
'timeout' => 5.0,
// 默认发送配置
'default' => [
// 网关调用策略,默认:顺序调用
'strategy' => \HyperfLibraries\Sms\Strategies\OrderStrategy::class,
// 默认可用的发送网关
'gateways' => [
'yunpian', 'aliyun',
],
],
// 可用的网关配置
'gateways' => [
'yunpian' => [
'api_key' => '',
],
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => '',
],
//...
],
];
/**
* @var SmsInterface
*/
public $sms;
public function __construct(SmsInterface $sms)
{
$this->sms = $sms;
}
public function index()
{
$result = $this->sms->send('18759557749', [
'content' => '', // 短信内容
'template' => '', // 模板ID
'data' => [
'code' => 6379 //验证码
]
]);
return $result;
}
$sms->send(13188888888, [
'content' => '您的验证码为: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
$sms->send(13188888888, [
'content' => function($gateway){
return '您的验证码为: 6379';
},
'template' => function($gateway){
return 'SMS_001';
},
'data' => function($gateway){
return [
'code' => 6379
];
},
]);
$sms->send(13188888888, [
'content' => function($gateway){
if ($gateway->getName() == 'yunpian') {
return '云片专用验证码:1235';
}
return '您的验证码为: 6379';
},
'template' => function($gateway){
if ($gateway->getName() == 'aliyun') {
return 'TP2818';
}
return 'SMS_001';
},
'data' => function($gateway){
return [
'code' => 6379
];
},
]);
$easySms->send(13188888888, [
'content' => '您的验证码为: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
], ['yunpian', 'juhe']); // 这里的网关配置将会覆盖全局默认值
[
'yunpian' => [
'gateway' => 'yunpian',
'status' => 'success',
'result' => [...] // 平台返回值
],
'juhe' => [
'gateway' => 'juhe',
'status' => 'failure',
'exception' => \HyperfLibraries\Sms\Exceptions\GatewayErrorException 对象
],
//...
]
$e->getResults(); // 返回所有 API 的结果,结构同上
$e->getExceptions(); // 返回所有调用异常列表
$e->getException($gateway); // 返回指定网关名称的异常对象
$e->getLastException(); // 获取最后一个失败的异常对象
$config = [
...
'default' => [
'gateways' => [
'mygateway', // 配置你的网站到可用的网关列表
],
],
'gateways' => [
'mygateway' => [...], // 你网关所需要的参数,如果没有可以不配置
],
];
$sms = new Sms($config);
// 注册
$sms->extend('mygateway', function($gatewayConfig){
// $gatewayConfig 来自配置文件里的 `gateways.mygateway`
return new MyGateway($gatewayConfig);
});
$sms->send(13188888888, [
'content' => '您的验证码为: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
use HyperfLibraries\Sms\PhoneNumber;
// 发送到国际码为 31 的国际号码
$number = new PhoneNumber(13188888888, 31);
$easySms->send($number, [
'content' => '您的验证码为: 6379',
'template' => 'SMS_001',
'data' => [
'code' => 6379
],
]);
use HyperfLibraries\Sms\Message;
use HyperfLibraries\Sms\GatewayInterface;
use HyperfLibraries\Sms\OrderStrategy;
class OrderPaidMessage extends Message
{
protected $order;
protected $strategy = OrderStrategy::class; // 定义本短信的网关使用策略,覆盖全局配置中的 `default.strategy`
protected $gateways = ['alidayu', 'yunpian', 'juhe']; // 定义本短信的适用平台,覆盖全局配置中的 `default.gateways`
public function __construct($order)
{
$this->order = $order;
}
// 定义直接使用内容发送平台的内容
public function getContent(GatewayInterface $gateway = null)
{
return sprintf('您的订单:%s, 已经完成付款', $this->order->no);
}
// 定义使用模板发送方式平台所需要的模板 ID
public function getTemplate(GatewayInterface $gateway = null)
{
return 'SMS_003';
}
// 模板参数
public function getData(GatewayInterface $gateway = null)
{
return [
'order_no' => $this->order->no
];
}
}
$order = ...;
$message = new OrderPaidMessage($order);
$sms->send(13188888888, $message);
'aliyun' => [
'access_key_id' => '',
'access_key_secret' => '',
'sign_name' => '',
],
'aliyunrest' => [
'app_key' => '',
'app_secret_key' => '',
'sign_name' => '',
],
'yunpian' => [
'api_key' => '',
'signature' => '【默认签名】', // 内容中无签名时使用
],
'submail' => [
'app_id' => '',
'app_key' => '',
'project' => '', // 默认 project,可在发送时 data 中指定
],
'luosimao' => [
'api_key' => '',
],
'yuntongxun' => [
'app_id' => '',
'account_sid' => '',
'account_token' => '',
'is_sub_account' => false,
],
'huyi' => [
'api_id' => '',
'api_key' => '',
'signature' => '',
],
'juhe' => [
'app_key' => '',
],
'sendcloud' => [
'sms_user' => '',
'sms_key' => '',
'timestamp' => false, // 是否启用时间戳
],
'baidu' => [
'ak' => '',
'sk' => '',
'invoke_id' => '',
'domain' => '',
],
'huaxin' => [
'user_id' => '',
'password' => '',
'account' => '',
'ip' => '',
'ext_no' => '',
],
'chuanglan' => [
'account' => '',
'password' => '',
// 国际短信时必填
'intel_account' => '',
'intel_password' => '',
// \HyperfLibraries\Sms\Gateways\ChuanglanGateway::CHANNEL_VALIDATE_CODE => 验证码通道(默认)
// \HyperfLibraries\Sms\Gateways\ChuanglanGateway::CHANNEL_PROMOTION_CODE => 会员营销通道
'channel' => \HyperfLibraries\Sms\Gateways\ChuanglanGateway::CHANNEL_VALIDATE_CODE,
// 会员营销通道 特定参数。创蓝规定:api提交营销短信的时候,需要自己加短信的签名及退订信息
'sign' => '【通讯云】',
'unsubscribe' => '回TD退订',
],
'rongcloud' => [
'app_key' => '',
'app_secret' => '',
]
'tianyiwuxian' => [
'username' => '', //用户名
'password' => '', //密码
'gwid' => '', //网关ID
]
'twilio' => [
'account_sid' => '', // sid
'from' => '', // 发送的号码 可以在控制台购买
'token' => '', // apitoken
],
'qcloud' => [
'sdk_app_id' => '', // SDK APP ID
'app_key' => '', // APP KEY
'sign_name' => '', // 短信签名,如果使用默认签名,该字段可缺省(对应官方文档中的sign)
],
'avatardata' => [
'app_key' => '', // APP KEY
],
'huawei' => [
'endpoint' => '', // APP接入地址
'app_key' => '', // APP KEY
'app_secret' => '', // APP SECRET
'from' => [
'default' => '1069012345', // 默认使用签名通道号
'custom' => 'csms12345', // 其他签名通道号 可以在 data 中定义 from 来指定
'abc' => 'csms67890', // 其他签名通道号
...
],
'callback' => '' // 短信状态回调地址
],
$sms->send(13188888888, [
'template' => 'SMS_001',
'data' => [
6379
],
]);
$sms->send(13188888888, [
'template' => 'SMS_001',
'data' => [
6379,
'from' => 'custom' // 对应 config 中的 from 数组中 custom
],
]);
'yunxin' => [
'app_key' => '',
'app_secret' => '',
'code_length' => 4, // 随机验证码长度,范围 4~10,默认为 4
'need_up' => false, // 是否需要支持短信上行
],
$sms->send(18888888888, [
'template' => 'SMS_001', // 不填则使用默认模板
'data' => [
'code' => 8946, // 如果设置了该参数,则 code_length 参数无效
'action' => 'sendCode', // 默认为 `sendCode`,校验短信验证码使用 `verifyCode`
],
]);
'yunzhixun' => [
'sid' => '',
'token' => '',
'app_id' => '',
],
$sms->send(18888888888, [
'template' => 'SMS_001',
'data' => [
'params' => '8946,3', // 模板参数,多个参数使用 `,` 分割,模板无参数时可为空
'uid' => 'hexianghui', // 用户 ID,随状态报告返回,可为空
'mobiles' => '18888888888,188888888889', // 批量发送短信,手机号使用 `,` 分割,不使用批量发送请不要设置该参数
],
]);
'kingtto' => [
'userid' => '',
'account' => '',
'password' => '',
],
$sms->send(18888888888, [
'content' => '您的验证码为: 6379',
]);
$ php bin/hyperf.php vendor:publish lujihong/hyperf-sms