Delphi 加密签名代码示例
data:='{"amount":"0.00","hisBillNo":"1234","orderNo":"5678"}';
RecordErrLog('post退款请求数据:'+data);
datahex:=GetDataHex(data);
Url:=refundUrl;
try
retinfo:=GetPost(Url,datahex);
if zwPayUnit.erroMsg<>'' then
begin
MsgInfo('退款失败:'+zwPayUnit.erroMsg,2);
verrmsg:= zwPayUnit.erroMsg;
Payfail('退款失败:'+zwPayUnit.erroMsg);
btn_qx.Enabled:=True;
Exit;
end;
retinfo:=YanZhengSign(retinfo);
js:=TlkJSON.ParseText( trim(retinfo)) as TlkJSONobject;
if js<>nil then
begin
if (js.Count>0) then
begin
RecordErrLog('退款成功');
PaySuc;
end
else
begin
MsgInfo('退款失败,接口返回错误!'+retinfo,2);
verrmsg:= retinfo;
PayOverTime;
end;
end
else
begin
MsgInfo('退款失败,接口返回错误!'+retinfo,2);
verrmsg:= retinfo;
PayOverTime;
end;
except
on e:Exception do
begin
MsgInfo('退款失败:'+e.Message,2);
Payfail('退款失败:'+e.Message);
Exit;
end;
end;
-------------------------------
function GetDataHex(data:string):string;
var mytime: TDateTime;
fpmm:string;
i:integer;
s:string;
Len:Integer;
dataHEX:string;
sign:string;
begin
if appid='' then
begin
Initone;
end;
mytime:=Now;
fpmm:=GetSHa1(password);
dataHEX:= LowerCase(StrToHexstr(data));
sign:=GetMd5(dataHEX+ fpmm);
Result:= GetMd5(DateToStr(mytime))+ sign+dataHEX;
end;
function GetSHa1(input:string):string;
var value:string;
begin
with Tidhashsha1.Create do
try
value := HashStringAsHex(input,IndyTextEncoding_UTF8);
finally
free;
end;
Result:=LowerCase(value);
end;
function GetMd5(s:string):string;
var Md5Encode: TIdHashMessageDigest5;
var value:string;
begin
try
Md5Encode:= TIdHashMessageDigest5.Create;
value:= Md5Encode.HashStringAsHex(UTF8Encode(s));
finally
Md5Encode.Free;
end;
Result:=LowerCase(value);
end;