Delphi 农行闪付接口

Delphi 农行闪付接口

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.

 

发表回复

您的电子邮箱地址不会被公开。