一下是文档中的结构体:
typedef struct
{
byte Track2[37]; /*二磁道信息 ,asc格式 最长37个字节 */
byte Track3[104]; /*三磁道信息 , asc 格式 最长 104个字节*/
byte Pwd[8]; /*加密后的密码 8个字节 */
byte Amount[12]; /* 金额, 分为单位000000000001 代表1分,不允许0金额,积分兑奖时为积分*/
byte Trace[6]; /* 终端流水,不是动态库的流水*/
byte OtherData[60]; /* 第三方关联数据 ,不足60位后补空格 见说明1*/
byte MerId[12];/*商户号*/
byte TerminalId[15];/*终端号*/
byte OrdTrace[6];/*原终端流水号,脱机批上送的时候为做脱机交易时调用 Bank_GetBankTrace取到的流水*/
byte OrgRetRefNo[8]; /* 原交易检索参考号 */
byte AccumulateCountAmount[108]; /* 仅结算交易有,格式见说明3*/
byte PrmVersionInfo[12+1]; /*参数版本号 ,初始值为010101000000*/
byte CAVersionInfo[8+1]; /* 公钥版本号.初始值01010100 */
}bank_input ;
以下是打包接口函数
2.3查余额交易打包接口
/*--------------------------------------------------------------------------
FUNCTION NAME: Bank_ Balance
DESCRIPTION: 查余额交易
PARAMETERS:
BANK_Input * p_Input 终端传给交易模块的磁道等交易信息
byte * PacketData 打好的数据包 ,8583格式
int *Datalen 打包的数据长度
输入要素:
Track2
Track3
Pwd
Amount
Trace
MerId
TerminalId
InputMode
PinInFlag
Field55
Field55len
SeqNum
BatchNum
PaymentCode // (有卡自助交易)付款代码,格式:14位YYYYMMDDHHMMSS+15位银行终端号,其余位右补空格填满40字节 ,必须按格式送
RETURN:
0 - success, 查余额请求包成功
-1 - fail 打包失败
NOTE:
*-------------------------------------------------------------------------*/
int Bank_Balance(BANK_Input * p_Input ,byte * PacketData , int *Datalen) ;
我的函数定义:
FUNCTION integer Bank_Balance( ref bank_input p_Input ,ref byte PacketData,ref long Datalen ) LIBRARY "ICBCTRansLib.dll" ALIAS FOR "Bank_Balance;Ansi"
bank_input做了一个结构体
,
报错如下:
几个疑问:
1、PB调用C的结构体直接传递PB的结构体就可以吗?
2、结构体定义中的定长byte类型,在PB中是否需要定义为byte数组?
3、结构体定义中有些类型为byte aaaa[12+1] 其中的【12+1】是什么意思?
4、究竟该如何调用这样的函数,苦求。