TP5之微信小程序推送模板消息

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010481239/article/details/82884870

TP5之微信小程序推送模板消息


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没查到订单信息');
            }
        }

猜你喜欢

转载自blog.csdn.net/u010481239/article/details/82884870