You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1043 lines
46 KiB
1043 lines
46 KiB
<?php
|
|
defined('IN_IA') or exit('Access Denied');
|
|
use EasyWeChat\Factory;
|
|
|
|
/**
|
|
* Comment: 模板消息操作模型
|
|
* Author: zzw
|
|
* Class Template
|
|
*/
|
|
class TempModel {
|
|
protected static $source,//端口类型:1=微信公众号(wechat);2=H5(h5);3=微信小程序(weapp)
|
|
$type,#订单支付成功 = pay;订单发货提醒 = send;售后状态通知 = after_sale;退款成功通知 = refund;订单待付款提醒 = remind;业务处理结果通知 = service
|
|
#核销成功提醒 = write_off;拼团结果通知 = fight;商品下架提醒 = shop;签到成功通知 = sign
|
|
$setName = 'new_temp_set',//设置项储存名称
|
|
$sendData = [],//发送的模板信息内容数组(由用户传递)
|
|
$sendConfig = [],//发送模板 - 模板配置信息
|
|
$sendLink,//发送模板 - 模板跳转地址(可空)
|
|
$sendMid,//接收模板信息的用户的id
|
|
$nickName,//用户昵称信息
|
|
$member,//用户信息
|
|
$miniProgram = [],//公众号跳转小程序配置信息
|
|
$app,//EasyWeChat 实例化对象
|
|
$useTemplateType,//公众号消息类型 0=使用模板消息,1=使用订阅消息
|
|
#--- 微信公众号 - 模板消息 ---------------------------------------------------------------
|
|
$WeChatTempNameList = [
|
|
'pay' => 'OPENTM207498902' ,//订单支付成功
|
|
'send' => 'OPENTM200565259' ,//订单发货提醒
|
|
'after_sale' => 'OPENTM415747403' ,//售后状态通知
|
|
'refund' => 'TM00430' ,//退款成功通知
|
|
'remind' => 'OPENTM401751289' ,//订单待付款提醒
|
|
'service' => 'OPENTM415477060' ,//业务处理结果通知
|
|
'write_off' => 'OPENTM406638019' ,//核销成功提醒
|
|
'fight' => 'OPENTM413234525' ,//拼团结果通知
|
|
'shop' => 'OPENTM401799417' ,//商品下架提醒
|
|
'sign' => 'OPENTM408761110' ,//签到成功通知
|
|
'change' => 'OPENTM403182052',//变更通知
|
|
'profit' => 'OPENTM405637175',//收益到账通知
|
|
] ,//微信公众号 —— 模板名称对照列表
|
|
$WeChatTempTitleList = [
|
|
'pay' => '订单支付成功通知' ,
|
|
'send' => '订单发货提醒' ,
|
|
'after_sale' => '售后状态通知' ,
|
|
'refund' => '退款成功通知' ,
|
|
'remind' => '订单待付款提醒' ,
|
|
'service' => '业务处理结果通知' ,
|
|
'write_off' => '核销成功提醒' ,
|
|
'fight' => '拼团结果通知' ,
|
|
'shop' => '商品下架提醒' ,
|
|
'sign' => '签到成功通知' ,
|
|
'change' => '变更通知',
|
|
'profit' => '收益到账通知',
|
|
],//微信公众号 —— 模板标题对照表
|
|
#--- 微信小程序 - 订阅消息 ---------------------------------------------------------------
|
|
$WeAppSubscriptionNameList = [
|
|
'pay' => '4616', //订单支付成功
|
|
'send' => '855', //订单发货提醒
|
|
'after_sale' => '5049', //售后状态通知
|
|
'refund' => '7517', //退款成功通知
|
|
'service' => '17364', //业务处理通知
|
|
'write_off' => '6196', //核销成功提醒
|
|
'fight' => '5008', //拼团结果通知
|
|
'sign' => '6240',//签到成功通知
|
|
'change' => '310',//积分变更提醒
|
|
],//微信小程序 —— 订阅消息ID对照表
|
|
$WeAppSubscriptionTitleList = [
|
|
'pay' => '付款成功通知',//客户名称、订单编号、订单金额、商品名称
|
|
'send' => '订单发货通知',//订单号、物流公司、快递单号
|
|
'after_sale' => '售后状态通知',//订单编号、申请时间、状态、订单金额、温馨提示
|
|
'refund' => '退款成功通知',//退款金额、商品名称、订单编号
|
|
'service' => '业务受理进度通知',//业务类型、业务内容、处理结果、操作时间、温馨提示
|
|
'write_off' => '核销成功通知',//订单编号、核销时间、商品名、备注
|
|
'fight' => '拼团进度通知',//拼团状态、温馨提示
|
|
'sign' => '签到提醒',//用户名称、签到时间、温馨提示
|
|
'change' => '积分变更提醒',//变更数量、积分余额、变动时间、变更原因
|
|
],//微信小程序 —— 订阅消息标题对照表
|
|
$WeAppSubscriptionParamsList = [
|
|
'pay' => [1,8,10,11],
|
|
'send' => [1,17,4],
|
|
'after_sale' => [2,3,6,5],
|
|
'refund' => [6,3,2],
|
|
'service' => [1,2,3,4,5],
|
|
'write_off' => [1,2,4,3],
|
|
'fight' => [1,2,3],
|
|
'sign' => [7,2,3],
|
|
'change' => [1,2,4,3],
|
|
],//微信小程序 —— 订阅消息配置信息对照表
|
|
#--- 微信公众号 - 订阅消息 ---------------------------------------------------------------
|
|
$WeChatSubscriptionNameList = [
|
|
'pay' => '4616', //订单支付成功
|
|
'send' => '855', //订单发货提醒
|
|
'after_sale' => '5049', //售后状态通知
|
|
'refund' => '7517', //退款成功通知
|
|
'service' => '17364', //业务处理通知
|
|
'write_off' => '6196', //核销成功提醒
|
|
'fight' => '5008', //拼团结果通知
|
|
'sign' => '6240',//签到成功通知
|
|
'change' => '310',//积分变更提醒
|
|
],//微信公众号 —— 订阅消息ID对照表
|
|
$WeChatSubscriptionTitleList = [
|
|
'pay' => '付款成功通知',//客户名称、订单编号、订单金额、商品名称
|
|
'send' => '订单发货通知',//订单号、物流公司、快递单号
|
|
'after_sale' => '售后状态通知',//订单编号、申请时间、状态、订单金额、温馨提示
|
|
'refund' => '退款成功通知',//退款金额、商品名称、订单编号
|
|
'service' => '业务受理进度通知',//业务类型、业务内容、处理结果、操作时间、温馨提示
|
|
'write_off' => '核销成功通知',//订单编号、核销时间、商品名、备注
|
|
'fight' => '拼团进度通知',//拼团状态、温馨提示
|
|
'sign' => '签到提醒',//用户名称、签到时间、温馨提示
|
|
'change' => '积分变更提醒',//变更数量、积分余额、变动时间、变更原因
|
|
],//微信公众号 —— 订阅消息标题对照表
|
|
$WeChatSubscriptionParamsList = [
|
|
'pay' => [1,8,10,11],
|
|
'send' => [1,17,4],
|
|
'after_sale' => [2,3,6,5],
|
|
'refund' => [6,3,2],
|
|
'service' => [1,2,3,4,5],
|
|
'write_off' => [1,2,4,3],
|
|
'fight' => [1,2,3],
|
|
'sign' => [7,2,3],
|
|
'change' => [1,2,4,3],
|
|
];//微信公众号 —— 订阅消息配置信息对照表
|
|
|
|
|
|
/****** 模板id获取 ****************************************************************************************************/
|
|
/**
|
|
* Comment: 模板操作初始化
|
|
* Author: zzw
|
|
* Date: 2019/9/3 14:11
|
|
* @param $source
|
|
* @param $type
|
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
|
*/
|
|
public static function init($source,$type){
|
|
#1、初始化基本信息
|
|
self::$source = $source;
|
|
self::$type = $type;
|
|
#2、根据来源调用方法 端口类型:1=微信公众号(wechat);2=微信小程序(weapp)
|
|
switch ($source) {
|
|
case 1:
|
|
$useTemplateType = Setting::wlsetting_read('use_template_type');//公众号消息类型 0=使用模板消息,1=使用订阅消息
|
|
if ($useTemplateType == 1) self::WeChatSubscriptionMessage();
|
|
else self::WeChat();
|
|
break;//微信公众号self::WeChat();
|
|
case 2:
|
|
self::WeAppSubscriptionMessage();
|
|
break;//微信小程序
|
|
default:
|
|
Commons::sRenderError('端口错误!');
|
|
break;
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 公众号模板生成
|
|
* Author: zzw
|
|
* Date: 2019/9/3 16:13
|
|
*/
|
|
protected static function WeChat(){
|
|
global $_W;
|
|
#1、获取模板名称
|
|
$tempName = self::$WeChatTempNameList[self::$type];
|
|
#2、生成配置信息
|
|
$params = $_W['account']->account ? : get_object_vars($_W['account']);
|
|
$config = [
|
|
'app_id' => $params['key'],
|
|
'secret' => $params['secret'],
|
|
'token' => $params['token'],
|
|
'response_type' => 'array',
|
|
];
|
|
$app = Factory::officialAccount($config);
|
|
#3、获取已存在的所有模板信息,并且判断当前模板是否已存在
|
|
try{
|
|
$list = $app->template_message->getPrivateTemplates()['template_list'];
|
|
if(is_array($list) && count($list) > 0){
|
|
//判断模板是否存在
|
|
$title = self::$WeChatTempTitleList[self::$type];//当前将要添加的模板的标题
|
|
//建立一个以title为下标,template_id为值的新数组
|
|
$keyArr = array_column($list,'title');//数据的下标
|
|
$valArr = array_column($list,'template_id');//数据的值
|
|
$newList = array_combine($keyArr , $valArr);
|
|
//获取模板id
|
|
$template_id = $newList[trim($title)];
|
|
}
|
|
#4、模板id不存在 获取新的模板id
|
|
if(!$template_id){
|
|
$res = $app->template_message->addTemplate(trim($tempName));
|
|
if($res['errcode'] == 0){
|
|
$template_id = $res['template_id'];
|
|
}else{
|
|
Commons::sRenderError($res['errmsg']);
|
|
}
|
|
}
|
|
|
|
Commons::sRenderSuccess('模板id',$template_id);
|
|
}catch(Exception $e){
|
|
Commons::sRenderError($e->getMessage());
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息模板id获取
|
|
* Author: zzw
|
|
* Date: 2019/12/11 18:10
|
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
|
*/
|
|
protected static function WeAppSubscriptionMessage(){
|
|
#1、生成配置信息
|
|
$params = Setting::wlsetting_read('wxapp_config');
|
|
$config = [
|
|
'app_id' => trim($params['appid']) ,
|
|
'secret' => trim($params['secret']) ,
|
|
'response_type' => 'array' ,
|
|
];
|
|
#2、基本参数信息获取
|
|
$tid = self::$WeAppSubscriptionNameList[self::$type];//tid获取
|
|
$kidList = self::$WeAppSubscriptionParamsList[self::$type];//kid数组获取
|
|
$title = self::$WeAppSubscriptionTitleList[self::$type];//标题获取
|
|
if (intval($tid) > 0) {
|
|
try {
|
|
self::$app = Factory::miniProgram($config);
|
|
#3、获取当前账户下面所有的模板列表
|
|
$list = self::$app->subscribe_message->getTemplates()['data'];
|
|
#4、判断当前模板是否已经存在 存在则直接返回模板id
|
|
if (is_array($list) && count($list) > 0) {
|
|
//建立一个以title为下标,template_id为值的新数组
|
|
$keyArr = array_column($list , 'title');//数据的下标
|
|
$valArr = array_column($list , 'priTmplId');//数据的值
|
|
$newList = array_combine($keyArr , $valArr);
|
|
//获取模板id
|
|
$template_id = $newList[trim($title)];
|
|
}
|
|
#5、模板不存在 添加模板
|
|
if (empty($template_id)) {
|
|
$res = self::$app->subscribe_message->addTemplate($tid , $kidList , $title);
|
|
if ($res['errcode'] == 0) $template_id = $res['priTmplId'];
|
|
else Commons::sRenderError($res['errmsg']);
|
|
}
|
|
#5、输出模板id
|
|
Commons::sRenderSuccess('模板id' , $template_id);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
Commons::sRenderError($error);
|
|
}
|
|
} else {
|
|
Commons::sRenderError('暂不支持该订阅消息!');
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息模板id获取
|
|
* Author: zzw
|
|
* Date: 2021/2/18 14:34
|
|
*/
|
|
private static function WeChatSubscriptionMessage(){
|
|
global $_W;
|
|
//生成配置信息
|
|
/*$params = $_W['account']->account ? : get_object_vars($_W['account']);
|
|
$config = [
|
|
'app_id' => $params['key'],
|
|
'secret' => $params['secret'],
|
|
'token' => $params['token'],
|
|
'response_type' => 'array',
|
|
];*/
|
|
//基本参数信息获取
|
|
$tid = self::$WeChatSubscriptionNameList[self::$type];//tid获取
|
|
$kidList = self::$WeChatSubscriptionParamsList[self::$type];//kid数组获取
|
|
$title = self::$WeChatSubscriptionTitleList[self::$type];//标题获取
|
|
if (intval($tid) > 0) {
|
|
try {
|
|
//判断当前模板是否已经存在 存在则直接返回模板id
|
|
$list = self::getTemplateList();//获取当前账户下面所有的模板列表
|
|
if (is_array($list) && count($list) > 0) {
|
|
//建立一个以title为下标,template_id为值的新数组
|
|
$keyArr = array_column($list , 'title');//数据的下标
|
|
$valArr = array_column($list , 'priTmplId');//数据的值
|
|
$newList = array_combine($keyArr , $valArr);
|
|
//获取模板id
|
|
$template_id = $newList[trim($title)];
|
|
}
|
|
//模板不存在 添加模板
|
|
if (empty($template_id)) {
|
|
$addRes = self::addTemplate(false,$tid , $kidList , $title);
|
|
if($addRes['errcode'] == 0) $template_id = $addRes['priTmplId'];
|
|
else Commons::sRenderError($addRes['errmsg']);
|
|
}
|
|
//输出模板id
|
|
Commons::sRenderSuccess('模板id' , $template_id);
|
|
} catch (Exception $e) {
|
|
$error = $e->getMessage();
|
|
Commons::sRenderError($error);
|
|
}
|
|
} else {
|
|
Commons::sRenderError('暂不支持该订阅消息!');
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息 —— 获取当前账户下面所有的模板列表
|
|
* Author: zzw
|
|
* Date: 2021/2/18 14:40
|
|
* @param false $nowToken
|
|
* @return array
|
|
* @throws Exception
|
|
*/
|
|
protected static function getTemplateList($nowToken = false){
|
|
//token信息获取
|
|
$accessToken = WeliamWeChat::getAccessToken($nowToken);
|
|
//获取模板列表
|
|
$http = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate?access_token={$accessToken}";
|
|
$list = curlGetRequest($http);
|
|
//信息返回
|
|
if($list['errcode'] == 40001){
|
|
return self::getTemplateList(true);
|
|
}else if($list['errcode'] != 0){
|
|
throw new Exception($list['errmsg']);
|
|
}else{
|
|
return is_array($list['data']) ? $list['data'] : [];
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息 —— 选用模板
|
|
* Author: zzw
|
|
* Date: 2021/2/18 14:42
|
|
* @param false $nowToken
|
|
* @param $tid
|
|
* @param $kidList
|
|
* @param $title
|
|
* @return array|void
|
|
* @throws Exception
|
|
*/
|
|
protected static function addTemplate($nowToken = false,$tid , $kidList , $title){
|
|
//token信息获取
|
|
$accessToken = WeliamWeChat::getAccessToken($nowToken);
|
|
//请求选用模板
|
|
$http = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate?access_token={$accessToken}";
|
|
$data = [
|
|
'tid' => $tid,
|
|
'kidList' => $kidList,
|
|
'sceneDesc' => $title,
|
|
];
|
|
$headers = [
|
|
"Content-type: application/json;charset='utf-8'" ,
|
|
"Accept: application/json" ,
|
|
"Cache-Control: no-cache" ,
|
|
"Pragma: no-cache"
|
|
];
|
|
$res = curlPostRequest($http,\GuzzleHttp\json_encode($data,JSON_UNESCAPED_UNICODE),$headers);
|
|
//信息返回
|
|
if($res['errcode'] == 40001){
|
|
return self::addTemplate(true,$tid , $kidList , $title);
|
|
}else if($res['errcode'] != 0){
|
|
throw new Exception($res['errmsg']);
|
|
}else{
|
|
return is_array($res) ? $res : [];
|
|
}
|
|
}
|
|
|
|
|
|
/****** 模板消息发送(PS:发送消息操作中出现的所有错误只能返回不能直接输出) *******************************************/
|
|
/**
|
|
* Comment: 模板信息发送初始化
|
|
* Author: zzw
|
|
* Date: 2019/9/4 11:27
|
|
* @param $type
|
|
* @param $mid
|
|
* @param $data
|
|
* @param int $source
|
|
* @param string $link
|
|
* @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string
|
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
|
*/
|
|
public static function sendInit($type,$mid,$data,$source = 1,$link = ''){
|
|
global $_W;
|
|
#1、信息的处理
|
|
if(array_key_exists('goods_name',$data)) $data['goods_name'] = self::goodsNameHandle($data['goods_name']);
|
|
//mid 小于0,则发送信息给管理员
|
|
if ($mid < 0) $mid = Setting::wlsetting_read('adminmid');
|
|
#2、初始化基本信息
|
|
self::$useTemplateType = Setting::wlsetting_read('use_template_type') ? : 0;//公众号消息类型 0=使用模板消息,1=使用订阅消息
|
|
self::$source = $source;
|
|
self::$type = $type;
|
|
self::$sendData = $data;
|
|
self::$sendLink = $link;
|
|
self::$sendMid = $mid;
|
|
|
|
if(empty(self::$source)) self::$source = 1;
|
|
self::getSupplementInfo(); //补充信息获取
|
|
#2、用户信息判断
|
|
if(!self::$member){
|
|
return '用户不存在';
|
|
}else{
|
|
//小程序 判断用户是否存在form_id
|
|
if(self::$source == 3 && empty(self::$member['form_id'])){
|
|
//小程序模板信息 用户form_id不存在 判断是否存在openid 存在使用公众号发送模板信息
|
|
if(!empty(self::$member['openid'])){
|
|
//用户没有小程序form_id 但是存在公众号openid 使用公众号发送模板信息
|
|
self::$source = 1;
|
|
//配置通过公众号模板消息 跳转到小程序的参数信息
|
|
$params = Setting::wlsetting_read('wxapp_config');
|
|
self::$miniProgram = [
|
|
'appid' => trim($params['appid']),
|
|
'pagepath' => str_replace('i='.$_W['uniacid'].'&','',explode('#/',self::$sendLink)[1]) ,//这里的路径是小程序path路径
|
|
];
|
|
}else{
|
|
//用户即没有小程序的form_id 同时也没有公众号openid 不进行任何操作
|
|
return '缺少小程序订阅消息授权模板id('.self::$WeChatSubscriptionTitleList[self::$type].')';
|
|
}
|
|
}
|
|
//公众号订阅消息 判断是否存在form_id
|
|
if(self::$source != 3 && self::$useTemplateType == 1 && empty(self::$member['form_id'])) return '缺少公众号订阅消息授权模板id('.self::$WeChatSubscriptionTitleList[self::$type].')';
|
|
}
|
|
#3、根据来源调用方法 端口类型:1=微信公众号(wechat);2=H5(h5);3=微信小程序(weapp)
|
|
switch (self::$source) {
|
|
case 1:
|
|
case 2:
|
|
//todo 确定公众号取消模板消息使用订阅消息后取消判断 固定使用weChatSubscriptionMessageSend方法发送公众号订阅消息
|
|
if (self::$useTemplateType == 1) return self::weChatSubscriptionMessageSend();//公众号订阅消息
|
|
else return self::weChatMessageSend();//公众号模板消息
|
|
break;//微信公众号
|
|
case 3:
|
|
return self::weAppSubscriptionMessageSend();
|
|
break;//微信小程序
|
|
default:
|
|
return '端口错误';
|
|
break;
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信公众号 —— 模板信息发送
|
|
* Author: zzw
|
|
* Date: 2019/9/4 11:27
|
|
* @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string
|
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
|
*/
|
|
protected static function weChatMessageSend(){
|
|
global $_W;
|
|
#1、获取设置信息
|
|
$set = Setting::wlsetting_read(self::$setName);
|
|
$setInfo = $set[self::$type]['wechat'];
|
|
//修改备注信息和跳转链接
|
|
if($setInfo['remark']) self::$sendData['remark'] = $setInfo['remark'] ? : self::$sendData['remark'];//修改备注信息
|
|
if($setInfo['link'] && self::$source == 3) {
|
|
self::$miniProgram['pagepath'] = $setInfo['link'];//修改小程序路径
|
|
}else if($setInfo['link'] && self::$source != 3){
|
|
self::$sendLink = h5_url($setInfo['link']) ;//修改公众号跳转链接
|
|
}
|
|
//判断是否存在模板配置信息
|
|
if($setInfo['status'] != 1 || empty($setInfo['id'])) return '未开启'.self::$WeChatTempTitleList[self::$type].'模板消息';
|
|
$temp_id = $setInfo['id'];
|
|
#2、获取模板消息配置信息
|
|
$typeArr = explode('_',self::$type);
|
|
$configFunName = 'weChat';
|
|
foreach($typeArr as $key => $val){
|
|
$configFunName .= ucfirst($val);
|
|
}
|
|
self::$configFunName();//调用方法获取配置信息
|
|
#3、生成主要配置信息
|
|
if($_W['account']){
|
|
$params = $_W['account']->account ? : get_object_vars($_W['account']);
|
|
}else{
|
|
$params = uni_fetch(self::$member['uniacid'])->account ? : get_object_vars($_W['account']);
|
|
}
|
|
$config = [
|
|
'app_id' => $params['key'],
|
|
'secret' => $params['secret'],
|
|
'token' => $params['token'],
|
|
'response_type' => 'array',
|
|
];
|
|
$app = Factory::officialAccount($config);
|
|
#4、发送模板消息信息
|
|
try{
|
|
//默认配置信息
|
|
$sendData = [
|
|
'touser' => self::$member['openid'],
|
|
'template_id' => trim($temp_id),
|
|
'url' => self::$sendLink,
|
|
'data' => self::$sendConfig
|
|
];
|
|
//判断是否存在小程序跳转信息
|
|
if(!empty(self::$miniProgram['appid']) && !empty(self::$miniProgram['pagepath'])){
|
|
$sendData['miniprogram'] = self::$miniProgram;
|
|
}
|
|
return $app->template_message->send($sendData);
|
|
}catch (Exception $e){
|
|
$error = $e->getMessage();
|
|
return $error;
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信公众号 —— 订阅消息发送
|
|
* Author: zzw
|
|
* Date: 2021/2/23 14:56
|
|
* @param false $nowToken
|
|
* @return array|mixed|string|void
|
|
*/
|
|
protected static function weChatSubscriptionMessageSend($nowToken = false){
|
|
global $_W;
|
|
//获取设置信息
|
|
$set = Setting::wlsetting_read(self::$setName);
|
|
$setInfo = $set[self::$type]['wechatSubscription'];
|
|
if($setInfo['status'] != 1 || empty($setInfo['id'])) return '未开启'.self::$WeChatSubscriptionTitleList[self::$type].'模板消息';
|
|
$temp_id = $setInfo['id'];
|
|
//获取模板消息配置信息
|
|
$typeArr = explode('_',self::$type);
|
|
$configFunName = 'weChatSubscription';
|
|
foreach($typeArr as $key => $val){
|
|
$configFunName .= ucfirst($val);
|
|
}
|
|
self::$configFunName();
|
|
//发送模板消息信息
|
|
try{
|
|
$accessToken = WeliamWeChat::getAccessToken($nowToken); //token信息获取
|
|
$http = "https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token={$accessToken}";
|
|
$data = [
|
|
'touser' => trim(self::$member['openid']),
|
|
'template_id' => trim($temp_id),
|
|
'page' => self::$sendLink,//跳转网页链接
|
|
//'miniprogram' => json_encode(['appid'=>'','pagepath'=>'']),//跳转小程序设置
|
|
'data' => self::$sendConfig,
|
|
];
|
|
$headers = [
|
|
"Content-type: application/json;charset='utf-8'" ,
|
|
"Accept: application/json" ,
|
|
"Cache-Control: no-cache" ,
|
|
"Pragma: no-cache"
|
|
];
|
|
$res = curlPostRequest($http,\GuzzleHttp\json_encode($data,JSON_UNESCAPED_UNICODE),$headers);
|
|
//信息返回
|
|
if ($res['errcode'] == 40001) return self::weChatSubscriptionMessageSend(true);
|
|
else if ($res['errcode'] != 0) throw new Exception($res['errmsg']);
|
|
else return $res;
|
|
}catch (Exception $e){
|
|
$error = $e->getMessage();
|
|
Util::wl_log('tempError', PATH_MODULE."log/",[$error,$data],'公众号订阅消息发送失败'); //写入日志记录
|
|
return $error;
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 微信小程序 —— 订阅消息发送
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:57
|
|
* @return array|\EasyWeChat\Kernel\Support\Collection|object|\Psr\Http\Message\ResponseInterface|string
|
|
* @throws \GuzzleHttp\Exception\GuzzleException
|
|
*/
|
|
protected static function weAppSubscriptionMessageSend(){
|
|
global $_W;
|
|
#1、获取设置信息
|
|
$set = Setting::wlsetting_read(self::$setName);
|
|
$setInfo = $set[self::$type]['weappSubscription'];
|
|
if($setInfo['status'] != 1 || empty($setInfo['id'])) return '未开启'.self::$WeAppSubscriptionTitleList[self::$type].'模板消息';
|
|
$temp_id = $setInfo['id'];
|
|
#2、获取模板消息配置信息
|
|
$typeArr = explode('_',self::$type);
|
|
$configFunName = 'weAppSubscription';
|
|
foreach($typeArr as $key => $val){
|
|
$configFunName .= ucfirst($val);
|
|
}
|
|
self::$configFunName();
|
|
#3、生成主要配置信息
|
|
$params = Setting::wlsetting_read('wxapp_config');
|
|
$config = [
|
|
'app_id' => trim($params['appid']),
|
|
'secret' => trim($params['secret']),
|
|
'response_type' => 'array',
|
|
];
|
|
Util::wl_log('error', PATH_MODULE."payment/",$config,'小程序订阅消息发送'); //写入日志记录
|
|
#4、发送模板消息信息trim($temp_id)
|
|
$data = [
|
|
'template_id' => trim($temp_id), // 所需下发的订阅模板id
|
|
'touser' => self::$member['wechat_openid'] , // 接收者(用户)的 openid
|
|
'page' => str_replace('i='.$_W['uniacid'].'&','',explode('#/',self::$sendLink)[1]), // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。
|
|
'data' => self::$sendConfig
|
|
];
|
|
try{
|
|
$app = Factory::miniProgram($config);
|
|
return $app->subscribe_message->send($data);
|
|
}catch (Exception $e){
|
|
$error = $e->getMessage();
|
|
return $error;
|
|
}
|
|
}
|
|
/**
|
|
* Comment: 补充信息获取
|
|
* Author: zzw
|
|
* Date: 2019/10/29 18:07
|
|
*/
|
|
protected static function getSupplementInfo(){
|
|
#1、获取用户信息
|
|
self::$member = pdo_get(PDO_NAME."member",['id'=>self::$sendMid]
|
|
,['openid','uniacid','wechat_openid','nickname','encodename']);
|
|
self::$member['nickname'] = base64_decode(self::$member['encodename']);
|
|
|
|
//判断用户是否存在当前端口的openid
|
|
if(self::$source == 1 && empty(self::$member['openid'])){
|
|
self::$source = 3;//公众号端口 但是用户没有openid 则使用小程序模板消息
|
|
}else if (self::$source == 3 && empty(self::$member['wechat_openid'])){
|
|
self::$source = 1;//小程序端口 但是用户没有wechat_openid 则使用公众号模板消息
|
|
}
|
|
|
|
#2、获取用户formid
|
|
if(self::$source == 3 || self::$useTemplateType == 1) self::$member['form_id'] = self::getFromId();
|
|
}
|
|
/**
|
|
* Comment: 获取小程序formid
|
|
* Author: zzw
|
|
* Date: 2019/9/5 13:42
|
|
* @return mixed
|
|
*/
|
|
protected static function getFromId(){
|
|
//操作准备
|
|
$table = PDO_NAME."formid";
|
|
$mid = self::$sendMid;
|
|
$tempType = self::$type;
|
|
//获取当前用户最早一条formid
|
|
if(self::$source == 3) $where = " type = 2 ";
|
|
else $where = " type = 3 ";
|
|
$info = pdo_fetch("SELECT id,form_id FROM ".tablename($table)." WHERE mid = {$mid} AND temp_type = '{$tempType}' AND {$where} ORDER BY create_time ASC ");
|
|
//删除被获取的这条formid的信息
|
|
pdo_delete($table,['id'=>$info['id']]);
|
|
|
|
return $info['form_id'];
|
|
}
|
|
/**
|
|
* Comment: 处理商品名称长度(微信支付限制不能超过128字节)
|
|
* Author: zzw
|
|
* Date: 2020/9/28 10:58
|
|
* @param $name
|
|
* @return string
|
|
*/
|
|
protected static function goodsNameHandle($name){
|
|
//微信支付body字节数量不能大于128 这里判断120字节 余下8字节用作字节保留数
|
|
$byteLength = strlen($name);//获取商品名称的字节长度 单位:字节数
|
|
$byteRestriction = 50;
|
|
#1、判断当前名称是否大于120字节
|
|
if($byteLength >= $byteRestriction){
|
|
#2、大于:进行裁剪。urf-8编码中:中文 = 3字节 初始截取位置为120/3=40开始
|
|
$start = 40;
|
|
$newName = substr($name,0,$start);
|
|
for($i=40;strlen($newName)<$byteRestriction;$i++){
|
|
$newName = substr($name,0,$i);
|
|
}
|
|
#3、防止最后一个字符乱码 进行截取
|
|
$newName = mb_substr($newName,0,(mb_strlen($newName) - 1));
|
|
$newName .= '...';
|
|
}
|
|
|
|
return !empty($newName) ? $newName : $name;
|
|
}
|
|
/**
|
|
* Comment: 根据限制长度进行字符串截取
|
|
* Author: zzw
|
|
* Date: 2021/4/28 15:42
|
|
* @param int|string $str
|
|
* @param int $len
|
|
* @return false|mixed|string
|
|
*/
|
|
public static function subStr($str,$len = 20){
|
|
if(mb_strlen($str) > $len){
|
|
$str = mb_substr($str,0,$len);
|
|
}
|
|
|
|
return $str;
|
|
}
|
|
|
|
|
|
/****** 微信公众号模板消息配置信息生成 *******************************************************************************/
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 订单支付成功
|
|
* Author: zzw
|
|
* Date: 2019/9/4 17:30
|
|
*/
|
|
protected static function weChatPay(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$member['nickname'] ,//用户名
|
|
'keyword2' => self::$sendData['order_no'] ,//订单号
|
|
'keyword3' => self::$sendData['money'] . "元",//订单金额
|
|
'keyword4' => self::$sendData['goods_name'] ,//商品信息
|
|
'Remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 订单发货提醒
|
|
* Author: zzw
|
|
* Date: 2019/9/4 17:36
|
|
*/
|
|
protected static function weChatSend(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['order_no'] ,//订单编号
|
|
'keyword2' => self::$sendData['express_name'] ,//物流公司
|
|
'keyword3' => self::$sendData['express_no'] ,//物流单号
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 售后状态通知
|
|
* Author: zzw
|
|
* Date: 2019/9/4 17:40
|
|
*/
|
|
protected static function weChatAfterSale(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['order_no'] ,//售后编号
|
|
'keyword2' => self::$sendData['goods_name'] ,//商品信息
|
|
'keyword3' => self::$sendData['status'] ,//状态
|
|
'keyword4' => self::$sendData['time'] ,//时间
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 退款成功通知
|
|
* Author: zzw
|
|
* Date: 2019/9/4 17:47
|
|
*/
|
|
protected static function weChatRefund(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'orderProductPrice' => self::$sendData['money'] . "元",//退款金额
|
|
'orderProductName' => self::$sendData['goods_name'],//商品详情
|
|
'orderName' => self::$sendData['order_no'],//订单编号
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 业务处理结果通知
|
|
* Author: zzw
|
|
* Date: 2019/9/4 18:03
|
|
*/
|
|
protected static function weChatService(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['type'],//业务类型
|
|
'keyword2' => self::$sendData['content'] ,//业务内容
|
|
'keyword3' => self::$sendData['status'],//处理结果
|
|
'keyword4' => self::$sendData['time'] ,//操作时间
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 核销成功提醒
|
|
* Author: zzw
|
|
* Date: 2019/9/4 18:04
|
|
*/
|
|
protected static function weChatWriteOff(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'],
|
|
'keyword1' => self::$sendData['goods_name'] ,//商品名称
|
|
'keyword2' => self::$sendData['goods_num'] ,//商品数量
|
|
'keyword3' => self::$sendData['time'] ,//核销时间
|
|
'remark' => self::$sendData['remark'],
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 拼团结果通知
|
|
* Author: zzw
|
|
* Date: 2019/9/4 18:10
|
|
*/
|
|
protected static function weChatFight(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'],
|
|
'keyword1' => self::$sendData['result'] ,//拼团结果
|
|
'keyword2' => self::$sendData['detail'] ,//拼团详情
|
|
'remark' => self::$sendData['remark'],
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 签到成功通知
|
|
* Author: zzw
|
|
* Date: 2019/9/4 18:25
|
|
*/
|
|
protected static function weChatSign(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['user_name'] ,//用户名
|
|
'keyword2' => self::$sendData['total'] ,//累计签到次数
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 积分变更提醒
|
|
* Author: zzw
|
|
* Date: 2021/1/26 14:12
|
|
*/
|
|
protected static function weChatChange(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['old_number'] ,//原有积分
|
|
'keyword2' => self::$sendData['current_number'] ,//现有积分
|
|
'keyword3' => self::$sendData['time'] ,//变更时间
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号模板配置信息 —— 收益到账通知
|
|
* Author: zzw
|
|
* Date: 2021/1/29 10:13
|
|
*/
|
|
protected static function weChatProfit(){
|
|
self::$sendConfig = [
|
|
'first' => self::$sendData['first'] ,
|
|
'keyword1' => self::$sendData['profit_money'] ,//收益金额
|
|
'keyword2' => self::$sendData['profit_source'] ,//收益来源
|
|
'keyword3' => self::$sendData['time'] ,//到账时间
|
|
'remark' => self::$sendData['remark'] ,
|
|
];
|
|
}
|
|
|
|
|
|
/****** 微信公众号订阅消息配置信息生成 *******************************************************************************/
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 订单支付成功
|
|
* Author: zzw
|
|
* Date: 2020/1/10 13:54
|
|
*/
|
|
protected static function weChatSubscriptionPay(){
|
|
self::$sendConfig = [
|
|
'name1' => ['value' => self::$member['nickname']],//客户名称
|
|
'character_string8' => ['value' => self::$sendData['order_no']],//订单编号
|
|
'amount10' => ['value' => self::$sendData['money']."元"],//订单金额
|
|
'thing11' => ['value' => self::$sendData['goods_name']],//商品名称
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 订单发货提醒
|
|
* Author: zzw
|
|
* Date: 2020/1/10 13:58
|
|
*/
|
|
protected static function weChatSubscriptionSend(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['order_no']],//订单号
|
|
'thing17' => ['value' => self::$sendData['express_name']],//物流公司
|
|
'character_string4' => ['value' => self::$sendData['express_no']],//快递单号
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 售后状态通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:01
|
|
*/
|
|
protected static function weChatSubscriptionAfterSale(){
|
|
self::$sendConfig = [
|
|
'character_string2' => ['value' => self::$sendData['order_no']],//订单编号
|
|
'date3' => ['value' => self::$sendData['time']],//申请时间
|
|
'thing6' => ['value' => self::$sendData['status']],//状态
|
|
'thing5' => ['value' => self::$sendData['remark']],//温馨提示
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 退款成功通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:09
|
|
*/
|
|
protected static function weChatSubscriptionRefund(){
|
|
self::$sendConfig = [
|
|
'amount6' => ['value' => self::$sendData['money']."元"],//退款金额
|
|
'thing3' => ['value' => self::$sendData['goods_name']],//商品名称
|
|
'character_string2' => ['value' => self::$sendData['order_no']],//订单编号
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 业务处理结果通知
|
|
* Author: zzw
|
|
* Date: 2021/2/19 11:53
|
|
*/
|
|
protected static function weChatSubscriptionService(){
|
|
self::$sendConfig = [
|
|
'thing1' => ['value' => self::$sendData['type']],//业务类型
|
|
'thing2' => ['value' => self::$sendData['content']],//业务内容
|
|
'thing3' => ['value' => self::$sendData['status']],//处理结果
|
|
'time4' => ['value' => self::$sendData['time']],//操作时间
|
|
'thing5' => ['value' => self::$sendData['remark']],//温馨提示
|
|
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 核销成功提醒
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:20
|
|
*/
|
|
protected static function weChatSubscriptionWriteOff(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['order_no']] ,//订单编号
|
|
'time2' => ['value' => self::$sendData['time']] ,//核销时间
|
|
'thing4' => ['value' => self::$sendData['goods_name']] ,//商品名
|
|
'thing3' => ['value' => self::$sendData['remark']] ,//备注
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 拼团结果通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:56
|
|
*/
|
|
protected static function weChatSubscriptionFight(){
|
|
self::$sendConfig = [
|
|
'thing1' => ['value' => self::$sendData['goods_name']] ,//拼团商品
|
|
'thing2' => ['value' => self::$sendData['nickname_string']] ,//拼团成员
|
|
'thing3' => ['value' => self::$sendData['result']] ,//拼团进度
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 签到成功通知
|
|
* Author: zzw
|
|
* Date: 2021/2/19 11:57
|
|
*/
|
|
protected static function weChatSubscriptionSign(){
|
|
self::$sendConfig = [
|
|
'thing7' => ['value' => self::$sendData['user_name']],//用户名称
|
|
'date2' => ['value' => self::$sendData['sign_time']],//签到时间
|
|
'thing3' => ['value' => self::$sendData['remark']],//温馨提示
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信公众号订阅消息配置信息 —— 积分变更提醒
|
|
* Author: zzw
|
|
* Date: 2021/2/19 13:56
|
|
*/
|
|
protected static function weChatSubscriptionChange(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['change_num']],//变更数量
|
|
'character_string2' => ['value' => self::$sendData['balance']],//积分余额
|
|
'time4' => ['value' => self::$sendData['time']],//变动时间
|
|
'thing3' => ['value' => self::$sendData['change_remark']],//变更原因
|
|
];
|
|
}
|
|
|
|
|
|
/****** 微信小程序订阅消息配置信息生成 ***********************************************************************************/
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 订单支付成功
|
|
* Author: zzw
|
|
* Date: 2020/1/10 13:54
|
|
*/
|
|
protected static function weAppSubscriptionPay(){
|
|
self::$sendConfig = [
|
|
'name1' => ['value' => self::$member['nickname']],//客户名称
|
|
'character_string8' => ['value' => self::$sendData['order_no']],//订单编号
|
|
'amount10' => ['value' => self::$sendData['money']."元"],//订单金额
|
|
'thing11' => ['value' => self::subStr(self::$sendData['goods_name'])],//商品名称
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 订单发货提醒
|
|
* Author: zzw
|
|
* Date: 2020/1/10 13:58
|
|
*/
|
|
protected static function weAppSubscriptionSend(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['order_no']],//订单号
|
|
'thing17' => ['value' => self::subStr(self::$sendData['express_name'])],//物流公司
|
|
'character_string4' => ['value' => self::$sendData['express_no']],//快递单号
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 售后状态通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:01
|
|
*/
|
|
protected static function weAppSubscriptionAfterSale(){
|
|
self::$sendConfig = [
|
|
'character_string2' => ['value' => self::$sendData['order_no']],//订单编号
|
|
'date3' => ['value' => self::$sendData['time']],//申请时间
|
|
'thing6' => ['value' => self::$sendData['status']],//状态
|
|
'thing5' => ['value' => self::subStr(self::$sendData['remark'])],//温馨提示
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 退款成功通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:09
|
|
*/
|
|
protected static function weAppSubscriptionRefund(){
|
|
self::$sendConfig = [
|
|
'amount6' => ['value' => self::$sendData['money']."元"],//退款金额
|
|
'thing3' => ['value' => self::subStr(self::$sendData['goods_name'])],//商品名称
|
|
'character_string2' => ['value' => self::$sendData['order_no']],//订单编号
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 业务处理结果通知
|
|
* Author: zzw
|
|
* Date: 2021/2/19 11:53
|
|
*/
|
|
protected static function weAppSubscriptionService(){
|
|
self::$sendConfig = [
|
|
'thing1' => ['value' => self::$sendData['type']],//业务类型
|
|
'thing2' => ['value' => self::subStr(self::$sendData['content'])],//业务内容
|
|
'thing3' => ['value' => self::$sendData['status']],//处理结果
|
|
'time4' => ['value' => self::$sendData['time']],//操作时间
|
|
'thing5' => ['value' => self::subStr(self::$sendData['remark']) ? : '无提示'],//温馨提示
|
|
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 核销成功提醒
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:20
|
|
*/
|
|
protected static function weAppSubscriptionWriteOff(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['order_no']] ,//订单编号
|
|
'time2' => ['value' => self::$sendData['time']] ,//核销时间
|
|
'thing4' => ['value' => self::subStr(self::$sendData['goods_name'])] ,//商品名
|
|
'thing3' => ['value' => self::subStr(self::$sendData['remark']) ? : '暂无备注'] ,//备注
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 拼团结果通知
|
|
* Author: zzw
|
|
* Date: 2020/1/10 14:56
|
|
*/
|
|
protected static function weAppSubscriptionFight(){
|
|
self::$sendConfig = [
|
|
'thing1' => ['value' => self::subStr(self::$sendData['goods_name'])] ,//拼团商品
|
|
'thing2' => ['value' => self::subStr(self::$sendData['nickname_string'])] ,//拼团成员
|
|
'thing3' => ['value' => self::$sendData['result']] ,//拼团进度
|
|
'amount4' => ['value' => self::$sendData['money'] . "元"] ,//支付金额
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 签到成功通知
|
|
* Author: zzw
|
|
* Date: 2021/2/19 11:57
|
|
*/
|
|
protected static function weAppSubscriptionSign(){
|
|
self::$sendConfig = [
|
|
'thing7' => ['value' => self::subStr(self::$sendData['user_name'])],//用户名称
|
|
'date2' => ['value' => self::$sendData['sign_time']],//签到时间
|
|
'thing3' => ['value' => self::subStr(self::$sendData['remark']) ? : '暂无提示'],//温馨提示
|
|
];
|
|
}
|
|
/**
|
|
* Comment: 微信小程序订阅消息配置信息 —— 积分变更提醒
|
|
* Author: zzw
|
|
* Date: 2021/2/19 13:56
|
|
*/
|
|
protected static function weAppSubscriptionChange(){
|
|
self::$sendConfig = [
|
|
'character_string1' => ['value' => self::$sendData['change_num']],//变更数量
|
|
'character_string2' => ['value' => self::$sendData['balance']],//积分余额
|
|
'time4' => ['value' => self::$sendData['time']],//变动时间
|
|
'thing3' => ['value' => self::subStr(self::$sendData['change_remark']) ? : '无原因'],//变更原因
|
|
];
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|