欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Delphi对接快递单的md5函数

程序员文章站 2022-03-03 08:19:17
对接快递单每个快递商家的接口都不同,但基本大同小异,主要的算法都是md5 和Base64。一般提供的Demo都不会有Delphi的。其实md5和Base64Delpi都自带了。 base64一般都不会有问题,主要是md5,很多用Delphi对接的,主要的问题都是出在这里。下面我分享对接两个不同快递接 ......

对接快递单每个快递商家的接口都不同,但基本大同小异,主要的算法都是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,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对接其他的快递接口的时候,如果有问题用这两个的其中一个应该就没有问题