版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
php+laravel5.7(小程序,公众号,手机[阿里云]短信)模板消息推送上
1.做微信模板消息的我建议各位大佬去看看:https://www.easywechat.com/(表示我也用的这个)
2.手机短信我建议去看看:https://packagist.org/packages/overtrue/easy-sms(这个包比较方便)
3.做微信呢写一些东西太麻烦了为了方便在下载这个包:https://packagist.org/packages/overtrue/laravel-wechat(微信 SDK for Laravel)
4.对于手机短信我用的阿里云短信为了方便配置下载这个包:https://packagist.org/packages/aliyuncs/oss-sdk-php(文档有点变态哈全英文难受啊)
都composer完后在配置配置就可以进行下一步操作了:
阿里云短信例子:
Controller:
<?php
namespace App\Modules\Api\Sms\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Modules\Api\Sms\Services\SmsSendServices;
class SmsSendController extends Controller
{
/**
* @var SmsSendServices
*/
protected $smsSendServices;
/**
* SmsSendController constructor.
*
* @param SmsSendServices $smsSendServices
*/
public function __construct(SmsSendServices $smsSendServices)
{
$this->smsSendServices = $smsSendServices;
}
/**
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function smsSend(Request $request)
{
$data = $request->all();
$res = $this->smsSendServices->send($data);
if ($res == false) {
return $this->failed('短信发送模板消息失败,数据错误');(这个是我封装的方法,这个可以不写或者随便写)
}
}
}
Services(这个我的模板写的很多,你么可以借鉴哟):
<?php
namespace App\Modules\Api\Sms\Services;
use App\Services\BaseService;
use Overtrue\EasySms\EasySms;
use Exception;
class SmsSendServices extends BaseService
{
protected $easySms;
public function __construct(EasySms $easySms)
{
$this->easySms = $easySms;
}
public function send($data)
{
$letterTemplate = $data['letterTemplate'] ?? '';
if ($letterTemplate != '') {
$res = $this->Dispose($data);
} else {
return $res = false;
}
if ($res == false) {
return $res;
}
$data = $this->transmission($res);
return $data;
}
/**
* @param $data
*
* @return array|bool|mixed|string
*/
private function Dispose($data)
{
$letterTemplate = $data['letterTemplate'];
switch ($letterTemplate) {
case 1:
$res = $this->studentPay($data);
break;
case 2:
$res = $this->schoolPay($data);
break;
......
default :
$res = false;
break;
}
return $res;
}
/**
* @param $data
* letterTemplate = 1
* phoneStudent 学生电话
* pay_fee 实付金额
* class 班级(order_packages 表里 name + ' ' +driver_licence + '班')拼接一下
* status 1 非学生 2 学生
* school_name 学校名称(新增字段)
*
* @return array|string
*/
protected function studentPay($data)
{
if ($data['status'] == 1) {
$res = [
'template' => '*****',(模板Id)
'data' => [
'name' => $data['class'],
'feename' => number_format($data['pay_fee'] * 0.01, 2, '.', '') . '元',
]
];
} elseif ($data['status'] == 2) {
$res = [
'template' => '***',(模板Id)
'data' => [
'***' => $data['class'],
'***' => number_format($data['pay_fee'] * 0.01, 2, '.', '') . '元',
]
];
}
$phone['phone'] = $data['phoneStudent'];
$message = array_merge($phone, $res);
return $message;
}
/**
* @param $data
* letterTemplate = 2
* phoneSchool 代理人电话
* studentName 学生姓名
*
* @return array
*/
protected function schoolPay($data)
{
$res = [
'template' => '*******',(模板id)
'data' => [
'***' => $data['studentName'],
]
];
$phone['phone'] = $data['phoneSchool'];
$message = array_merge($phone, $res);
return $message;
}
/**
* @param $data
* 发送
*
* @return mixed
*/
private function transmission($data)
{
$phone = $data['phone'];
unset($data['phone']);
try {
$res = $this->easySms->send($phone, $data);
if ($res == false) {
return $this->baseFailed('短信发送模板消息失败,模板处理错误啦');(我封装的方法)
}
return $this->baseSucceed();
} catch (Exception $e) {
return $this->baseFailed('短信发送模板消息失败,模板处理错误啦');(我封装的方法)
}
}
}
这个时候就可以用发送短信了(路由自己随便写,方法可以借鉴)
等下回在给大家说微信的那边。