unit TestFrm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StrUtils; type TfrmTest = class(TForm) btnTest: TButton; memLine: TMemo; procedure btnTestClick(Sender: TObject); private { Private declarations } public { Public declarations } end; //农行闪付接口 function CARDPAY(str: PChar; pin: PChar): Integer; stdcall; external 'sPosDll.dll'; var frmTest: TfrmTest; implementation {$R *.dfm} //--------------------------------------------------- //测试 //add by jzh 2014-09-30 //--------------------------------------------------- procedure TfrmTest.btnTestClick(Sender: TObject); var strin, strout: array [0..1024] of Char; in_str: String; //输入参数 out_str: String; //返回参数 flag_str: String; //返回结果 00 表示成功,ER表示失败 msg_str: String; //返回消息 交易失败的中文提示信息 money_str: String; //金额 poscode_str: String; //收银机编号 长度8位 usercode_str: String;//操作员编号 长度6位 放宽到 12位 dSaleMoney: double; //金额 begin try ZeroMemory(@strin, 1024); ZeroMemory(@strout, 1024); //消费=S01 //金额 1.5元, 转换为分 dSaleMoney:= 1.5 * 100; //交易金额 12位 右对齐,以分为单位,不足左补 0 money_str:= StringOfChar('0', 12 - Length(FloatToStr(dSaleMoney))) + FloatToStr(dSaleMoney); //收银机编号 长度8位 左对齐,不足右补空格 poscode_str:= '00000001'; poscode_str:= poscode_str + StringOfChar(' ', 8 - Length(poscode_str)); //操作员编号 长度12位 左对齐,不足右补空格 usercode_str:= '123456'; usercode_str:= usercode_str + StringOfChar(' ', 12 - Length(usercode_str)); in_str:= 'S01' + money_str + ' '+ poscode_str + ' '+ usercode_str; //格式转换 StrPCopy(strin, in_str); //调用闪付接口 CARDPAY(strin, strout); //返回值处理 out_str:= strout; flag_str:= LeftBStr(out_str, 2); msg_str:= MidBStr(out_str, 3, 40); if flag_str = '00' then begin //成功 end else begin //失败 end; memLine.Lines.Add(out_str); except end; end; end.