版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010481239/article/details/82884870
1.获取formId并且存储起来,获取formId方法见: https://blog.csdn.net/u010481239/article/details/78239121
2.后端触发后根据openId与formId是否可用推送模板消息,下面是根据付款后推送给商家信息作为应用背景写的公共方法:
//传递付款编号推送购买消息到商家
function sendInfo($pay_no) {
//查询订单信息 2018年9月22日15:39:46 宋汲晨
$order = Db::table('se_orders')->where('pay_no', $pay_no)->find();
if ($order) {
//查询小店信息 2018-09-25 20:36:19 时间长
$store = Db::table('se_store')->where('wx_id', $order['store_id'])->find();
if ($store) {
//查到了小店信息,要推送的openId也就得到了,先插入要推送的消息的信息到数据库
$wx_id = getuuid();
$pay = Db::table('order')->where('pay_no', $order['pay_no'])->find();
$res = Db::table('info')->insert(['wx_id' => $wx_id, 'good_title' => $order['good_title'], 'pay_price' => $order['pay_money'] / 100, 'order_time' => $pay['pay_time'], 'order_no' => $order['order_no'], 'order_status' => $order['status'], 'created_at' => date("Y-m-d H:i:s")]);
//发给谁
$tempOpenId = $store['pt_openid'];
//七天前时间
$date = date('Y-m-d H:i:s', strtotime('-7 days'));
$form = Db::table('tpmessage')->where('openId', $tempOpenId)->where('idUsed', '否')->where('createdAt', '>', $date)->find();
if ($form) {
$fromid = $form['formId'];
} else {
$form = Db::table('tpmessage')->where('openId', '00000000000000000000')->where('idUsed', '否')->where('createdAt', '>', $date)->find();//预设的要发送的人
if ($form) {
$fromid = $form['formId'];
} else {
return '0';//也没有查到这个人有formId,跳出操作。在这里插入代码片
}
}
$url = 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=' . DyAccessToken(); //此处变量插入字符串不能使用{}!!! DyAccessToken是写的获取AccessToken的公共方法。
$data = array('touser' => $tempOpenId, //发给谁
'template_id' => '2h9Jje8m4jSkB1Worlz_ZH3R4GyfAzYu3Xznvu00000', //购买成功提示,这个Id 是在微信公众平台设置并生成的Id
// 'page' => 'pages/ordermsg/ordermsg?id = ' . $wx_id,//要跳转的页面点击推送消息,可以携带参数,跳转到小程序后显示详细的信息。
'page' => 'pages/index/index',//点击推送消息要跳转的页面
'form_id' => $fromid,
'data' => array(
'keyword1' => array(
'value' => $order['good_title'], // 商品名称
'color' => '#173177'
),
'keyword2' => array(
'value' => $order['pay_money'] / 100, //订单金额
'color' => '#173177'
),
'keyword3' => array(
'value' => $pay['pay_time'], //下单时间
'color' => '#173177'
),
'keyword4' => array(
'value' => $order['order_no'], //订单编号
'color' => '#173177'
),
'keyword5' => array(
'value' => $order['status'], //订单状态
'color' => '#173177'
),
'keyword6' => array(
'value' => '点击产看详情查看收货地址', //收货地址
'color' => '#173177'
)
)
);
$data = json_encode($data);
$result = sendCmd($url, $data);
$result = json_decode($result);
Log::write($result);
Log::write($result->errcode);
Log::write($result->errmsg);
if ($result->errcode == '0' && $result->errmsg == 'ok') {
//发送成功把formId 设置为已经使用过
$change = Db::table('tpmessage')->where('wx_id', $form['wx_id'])->update(['idUsed' => '是']);
$changeN = Db::table('active_info')->where('wx_id', $wx_id)->update(['send_or' => '是']);
return 'success';
} else {
Log::write('没有发送信息成功');
return '发送失败';
}
} else {
Log::write('$changeN没查到店铺信息');
}
} else {
Log::write('$changeN没查到订单信息');
}
}