一、微信官方文档:传送门

二、获取accessToken不会的可以移步另一篇文章:传送门

三:本篇代码基于上一篇进行开发的,所以代码复制可能会有引入错误,可以参考上篇文章:传送门

四、上代码:

WechatUtil 工具类:

package com.prison.common.util;import cn.hutool.core.codec.Base64;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONException;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.prison.common.bo.wx.wechat.CheckRealNameInfo;
import com.prison.common.bo.wx.wechat.WechatAccessToken;
import io.swagger.annotations.ApiModelProperty;
import lombok.extern.slf4j.Slf4j;
import org.bouncycastle.jce.provider.BouncyCastleProvider;import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.AlgorithmParameters;
import java.security.Security;
import java.util.Arrays;
import java.util.HashMap;/*** @author WangJing* @Description WeChatUtil工具* @date 2021/6/7 21:45*/
@Slf4j
public class WeChatUtil {//城市服务实名信息校验public static final String CHECK_REAL_NAME_INFO = "https://api.weixin.qq.com/intp/realname/checkrealnameinfo?access_token=ACCESSTOKEN";//城市服务实名信息校验public static JSONObject checkRealNameInfo(CheckRealNameInfo checkRealNameInfo, String openId, String accessToken){HashMap<String, Object> bodyMap = new HashMap<>();bodyMap.put("openid", openId);bodyMap.put("real_name", checkRealNameInfo.getRealName());bodyMap.put("cred_id", checkRealNameInfo.getCredId());bodyMap.put("cred_type", checkRealNameInfo.getCredType());bodyMap.put("code", checkRealNameInfo.getCode());String requestUrl = CHECK_REAL_NAME_INFO.replace("ACCESSTOKEN", accessToken);String bodyMapJsonStr = JSONUtil.toJsonStr(bodyMap);log.error("checkrealnameinfo, 入参:{}", bodyMapJsonStr);String result = HttpUtil.post(requestUrl, bodyMapJsonStr);log.error("checkrealnameinfo, 入参:{}", result);return JSONUtil.parseObj(result);}}

controller 类:

package com.prison.wechat.controller;import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.prison.common.bo.wx.user.WxCode2SessionPBO;
import com.prison.common.bo.wx.user.WxCode2SessionRBO;
import com.prison.common.bo.wx.user.WxGetPhonePBO;
import com.prison.common.bo.wx.wechat.CheckRealNameInfo;
import com.prison.common.entity.Result;
import com.prison.common.enums.ResultType;
import com.prison.common.enums.wxuser.UserOpenCardState;
import com.prison.common.enums.wxuser.UserRealState;
import com.prison.common.util.DateUtils;
import com.prison.common.util.IdUtils;
import com.prison.common.util.StringUtils;
import com.prison.common.util.WeChatUtil;
import com.prison.core.entity.WxUser;
import com.prison.core.rservice.WechatService;
import com.prison.core.service.IWxUserService;
import com.prison.wechat.config.WechatInfoConfig;
import com.prison.wechat.config.WxUserContextHolder;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;/*** @author WangJing* @Description 微信 UserController* @date 2021/6/7 21:58*/
@Api(description = "微信 UserController")
@RestController
@RequestMapping("/weChat")
public class WeChatUserController {@AutowiredIWxUserService wxUserService;@AutowiredWechatInfoConfig wechatInfoConfig;@AutowiredWechatService wechatService;@PostMapping("/checkRealNameInfo")@ApiOperation(value = "城市服务实名信息校验", httpMethod = "POST")public Result<?> checkRealNameInfo(@RequestBody CheckRealNameInfo checkRealNameInfo) {//获取String accessToken = wechatService.getAccessToken(wechatInfoConfig.getAppId(), wechatInfoConfig.getAppSecret());JSONObject jsonObject = WeChatUtil.checkRealNameInfo(checkRealNameInfo, accessToken);if(!"0".equals(jsonObject.getInt("errcode").toString())){return new Result(ResultType.FAIL.getCode(), "微信接口调用失败,请稍后重试!");}if("V_OP_NM_MA".equals(jsonObject.getStr("verify_openid"))&& "V_NM_ID_MA".equals(jsonObject.getStr("verify_real_name"))){//姓名与证件号匹配WxUser updateUser = new WxUser();updateUser.setUserNo(WxUserContextHolder.getUser().getUserNo());updateUser.setRealName(checkRealNameInfo.getRealName());updateUser.setRealIdCard(checkRealNameInfo.getCredId());updateUser.setRealTime(DateUtils.getNowDate());wxUserService.updateWxUser(updateUser);}else{return new Result(ResultType.FAIL.getCode(), "信息不匹配");}//把新的skey返回给小程序return new Result(ResultType.SUCCESS);}}

注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!

Springboot 整合微信小程序 城市服务实名信息校验相关推荐

