From 0875aca5667a2ecf9e74a72de5f46a7e4c9bf4d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E9=9B=AA?= <1044122544@qq.com> Date: Sun, 20 Apr 2025 09:19:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=88=B7=E8=84=B8SDK=20POM?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 18 ++++++++ .../ali/controller/AliScanFaceController.java | 42 +++++++++++++---- .../modules/scanface/ali/dll/AbcpInvoke.java | 5 ++- .../scanface/ali/dll/AliScanFaceDll.java | 1 + .../service/impl/AliScanFaceServiceImpl.java | 45 ++++++++++++++++--- .../scanface/{ => ali}/vo/MyCallbackRsp.java | 2 +- .../controller/WxpayFaceTestController.java | 2 +- .../resources/win32-x86-64/WxpayFaceSDK.dll | 0 8 files changed, 95 insertions(+), 20 deletions(-) rename src/main/java/com/dpkj/modules/scanface/{ => ali}/vo/MyCallbackRsp.java (95%) create mode 100644 src/main/resources/win32-x86-64/WxpayFaceSDK.dll diff --git a/pom.xml b/pom.xml index 86af71a..4785747 100644 --- a/pom.xml +++ b/pom.xml @@ -132,6 +132,24 @@ 2.0.1.Final + + + com.github.binarywang + weixin-java-pay + 4.7.0 + + + + + org.jdom + jdom2 + 2.0.6 + + + jakarta.xml.bind + jakarta.xml.bind-api + + diff --git a/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java b/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java index a236330..593cadf 100644 --- a/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java +++ b/src/main/java/com/dpkj/modules/scanface/ali/controller/AliScanFaceController.java @@ -1,19 +1,13 @@ package com.dpkj.modules.scanface.ali.controller; -import cn.hutool.core.lang.Console; import com.alibaba.fastjson.JSONObject; -import com.dpkj.common.constant.ChsConst; 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.dll.AbcpInvoke; import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll; 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.Memory; -import com.sun.jna.Pointer; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; @@ -40,7 +34,8 @@ public class AliScanFaceController { private AliFaceConfig aliFaceConfig; /** - * 初始化, + * ABCP初始化, + * https://opendocs.alipay.com/iot/05e9ye * @return * @throws AliScanFaceDll.DllRegistrationException */ @@ -49,9 +44,38 @@ public class AliScanFaceController { return aliScanFaceService.iniAbcp(); } + /** + * ABCP服务调用 + * https://opendocs.alipay.com/iot/05e9ye + * @return + */ + @GetMapping("abcpStartService") + Result 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"); System.out.println("DLL 存在: " + dllFile.exists()); diff --git a/src/main/java/com/dpkj/modules/scanface/ali/dll/AbcpInvoke.java b/src/main/java/com/dpkj/modules/scanface/ali/dll/AbcpInvoke.java index ed8945b..6dcb0fb 100644 --- a/src/main/java/com/dpkj/modules/scanface/ali/dll/AbcpInvoke.java +++ b/src/main/java/com/dpkj/modules/scanface/ali/dll/AbcpInvoke.java @@ -39,7 +39,6 @@ public class AbcpInvoke { } - public static void SetAPIPathFile(String fileDylib) { if (msAbcpNativeDll == null) { File file = new File(fileDylib); @@ -222,7 +221,7 @@ public class AbcpInvoke { return str; } - public static Integer getMsSeedId(){ + public static Integer getMsSeedId() { return msSeedId; } @@ -241,6 +240,7 @@ public class AbcpInvoke { public static class ABCPProcess implements FuncProcess { 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); CallbackRsp callback = null; msLock.lock(); @@ -258,6 +258,7 @@ public class AbcpInvoke { public static class ABCPFinish implements FuncFinish { 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); CallbackRsp callback = null; diff --git a/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java b/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java index e2da1de..e484cfe 100644 --- a/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java +++ b/src/main/java/com/dpkj/modules/scanface/ali/dll/AliScanFaceDll.java @@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j; /** * @Auther: 萧道子 + * src/main/resources/win32-x86/AliScanFace.dll * @Date: 2025/4/16 * @Description: 阿里扫脸程序 */ diff --git a/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java b/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java index dc54c56..94eadb5 100644 --- a/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java +++ b/src/main/java/com/dpkj/modules/scanface/ali/service/impl/AliScanFaceServiceImpl.java @@ -1,20 +1,18 @@ package com.dpkj.modules.scanface.ali.service.impl; import com.alibaba.fastjson.JSONObject; -import com.dpkj.common.config.PrinterConfig; import com.dpkj.common.vo.Result; import com.dpkj.modules.scanface.ali.config.AliFaceConfig; import com.dpkj.modules.scanface.ali.dll.AbcpInvoke; import com.dpkj.modules.scanface.ali.dll.AliScanFaceDll; import com.dpkj.modules.scanface.ali.service.IAliScanFaceService; -import com.dpkj.modules.scanface.vo.MyCallbackRsp; -import lombok.AllArgsConstructor; +import com.dpkj.modules.scanface.ali.vo.MyCallbackRsp; +import com.sun.jna.Callback; 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 javax.annotation.Resource; +import java.io.File; /** * @Auther: 萧道子 @@ -29,10 +27,41 @@ public class AliScanFaceServiceImpl implements IAliScanFaceService { @Resource private AliFaceConfig aliFaceConfig; + /** + * 使用绝对路径调用ABCP_SDK部署出来的AbcpInvoke类 + * + * @return + */ + public Result 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 public Result iniAbcp() { 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()); AliScanFaceDll.Dll dll = AliScanFaceDll.instance(); @@ -49,8 +78,10 @@ public class AliScanFaceServiceImpl implements IAliScanFaceService { AbcpInvoke.ABCPProcess msABCPProcess = new AbcpInvoke.ABCPProcess(); AbcpInvoke.ABCPFinish msABCPFinish = new AbcpInvoke.ABCPFinish(); 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("成功"); } catch (Exception e) { e.printStackTrace(); diff --git a/src/main/java/com/dpkj/modules/scanface/vo/MyCallbackRsp.java b/src/main/java/com/dpkj/modules/scanface/ali/vo/MyCallbackRsp.java similarity index 95% rename from src/main/java/com/dpkj/modules/scanface/vo/MyCallbackRsp.java rename to src/main/java/com/dpkj/modules/scanface/ali/vo/MyCallbackRsp.java index 331eba4..d1e99ad 100644 --- a/src/main/java/com/dpkj/modules/scanface/vo/MyCallbackRsp.java +++ b/src/main/java/com/dpkj/modules/scanface/ali/vo/MyCallbackRsp.java @@ -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; diff --git a/src/main/java/com/dpkj/modules/scanface/wx/controller/WxpayFaceTestController.java b/src/main/java/com/dpkj/modules/scanface/wx/controller/WxpayFaceTestController.java index 7d05979..753acd3 100644 --- a/src/main/java/com/dpkj/modules/scanface/wx/controller/WxpayFaceTestController.java +++ b/src/main/java/com/dpkj/modules/scanface/wx/controller/WxpayFaceTestController.java @@ -45,7 +45,7 @@ public class WxpayFaceTestController { * @return * @throws JsonProcessingException */ - @RequestMapping(value = "/initWxpayface", method = RequestMethod.POST) + @RequestMapping(value = "/initWxpayface", method = RequestMethod.GET) public Result initWxpayface() throws JsonProcessingException, UnsupportedEncodingException, WxpayFaceSDKDll.DllRegistrationException { // 构建请求参数的JSON字符串 WxFacePayReq wxFacePayReq = new WxFacePayReq("initWxpayface","1",System.currentTimeMillis()/1000); diff --git a/src/main/resources/win32-x86-64/WxpayFaceSDK.dll b/src/main/resources/win32-x86-64/WxpayFaceSDK.dll new file mode 100644 index 0000000..e69de29