⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecardxmlrpcut.pas

📁 delphi的XMPRPC通讯例子
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit ECardXMLRPCUt;

interface
uses
  Windows,SysUtils,Classes,XMLWorksRPC,Dialogs,SystemInfoUt;

type
  TECardXMLRPC = class
  private

    function EC_Init:Boolean;

    { Private declarations }
  public
//---------------------------------初始化---------------------------------------------//
    EC_SID,EC_ID,EC_Name,EC_Point,EC_Action:string;
    EC_Request: TXMLRPCMethodCall;
    EC_Response: TXMLRPCMethodResponse;
    constructor Create(aServerURL:string='');
    function Init:Boolean;
    function exmlClose:Boolean;
//-----------------------------------------------------------------------------------//
//------------------------------------接口-------------------------------------------//
    function Login(IdValue,Password:string; var IdType:array of string):Boolean;
    function Logout:Boolean;
    procedure SetPerformanceCallBackPoint(FProc:Pointer);
    function token_validate(itemId:String ; t_SID:String;var ResultCode: array of string):Boolean;
    function token_activate(t_SID:String;var ResultCode: array of string):Boolean;
    function GetSysDict(DictType:string;var ResultCode: array of string):Boolean;
    function ReadUser(UserType,UserID:string;var Reg_UserInfo:TSIU_CL_UserInfo;var ResultCode: array of string):Boolean;
    function ChargeCredit(UserType,UserID,money,item,memo:string ;var ResultCode: array of string):Boolean;
    function ChargeGetBalance(var UserType,UserID:string ;var ResultCode: array of string):Boolean;
    function GetSysTime(var SysTime:String;var ResultCode: array of string):Boolean;
    function GateCheck(UserType,UserID:string;var gate_UserInfo:TSIU_CL_UserInfo;var ResultCode: array of string):Boolean;

//-----------------------------------------------------------------------------------//

//-----------------------------------编解码------------------------------------------//
    procedure GetResultUID(InfoXml:string;var uid:string);
    procedure RegUserEncode(var Reg_UserInfo:TSIU_CL_UserInfo;var InfoXml:string);
    procedure PrintEncode(var InfoXml:string;tmpXml:array of string;i:integer);
    procedure RegUserDecode( InfoXml:string;var Reg_UserInfo:TSIU_CL_UserInfo);
    procedure UserInfoDecode(InfoXml:string);
    procedure ChargeEncode(xmlinfo:string;var rc:array of string);
    function SysDictDecode(InfoXml,DictType:string;var ResultCode:array of string):BooLean;
    function DecodeResultErr(ResultCode:string;var ResultInfo:array of string):Boolean;
    function SysVrDecode(DecodeType:string;var XmlInfo:string):Boolean;
    function PhotoEncode(photo:String):string ;
//-----------------------------------------------------------------------------------//
    { Public declarations }
  end;

var
  ECardXMLRPC: TECardXMLRPC;

implementation
uses
ECardTokenXMLRPCUt,ECardUtilXMLRPCUt,ECardUserXMLRPCUt,ECardChargeXMLRPCUt,ConstValueUt;

//---------------------------------初始化---------------------------------------------//
function TECardXMLRPC.Init:Boolean;
begin
  Result:=false;

  if EC_Init=false then
     exit;

  if ECardTokenXMLRPC.ECT_Init=false then
     exit;

  if ECardUserXMLRPC.ECU_Init=false then
     exit;

  if ECardUtilXMLRPC.ECUT_Init=false then
     exit;

  if ECardChargeXMLRPC.ECC_Init=false then
    exit;

  EC_Point:=SIU_RD_SystemServerConfig.GateItem;
  EC_Action:=SIU_RD_SystemServerConfig.GateAction;
  Result:=true;
end;

constructor TECardXMLRPC.Create(aServerURL:string);
begin

  EC_Request := TXMLRPCMethodCall.Create;
  EC_Response := TXMLRPCMethodResponse.Create;
  ECardUserXMLRPC:=TECardUserXMLRPC.Create;
  ECardTokenXMLRPC:=TECardTokenXMLRPC.Create;
  ECardUtilXMLRPC:=TECardUtilXMLRPC.Create;
  ECardChargeXMLRPC:=TECardChargeXMLRPC.Create;
  
end;

