创建微信带参二维码,用户扫描关注(请看描述)

大致的一个需求是:在用户下完订单后,请求接口将用户的订单号,以及其他一部分信息生成一个公众号的关注二维码,让用户去扫这个二维码:
1、用户已经关注则直接获取该用户的openid 和 订单号进行绑定。
2、如果用户没关注,此时需要做的是,监听用户的关注按钮(如果可行),用户关注后,立马将二维码中的参数取出来,并获取用户openid进行绑定。

A、现在是我想知道如何取判断该用户是否已经关注过该微信号,(在不知道用户的openid的情况下)。

B、如果用户是首次关注,我又该如何知道用户扫描的二维码是否有带参数,并怎么去取出这些参数进行数据操作,在用户扫描公众号二维码的时候有没有对应的回调函数。

(PS:我基本没接触过微信开发,文档看了也很多看不懂它究竟是什么意思,搞的我一头的雾水,所以来请教下各位大佬,有没有做过类似的开发,给小弟指点一二,小弟是PHP开发!谢谢)

阅读 234
评论 2月14日提问
    2 个回答

    https://developers.weixin.qq....

    如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。

    1.你不用判断是否关注,只要接收到了事件推送,用户必定是关注公众号的

    2.取参数只要取EventKey里的值就行了
    3.事件是推送的,不是什么回调。

    在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息。
    评论 赞赏 2月14日
      asseek
      • 6.9k

      用户扫描公众号二维码微信会发送一条POST通知到你配置的地址上。
      通过微信公众平台 开发->基本配置->服务器配置(启用)->服务器地址(URL) 进行配置

      你可以通过POST过来数据的MsgTypeEvent来判断事件类型

      
      // 获取POST数据
      $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 
      // 用SimpleXML解析POST过来的XML数据
      $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 
      
      switch ($postObj->MsgType)) {
        case 'event':
          switch ($postObj->Event) {
            case 'subscribe':    // 关注事件[扫描带参数二维码事件 用户未关注时事件推送]
                  
              break;
            case 'unsubscribe':  // 取消关注
      
              break;
            case 'SCAN':        // 扫描带参数二维码事件 用户已关注时的事件推送
      
              break;
            case 'LOCATION':    // 上报地理位置事件
      
              break;
            case 'CLICK':       // 自定义菜单事件 主菜单
      
              break;
          }
          break;
          // ...
      }

      在对应事件里根据相应逻辑处理就行

      评论 赞赏 2月14日
        撰写回答

        登录后参与交流、获取后续更新提醒

        微信开放生态 相关的技术问题交流平台