为江苏医保接口新增了 autoInit
可选参数,实现智能化初始化功能,让接口使用更加便捷,同时保持向后兼容性。
// 旧版本
public static JObject ReadSocialCard(bool autoVerifyPIN = false)
// 新版本
public static JObject ReadSocialCard(bool autoVerifyPIN = false, bool autoInit = false)
bool
false
(保持向后兼容)// autoInit = false(默认)
var result = JiangSuSocialCardBusiness.ReadSocialCard(false, false);
// 或者简写(利用默认参数)
var result = JiangSuSocialCardBusiness.ReadSocialCard();
特点:
Initialize()
方法初始化返回示例(未初始化时):
{
"success": false,
"code": 1002,
"message": "江苏医保系统未初始化,请先调用初始化接口",
"device": "江苏医保社保卡读卡器",
"interface": "江苏医保接口 v0.9.9.15",
"interfaceType": "medical",
"initMode": "strict",
"suggestion": "请先调用 Initialize() 方法或设置 autoInit=true 启用自动初始化"
}
// autoInit = true
var result = JiangSuSocialCardBusiness.ReadSocialCard(false, true);
特点:
Initialize()
方法返回示例(自动初始化成功):
{
"success": true,
"code": 200,
"message": "社保卡读取成功",
"device": "江苏医保社保卡读卡器",
"interface": "江苏医保接口 v0.9.9.15",
"interfaceType": "medical",
"initMode": "auto",
"autoInitSuccess": true,
"data": { /* 社保卡数据 */ }
}
返回示例(自动初始化失败):
{
"success": false,
"code": 1002,
"message": "江苏医保系统自动初始化失败,请检查设备连接",
"device": "江苏医保社保卡读卡器",
"interface": "江苏医保接口 v0.9.9.15",
"interfaceType": "medical",
"initMode": "auto",
"autoInitError": "具体初始化失败原因"
}
# 新增的自动初始化路由
GET /readcard/jiangsu/readcard_auto # autoInit=true, autoVerifyPIN=false
GET /readcard/jiangsu/readcard_auto_pin # autoInit=true, autoVerifyPIN=true
# 原有路由(保持向后兼容)
GET /readcard/jiangsu/readcard # autoInit=false, autoVerifyPIN=false
GET /readcard/jiangsu/readcard_pin # autoInit=false, autoVerifyPIN=true
{
"action": "readcard",
"autoVerifyPIN": false,
"autoInit": true
}
autoInit=true
模式{
"action": "ReadSocialCard",
"device": "江苏医保HeaSecReadInfo.dll",
"interface": "江苏医保接口 v0.9.9.15",
"autoInit": true,
"autoVerifyPIN": false,
"mode": "智能模式(支持自动初始化)",
"note": "测试新增的autoInit参数,自动处理初始化逻辑"
}
// 1. 显式初始化
var initResult = JiangSuSocialCardBusiness.Initialize();
if (!(bool)initResult["success"]) {
// 处理初始化失败
return;
}
// 2. 读取社保卡
var readResult = JiangSuSocialCardBusiness.ReadSocialCard(false);
// 一步完成:自动初始化 + 读卡
var readResult = JiangSuSocialCardBusiness.ReadSocialCard(false, true);
// 检查结果
if ((bool)readResult["success"]) {
// 读卡成功
var cardData = readResult["data"];
// 检查是否进行了自动初始化
if (readResult["autoInitSuccess"] != null) {
Console.WriteLine("已自动完成初始化");
}
} else {
// 处理失败情况
Console.WriteLine($"读卡失败: {readResult["message"]}");
}
// 严格模式
fetch('/readcard/jiangsu/readcard')
// 智能模式
fetch('/readcard/jiangsu/readcard_auto')
// POST方式(智能模式)
fetch('/readcard/jiangsu', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
action: 'readcard',
autoInit: true,
autoVerifyPIN: false
})
})
private static bool isInitialized = false;
private static JiangSuConfig currentConfig = null;
if (!isInitialized && autoInit) {
var autoInitResult = Initialize();
if (!(bool)autoInitResult["success"]) {
// 返回自动初始化失败的详细信息
result["autoInitError"] = autoInitResult["message"];
result["initMode"] = "auto";
return result;
} else {
result["autoInitSuccess"] = true;
result["initMode"] = "auto";
}
}
所有响应都包含以下标记字段:
interface
: "江苏医保接口 v0.9.9.15"interfaceType
: "medical"initMode
: "strict" | "auto" | "manual"✅ 完全向后兼容
通过新增 autoInit
参数,江苏医保接口现在提供了两种使用模式:
用户可以根据自己的需求选择合适的模式,既保证了企业级应用的严格性,又提供了快速集成的便利性。