主动给用户发消息-微信公众号模版消息

微信公众号模版消息最大的作用就是用户在平台上提交订单或发生其它行为时,平台可以给用户发送简要的交易信息,且公众平台主动给用户发送消息目前最多的就是1.模版消息;2.客服消息。

公众号配置

首先申请一个需要的模版消息

这里写图片描述 
这里写图片描述 
其次,发送模版消息必须要用户的openid,获取教程可参考之前的获取用户信息篇

后台代码

我的模版消息是用来提醒交易状态的,故以网站中以交易业务流程为例

万能调用

//微信通知
                $id = get_order_id($out_trade_no);//获取订单的ID
                $uid = get_uid_fromorderid($id);//获取该订单的用户ID-uid
                send_template_msg(
                get_user_openid($uid),//获取已保存的用户openid
                C('DOMAIN').U('wap/order/detail',array('id'=>$out_trade_no)),//订单详情页完整域名
                "#FF0000",//特殊语句的自定义16进制颜色
                "亲爱的".get_name($uid).",您的订单已提交,出货ing...",
                "已支付,等待发货",
                get_order_total($id),//该笔订单总价
                "支付宝",
                $out_trade_no
                );

请根据自身业务,适配上述代码。详细参数解释看下面

send_template_msg方法

/**
     * 发送模版数据,仅限公众平台关注用户使用
     * @param string $openid:用户openid
     * @param string $url:点击后跳转地址
     * @param string $color:需要变更的颜色,如#FF0000
     * @param string $first:第一句话,如亲爱的xx顾客
     * @param unknown $status:订单状态,如已提交并支付
     * @param unknown $totalprice:总价
     * @param string $paytype:支付方式,默认微信支付
     * @param string $remark:标注,订单号等
     * @return mixed
     */
    function send_template_msg($openid,$url="",$color="#000000",$first,$status,$totalprice,$paytype,$remark=""){
        $data  = teml($openid,$url,$color,$first,$status,$totalprice,$paytype,$remark);
        $basetoken = getAccesstoken(); //获取基础token方法参看之前的微信篇博客
        $urls = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$basetoken;
        $res = http_request($urls,urldecode($data));
        return json_decode($res,true);//array
    }
//模版原始数据组装
function teml($openid,$url="",$color="#000",$first="",$status,$totalprice,$paytype="微信支付",$remark="祝您生活愉快!"){
        $template = array(
            'touser' => $openid,
            'template_id' => "Cy6RGHhEui2woL0vmus45hYwDUFsrlVsGRpafdtbppI",//模版id
            'url'=>$url,
            'topcolor'=>"#7B68EE",
            'data'=>array(
                'first' => array(
                    'value' => urlencode($first),
                    'color' => $color,
                ),
                'keyword1' => array(
                    'value' => urlencode($status),
                    'color' => $color,
                ),
                'keyword2' => array(
                    'value' => date("Y-m-d H:i:s",NOW_TIME),
                    'color' => "#000000",
                ),
                'keyword3' => array(
                    'value' => urlencode("点击详情查看"),
                    'color' => "#000000",
                ),
                'keyword4' => array(
                    'value' => $totalprice.'元',
                    'color' => "#000000",
                ),
                'keyword5' => array(
                    'value' => urlencode($paytype),
                    'color' => "#000000",
                ),
                'remark' => array(
                    'value' => urlencode($remark),
                    'color' => "#000000",
                )
            )

        );

        return json_encode($template);
    }
/**
     * 
     * @param  $url 请求地址
     * @param string $data 请求数据post时使用
     * @return 数组
     */
    function http_request($url,$data=null){
        $curl = curl_init();
        curl_setopt($curl, CURLOPT_URL, $url);
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
        if(!empty($data)){
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
        }
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        $output = curl_exec($curl);
        curl_close($curl);
        return $output;
    }

结果图

这里写图片描述


出处:blog.csdn.NET/afanxingzhou 

原文地址:https://www.cnblogs.com/houdj/p/6768211.html