当前位置: 首页 > news >正文

佛山市企业网站建设哪家好南阳建网站

佛山市企业网站建设哪家好,南阳建网站,旅游网站建设目标分析,企业域名邮箱文章目录一、概述二、合作方后台上送身份信息~实现流程2.1. 前端入参2.2. 后端固定参数2.3. 获取 Access Token2.4. 获取 SIGN ticket2.5. 生成签名2.6. 合作方后台上送身份信息三、启动H5人脸核身3.1. 获取h5faceId3.2. 获取nonce3.3. 获取nonceTicket3.4. 计算启动签名3.5. 构… 文章目录一、概述二、合作方后台上送身份信息~实现流程2.1. 前端入参2.2. 后端固定参数2.3. 获取 Access Token2.4. 获取 SIGN ticket2.5. 生成签名2.6. 合作方后台上送身份信息三、启动H5人脸核身3.1. 获取h5faceId3.2. 获取nonce3.3. 获取nonceTicket3.4. 计算启动签名3.5. 构建回调页面链接四、查询核身结果4.1. 启动H5人脸核身一、概述 人脸识别使用官方API腾讯云人脸核身之独立H5接入。接口官方返回code 0 表示成功,其他code码值均为对应码值信息详见错误码。 注意 1.合作方上送身份信息的计算签名参数与启动人脸核身计算签名参数不一致有部分区别。 2.wbappid webankAppId app_id 二、合作方后台上送身份信息~实现流程 2.1. 前端入参 前端入参客户身份证号、客户姓名、用户 ID userId、fromApp || browser controller Autowiredprivate PCH5SendIdentityService pch5SendIdentityService;/*** 合作方后台上送身份信息 PC H5* 文档https://cloud.tencent.com/document/product/1007/35893* p* 请求 URLhttps://miniprogram-kyc.tencentcloudapi.com/api/server/h5/geth5faceid?orderNoxxx* 请求方法POST* 报文格式Content-Type: application/json* /p** param faceDetectUserVO 身份信息*/PostMapping(/sendH5IdentityInfoUserInfo)public TXH5IdentityInfoDTO sendH5IdentityInfoUserInfo(RequestBody FaceDetectUserVO faceDetectUserVO) {return pch5SendIdentityService.sendH5IdentityInfoUserInfo(faceDetectUserVO);}entity Data AllArgsConstructor NoArgsConstructor public class FaceDetectUserVO {// https://cloud.tencent.com/document/product/1007/35893private String name;//姓名private String idNo;//证件号码private String userId;//用户 ID 用户的唯一标识不能带有特殊字符需要跟生成签名的 userId 保持一致private String from;//来源 App || browser }2.2. 后端固定参数 后端固定参数wbappid webankAppId app_idAPI中介绍命名不同注意、orderNo可自定义随机生成不唯一、userId可自定义随机生成不唯一、version 2.3. 获取 Access Token https://cloud.tencent.com/document/product/1007/57603 /*** 获取 access_token* 文档: https://cloud.tencent.com/document/product/1007/37304** return*/Overridepublic String getAccessTokenTencent() {// 从redis中获取accessTokenTencentString accessTokenTencent redisUtils.get(accessTokenTencent);log.info(获取redis中的accessToken,为[{}], accessTokenTencent);if (StringUtils.isEmpty(accessTokenTencent)) {String accessTokenUrl String.format(TencentCloudConfig.ACCESS_TOKEN_URL, appId, secret);String jsonStr HttpUtil.doGet(accessTokenUrl, null);log.info(返回报文-{}, jsonStr);MapString, String jsonMap ConvertUtils.stringToMap(jsonStr);if (!0.equals(jsonMap.get(code))) {String msg jsonMap.get(msg);log.error(获取腾讯token信息错误code:{},msg:{}, jsonMap.get(code), msg);GraceJSONResult.errorMsg(msg);/*** 错误响应示例* {* code: 66660000,* msg: 请求参数异常,* bizSeqNo: 22090720001184453210262184859700,* transactionTime: 20220907102621,* success: false,* expire_in: 0* }*/}/*** 正确响应示例* {* code:0,msg:请求成功,* transactionTime:20151022043831,* access_token:accessToken_string,* expire_time:20151022043831,* expire_in:7200* }*/// 获取 access_tokenaccessTokenTencent jsonMap.get(access_token);// 过期时间 默认7200L 设置6800L提前重新获取redisUtils.set(accessTokenTencent, accessTokenTencent, 6800L);}log.info(返回有效accessToken,为[{}], accessTokenTencent);return accessTokenTencent;} 2.4. 获取 SIGN ticket https://cloud.tencent.com/document/product/1007/57613 通过token获取signTicket /*** 获取 SIGN ticket* 请求地址: http://localhost:9900/getSignTicketTencent* 文档: https://cloud.tencent.com/document/product/1007/37305** param accessTokenTencent access_token* return*/Overridepublic String getSignTicketTencent(String accessTokenTencent) {// 从redis中获取nonceTicketTencentString signTicketTencent redisUtils.get(signTicketTencent);log.info(获取redis中的signTicketTencent,为[{}], signTicketTencent);String signTicketValue null;if (StringUtils.isEmpty(signTicketTencent)) {String getSignTicketUrl String.format(TencentCloudConfig.SIGN_TICKET_URL, appId, accessTokenTencent);String jsonStr HttpUtil.doGet(getSignTicketUrl, null);log.info(返回报文-{}, jsonStr);TicketDTO ticketDTO JSON.parseObject(jsonStr, TicketDTO.class);if (!0.equals(ticketDTO.getCode())) {String msg ticketDTO.getMsg();log.error(获取腾讯signTicket信息错误code:{},msg:{}, ticketDTO.getCode(), msg);GraceJSONResult.errorMsg(msg);}/*** 正确响应示例* {* code: 0,* msg: 请求成功,* transactionTime: 20151022044027,* tickets: [* {* value: ticket_string,* expire_in: 3600,* expire_time: 20151022044027* }* ]* }*/signTicketValue ticketDTO.getTickets().get(0).getValue();// 过期时间 默认3600L 设置3200L提前重新获取redisUtils.set(signTicketTencent, signTicketValue, 3000L);}return signTicketValue;} 2.5. 生成签名 计算合作方上送身份信息签名参数有wbappid、orderNo、name、idNo、userId、version、signTicket 计算签名 /*** PC 端 H5 接入 合作方上送身份信息计算签名* 文档地址https://cloud.tencent.com/document/product/1007/35893** param faceDetectUserVO* param signTicket* return*/public String signH5(FaceDetectUserVO faceDetectUserVO, String signTicket) {//为计算签名做准备//为计算签名做准备ListString list new ArrayList();list.add(appId);list.add(faceDetectUserVO.getOrderNo());list.add(faceDetectUserVO.getName());list.add(faceDetectUserVO.getIdNo());list.add(faceDetectUserVO.getUserId());list.add(TencentCloudConfig.VERSION);return SignUtils.getSign(list, signTicket);}2.6. 合作方后台上送身份信息 /*** 合作方后台上送身份信息 PC H5* 文档https://cloud.tencent.com/document/product/1007/35893* p* 请求 URLhttps://miniprogram-kyc.tencentcloudapi.com/api/server/h5/geth5faceid?orderNoxxx* 请求方法POST* 报文格式Content-Type: application/json* /p** param faceDetectUserVO 身份信息* return*/Overridepublic TXH5IdentityInfoDTO sendH5IdentityInfoUserInfo(FaceDetectUserVO faceDetectUserVO) {//获取accessTokenString accessToken commonIdentityService.getAccessTokenTencent();//获取signTicketString signTicket commonIdentityService.getSignTicketTencent(accessToken);//订单号String orderNo SignUtils.GenerateRandom32Number(32);faceDetectUserVO.setOrderNo(orderNo);//合作方上送计算签名String sign signH5(faceDetectUserVO, signTicket);MapString, String param new HashMap(16);param.put(webankAppId, appId);param.put(orderNo, orderNo);param.put(name, faceDetectUserVO.getName());param.put(idNo, faceDetectUserVO.getIdNo());param.put(userId, faceDetectUserVO.getUserId());param.put(version, TencentCloudConfig.VERSION);param.put(sign, sign);log.debug(合作方上送身份信息参数有[{}], param);String getFaceidUrl String.format(TencentCloudConfig.GET_H5_FACEID_URL, orderNo);String jsonStr HttpUtil.doPost(getFaceidUrl, JSON.toJSONString(param));log.info(返回报文-{}, jsonStr);TXH5IdentityInfoDTO txh5IdentityInfoDTO JSON.parseObject(jsonStr, TXH5IdentityInfoDTO.class);log.info(合作方上送身份信息接口返回[{}], txh5IdentityInfoDTO);return txh5IdentityInfoDTO;} 三、启动H5人脸核身 3.1. 获取h5faceId 在合作方成功上送身份信息后可以获取到h5faceId 3.2. 获取nonce 32位随机数 3.3. 获取nonceTicket 获取nonceTicket通过token userId 3.4. 计算启动签名 https://cloud.tencent.com/document/product/1007/61074 计算启动H5人脸核身签名参数有wbappid、orderNo、userId、version、h5faceId、nonce、nonceTicket /*** 启用 H5 人脸认证 人脸核身计算签名* 文档https://cloud.tencent.com/document/product/1007/35894** param orderNo 订单号字母/数字组成的字符串本次人脸验证合作伙伴上送的订单号唯一标识* param userId 用户 ID 用户的唯一标识不要带有特殊字符* param nonceTicket 合作伙伴服务端实时获取的 tikcet注意是 NONCE 类型* param h5faceId h5/geth5faceid 接口返回的唯一标识* param nonce 随机数32位随机串字母数字组成的随机数* return*/private String faceSignH5(String orderNo, String userId, String nonceTicket, String h5faceId, String nonce) {//为计算签名做准备ListString list new ArrayList();list.add(appId);list.add(orderNo);list.add(userId);list.add(TencentCloudConfig.VERSION);list.add(h5faceId);list.add(nonce);String sign SignUtils.getSign(list, nonceTicket);log.info(启动人脸核身返回签名为[{}], sign);return sign;}3.5. 构建回调页面链接 将成功拉起人脸核身验证通过后的回调页面链接配置至配置文件同时对该链接进行encode编码 获取到所有拉起人脸核身所需参数后向链接https://ida.webank.com/api/web/login拼接上参数webankAppId、version、nonce、orderNo、h5faceId、url、sign、from、userId。例如 https://ida.webank.com/api/web/login?webankAppId%sversion1.0.0nonce%sorderNo%sh5faceId%surluserId%ssign%sfrom%s接好后直接将该链接返回前端去打开即可拉起人脸核身。请注意该链接仅一次有效 /*** 构造人脸核身获取启动链接* 文档https://cloud.tencent.com/document/product/1007/35894** param faceDetectUserVO* return*/Overridepublic GraceJSONResult startCheckFace(FaceDetectUserVO faceDetectUserVO) {//随机生成32位唯一用户ID和订单IDString userId SignUtils.GenerateRandom32Number(32);String orderNo SignUtils.GenerateRandom32Number(32);faceDetectUserVO.setOrderNo(orderNo);faceDetectUserVO.setUserId(userId);String requestUrl ;try {//获取accessTokenString accessToken commonIdentityService.getAccessTokenTencent();//上送合作方用户信息TXH5IdentityInfoDTO txh5IdentityInfoDTO sendH5IdentityInfoUserInfo(faceDetectUserVO);if (!0.equals(txh5IdentityInfoDTO.getCode())) {String msg txh5IdentityInfoDTO.getMsg();log.info(启动人脸核身--上送合作方用户信息异常异常原因为[{}]], msg);GraceJSONResult.errorMsg(msg);}//获取h5/geth5faceid 接口返回的唯一标识String h5faceId txh5IdentityInfoDTO.getResult().getH5faceId();//获取32位随机数String nonce SignUtils.GenerateRandom32Number(32);//获取nonceTicketString nonceTicket commonIdentityService.getNonceTicketTencent(accessToken, userId);//启动人脸核身计算签名String sign faceSignH5(orderNo, userId, nonceTicket, h5faceId, nonce);//成功拉起人脸识别并识别成功或失败后的回调路径String oauthCallback TencentCloudConfig.OAUTH_CALLBACK_URL;log.debug(人脸核身通过后的回调地址-拼接路径加密前url [{}], oauthCallback);String oauthRedirectUrl URLEncoder.encode(oauthCallback, utf-8);log.debug(人脸核身通过后的回调地址-拼接路径加密后url [{}], oauthRedirectUrl);/*** https://miniprogram-kyc.tencentcloudapi.com/api/pc/login?webankAppIdappId001* version1.0.0* nonce4bu6a5nv9t678m2t9je5819q46y9hf93* orderNo161709188560917432576916585* h5faceIdwb04f10695c3651ce155fea7070b74c9* urlhttps%3a%2f%2fcloud.tencent.com* userId23333333333333* sign5DD4184F4FB26B7B9F6DC3D7D2AB3319E5F7415F*/requestUrl String.format(TencentCloudConfig.REQUEST_URL, appId, nonce, orderNo, h5faceId, oauthRedirectUrl, userId, sign, faceDetectUserVO.getFrom());} catch (Exception e) {log.error(启动人脸核身异常异常原因为[{}], e.getMessage());}log.info(启动人脸核身--请求路径为[{}]], requestUrl);return GraceJSONResult.ok(requestUrl);}四、查询核身结果 4.1. 启动H5人脸核身 /*** 前端获取结果验证签名* API:https://cloud.tencent.com/document/product/1007/61302** param orderNo 订单号字母/数字组成的字符串本次人脸核身合作伙伴上送的订单号唯一标识* return*/private String getCheckSign(String orderNo) {//获取accessTokenString accessToken commonIdentityService.getAccessTokenTencent();//获取signTicketString signTicket commonIdentityService.getSignTicketTencent(accessToken);List list new ArrayList();list.add(appId);list.add(orderNo);list.add(TencentCloudConfig.VERSION);list.add(SignUtils.GenerateRandom32Number(32));String sign SignUtils.getSign(list, signTicket);log.info(前端获取结果验证签名值为\[{}], sign);return sign;}
http://www.pierceye.com/news/127027/

相关文章:

  • 给别人做网站怎么赚钱吗专业网络推广软件
  • SOHO英文网站制作晋江网站制作
  • 启东住房和城乡建设局网站邢台网站制作报价多少钱
  • 佛山网站建设seo优化做英文的小说网站有哪些
  • 安顺建设局网站官网哪里有响应式网站企业
  • 唯品会一家做特卖的网站国家商标查询官方网站
  • 网站宝搭建网站环境做电商网站一般需要什么流程图
  • 南通网站建设团队wordpress广告产检
  • 做网站刷赞qq怎么赚钱邢台路桥建设总公司没有网站吗
  • 网站仿站教程常用外贸网站
  • 南昌市有帮做网站的吗纵横天下网站开发
  • pc网站直接转换成移动端的网站黑果云免费虚拟主机
  • 网站建设用什么科目wordpress当前分类链接地址
  • 做一万个网站网站做下载功能
  • 佛山建站模板制作wordpress加上live2d
  • 樟木头网站仿做深圳网站开发公司
  • 孙俪做的网站广告微信如何修改wordpress
  • 有什么手机做网站的免费ppt模板下载花
  • 网站建设团队技术介绍县级网站
  • 深圳营销型网站建设价格网站建设文化如何
  • 提交网站的入口地址网站建设灬金手指下拉十五
  • 连云港建设局网站学校网站建设管理相关规定
  • 什么网站做玩具的外贸网站监控系统
  • 从事网站美工建设厦门网站制作企业
  • 网站后台传图片南昌做网站要多少钱
  • 网站包括什么国内最大的域名交易平台
  • 做营销型网站 公司哈尔滨展览设计公司
  • 网站设计费用多少钱产品网页设计教程
  • 深圳公司网站建设设计网站推广的意义和方法
  • 网站需要哪些费用免费营销型网站模版