版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
php+laravel5.7(小程序,公众号,手机短信)模板消息推送下
不多说上代码
小程序的(我的方法都是适合很多的模板一起封装的)
Controller:
<?php
namespace App\Modules\Api\Template\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Modules\Api\Template\Services\TemplateServices;
class TemplateController extends Controller
{
/**
* @var TemplateServices
*/
protected $templateServices;
/**
* TemplateController constructor.
*
* @param TemplateServices $templateServices
*/
public function __construct(TemplateServices $templateServices)
{
$this->templateServices = $templateServices;
}
/**
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function send(Request $request)
{
$data = $request->all();
$res = $this->templateServices->procedureSend($data);
//这下面是我封装的你们可以不写
if (empty($res['errmsg']) == false) {
return $this->failed('小程序发送模板消息失败,模板问题');
}
return $this->message('小程序发送模板消息成功');
}
}
Services:
<?php
namespace App\Modules\Api\Template\Services;
use App\Services\BaseService;
use EasyWeChat;
class TemplateServices extends BaseService
{
public function procedureSend($data)
{
$templateID = $data['templateId'] ?? '';
if ($templateID == '') {
return $res = false;
}
$res = $this->dispose($data);
return $res;
}
/**
* @param $data
*
* @return array|bool|mixed
*/
private function dispose($data)
{
$templateID = $data['templateId'];
switch ($templateID) {
case 1:
$message = $this->pay($data);
break;
default:
$message = false;
break;
}
if ($message == false) {
return false;
}
$res = $this->programSend($message); // 发送模板
return $res;
}
/**
* @param $data
* 支付成功返回订单数据
* templateId = 1
* class 班级(order_packages 表里 name + ' ' +driver_licence + '班')拼接一下
* pay_fee 付款金额
* order_sn 下单的编号
* paid_at 下单时间
* form_id 小程序form_id
* openid 小程序openid
*
* @return array
*/
protected function pay($data)
{
$message = [
'touser' => $data['openid'],
'template_id' => '.....',(模板Id)
'page' => 'index',
'form_id' => $data['form_id'],
'data' => [
'keyword1' => $data['class'],
'keyword2' => number_format($data['pay_fee'] * 0.01, 2, '.', '') . '元',
'keyword3' => $data['order_sn'],
'keyword4' => $data['paid_at'],
],
];
return $message;
}
/**
* @param $data
*发送小程序模板
*
* @return bool
*/
public function programSend($data)
{
$app = EasyWeChat::miniProgram();
$res = $app->template_message->send($data);
return $res;
}
}
这样就ojbk了
微信公众号的:
Controller:
<?php
namespace App\Modules\Api\Template\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Modules\Api\Template\Services\TenCentServices;
class TenCentController extends Controller
{
/**
* @var TenCentServices
*/
protected $tenCentServices;
/**
* TemplateController constructor.
*
* @param TenCentServices $tenCentServices
*/
public function __construct(TenCentServices $tenCentServices)
{
$this->tenCentServices = $tenCentServices;
}
public function tenSend(Request $request)
{
$data = $request->all();
$res = $this->tenCentServices->tenSend($data);
dd($res);
}
}
Services:
<?php
namespace App\Modules\Api\Template\Services;
use App\Services\BaseService;
use EasyWeChat;
class TenCentServices extends BaseService
{
public function tenSend($data)
{
$tenId = $data['tenId'] ?? '';
if ($tenId == '') {
return $res = false;
}
$res = $this->dispose($data);
return $res;
}
/**
* @param $data
*
* @return mixed
*/
private function dispose($data)
{
$tenId = $data['tenId'];
switch ($tenId) {
case 34:
$message = $this->allocation($data);//平台分配/重新分配驾校(代理人)(修改)
break;
default:
return false;
}
$res = $this->send($message);
return $res;
}
/**
*
* @param $data
* 平台分配/重新分配驾校(代理人)(修改)
* tenId = 34
* openid 驾校openid
* status 服务类型(待体检-结束)
* order_sn 下单编号
* nameStudent 学生姓名
* phoneStudent 学生联系电话
*
* @return array
*/
protected function allocation($data)
{
$message = [
'touser' => $data['openid'],
'template_id' => 'aAml_UF_eJibiQW0rXxnqQyY2Kn7Rg_RxWxkjJZiGvY',
'url' => '',
// //跳小程序所需数据,不需跳小程序可不用传该数据
// 'miniprogram' => [
// 'appid' => '',//跳转小程序appid
// 'pagepath' => '',//跳转小程序页面
// ],
'data' => [
'first' => [
'value' => '您有新学员待分配提醒',
],
'keyword1' => [
'value' => $data['status'] . '订单',
],
'keyword2' => [
'value' => $data['order_sn'],
],
'keyword3' => [
'value' => $data['nameStudent'],
],
'keyword4' => [
'value' => $data['phoneStudent'],
],
'keyword5' => [
'value' => date('Y年m月d日 H:i', time()),
],
'remark' => [
'value' => '请做好学员接收工作',
]
],
];
return $message;
}
public function send($data)
{
$app = EasyWeChat::officialAccount();
$res = $app->template_message->send($data);
return $res;
}
}
就ok了。对于具体的做法还是看看文档吧