  1. Springboot 整合微信小程序实现登录与增删改查

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:我的大学到研究生自学 Java 之路,过程艰辛,不放弃,保持热情,最终发现我是这样拿到大厂 offer 的! 作 ...

  2. (附源码)springboot基于微信小程序的校园外卖系统 毕业设计091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  3. 基于SpringBoot和微信小程序的餐馆点餐系统的设计和实现

    作者主页:Designer 小郑 作者简介:Java全栈软件工程师一枚,来自浙江宁波,负责开发管理公司OA项目,专注软件前后端开发(Vue.SpringBoot和微信小程序).系统定制.远程技术指导. ...

  4. springboot基于微信小程序的校园外卖系统毕业设计源码091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  5. springboot基于微信小程序的校园外卖系统 毕业设计-附源码091024

    Springboot基于微信小程序的校园外卖系统 摘要 随着生活质量的日益改善以及生活节奏的日益加快,人们对餐饮需求的质量以及速度也随之发生着变化.为了满足社会需求,餐饮的高质量和快节奏也渐渐使电话订 ...

  6. SpringBoot实现微信小程序登录功能

    SpringBoot实现微信小程序登录 微信小程序登录流程 登录流程图 前端代码 后端代码 微信小程序登录流程 微信小程序官方文档:微信小程序官方文档 第一次学习微信小程序的登录,以前也好奇微信小程序 ...

  7. 微信小程序志愿者服务的设计与实现

    ​​​​​​​源码获取:https://www.bilibili.com/video/BV13m4y1c7NW/ 技术要求: (1)微信小程序开发工具开发: (2)后端:ssm + mysql + b ...

  8. 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)

    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...

  9. 基于腾讯云服务器部署微信小程序后台服务(Python+Django)

    一 前言 微信小程序,相信大家早已熟知,它是一种无需下载安装即可使用的轻型应用,具有跨平台和接近Native App性能体验的优势.从开发模式上说,它是前后端分离的,微信小程序负责实现前端应用,后端服 ...

最新文章

  1. css 选择器(标签选择器、类选择器、层级选择器、id选择器、组选择器、伪类选择器、通配符选择器)
  2. SSH框架是个怎么回事?(转)
  3. 如何在python中构造时间戳参数
  4. 一张PDF了解JDK9 GC调优秘籍-附PDF下载
  5. 机器学习 —— 基础整理(一)贝叶斯决策论;二次判别函数;贝叶斯错误率;生成式模型的参数方法...
  6. android studio for android learning (十三) 一个简单的图片查看器示例
  7. 带你实战Android深色模式,深入原理剖析
  8. 远程桌面无法复制粘贴传输文件解决办法
  9. YouTube-dl命令报错
  10. 【数据分析师_02_SQL+MySQL】019_MySQL联结表(WHERE,AND,PK-FK,INNER JOIN)
  11. linux桌面lxde 安装_ArchLinux下LXDE的安装与设置心得
  12. SEO实战:怎样打劫肥龙龙的博客流量
  13. 更快地编写更好的代码:5 分钟阅读
  14. 基于声网 视频通话SDK 的opencv 人脸检测
  15. 微信消息提醒python实现
  16. 关于OpenCV for Python入门-自带人脸检测算法比较
  17. 关于区块链的助记词以及BTC地址,私钥,公钥,ETH地址获取的方法
  18. win 10 新建桌面
  19. unity WebGL
  20. 做微信直播的好处多不多

热门文章

  1. 小米手机助手 云服务器错误,小米手机助手使用过程中的常见问题汇总解答
  2. 如何在PDF中添加水印,PDF添加水印技巧
  3. 【服务器数据恢复】HP EVA存储设备多块硬盘出现故障的数据恢复案例
  4. 云服务器采购项目,云服务器采购项目
  5. Android集成阿里云旺即时通讯踩坑历程
  6. 国内6大品牌 企业邮箱分析
  7. 如何使用HTML+CSS+JavaScript+wamp sever自主搭建一个易班轻应用
  8. vueloopscroll 公告文字循环滚动中奖记录循环滚动插件
  9. 北大青鸟贴吧,告诉我,封我ID的理由。
  10. Windows 7 Tips: 如何更改系统的显示语言(图文教程)