function TECardXMLRPC.exmlClose: Boolean;
begin


  ECardUserXMLRPC.Free;
  ECardTokenXMLRPC.Free;
  ECardUtilXMLRPC.Free;
  ECardChargeXMLRPC.Free;
  EC_Request.Free;
  EC_Response.Free;
end;

function TECardXMLRPC.EC_Init:Boolean;
begin

  Result:=false;

  Result:=true;

end;
//-----------------------------------------------------------------------------------//

//------------------------------------接口-------------------------------------------//
procedure TECardXMLRPC.SetPerformanceCallBackPoint(FProc:Pointer);
begin
   
end;

function TECardXMLRPC.Login(IdValue,Password:string; var IdType:array of string):Boolean;
begin

 try
  Result:=ECardUserXMLRPC.ECT_Login(IdValue,Password,IdType);
 except
   Result:=false;
 end;

end;

function TECardXMLRPC.Logout:Boolean;
begin

   try
    Result:=ECardUserXMLRPC.ECT_Logout;
   except
    Result:=false;
   end;

end;

function TECardXMLRPC.ReadUser(UserType,UserID:string;var Reg_UserInfo:TSIU_CL_UserInfo;var ResultCode: array of string):Boolean;
begin

   try
    Result:=ECardUserXMLRPC.ECT_ReadUser(UserType,UserID,Reg_UserInfo,ResultCode);
   except
    Result:=false;
   end;

end;

function TECardXMLRPC.GetSysDict(DictType:string;var ResultCode: array of string):Boolean;
begin

   try
    Result:=ECardUtilXMLRPC.ECUT_GetSysDict(DictType,ResultCode);
   except
    Result:=false;
   end;

end;

function TECardXMLRPC.GetSysTime(var SysTime:String;var ResultCode: array of string):Boolean;
begin

  try
   Result:=ECardUtilXMLRPC.ECUT_GetSysTime(SysTime,ResultCode);
  except
   Result:=false;
  end;

end;

function TECardXMLRPC.ChargeCredit(UserType,UserID,money,item,memo:string ;var ResultCode: array of string):Boolean;
begin

  try
   Result:=ECardChargeXMLRPC.ECC_ChargeCredit(UserType,UserID,money,item,memo,ResultCode);
  except
   Result:=false;
  end;

end;

function TECardXMLRPC.ChargeGetBalance(var UserType,UserID:string ;var ResultCode: array of string):Boolean;
begin

  try
   Result:=ECardChargeXMLRPC.ECC_ChargeGetBalance(UserType,UserID,ResultCode);
  except
   Result:=false;
  end;

end;

function TECardXMLRPC.token_activate(t_SID: String;
  var ResultCode: array of string): Boolean;
begin

  try
   Result:= ECardTokenXMLRPC.token_activate(t_SID,ResultCode);
  except
   Result:=false;
  end;

end;

function TECardXMLRPC.token_validate(itemId, t_SID: String;
  var ResultCode: array of string): Boolean;
begin

  try
   Result:= ECardTokenXMLRPC.token_validate(itemId, t_SID,ResultCode);
  except
   Result:=false;
  end;

end;

function TECardXMLRPC.GateCheck(UserType, UserID: string;var gate_UserInfo: TSIU_CL_UserInfo;var ResultCode: array of string): Boolean;
begin

  try
   Result:= ECardTokenXMLRPC.GateCheck(UserType, UserID,gate_UserInfo,ResultCode);
  except
   Result:=false;
  end;

end;
//-----------------------------------------------------------------------------------//

//------------------------------------解码-------------------------------------------//
procedure TECardXMLRPC.ChargeEncode(xmlinfo:string;var rc:array of string);
var
i:integer;
struct:TXMLRPCStruct;
item:TXMLRPCStructMember;
begin
  struct:=TXMLRPCStruct.Create;
  struct.XML:=XmlInfo;
  XmlInfo:='';
  for i:= 0 to struct.Count-1 do
  begin
    item:=( struct.Items[i] as TXMLRPCStructMember);
    if item.name = 'user'  then
      rc[0]:=item.AsString;
    if item.name = 'money'  then
      rc[1]:=floattostr(item.AsDouble);
  end;
  struct.Free;
end;

