</pre><pre name="code" class="csharp">/// <summary>
/// 银联接口
/// </summary>
/// <param name="r"></param>
/// <param name="amt"></param>
private void ExcutePayYHK_YS(DataRow r, decimal amt)
{
try
{
//定长33字节 strin
//内容 格式 域长 描 述
//款台号 ASCII 10 不足右补空格(包括店号)
//操作员号 ASCII 10 不足右补空格
//交易类型标志 ASCII 1
//为C,表示是正数(消费交易);
//为I,表示是正数(查询余额交易);
//为D,表示是负数(取消交易);
//为R,表示是负数(退货交易);
//为0[零],表示(结帐、交易一览和重打票据),将出现菜单界面选择类型,如I接口不做,也可在此实现。
//金额 ASCII 12 以分为单位,不足左补‘0’, 如果交易金额为”000000000000”,程程序将根据交易类型标志完成相应的操作,可以完成结帐,重打票据,交易一览,余额查询等功能
//银石联银接口
StringBuilder strin = new StringBuilder(88, 88); //开内存
StringBuilder strout = new StringBuilder(33, 33);//开内存
string gt1 = PosPublic.Cache.CashNo.posNo;//收银机号
string gt2 = PosLoginer.CurrentUser.cash_no;//收银员
strin.Append(gt1.PadRight(10, ' '));//填充10位
strin.Append(gt2.PadRight(10, ' '));//填充10位
if (amt > 0)//判断是否退货交易
{
strin.Append("C");
}
else
{
strin.Append("R");
}
string amt1 = Math.Abs(amt).ToString("0.00");//设置交易金额
strin.Append(amt1.Replace(".", "").PadLeft(12, '0'));//填充为12位
int ii = CreditTrans(strin, strout);//执行交易
string ret = strout.ToString();//返回结果
if (ret.Substring(0, 2) == "00") //判断结果00为成功,其它结果停留在原界面
{
ExcutePayYHK(r,amt,1,ret.Substring(2,19)); //交易成功
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}