Delphi對接快遞單的md5函式
阿新 • • 發佈:2020-04-22
對接快遞單每個快遞商家的介面都不同,但基本大同小異,主要的演算法都是md5和Base64。一般提供的Demo都不會有Delphi的。其實md5和Base64Delpi都自帶了。
base64一般都不會有問題,主要是md5,很多用Delphi對接的,主要的問題都是出在這裡。下面我分享對接兩個不同快遞介面,用到的md5處理都不同。
procedure TForm1.SpeedButton1Click(Sender: TObject); var Str:String; M5Str,BaseStr:AnsiString; begin str:=StringReplace(Trim(Edit1.Text),‘ ‘,‘‘,[rfReplaceAll]); Memo1.Lines.Add(‘原文‘+str); M5Str:=THashMD5.GetHashString(Str); Memo1.Lines.Add(‘MD5:‘+M5Str); Memo1.Lines.Add(‘QDAC,URL:‘+qstring.UrlEncode(str,False,true)); Memo1.Lines.Add(‘TNET,URL:‘+TURLEncoding.URL.Encode(str)); BaseStr:=TNetEncoding.Base64.Encode(M5Str); Memo1.Lines.Add(‘Base64(MD5):‘+BaseStr); Memo1.Lines.Add(‘QDAC,URL(Base64(MD5)):‘+qstring.UrlEncode(BaseStr,True,true)); Memo1.Lines.Add(‘TNET,URL(Base64(MD5)):‘+TNetEncoding.URL.Encode(BaseStr)); end;
procedure TForm1.SpeedButton2Click(Sender: TObject); var md5: TIdHashMessageDigest5; base64: TIdEncoderMIME; sMD5:TIdBytes; Str:String; fStr:AnsiString; aMD5:TBytes; MStream,OStream:TMemoryStream; begin Memo1.Lines.Clear; MStream:=TMemoryStream.Create; OStream:=TMemoryStream.Create; str:=‘<order></order>123456‘; aMD5:=THashMD5.GetHashBytes(Str); var s:=TNetEncoding.Base64.EncodeBytesToString(aMD5); Memo1.Lines.Add(‘TNetEncoding.Base64.EncodeBytesToString:‘+s); Memo1.Lines.Add(‘UrlEncode:‘+qstring.UrlEncode(s,true)); md5 := TIdHashMessageDigest5.Create; base64 := TIdEncoderMIME.Create(nil); try base64.FillChar := ‘=‘; sMD5:=md5.HashString(str); Memo1.Lines.Add(base64.EncodeBytes(sMD5)); finally base64.Free; md5.Free; end;
如果你在用Delphi對接其他的快遞介面的時候,如果有問題用這兩個的其中一個應該就沒有問題