解决小程序发送模板消息(php后台)

小程序已经可以用来做商家的业务,实现模板消息的发送就很有必要了,可以通知用户一些消息;

类似于这种的:

解决小程序发送模板消息(php后台)_第1张图片

首先是小程序端:

首先是表单提交获取formid;

wxml文件代码:

//一定要有report-submit ,不然获取不到formid 姓 名:

js文件代码:

submitForm:function(e){
    var name = e.detail.value.data_name;
    var formid = e.detail.formid;//开发工具里调试的时候显示的是the formId is a mock one,要到真机才能看到formid的值
    var tarPage = "/haa/muban";//点击消息跳转的界面
    wx.request({
      url: 'http://localhost/test/temMsg.php',//服务器地址
      data:{
        formid:formid,
        name:name,
        openid:wx.getStorageSync("openid"),//要获取用户的openid才能发送,如果还不会建议看上篇;
      },
      header:{
        "Content-type":"application/json",
      },
      success:function(res){
        console.log(res.data);
      },
      fail:function(err){
        console.log(err);
      }
    })
  }

后台php代码:

$openid,
        "template_id"=>$temid,
        "page"=>$page,
        "form_id"=>$formid,
        "data"=>array(
            "keyword1"=>array(
                "value"=>$key1,
                "color"=>"#173177"
            ),
            "keyword2"=>array(
                "value"=>$key2,
                "color"=>"#173177"
            ),
            "keyword3"=>array(
                "value"=>$key3,
                "color"=>"#173177"
            ),
            "keyword4"=>array(
                "value"=>$key4,
                "color"=>"#173177"
            ),
            "keyword5"=>array(
                "value"=>$key5,
                "color"=>"#173177"
            ),
            "keyword6"=>array(
                "value"=>$key6,
                "color"=>"#173177"
            )
        ),
        "emphasis_keyword"=>"keyword1.DATA",//需要进行加大的消息
    );
    $res = postCurl($url,$data,'json');//将data数组转换为json数据
    if($res){
        echo json_encode(array('state'=>4,'msg'=>$res));
    }else{
        echo json_encode(array('state'=>5,'msg'=>$res));
    }

}

function returnAsskey()
{
    $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=yourAppid&secret=yourSecert';
    $ass_key = curl_get($url);
    $a1 = $ass_key->access_token;
    return $a1;
}
?>

postCurl.php文件代码:

getCurl.php文件代码:

如果在开发工具上进行调试会出现41028的错误,是因为获取不到formid,可以到手机端调试然后在console里面看到formid添到开发平台上面就可以了

还有就是access_token的时间期限是7200s,到期就要更换,我是直接将时间和access_token,然后每次判断一下当前时间和数据库中存取的时间是否差7200s,到了就更换,感觉这方法很蠢,才刚学php也不会很多,欢迎交流。

最后成功得到通知:

解决小程序发送模板消息(php后台)_第2张图片

看了好多博客才弄出来,略有成就感


你可能感兴趣的:(小程序)