java微信支付 openid_微信支付之获取openid

174140f925a9c381450b7b893460f862.png

2.文档阅读

接着阅读文档我们可以发现网页授权有两种scope,

snsapi_base和snsapi_userinfo。两种scope都可以获取到opeid,不同的是snsapi_userinfo除了openid外还可以获取到用户的基本信息,但是需要用户手动进行确认。

再往下阅读我们可以看到官方文档的授权步骤

第一步:用户同意授权,获取code

第二步:通过code换取网页授权access_token以及openid

第三步:刷新access_token(如果需要)

第四步:拉取用户信息(需scope为 snsapi_userinfo)

我们只需要openid,所以我们只开发到第二步就好了。下面我们就按着官方步骤来开发。

3.获取code

查看文档后我们发现我们需要拼接一个url并且访问它。url的参数文档中写的很清楚了。看他的例子也能看个清楚。这里比较重要的是redirect_uri。这个参数所填的是一个链接。我们访问url后会自动转发到这个链接并且将我们需要的code以及拼接url中的state的值作为参数。这个redirect_uri的值要填入的是我们代码中的controller的位置。

所以这里我们需要一段代码:

@RestController

@RequestMapping("/weixin")

@Slf4jpublic classWeixinController {

@GetMapping("/auth")public void auth(@RequestParam("code") String code,@RequestParam("state") String state){

log.info("auth开始了。。。。");

log.info("code={}",code);

log.info("state={}",state);

}

}

我拼接的url,这里大家要注意根据自己的情况进行拼接。拼接成功后需要在微信app中进行访问

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=http://xxx/sell/weixin/auth&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect

访问后的结果

1e778bed88152b6624bc48adaff1da1c.png

这样我们就拿到了code

4.获取openid

继续查看文档,发现我们只需要使用获取到的code再访问另一个url就可以获取到我们想要的了。接着上面的代码

@RestController

@RequestMapping("/weixin")

@Slf4jpublic classWeixinController {

@GetMapping("/auth")public void auth(@RequestParam("code") String code,@RequestParam("state") String state){

log.info("auth开始了。。。。");

log.info("code={}",code);

log.info("state={}",state);

String url= "https://api.weixin.qq.com/sns/oauth2/access_token?appid=xxxx&secret=xxxx&code="+code+"&grant_type=authorization_code";

RestTemplate restTemplate= newRestTemplate();

String result= restTemplate.getForObject(url, String.class);

log.info("result={}",result);

}

}

这时我们再次访问第三步拼接的url就可以看到如下结果。

94eea2d63ee69fd29e35bdc6c1745483.png

将结果格式化一下我们可以就看到我们想要的openid

518e18ad48e9dccde960984c72eb56e3.png

三、总结

流程看起来还是很简单的。但以上只是一个最简单、最直接的手工获取openid的例子。真正在使用过程中需要结合自身的业务流程来进行开发,这时可能就有些麻烦了。此时我们也可以借助一些网上第三方sdk来开发。例如:weixin-java-tools。

这个总结的比较模糊,没有直接了当的总结出来获取openid的方法,但是,如果你忘记的话,这个可以让你快速捡起来.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值