PHP怎么把微信公众平台的openid post到我服务器另外的页啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP怎么把微信公众平台的openid post到我服务器另外的页啊相关的知识,希望对你有一定的参考价值。

如题。

参考技术A 你首先要注册个微信公众平台账号,然后再平台后台里设置好转发到你php所在服务器的URL。

这是第一步,后面还需要很多步骤,你参考微信公众号开发平台里的资料文档。

微信公众平台如何获取用户的OpenID

  如何获取用户的OpenID,对于微信开发模式下的开发来说,那就是一个非常简单的小功能了。简单介绍一下我是怎样去获取OpenID的。

  微信服务器与公众账号服务器交互的信息可以分为3类:请求消息、事件和响应消息。

    (1)请求消息指用户发送给公众账号的信息包含: 文本消息、图片消息、语音消息、视频消息、小视频消息、 地理位置消息、链接消息

    (2)事件指用户对公众账号的做出的某种操作时,会使得微信服务器通过事件推送的形式通知到公众账号服务器,从而开发者可以获取到该信息。包含:关注/取消关注事件、扫描带参数二维码事件、 上报地理位置事件、 自定义菜单事件、 点击菜单拉取消息时的事件推送、 点击菜单跳转链接时的事件推送

  消息触发时无论请求消息还是事件,公众账号服务器都会获得一个XML格式的数据包。

  例如:关注/取消关注事件

  <xml>
  <ToUserName><![CDATA[toUser]]></ToUserName>
  <FromUserName><![CDATA[FromUser]]></FromUserName>
  <CreateTime>123456789</CreateTime>
  <MsgType><![CDATA[event]]></MsgType>
  <Event><![CDATA[subscribe]]></Event>
  </xml>

  参数说明:

 参数描述
ToUserName 开发者微信号
FromUserName 发送方帐号(一个OpenID)
CreateTime 消息创建时间 (整型)
MsgType 消息类型,event
Event 事件类型,subscribe(订阅)、unsubscribe(取消订阅) 

 

 

 

 

 

  FromUserName指用户的openID,对于当前公众号来说是唯一的。我们就可以通过用户openID,在公众账号服务器上创建我们自己的用户数据或者获取用户在我们自己数据库中的数据,进行处理。

  我们当时做就是通过用户关注时,利用openID在自己的数据库中自动创建一个用户。这里我没有提到获取用户的基本信息如用户昵称、头像等。

下面是一些Java代码片段:

    Map<String ,String > requestMap = MessageUtil.parseXml(request);

         String fromUserName = requestMap.get("FromUserName");

         String toUserName = requestMap.get("ToUserName");

         String msgType = requestMap.get("MsgType");

         if(msgType.equals(Constant.REQ_MESSAGE_TYPE_EVENT)){//判断消息类型是否是事件消息类型

            String eventType = requestMap.get("Event");//获取具体的事件类型

            if(eventType.equals(Constant.EVENT_TYPE_SUBSCRIBE)){ //判断事件是否是关注事件

              /*  利用openID在自己的数据库中自动创建一个用户   */

            } 

         }

 以上就是通过用户关注时,利用openID在自己的数据库中自动创建一个用户,给大家提供一个思路吧,共同进步。

附:

/**

    * 解析微信发来的请求

    * @param request

    * @return

    * @throws Exception

    */

   @SuppressWarnings("unchecked")

   public static Map<String , String> parseXml(HttpServletRequest request) throws Exception{

      Map<String,String> map = new HashMap<String , String >();

      InputStream inputStream = request.getInputStream();

      SAXReader reader = new SAXReader();

      Document document = reader.read(inputStream);

      Element root = document.getRootElement();

      List<Element> elementList = root.elements();

      for (Element element : elementList) {

         map.put(element.getName(),element.getText());

      }

      inputStream.close();

      inputStream = null;

      return map;

   }

 

以上是关于PHP怎么把微信公众平台的openid post到我服务器另外的页啊的主要内容,如果未能解决你的问题,请参考以下文章

phpcms如何将内容发送到微信号

微信开发如何获取openid

详解微信公众平台UnionID和OpenID的区别

php微信公众号支付openid问题

c#jsapi支付 怎么传参

微信订阅号appid怎么获取