微信扫码关注公众号,公众号发放红包。一

需求

  • 用户通过微信扫码关注公众号获取红包

解决方案


步骤

  • 生成带参数的二维码
  • 扫码

    • 是否关注公众号

      • 已关注,则微信会将带场景值扫描事件推送给开发者,根据场景判断当前二维码是否失效

        • 失效,公众号推送消息:当前二维码已失效
        • 未失效,获取当前扫码用户openid查询是否已经领取过红包
          1. 已领取,则公众号推送消息到微信用户通知今日已领取
          2. 未领取
            • 则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
            • 设置当前扫描二维码失效
      • 未关注,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者

        • 根据场景值查询二维码是否失效
          • 失效,公众号推送消息:当前二维码已失效
          • 未失效,获取当前扫码用户openid查询是否已经领取过红包
            1. 已领取,则公众号推送消息到微信用户通知今日已领取
            2. 未领取
              • 则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
              • 设置当前扫描二维码失效

  • 生成带参数的二维码
    • 目前有2种类型的二维码:
      • 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
      • 永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
    • 用户扫描带场景值二维码时,可能推送以下两种事件:
      1. 用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
      2. 用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
    • 获取带参数的二维码的过程包括两步
      1. 首先创建二维码ticket
      2. 然后凭借ticket到指定URL换取二维码

这里我们选择永久二维码

  • 请求获取ticket:
    • http请求方式
      • POST
    • 请求地址:
    • post 数据格式 json
      1. {
        “action_name”: “QR_LIMIT_SCENE”,
        “action_info”: {“scene”: {“scene_id”: 123}}
        }
      2. 创建字符串形式的二维码参数:
        {
        “action_name”: “QR_LIMIT_STR_SCENE”,
        “action_info”: {“scene”: {“scene_str”: “test”}}
        }
    • 参数说明
      1. 请求地址的TOKEN参数
      2. action_name :二维码类型
      3. action_info :二维码详细信息
      4. scene_str :场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
  • 首先,获取请求地址参数 TOKEN
    • 请求方式
      • GET
好的,以下是个基于Spring Boot的微信登录示例: 1. 首先,需要在微信公众平台中创建个开发者账号,并创建公众号。 2. 在Spring Boot项目中添加以下依赖: ``` <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId> <version>3.4.</version> </dependency> ``` 3. 在application.properties中配置微信公众号的相关信息: ``` wechat.mp.appId=your_app_id wechat.mp.secret=your_secret wechat.mp.token=your_token wechat.mp.aesKey=your_aes_key ``` 4. 创建个Controller,用于处理微信登录的请求: ``` @RestController public class WechatLoginController { @Autowired private WxMpService wxMpService; @GetMapping("/wechat/login") public String wechatLogin(HttpServletRequest request, HttpServletResponse response) throws Exception { String redirectUrl = "http://your_domain.com/wechat/callback"; String state = UUID.randomUUID().toString(); String url = wxMpService.oauth2buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_USERINFO, state); response.sendRedirect(url); return null; } @GetMapping("/wechat/callback") public String wechatCallback(HttpServletRequest request, HttpServletResponse response) throws Exception { String code = request.getParameter("code"); String state = request.getParameter("state"); WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code); WxMpUser user = wxMpService.oauth2getUserInfo(accessToken, null); // TODO: 处理用户信息 return "success"; } } ``` 5. 在微信公众平台中配置授权回调域名为http://your_domain.com,并将http://your_domain.com/wechat/callback添加到网页授权域名中。 6. 启动Spring Boot应用,访问http://your_domain.com/wechat/login即可进行微信登录。 希望这个示例能够帮助到你!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值