Skip to content

上海五期医保动态库Java端调用

Notifications You must be signed in to change notification settings

jkylin/transaction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

transaction

上海五期医保动态库Java端调用

背景

2020年4月初,上海市初步升级五期医保,将原本512字节的入参和出参更换成不定长的JSON格式,并且在五期医保中支持了医保电子凭证,能够使用电子凭证进行在线的脱卡交易。

上海市五期医保仍旧使用动态库的形式进行交易,由于五期医保支持在线的脱卡支付,可以在微信小程序或者支付宝小程序中直接进行医保交易,这就要求后端服务能够调用医保动态库。

医保提供的是32位的动态库程序,若用Java调用32位动态库必须使用32位的jdk,但是项目中一般使用的都是64位jdk,所以为了保证兼容性,开发了一个中间服务作为服务转发,程序对外提供http post请求,接收到请求参数后直接调用医保动态库并获得结果后作为返回值给调用方。

对于使用者而言,将医保要求的JSON参数组装完成,调用中间服务程序,由中间服务调用医保动态库,完成整个医保交互流程。

涉及技术

  • spring boot
  • jna

注意事项

  1. 需要将医保动态库放在jdk/bin目录下,由于医保动态库SendSrv4.dll还依赖其他医保提供的dll程序,不放在此路径下会报找不到对应的dll文件
  2. 使用32位jdk,只有32位jdk才能调用32位的dll
  3. 调用dll要设置gbk的编码格式,跟医保确认过医保动态库最大开辟16k的内存作为出参,调用动态库出参最少要设置16k的空间,否则调用动态库时可能会导致内存溢出

About

上海五期医保动态库Java端调用

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages