微信刷脸SDK POM文件

This commit is contained in:
张雪 2025-04-20 09:19:51 +08:00
parent 6dac863d45
commit 0875aca566
8 changed files with 95 additions and 20 deletions

18
pom.xml
View File

@ -132,6 +132,24 @@
<version>2.0.1.Final</version> <version>2.0.1.Final</version>
</dependency> </dependency>
<!--微信支付-->
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-pay</artifactId>
<version>4.7.0</version>
</dependency>
<!--添加JDOM库-->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@ -1,19 +1,13 @@
package com.dpkj.modules.scanface.ali.controller; package com.dpkj.modules.scanface.ali.controller;
import cn.hutool.core.lang.Console;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dpkj.common.constant.ChsConst;
import com.dpkj.common.vo.Result; import com.dpkj.common.vo.Result;
import com.dpkj.modules.chs.dll.AlipayDll;
import com.dpkj.modules.chs.entity.AlipayEcRequestData;
import com.dpkj.modules.scanface.ali.config.AliFaceConfig; import com.dpkj.modules.scanface.ali.config.AliFaceConfig;
import com.dpkj.modules.scanface.ali.dll.AbcpInvoke; import com.dpkj.modules.scanface.ali.dll.AbcpInvoke;
import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll; import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll;
import com.dpkj.modules.scanface.ali.service.IAliScanFaceService; import com.dpkj.modules.scanface.ali.service.IAliScanFaceService;
import com.dpkj.modules.scanface.vo.MyCallbackRsp; import com.dpkj.modules.scanface.ali.vo.MyCallbackRsp;
import com.sun.jna.Callback; import com.sun.jna.Callback;
import com.sun.jna.Memory;
import com.sun.jna.Pointer;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@ -40,7 +34,8 @@ public class AliScanFaceController {
private AliFaceConfig aliFaceConfig; private AliFaceConfig aliFaceConfig;
/** /**
* 初始化 * ABCP初始化
* https://opendocs.alipay.com/iot/05e9ye
* @return * @return
* @throws AliScanFaceDll.DllRegistrationException * @throws AliScanFaceDll.DllRegistrationException
*/ */
@ -49,9 +44,38 @@ public class AliScanFaceController {
return aliScanFaceService.iniAbcp(); return aliScanFaceService.iniAbcp();
} }
/**
* ABCP服务调用
* https://opendocs.alipay.com/iot/05e9ye
* @return
*/
@GetMapping("abcpStartService")
Result<Object> abcpStartService() {
return null;
}
/**ABCP服务调用*/
public static void main(String[] args) {
try {
AliScanFaceDll.Dll dll = AliScanFaceDll.instance();
dll.bp_api_set_isv_lan(3);
Integer arg= AbcpInvoke.getMsSeedId();
String app_id= "2021005138692337";
String service_code= "BPaaSSmileCard";
String json_param= "";
AbcpInvoke.ABCPProcess msABCPProcess = new AbcpInvoke.ABCPProcess();
AbcpInvoke.ABCPFinish msABCPFinish = new AbcpInvoke.ABCPFinish();
dll.abcp_start_service(arg,app_id,service_code,json_param,msABCPProcess,msABCPFinish);
}catch (Exception e){
e.printStackTrace();
}
}
//测试使用绝对路径 //测试使用绝对路径
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, AliScanFaceDll.DllRegistrationException { public static void main2(String[] args) throws NoSuchFieldException, IllegalAccessException, AliScanFaceDll.DllRegistrationException {
File dllFile = new File("C:\\opt\\ant-abcp\\bpaas_api.dll"); File dllFile = new File("C:\\opt\\ant-abcp\\bpaas_api.dll");
System.out.println("DLL 存在: " + dllFile.exists()); System.out.println("DLL 存在: " + dllFile.exists());

View File

@ -39,7 +39,6 @@ public class AbcpInvoke {
} }
public static void SetAPIPathFile(String fileDylib) { public static void SetAPIPathFile(String fileDylib) {
if (msAbcpNativeDll == null) { if (msAbcpNativeDll == null) {
File file = new File(fileDylib); File file = new File(fileDylib);
@ -241,6 +240,7 @@ public class AbcpInvoke {
public static class ABCPProcess implements FuncProcess { public static class ABCPProcess implements FuncProcess {
public void onProcess(int seed_id, int _code, String subCode, String subMsg, String result) { public void onProcess(int seed_id, int _code, String subCode, String subMsg, String result) {
log.info("[ABCPProcess][onProcess][243][onProcess][seed_id:{}],[_code:{}],[subMsg:{}],[result:{}]", seed_id, _code, subCode, subMsg, result);
Integer seedId = Integer.valueOf(seed_id); Integer seedId = Integer.valueOf(seed_id);
CallbackRsp callback = null; CallbackRsp callback = null;
msLock.lock(); msLock.lock();
@ -258,6 +258,7 @@ public class AbcpInvoke {
public static class ABCPFinish implements FuncFinish { public static class ABCPFinish implements FuncFinish {
public void onFinish(int seed_id, int _code, String subCode, String subMsg, String result) { public void onFinish(int seed_id, int _code, String subCode, String subMsg, String result) {
log.info("[ABCPFinish][onFinish][261][ABCPFinish数据][seed_id:{}],[_code:{}],[subMsg:{}],[result:{}]", seed_id, _code, subCode, subMsg, result);
Integer seedId = Integer.valueOf(seed_id); Integer seedId = Integer.valueOf(seed_id);
CallbackRsp callback = null; CallbackRsp callback = null;

View File

@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
/** /**
* @Auther: 萧道子 * @Auther: 萧道子
* src/main/resources/win32-x86/AliScanFace.dll
* @Date: 2025/4/16 * @Date: 2025/4/16
* @Description: 阿里扫脸程序 * @Description: 阿里扫脸程序
*/ */

View File

@ -1,20 +1,18 @@
package com.dpkj.modules.scanface.ali.service.impl; package com.dpkj.modules.scanface.ali.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dpkj.common.config.PrinterConfig;
import com.dpkj.common.vo.Result; import com.dpkj.common.vo.Result;
import com.dpkj.modules.scanface.ali.config.AliFaceConfig; import com.dpkj.modules.scanface.ali.config.AliFaceConfig;
import com.dpkj.modules.scanface.ali.dll.AbcpInvoke; import com.dpkj.modules.scanface.ali.dll.AbcpInvoke;
import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll; import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll;
import com.dpkj.modules.scanface.ali.service.IAliScanFaceService; import com.dpkj.modules.scanface.ali.service.IAliScanFaceService;
import com.dpkj.modules.scanface.vo.MyCallbackRsp; import com.dpkj.modules.scanface.ali.vo.MyCallbackRsp;
import lombok.AllArgsConstructor; import com.sun.jna.Callback;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File;
/** /**
* @Auther: 萧道子 * @Auther: 萧道子
@ -29,10 +27,41 @@ public class AliScanFaceServiceImpl implements IAliScanFaceService {
@Resource @Resource
private AliFaceConfig aliFaceConfig; private AliFaceConfig aliFaceConfig;
/**
* 使用绝对路径调用ABCP_SDK部署出来的AbcpInvoke类
*
* @return
*/
public Result<Object> iniAbcpAbsolute() {
File dllFile = new File("C:\\opt\\ant-abcp\\bpaas_api.dll");
System.out.println("DLL 存在: " + dllFile.exists());
if(dllFile.exists()){
//System.setProperty("java.library.path", "C:/opt/ant-abcp");
// 加载DLL直接指定绝对路径
System.load("C:/opt/ant-abcp/bpaas_api.dll");
JSONObject params = new JSONObject()
.fluentPut("appId", aliFaceConfig.getAppId()) //应用ID
.fluentPut("merchantId", aliFaceConfig.getMerchantId()) //签约商家的 PID 2088 开头
.fluentPut("deviceNum", aliFaceConfig.getDeviceNum())//商家机具终端编号每台设备保持唯一
.fluentPut("partnerId", aliFaceConfig.getPartnerId());//服务商的 PID
String json = params.toJSONString();
// 指定支付宝LOT SDK的本地库路径
AbcpInvoke.SetAPIPathFile("C:\\opt\\ant-abcp\\bpaas_api.dll");
// 2. 创建回调实例
MyCallbackRsp callback = new MyCallbackRsp();
AbcpInvoke.AbcpInit(aliFaceConfig.getAppId(), aliFaceConfig.getAppVersion(), json, callback);
}else{
log.info("[AliScanFaceServiceImpl][iniAbcpAbsolute][55][C:/opt/ant-abcp/bpaas_api.dll 文件不存在]");
}
return null;
}
@Override @Override
public Result<Object> iniAbcp() { public Result<Object> iniAbcp() {
try { try {
log.info("[AliScanFaceServiceImpl][iniAbcpAli][26][appId:{}],[merchantId:{}],[deviceNum:{}],[partnerId:{}]", log.info("[AliScanFaceServiceImpl][iniAbcpAli][26][ABCP初始化参数][appId:{}],[merchantId:{}],[deviceNum:{}],[partnerId:{}]",
aliFaceConfig.getAppId(), aliFaceConfig.getMerchantId(), aliFaceConfig.getDeviceNum(), aliFaceConfig.getPartnerId()); aliFaceConfig.getAppId(), aliFaceConfig.getMerchantId(), aliFaceConfig.getDeviceNum(), aliFaceConfig.getPartnerId());
AliScanFaceDll.Dll dll = AliScanFaceDll.instance(); AliScanFaceDll.Dll dll = AliScanFaceDll.instance();
@ -49,8 +78,10 @@ public class AliScanFaceServiceImpl implements IAliScanFaceService {
AbcpInvoke.ABCPProcess msABCPProcess = new AbcpInvoke.ABCPProcess(); AbcpInvoke.ABCPProcess msABCPProcess = new AbcpInvoke.ABCPProcess();
AbcpInvoke.ABCPFinish msABCPFinish = new AbcpInvoke.ABCPFinish(); AbcpInvoke.ABCPFinish msABCPFinish = new AbcpInvoke.ABCPFinish();
Integer seedId = AbcpInvoke.getMsSeedId(); Integer seedId = AbcpInvoke.getMsSeedId();
dll.abcp_init(seedId, "aliFaceConfig.getAppId()", aliFaceConfig.getAppVersion(), json, msABCPProcess, msABCPFinish); dll.abcp_init(seedId, aliFaceConfig.getAppId(), aliFaceConfig.getAppVersion(), json, msABCPProcess, msABCPFinish);
log.info("[AliScanFaceServiceImpl][iniAbcp][49][ABCP初始化process] {}", msABCPProcess.toString());
log.info("[AliScanFaceServiceImpl][iniAbcp][49][ABCP初始化结果] {}", msABCPFinish.toString());
return Result.ok("成功"); return Result.ok("成功");
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

View File

@ -1,4 +1,4 @@
package com.dpkj.modules.scanface.vo; package com.dpkj.modules.scanface.ali.vo;
import com.dpkj.modules.scanface.ali.dll.AbcpInvoke; import com.dpkj.modules.scanface.ali.dll.AbcpInvoke;

View File

@ -45,7 +45,7 @@ public class WxpayFaceTestController {
* @return * @return
* @throws JsonProcessingException * @throws JsonProcessingException
*/ */
@RequestMapping(value = "/initWxpayface", method = RequestMethod.POST) @RequestMapping(value = "/initWxpayface", method = RequestMethod.GET)
public Result<WxFacePayResp> initWxpayface() throws JsonProcessingException, UnsupportedEncodingException, WxpayFaceSDKDll.DllRegistrationException { public Result<WxFacePayResp> initWxpayface() throws JsonProcessingException, UnsupportedEncodingException, WxpayFaceSDKDll.DllRegistrationException {
// 构建请求参数的JSON字符串 // 构建请求参数的JSON字符串
WxFacePayReq wxFacePayReq = new WxFacePayReq("initWxpayface","1",System.currentTimeMillis()/1000); WxFacePayReq wxFacePayReq = new WxFacePayReq("initWxpayface","1",System.currentTimeMillis()/1000);