php+laravel5.7(小程序,公众号,手机短信)模板消息推送下

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Wild_sir/article/details/97117444

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了。对于具体的做法还是看看文档吧

猜你喜欢

转载自blog.csdn.net/Wild_sir/article/details/97117444