📄 ecardxmlrpcut.pas
字号:
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 + -