微信小程序模板消息发送

微信小程序模板消息发送

       微信小程序模板消息,在微信小程序中不可缺少的,但是有些时候,一个小程序发送很多不一样的模板消息,这需要我们封装,还有发送模板消息,需要formid,prepay_id,他们都是有时间限制,7天过期,不能使用已用的formid,prepay_id,不然发送会报错。发送失败;下面是我已经在项目运用的。目前运行稳定,但是记得去除7天过期,因为项目急,我获取的formid,prepay_id没有考虑,希望你在封装中加上;我是在后台,处理了。希望注意一下;

        PHP代码:

//一口价发个拍卖者模板消息
    public function Template_message4($shop_list_id,$user_ids,$total_money,$other_openid){
        $Template="***************************";
//        $shop_list_id;
//        $openid//拍卖者
//        $other_openid//用户
//        $total_money//金额
        if($shop_list_id&&$user_ids&&$other_openid&&$total_money){
            $access_token=M("config")->field("access_token")->where('id=1')->find();
            $ACCESS_TOKEN=$access_token['access_token'];
            $url = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token=$ACCESS_TOKEN";
                //拍卖者
                $userinfo = M('user')->field("username,phone,openid,remak_username")->where(array('id'=>$user_ids))->find();//拍卖者
                if($userinfo['remak_username']){
                    $userinfo['username']=$userinfo['remak_username'];
                }
                $other_userinfo = M('user')->field("username,remak_username")->where(array('openid'=>$other_openid))->find();//用户
                if($other_userinfo['remak_username']){
                    $other_userinfo['username']=$other_userinfo['remak_username'];
                }
                $openid=$userinfo['openid'];
                $form_idd=$this->formId($openid);
                $skill_name=M('shop_list')->field("title")->where('id='.$shop_list_id)->find();
                if($form_idd) {
                    $page = "pages/auctionPriceSummary/auctionPriceSummary?shop_list_id=" . $shop_list_id;
                    $data = array('touser' => $openid,   //拍卖人
                        'template_id' => $Template,   //订单发货提醒
                        'page' => $page,
                        'form_id' => $form_idd,
                        'data' => array(
                            'keyword1' => array(
                                'value' => $skill_name['title'],    // 竞拍名称
                                'color' => '#173177'
                            ),
                            'keyword2' => array(
                                'value' => urldecode($other_userinfo['username']),  //竞拍人
                                'color' => '#173177'
                            ),
                            'keyword3' => array(
                                'value' => $total_money,  //竞拍金额
                                'color' => '#173177'
                            ),
                            'keyword4' => array(
                                'value' => '【'.urldecode($other_userinfo['username']) . '】刚抢拍成功,快去确认发货吧!',
                                'color' => '#FFA500'
                            )
                        )
                    );
                    $data = json_encode($data);
                    $this->curt($url,$data);
                }
            $form_idds=$this->formId($other_openid);
            $Template_one = "*************************";
            $page_one = "pages/auctionPriceSummary/auctionPriceSummary?shop_list_id=" . $shop_list_id;
            $data_info = array('touser' => $other_openid,   //发给谁(竞拍第一名)
                'template_id' => $Template_one,   //订单发货提醒
                'page' => $page_one,
                'form_id' => $form_idds,
                'data' => array(
                    'keyword1' => array(
                        'value' => $total_money.'元',    // 成交价
                        'color' => '#173177'
                    ),
                    'keyword2' => array(
                        'value' => $userinfo['phone'],  //卖家电话
                        'color' => '#173177'
                    ),
                    'keyword3' => array(
                        'value' => date("Y-m-d H:i:s"),  //成交时间
                        'color' => '#173177'
                    ),
                    'keyword4' => array(
                        'value' => urldecode($userinfo['username']),//卖家名称
                        'color' => '#173177'
                    ),
                    'keyword5' => array(
                        'value' => $skill_name['title'],//竞拍名称
                        'color' => '#173177'
                    ),
                    'keyword6' => array(
                        'value' => '你已经抢拍【'.urldecode($userinfo['username']) .'】的【'.$skill_name['title'].'】成功赶紧联系卖家',
                        'color' => '#FFA500'
                    )
                )
            );
            $data_info = json_encode($data_info);
            $this->curt($url, $data_info);
        }else{
            return('参数缺失');
        }
    }
//formid,prepay_id的获取
private  function formId($openid){
    $form_ids = M('form')->field("id,prepay_id,use_num,use_time,is_use")->where(array('prepay_id' => array('neq', ""), 'openid' => $openid, "is_use" => 1, 'use_num' => array('lt', 3)))->find();
    $form_idd = $form_ids['prepay_id'];
    if (!$form_idd) {
        $form_idr = M('form')->field("id,form_id,use_time,is_use")->where(array('form_id' => array('neq', ""), 'openid' => $openid, "is_use" => 1))->order('c_time desc')->find();
        $form_idd = $form_idr['form_id'];
        if ($form_idd) {
            //更改formid
            $timed = time();
            $rowd = M("form")->where("id=" . $form_idr['id'])->save(array("is_use" => 2, "use_time" => $timed));
            if (!$rowd) {
                return('更新失败1');
            }
            return $form_idd;
        }
    }else{
        $use_num = $form_ids['use_num'] + 1;
        if ($use_num == 3) {
            //三次用完
            $timed = time();
            $row = M("form")->where("id=" . $form_ids['id'])->save(array('use_num' => $use_num, "is_use" => 2, "use_time" => $timed));
        } else {
            $row = M("form")->where("id=" . $form_ids['id'])->save(array('use_num' => $use_num, "use_time" => time()));
        }
        if (!$row) {
            return('更新失败');
        }
        return $form_idd;
    }
}
  //发送模板消息
    private  function curt($url,$data){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
        curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $tmpInfo = curl_exec($ch);
//        if (curl_errno($ch)) {
//            return curl_error($ch);
//        }
        curl_close($ch);
    }
报错指南:
         40037  	                template_id不正确
      41028	                form_id不正确,或者过期
      41029	                form_id已被使用
      41030	                page不正确
      45009	                接口调用超过限额(目前默认每个帐号日调用限额为100万)
有些还可以封装,写的不好,可以给我留言,谢谢!

猜你喜欢

转载自blog.csdn.net/weixin_37616043/article/details/80823998