-
Notifications
You must be signed in to change notification settings - Fork 1.6k
发送模板消息
liaofei edited this page Jan 20, 2021
·
1 revision
第一,数据表
下面微信和小程序消息模板存储表
CREATE TABLE `eb_template_message` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '模板id',
`type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0=订阅消息,1=微信模板消息',
`tempkey` char(50) NOT NULL DEFAULT '' COMMENT '模板编号',
`name` char(100) NOT NULL DEFAULT '' COMMENT '模板名',
`kid` varchar(255) NOT NULL DEFAULT '',
`content` varchar(1000) NOT NULL DEFAULT '' COMMENT '回复内容',
`tempid` char(100) DEFAULT NULL COMMENT '模板ID',
`add_time` varchar(15) NOT NULL DEFAULT '' COMMENT '添加时间',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='微信模板';
第二,队列
当前模板消息发送多采用异步队列方式,队列文件存放于crmeb/jobs目录。调用方式举例:
use crmeb\utils\Queue;
Queue::instance()->job(\crmeb\jobs\OtherOrderJob::class)->data($orderInfo)->push();
此处只是调用方式举例,不代表发送逻辑在此队列中开发,具体的发送业务,在具体的异步队列类中开发。
第三,配置文件
配置文件位置:config/template.php,将从微信公众平台获取的模板消息编号在此文件进行配置
微信公众号模板消息配置
小程序订阅消息配置
第一,微信公众平台添加模板消息,不会的开发者可以自行“度娘”或者看一下微信开发文档。
第二,在商城后台添加模板消息,公众号和小程序分别在不同的功能菜单中添加
第三,逻辑中调用发送
公众号和小程序各业务模板消息方法分别在不同的队列类中,所以新的模板消息方法也开发到相对应的模板消息队列类中 公众号:crmeb/jobs/WechatTemplateJob.php 小程序:crmeb/jobs/RoutineTemplateJob.php
如果是公众号则调用公众号队列类,小程序则调用小程序队列类,但是不管是哪种都需要用户的openid才能发送模板消息。下面是调用示例:
调起OtherOrderJob::class队列
use crmeb\utils\Queue;
Queue::instance()->job(\crmeb\jobs\OtherOrderJob::class)->data($orderInfo)->push();
OtherOrderJob::class中发送模板消息
<?php
class OtherOrderJob extends BaseJob
{
public function sendServicesAndTemplate($order)
{
$openid = $wechatUserServices->uidToOpenid($order['uid'], 'wechat');
$wechatTemplate = new WechatTemplateJob();
$wechatTemplate->sendOrderPaySuccess($openid, $order);
}
}