PHP微信公众号(微信小程序)模板消息推送
admin 阅读: 2024-03-15
后台-插件-广告管理-内容页头部广告(手机) |
- /**
- * 补货订单通知
- */
- public function orderStockout($store_id)
- {
- $user = new \app\admin\model\User();
- $user_info = $user->where('store_id',$store_id)->find();
- if(!$user_info){
- return ['code'=>0,'message'=>'商家不存在'];
- }
- if(!$user_info['openid']){
- return ['code'=>0,'message'=>'openid未获取到,请先绑定微信账号'];
- }
- //获取商品
- $where = [
- 's.uid' => $store_id,
- 's.is_integral' => 0,
- 's.is_stock' => 0,
- ];
- $field = 's.id,g.name,s.inventory,s.stock_num';
- $sproduct = new Product();
- $result = $sproduct->alias('s')
- ->join('goods_product g','g.id=s.product_id','left')
- ->where($where)
- ->field($field)
- ->select();
- if(!$result){
- return ['code'=>0,'message'=>'暂无商品需要补货'];
- }
- $str = '';
- $ids = [];
- $number = 0;
- foreach($result as $ka=>$va){
- if($va['inventory'] <= $va['stock_num']){
- $str .= $va['name'].',';
- $ids[] = $va['id'];
- if($number == 0){
- $number = $va['inventory'];
- }
- }
- }
- //如果到达预警的商品数量没有
- if(count($ids) <= 0){
- return true;
- }
- //更新达到预警的商品状态
- $sproduct::where(['id'=>['in',$ids]])->update(['is_stock'=>1]);
- $data = array(
- 'first' => array(
- 'value'=> '您好,您有商品库存不足',
- 'color'=>''
- ),
- 'keyword1'=>array(
- 'value'=>implode(',',$ids),
- 'color'=>''
- ),
- 'keyword2'=>array(
- 'value'=> $str,
- 'color'=>''
- ),
- 'keyword3'=>array(
- 'value'=> $number,
- 'color'=>''
- ),
- 'remark' => array(
- 'value'=>'感谢您的使用',
- 'color'=>''
- ),
- );
- $url = '跳转页面';
- $template_id = '微信模板消息id';
- return $this->sendWechatMessage($user_info['openid'],$template_id,$data,$url);
- }
- /**
- * 发送微信模板消息
- * @param $order_id
- * @param $template
- * @return false|string|\think\response\Json
- */
- public function sendWechatMessage($openid,$template_id,$data,$url)
- {
- $data = array(
- "touser" => $openid, //openid
- "template_id" => $template_id, //模板id
- "url" => $url,
- "data" => $data //模板数据
- );
- //下单用户发送
- $access_token = $this->access_token();
- if ($access_token == 400){
- return ['code'=>0,'message'=>'获取access_token失败'];
- }
- $urls = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$access_token;
- $result = $this->http_post_json($urls,json_encode($data));//发送请求
- if($result[0] == 200){
- return ['code'=>1,'data'=>'推送成功'];
- }
- return ['code'=>0,'message'=>$result[1]['errmsg']];
- }
- public function http_post_json($url, $jsonStr)
- {
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/json; charset=utf-8',
- 'Content-Length: ' . strlen($jsonStr)
- )
- );
- $response = curl_exec($ch);
- $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
- curl_close($ch);
- return [$httpCode,$response];
- // return json_encode(array($httpCode, $response),true);
- //"[200,"{\"errcode\":0,\"errmsg\":\"ok\",\"msgid\":2696398438942572550}"]"
- }
- //获取access_token
- public function access_token(){
- $appId = Config::get('wechat_config.appid');
- $appSecret = Config::get('wechat_config.secret');
- $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;
- $ch = curl_init();//初始化curl
- curl_setopt($ch, CURLOPT_URL,$url); //要访问的地址
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过证书验证
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在
- $data = json_decode(curl_exec($ch),true);
- if(curl_errno($ch)){
- var_dump(curl_error($ch)); //若错误打印错误信息
- }
- curl_close($ch);//关闭curl
- return $data['access_token'];
- }
逻辑部分可以根据具体的需求自己更改,变量格式是会根据选择用户模板而变,模板有几个变量,就写几个keyword ,小程序的话和这个大差不差,基本上就是调整一下参数就可以继续使用了
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。
在线投稿:投稿 站长QQ:1888636
后台-插件-广告管理-内容页尾部广告(手机) |