微信公众号支付
微信外浏览器支付
业务需求上来了,这些都是必要的获取,特别是unionid,这里使用的依然是IJPay,毕竟封装好用嘛,顶一下,说一下大概流程
若要获取用户信息需要scope=snsapi_userinfo,当然,备案的域名是必不可少的,在公众平台的网页授权中设置好,必须使用80端口,不明白可以看上篇文章
1、用户点击授权页面URL,将向服务器发起请求
服务器询问用户是否同意授权给微信公众账号(scope为snsapi_base时无此步骤)
用户同意(scope为snsapi_base时无此步骤,不弹出授权页面,直接跳转,只能获取用户openid)
服务器将code参数通过回调传给微信公众账号
微信公众账号获得code参数
2、微信公众账号通过code参数向服务器请求Access Token
服务器返回Access Token和OpenID给微信公众账号
3、微信公众账号通过Access Token向服务器请求用户信息(scope为snsapi_base时无此步骤)
服务器将用户信息回送给微信公众账号(scope为snsapi_base时无此步骤)
用户在点击时可以直接请求授权toOauth.do
//授权页面
@RequestMapping("/toOauth.do")
public void toOauth(HttpServletResponse response) throws IOException {
System.out.println("--tooauth--");
String calbackUrl="http://www.xxx.cn/PayGame/wc/accessToken.do";
String url = SnsAccessTokenApi.getAuthorizeURL(appID,calbackUrl,"111",false);
System.out.println("--url--"+url);
response.sendRedirect(url);
}
请求的url已经封装,形式如下:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
封装的getAuthorizeURL方法如下
public static String getAuthorizeURL(String appId, String redirectUri, String state, boolean snsapiBase)
第一个参数是appId,第二个参数是回调,第三个是state,第四个用于判断应用授权作用域
if (snsapiBase) {
params.put("scope", "snsapi_base");
} else {
params.put("scope", "snsapi_userinfo");
}
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
//获取个人信息
@RequestMapping("/accessToken.do")
public ModelAndView accessToken(HttpServletRequest request,HttpServletResponse response,Users users){
ModelAndView model=new ModelAndView();
int subscribe=0;
ModelAndView mv=new ModelAndView();
//获取用户的code
String code = request.getParameter("code");
String state=request.getParameter("state");
String openId=null;
// List
下面便是获取到的个人信息
封装好的就是好用,你只需知道如何获取它,不再需要什么都去查,不再把代码设计的乱七八糟了
说一下unionid和openid的区别:
同一个公司有多个公众号需要互通,这就需要unionid来实现
unionid:unionid是唯一的,也就是说同一个公众账号的不同应用的unionid是相同的,但是openid在不同的应用下会不同,这样unionid对于解决实际问题好用了许多
参考链接:
http://blog.csdn.net/zyw_java/article/details/61415123
http://www.huanju.org/biancheng/wechat/676408.html
http://blog.csdn.net/Panda_IAmGoodPanda/article/details/53739544(图片借用地址)