sm2签名,sm4加解密,签到签退,文件上传下载,医保结算,冲正交易,目录下载,医保对账
{
"infno": "9001",
"msgid": "P22072200668202109192345543433",
"mdtrtarea_admvs": "220722",
"insuplc_admdvs": "220722",
"recer_sys_code": "1",
"dev_no": "",
"dev_safe_info": "",
"cainfo": "jvFGEiKVq/2Xkr8z8czsRt5TEIeBCXUiVzOvbcjJY9oZYIPmOezBru6Ve1q41YLOLb/9yn0R+w0s/uFM1pG5sQ==",
"signtype": "SM2",
"infver": "V1.0",
"opter_type": "1",
"opter": "admin",
"opter_name": "管理员",
"inf_time": "2021-09-19 23:45:54",
"fixmedins_code": "H22072200145",
"fixmedins_name": "长岭县疾病预防控制中心",
"sign_no": "",
"input": "uA+YZcFLqgd6Sm/CmYyr2+HvgPYF1nHyKJuQYXgmaG/Tl9u+AXOBp5TlJbTDrn2X0mVs9xXxXNvWctpfc4hRDF2a03zwzd3uHulUVXqulfghsCw0DD+raNqV1/D+XbTL"
}
procedure TForm1.Button2Click(Sender: TObject);
var
input,cainfo,instr: string;
json: ISuperObject;
begin
//业务参数
json := SO;
try
json.S['signIn.mac'] := '00E066EA27FA'; //签到MAC地址
json.S['signIn.opter_no'] := '94_00001_王璐璐22'; //操作员编号
json.S['signIn.ip'] := '10.25.2.54'; //签到IP地址
instr := json.AsString;
Edit_cainfo.Text := Sm2Sign(instr, sm2key); //sm2签名
Edit_input.Text := Sm4Encrypt(instr, sm4key); //sm4加密
cainfo := Trim(Edit_cainfo.Text);
input := Trim(Edit_input.Text);
finally
json := nil;
end;
json := SO;
try
//公共参数
json.S['infno'] := Trim(Edit_infno.Text); //交易编号
json.S['msgid'] := GetMsgid(Trim(Edit_fixmedins_code.Text)); //发送方报文ID
json.S['mdtrtarea_admvs'] := Trim(Edit_mdtrtarea_admvs.Text); //就医地医保区划
json.S['insuplc_admdvs'] := Trim(Edit_insuplc_admdvs.Text); //参保地医保区划
json.S['recer_sys_code'] := '1'; //接收方系统代码
json.S['dev_no'] := ''; //设备编号
json.S['dev_safe_info'] := ''; //设备安全信息
json.S['cainfo'] := cainfo; //数字签名信息
json.S['signtype'] := 'SM2'; //签名类型
json.S['infver'] := 'V1.0'; //接口版本号
json.S['opter_type'] := '1'; //经办人类别
json.S['opter'] := Trim(Edit_opter.Text); //经办人
json.S['opter_name'] := Trim(Edit_opter_name.Text); //经办人姓名
json.S['inf_time'] := FormatDateTime('YYYY-MM-DD hh:nn:ss',now); //交易时间
json.S['fixmedins_code'] := Trim(Edit_fixmedins_code.Text); //定点医药机构编号
json.S['fixmedins_name'] := Trim(Edit_fixmedins_name.Text); //定点医药机构名称
json.S['sign_no'] := Trim(Edit_sign_no.Text); //交易签到流水号
json.S['input'] := input; //交易输入
instr := json.AsString;
Memo_in.Clear;
Memo_in.Lines.Add(instr);
finally
json := nil;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
lvresult: Integer;
instr,outstr,output: string;
json: ISuperObject;
begin
instr := Trim(Memo_in.Text);
if instr ='' then
begin
ShowMessage('入参为空!');
Exit;
end;
try
lvresult := YBYWCL(instr, outstr);
if lvresult =0 then
begin
Memo_out.Lines.Add(outstr);
//解析json
json := SO(outstr);
try
if json.S['infcode'] ='0' then //成功
begin
output := json.S['output'];
end
else //失败
begin
ShowMessage(json.S['err_msg']);
end;
finally
json := nil;
end;
end
else
begin
ShowMessage(outstr);
end;
except
on E: Exception do
begin
ShowMessage(e.Message);
end;
end;
end;