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.