• Delphi XE7 用indy开发微信公众平台(3)- 验证消息真实性


    验证消息真实性

    原文链接:http://www.cnblogs.com/devinlee/p/4282546.html

    扫下方二维码关注,测试效果

    uses IdHashSHA, IdGlobal;
    
    function SHA1(Input: String): String;
    begin
      with TIdHashSHA1.Create do
        try
          Result := LowerCase(HashBytesAsHex(TidBytes(Bytesof(Input))));
        finally
          Free;
        end;
    end;
    
    function CheckSignature(ARequestInfo: TIdHTTPRequestInfo): boolean;
    var
      signature, timestamp, nonce, echostr: String;
      tmpstr: TStringList;
      temp: String;
    begin
      tmpstr := TStringList.Create;
      try
        signature := ARequestInfo.Params.Values['signature'];
        timestamp := ARequestInfo.Params.Values['timestamp'];
        nonce := ARequestInfo.Params.Values['nonce'];
    
        echostr := ARequestInfo.Params.Values['echostr'];
        tmpstr.Add(Token);
        tmpstr.Add(timestamp);
        tmpstr.Add(nonce);
        tmpstr.Sort;
        temp := StringReplace(tmpstr.text, #13#10, '', [rfReplaceAll]);
        Result := SHA1(temp) = signature;
      finally
        tmpstr.Free;
      end;
    end;
    
    procedure TForm1.IdHTTPServerCommandGet(AContext: TIdContext;
      ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
    begin
      if CheckSignature(ARequestInfo) then
        if ARequestInfo.Params.Values['echostr'] <> '' then
        begin
          AResponseInfo.ContentType := 'text/html; charset=UTF-8';
          AResponseInfo.ContentText := ARequestInfo.Params.Values['echostr'];
        end;
    end;
  • 相关阅读:
    avalon随笔
    ms-attr-data-real-gold="{{page_data[0].gold}}" 属性付真
    jQuery 快捷操作
    jQuery 属性操作
    jQuery 表单域选中选择器
    jQuery 层次选择器
    jQuery 基本选择器
    jQuery 基本使用
    jQuery 引入多个库文件冲突
    BOM window对象方法
  • 原文地址:https://www.cnblogs.com/devinlee/p/4282546.html
Copyright © 2020-2023  润新知