欢迎您光临深圳塔灯网络科技有限公司!
电话图标 余先生:13699882642

网站百科

为您解码网站建设的点点滴滴

微信小程序获取UnionID机制和出现的问题

发表日期:2019-08 文章编辑:小灯 浏览次数:906

前段时间做了一个小程序的项目,在小程序支付的时候出现了一个问题,导致小程序审核不通过,审核不通过的原因说是虚拟支付,出现这个问题的原因是因为微信小程序的支付IOS是不能支付的,所以就不能通过,这个时候我们就出了一套方案就是在小程序中IOS用户是不能进行支付产品我们引导IOS用户在微信公众号中去支付购买我们的产品,这就需要微信公众号和小程序进行互通,这个时候就需要一个微信的标识,openid肯定是无法做到的,那么这个时候我们就需要 UnionID 机制,这个UnionID 机制可以让微信公众号的用户和小程序的用户进行互通,也就是唯一的标识,现在我们来看下小程序获取的方法,请大家观看小程序api文档:
https://blog.csdn.net/qq_41971087/article/details/82466647,首先说一下,必须要绑定了开发者帐号的小程序才能有UnionID的使用。
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html

在这里插入图片描述

在这个3种获取UnionID中,最好是选第一种,从解密的数据中获取UnionID,这样是最保险的,不会出现问题,
博主先开始是选的后面的方法去获取UnionID,然后出现了问题,获取UnionID的时候,新用户没有去关注我的公众号,那么是这个用户是没有UnionID,但我获取的时候出现了null的错误,后来我就用第一种方法去获取,第一中方法的意思是,只有这个小程序在绑定了开发者帐号的就可以获取到UnionID,这样是没有问题的,下面是JAVA代码,如果可以的话,大家可以看我的微信小程序授权登录的文章就可以看到:
https://blog.csdn.net/qq_41971087/article/details/82630612

微信小程序第一种方法获取UnionID:

String decrypts=AesCbcUtil.decrypt(encryptedData,sessionkey,iv,"utf-8");//解密System.out.println(decrypts+"解密的数据:--->");JSONObject jsonsd = JSONObject.fromObject(decrypts); /* String jsonsds=jsonsd.get("avatarUrl").toString();*/ if(jsonsd !=null){ JSONObject jsons = JSONObject.fromObject(decrypts); if(user ==null){user = new User();/* String nickName=jsons.get("nickName").toString(); //用户昵称*/ user.setNickname(jsons.get("nickName").toString()); user.setAvatarUrl(jsons.get("avatarUrl").toString()); //头像 user.setCreateTime(new Date()); user.setGender(jsons.get("gender").toString());//性别 String path=Httprequests.getRemoteIP(request); user.setLast_login_ip(path);//ip user.setOpenid(openid); user.setSessionKey(sessionkey); //sessionkey user.setUnionid(jsons.get("unionid").toString()); //unionid 在解密的数据中拿到unionid ,如果保证代码的安全性可以去判断是否为null String token = Httprequests.getPamens(32); //自己生成的token System.out.print(token);user.setThirdSession(token); user.setCity(jsons.get("city").toString()); //城市 user.setProvince(jsons.get("province").toString());//省份 user.setCountry(jsons.get("country").toString()); //国家 int index= apiAuthService.insert(user);

其他方法获取UnionID:

Map<String,Object> map=new HashMap<String, Object>();String sendGet=apiAuthService.loginByWeixin(code);//拿到小程序页面传过来的code调用小程序登陆的接口参数: appid,,appservice,cod,grant_type 获取到用户openid和session_key,当然用户关注了公众号就可以获取到unionIDJSONObject json = JSONObject.fromObject(sendGet);System.out.println("返回过来的json数据:"+json.toString());String sessionkey=json.get("session_key").toString(); //会话秘钥String object = json.get("unionID").toString(); //这里如果用户直接进入小程序的话就会出现错误,就算你判断了,但是获取不到unionID那么就不能完成以下的业务操作,所以还是用第一种,从解密的数据中获取System.out.println(sessionkey+"---->:session_key");

好了,这样就可以获取到unionID,希望能帮助到大家,有问题可以在下方评论,我会及时回复


本页内容由塔灯网络科技有限公司通过网络收集编辑所得,所有资料仅供用户学习参考,本站不拥有所有权,如您认为本网页中由涉嫌抄袭的内容,请及时与我们联系,并提供相关证据,工作人员会在5工作日内联系您,一经查实,本站立刻删除侵权内容。本文链接:http://dengtar.com/20833.html
相关小程序
 八年  行业经验

多一份参考,总有益处

联系深圳网站公司塔灯网络,免费获得网站建设方案及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:余经理:13699882642

Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.