private LR280Response Request(LR280Request r) { lock (_PortLocker) { try { byte[] buffer = new byte[1024]; int ret = LR280Interop.bankall_yt(Commport, GetBytes(r), buffer); if (ret == 0) { return(GetResponse(buffer)); } else if (ret == -1) { return(new LR280Response() { 返回码 = "-1", 错误说明 = "串口未打开" }); } return(new LR280Response() { 返回码 = ret.ToString(), 错误说明 = "调用函数出错" }); } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); return(new LR280Response() { 返回码 = "-2", 错误说明 = ex.Message }); } } }
/// <summary> /// 消费 /// </summary> public LR280Response Pay(string cardID, int money) { var r = new LR280Request() { 应用类型 = "01", 交易类型标志 = LR280PAYTYPE.消费, 卡号 = cardID, 金额 = money }; return(Request(r)); }
/// <summary> /// 读卡 /// </summary> /// <returns></returns> public LR280Response ReadCard() { var r = new LR280Request() { 应用类型 = "01", 交易类型标志 = LR280PAYTYPE.读卡 }; return(Request(r)); }
/// <summary> /// 结算 /// </summary> public LR280Response Clear() { var r = new LR280Request() { 应用类型 = "01", 交易类型标志 = LR280PAYTYPE.结算 }; return(Request(r)); }
/// <summary> /// 签到 /// </summary> public LR280Response CheckIn() { var r = new LR280Request() { 应用类型 = "01", 交易类型标志 = LR280PAYTYPE.签到 }; return(Request(r)); }
private byte[] GetBytes(LR280Request r) { string ret = ""; string space = ""; ret += string.IsNullOrEmpty(r.应用类型) ? "01" : r.应用类型; ret += string.IsNullOrEmpty(r.POS机号) ? space.PadRight(8) : r.POS机号.PadRight(8); ret += string.IsNullOrEmpty(r.POS员工号) ? space.PadRight(8) : r.POS员工号.PadRight(8); ret += r.交易类型标志; ret += r.金额.ToString().PadLeft(12, '0'); ret += string.IsNullOrEmpty(r.原交易日期) ? space.PadRight(8) : r.原交易日期; ret += string.IsNullOrEmpty(r.原交易参考号) ? space.PadRight(12) : r.原交易参考号; ret += string.IsNullOrEmpty(r.原凭证号) ? space.PadRight(6) : r.原凭证号; ret += r.LRC.ToString().PadLeft(3, '0'); ret += string.IsNullOrEmpty(r.授权码) ? space.PadRight(6) : r.授权码; ret += string.IsNullOrEmpty(r.卡号) ? space.PadRight(20) : r.卡号.PadRight(20); return(Encoding.GetEncoding("GB2312").GetBytes(ret)); }