发表日期: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,希望能帮助到大家,有问题可以在下方评论,我会及时回复
日期:2019-11 浏览次数:4777
日期:2019-11 浏览次数:11199
日期:2019-11 浏览次数:3637
日期:2019-11 浏览次数:4547
日期:2019-11 浏览次数:4648
日期:2019-11 浏览次数:6313
日期:2019-11 浏览次数:4569
日期:2019-11 浏览次数:15018
日期:2019-11 浏览次数:3919
日期:2019-11 浏览次数:5681
日期:2019-11 浏览次数:4517
日期:2019-11 浏览次数:3854
日期:2019-11 浏览次数:9613
日期:2019-11 浏览次数:7528
日期:2019-11 浏览次数:4219
日期:2019-11 浏览次数:3612
日期:2019-11 浏览次数:8147
日期:2019-11 浏览次数:3866
日期:2019-11 浏览次数:4038
日期:2019-11 浏览次数:4109
日期:2019-11 浏览次数:3665
日期:2019-11 浏览次数:4258
日期:2019-11 浏览次数:9441
日期:2019-11 浏览次数:4456
日期:2019-11 浏览次数:4446
日期:2019-11 浏览次数:4035
日期:2019-11 浏览次数:11354
日期:2019-11 浏览次数:6648
日期:2019-11 浏览次数:6908
日期:2019-11 浏览次数:4256
Copyright ? 2013-2018 Tadeng NetWork Technology Co., LTD. All Rights Reserved.