procedure TECardXMLRPC.GetResultUID(InfoXml:string;var uid:string);
var
i:integer;
struct:TXMLRPCStruct;
item:TXMLRPCStructMember;
begin
  struct:=TXMLRPCStruct.Create;
  struct.XML:=InfoXml;
  InfoXml:='';
  for i:= 0 to struct.Count-1 do
  begin
    item:=( struct.Items[i] as TXMLRPCStructMember);
    if item.name = 'user_id'  then
      uid:=item.AsString;
  end;
  struct.Free;
end;

function TECardXMLRPC.SysVrDecode(DecodeType:string;var XmlInfo:string):Boolean;
var
i:integer;
struct:TXMLRPCStruct;
item:TXMLRPCStructMember;
begin
  struct:=TXMLRPCStruct.Create;
  struct.XML:=XmlInfo;
  XmlInfo:='';
  for i:= 0 to struct.Count-1 do
  begin
    item:=( struct.Items[i] as TXMLRPCStructMember);
    if item.name = DecodeType  then
     begin

       if DecodeType='time'  then
          XmlInfo :=DateTimeTOStr(item.AsDateTime)
       else
          XmlInfo :=item.AsString;

     end;
  end;
  struct.Free;
  Result:=true;
end;



function TECardXMLRPC.DecodeResultErr(ResultCode:string;var ResultInfo:array of string):Boolean;
var
i,j,k:integer;
struct,struct1:TXMLRPCStruct;
item,item1:TXMLRPCStructMember;

begin
    struct:=TXMLRPCStruct.Create;
    struct.XML:=ResultCode;
    j:=0;
  for i:= 0 to struct.Count-1 do
  begin
    item:=( struct.Items[i] as TXMLRPCStructMember);

    if item.name = 'result'  then
       begin
        j:=1;
        struct1:=TXMLRPCStruct.Create;
        struct1.XML:=item.value;
        for k:=0 to struct1.Count-1 do
        begin
          item1:=( struct1.Items[k] as TXMLRPCStructMember);
          if item1.name = 'code' then
            ResultInfo[0]:=inttostr(item1.AsInteger);
          if item1.name = 'text' then
            ResultInfo[1]:=item1.AsString;
        end;
        struct1.Free;
       end;

  end;

 struct.Free;

 if j<>1 then
  begin
   ResultInfo[0]:=inttostr(CT_SVR_ERR_NORESULT);
   ResultInfo[1]:=CT_SVR_ERRCONTENT[CT_SVR_ERR_NORESULT];
  end;

 Result:=true;
end;

procedure TECardXMLRPC.UserInfoDecode(InfoXml:string);
var
i:integer;
struct:TXMLRPCStruct;
item:TXMLRPCStructMember;
TmpStr:string;

begin
  struct:=TXMLRPCStruct.Create;
  struct.XML:=InfoXml;
  SIU_CL_OPInfo.SIU_CL_OI_CleanInfo;
  for i:= 0 to struct.Count-1 do
  begin
    item:=( struct.Items[i] as TXMLRPCStructMember);
    if item.name = 'sid'  then
       SIU_RD_OPSerInfo.sid:=item.AsString;

    if item.name = 'uid'  then
       SIU_RD_OPSerInfo.uid:=item.AsString;
    if item.name = 'group'  then
       SIU_RD_OPSerInfo.group:=item.AsString;
    if item.name = 'item'  then
    begin
       TmpStr:=item.AsString;
  //     SIU_SVR_SWITCHITEM.SIU_SVR_SWITCHBINHEX(2,SIU_RD_OPSerInfo.item,TmpStr);
    end;
    if item.name = 'status'  then
       SIU_RD_OPSerInfo.status:=item.AsString;
  end;

  struct.Free;
end;

function TECardXMLRPC.SysDictDecode(InfoXml,DictType:string;var ResultCode:array of string):Boolean;
var
i,j,k,m,n:integer;
struct,struct1:TXMLRPCStruct;
item,item1:TXMLRPCStructMember;
TmpStr:string;

begin
  Result:=false;


  struct:=TXMLRPCStruct.Create;
  struct.XML:=InfoXml;
  j:=struct.Count-1;

  k:=SIU_SVR_ArrayInfo.SIU_SVR_GetArray(DictType,CT_SVR_DICT);
  if (k<0) or (j=0) then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -