用户登录
用户注册

分享至

Delphi对接快递单的md5函数

  • 作者: 战无不胜oooo
  • 来源: 51数据库
  • 2021-06-29

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

软件
前端设计
程序设计
Java相关