/// <summary> /// 签退 /// </summary> /// <returns></returns> public static Dictionary <string, ResultData> signOut() { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(3, "000000"); data.Add(11, "000006"); data.Add(12, getHHMMSS()); data.Add(41, "pos00001"); data.Add(42, "000000000000257"); data.Add(60, "22000003000"); data.Add(63, "01"); byte[] sendData = EncryptWT.EncryptData("0820", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0400"))); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); if (result.Length > 0) { return(lk.analysis(result)); //发送数据 } else { return(null); } }
/// <summary> /// ZMK密钥下载 /// </summary> /// <returns></returns> public static string downKey() { try { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(3, "060000"); data.Add(11, "000002"); data.Add(41, SysConfigHelper.readerNode("ClientNo")); data.Add(42, SysConfigHelper.readerNode("ShopNo")); data.Add(62, "83D7BB2A87F20D7B0F60A4B45E6FD36A"); data.Add(63, "01"); AnalysisBaseWT wt = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, EncryptWT.EncryptData("0800", "6000000000", EncryptWT.encryptLKL(data, null))); //发送数据 Dictionary <string, ResultData> rd = wt.analysis(result); if (rd["39"].value.Trim().Equals("00")) { return(validateKey(rd["62"].value.Trim(), matherKey)); } return(null); } catch (Exception e) { throw new WtException(WtExceptionCode.Sys.NETWORK, e.Message); } }
/// <summary> /// 冲正 /// </summary> /// <returns></returns> public static Dictionary <string, ResultData> correct(WintopPayParam param) { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); data.Add(3, "000000"); data.Add(4, countPrice(param.price)); data.Add(11, SysBLL.padLeft(getOrder(), 6)); data.Add(25, "00"); data.Add(39, "17"); data.Add(41, ConfigurationManager.AppSettings["ClientNo"]); data.Add(42, ConfigurationManager.AppSettings["ShopNo"]); data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(63, "01"); byte[] sendData = EncryptWT.EncryptData("0400", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0400"))); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); if (result.Length > 0) { return(lk.analysis(result)); //发送数据 } else { return(null); } }
/// <summary> /// 消费 /// </summary> /// <param name="mackey"></param> /// <returns></returns> public static Dictionary <string, ResultData> pay(WintopPayParam param) { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); //万通卡号 data.Add(3, "000000"); data.Add(4, countPrice(param.price)); //交易金额 data.Add(11, SysBLL.padLeft(getOrder(), 6)); //POS终端交易流水 data.Add(25, "00"); data.Add(41, SysConfigHelper.readerNode("ClientNo")); //终端代码 data.Add(42, SysConfigHelper.readerNode("ShopNo")); //商户代码 data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(62, getPin(param.pwd, param.wintopNo));//明文,卡号 data.Add(63, "01"); byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0200"))); //Console.WriteLine(); string datasss = BCDUtil.byteArrToString(sendData); //Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); if (result.Length > 0) { return(lk.analysis(result)); //发送数据 } else { return(null); } }
/// <summary> /// 签退 /// </summary> /// <returns></returns> public static Dictionary <string, ResultData> signOut() { try { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(3, "000000"); data.Add(11, "000006"); data.Add(12, getHHMMSS()); data.Add(41, SysConfigHelper.readerNode("ClientNo")); data.Add(42, SysConfigHelper.readerNode("ShopNo")); data.Add(60, "22000003000"); data.Add(63, "01"); byte[] sendData = EncryptWT.EncryptData("0820", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0400"))); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); return(lk.analysis(result)); //发送数据 } catch (WtException e) { throw e; } catch (Exception e) { throw new WtException(WtExceptionCode.Sys.WT_SIGN_OUT, e.Message); } }
/// <summary> /// 消费 /// </summary> /// <param name="mackey"></param> /// <returns></returns> public static Dictionary <string, string> pay(WintopPayParam param) { Dictionary <string, string> map = new Dictionary <string, string>(); Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); //万通卡号 data.Add(3, "000000"); data.Add(4, countPrice(param.price)); //交易金额 data.Add(11, param.orderNo); //POS终端交易流水 data.Add(25, "00"); data.Add(41, ConfigurationManager.AppSettings["ClientNo"]); //终端代码 data.Add(42, ConfigurationManager.AppSettings["ShopNo"]); //商户代码 data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(62, param.ExpressPwd);//明文,卡号 data.Add(63, "01"); byte[] countMacData = EncryptWT.countMacData("0200", EncryptWT.encryptLKL(data, null)); byte[] mac = PasswordBLL.GetMac(2, countMacData); byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, mac)); //Console.WriteLine(); //Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); if (result.Length > 0) { string recode = Wanton.handleDataMac(lk.analysis(result)); //发送数据 //发送的数据 string sendStr = BCDUtil.byteArrToString(sendData); //接收的数据 string receiveStr = BCDUtil.byteArrToString(result); map.Add("recode", recode); map.Add("sendStr", sendStr); map.Add("receiveStr", receiveStr); map.Add("ShopNo", param.orderNo + "|" + data[41] + "|" + data[42]); return(map); } else { return(null); } }
/// <summary> /// ZMK密钥下载 /// </summary> /// <returns></returns> public static void downKey(string shopNo, string clientNo) { Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(3, "060000"); data.Add(11, "000002"); data.Add(41, clientNo); //"JC000021" data.Add(42, shopNo); //"000000000000106" data.Add(62, "83D7BB2A87F20D7B0F60A4B45E6FD36A"); data.Add(63, "01"); AnalysisBaseWT wt = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, EncryptWT.EncryptData("0800", "6000000000", EncryptWT.encryptLKL(data, null))); //发送数据 Dictionary <string, ResultData> rd = wt.analysis(result); sonKey = validateKey("7f7518be4f02736f52f357d5b5ca63e786e1ffdd", matherKey); printInfo(rd); }
public static Dictionary <string, string> refund(string _2, string _4, string _59, TradeRecord tradeRecord, string secondShopNo) { string theOrderNo = Wanton.GetOrderNo(); string termailNo = SysConfigHelper.readerNode("ClientNo"); string shopNo = SysConfigHelper.readerNode("ShopNo"); tradeRecord.amount = _4; tradeRecord.batch_no = "" + "|" + SysBLL.getMMDDHHMMSSTime() + "|" + _2; tradeRecord.order_no = theOrderNo; tradeRecord.termail_no = termailNo; tradeRecord.lkl_wt_shop_no = shopNo; Dictionary <string, string> map = new Dictionary <string, string>(); Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, _2); data.Add(3, "200000"); data.Add(4, wtPayUtils.ConvertMoney(_4)); data.Add(11, theOrderNo); map.Add("11", data[11]); data.Add(22, "051"); data.Add(25, "00"); data.Add(41, termailNo); map.Add("41", data[41]); data.Add(42, shopNo); data.Add(48, "TC_ONE|Y00000001|" + secondShopNo); //data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(59, _59); data.Add(60, "22000003000"); data.Add(63, "01"); byte[] countMacData = EncryptWT.countMacData("0200", EncryptWT.encryptLKL(data, null)); byte[] mac = PasswordBLL.GetMac(2, countMacData); byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, mac)); //byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0200"))); Console.WriteLine(); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); //接收的数据 string receiveStr1 = BCDUtil.byteArrToString(result); log.Write("tuikuan的数据:" + receiveStr1); Dictionary <string, ResultData> ret = lk.analysis(result); string recode = Wanton.handleDataMac(ret); //发送数据 if ("00".Equals(recode)) { tradeRecord.lkl_wt_state = "1"; tradeRecord.order_state = "1"; } else { tradeRecord.lkl_wt_state = "2"; tradeRecord.order_state = "0"; } //发送的数据 string sendStr = BCDUtil.byteArrToString(sendData); //接收的数据 string receiveStr = BCDUtil.byteArrToString(result); map.Add("recode", recode); map.Add("sendStr", sendStr); map.Add("receiveStr", receiveStr); map.Add("ShopNo", data[11] + "|" + data[41] + "|" + data[42]); map.Add("39", ret["39"].value); log.Write("万通卡退款交易返回" + ret["39"].value); string serialStr = JsonConvert.SerializeObject(map); tradeRecord.data_id = serialStr; TradeBLL.SendOrderRefundRecord(tradeRecord); return(map); //if (result.Length > 0) //{ // return lk.analysis(result); //发送数据 //} //else //{ // return null; //} }
/// <summary> /// 冲正 /// </summary> /// <returns></returns> public static Dictionary <string, string> correct(WintopPayParam param, string secondShopNo) { try { string termailNo = SysConfigHelper.readerNode("ClientNo"); Dictionary <string, string> map = new Dictionary <string, string>(); Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); data.Add(3, "000000"); data.Add(4, wtPayUtils.ConvertMoney(param.price)); data.Add(11, param.orderNo); map.Add("11", data[11]); data.Add(25, "00"); data.Add(39, "17"); data.Add(41, termailNo); map.Add("41", data[41]); data.Add(42, SysConfigHelper.readerNode("ShopNo")); data.Add(48, "TC_ONE|Y00000001|" + secondShopNo); //data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(63, "01"); byte[] countMacData = EncryptWT.countMacData("0400", EncryptWT.encryptLKL(data, null)); byte[] mac = PasswordBLL.GetMac(2, countMacData); byte[] sendData = EncryptWT.EncryptData("0400", "6000000000", EncryptWT.encryptLKL(data, mac)); //发送的数据 string sendStr = BCDUtil.byteArrToString(sendData); log.Write("发送冲正的数据:" + sendStr); //byte[] sendData = EncryptWT.EncryptData("0400", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0400"))); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); string recode = Wanton.handleDataMac(lk.analysis(result)); //发送数据 //接收的数据 string receiveStr = BCDUtil.byteArrToString(result); log.Write("接收冲正的数据:" + result); map.Add("recode", recode); map.Add("sendStr", sendStr); map.Add("receiveStr", receiveStr); map.Add("ShopNo", param.orderNo + "|" + data[41] + "|" + data[42]); map.Add("money", param.price); string serialStr = JsonConvert.SerializeObject(map); return(map); } catch (Exception e) { return(new Dictionary <string, string>()); } }
public static Dictionary <string, string> pay(WintopPayParam param, string secondShopNo) { try { Dictionary <string, string> map = new Dictionary <string, string>(); Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); //万通卡号 data.Add(3, "000000"); data.Add(4, wtPayUtils.ConvertMoney(param.price)); //交易金额 data.Add(11, param.orderNo); //POS终端交易流水 map.Add("11", data[11]); data.Add(25, "00"); data.Add(41, SysConfigHelper.readerNode("ClientNo"));//终端代码 map.Add("41", data[41]); data.Add(42, SysConfigHelper.readerNode("ShopNo")); //商户代码 data.Add(48, "TC_ONE|Y00000001|" + secondShopNo); //data.Add(48, "TC_ONE|Y00000001|"+secondShopNo); //data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(62, param.pwd);//明文,卡号 data.Add(63, "01"); byte[] countMacData = EncryptWT.countMacData("0200", EncryptWT.encryptLKL(data, null)); byte[] mac = PasswordBLL.GetMac(2, countMacData); byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, mac)); //发送的数据 string sendStr = BCDUtil.byteArrToString(sendData); log.Write("发送支付的数据:" + sendStr); //Console.WriteLine(); //Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); //接收的数据 string receiveStr = BCDUtil.byteArrToString(result); log.Write("接收支付的数据:" + receiveStr); Dictionary <string, ResultData> ret = lk.analysis(result); string recode = Wanton.handleDataMac(ret); //发送数据 log.Write("支付返回码:" + recode); if ("00".Equals(recode)) { } else if ("A0".Equals(recode)) { DeviceState.SendState("333333"); } else { } map.Add("recode", recode); map.Add("sendStr", sendStr); map.Add("receiveStr", receiveStr); map.Add("ShopNo", param.orderNo + "|" + data[41] + "|" + data[42]); map.Add("money", param.price); if (ret.ContainsKey("2")) { map.Add("2", ret["2"].value); } map.Add("4", param.price); if (ret.ContainsKey("59")) { map.Add("59", ret["59"].value); map.Add("cloudOrderNo", ret["59"].value); } string serialStr = JsonConvert.SerializeObject(map); return(map); } catch (WtException e) { throw e; } catch (Exception e) { throw new WtException(WtExceptionCode.Bus.WT_PAY, e.Message); } }
/// <summary> /// 退款 /// </summary> /// <returns></returns> public static Dictionary <string, string> refund(WintopPayParam param, string _59, string secondShopNo) { string theOrderNo = Wanton.GetOrderNo(); string termailNo = SysConfigHelper.readerNode("ClientNo"); Dictionary <string, string> map = new Dictionary <string, string>(); Dictionary <int, string> data = new Dictionary <int, string>(); data.Add(2, param.wintopNo); data.Add(3, "200000"); data.Add(4, wtPayUtils.ConvertMoney(param.price)); data.Add(11, getHHMMSS()); map.Add("11", data[11]); data.Add(22, "051"); data.Add(25, "00"); data.Add(41, SysConfigHelper.readerNode("ClientNo")); map.Add("41", data[41]); data.Add(42, SysConfigHelper.readerNode("ShopNo")); data.Add(48, "TC_ONE|Y00000001|" + secondShopNo); //data.Add(48, "Y00000001"); data.Add(49, "156"); data.Add(59, _59); data.Add(60, "22000003000"); data.Add(63, "01"); byte[] countMacData = EncryptWT.countMacData("0200", EncryptWT.encryptLKL(data, null)); byte[] mac = PasswordBLL.GetMac(2, countMacData); byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, mac)); string sendStr = BCDUtil.byteArrToString(sendData); log.Write("发送退款的数据:" + sendStr); //byte[] sendData = EncryptWT.EncryptData("0200", "6000000000", EncryptWT.encryptLKL(data, calculateMac(data, "0200"))); Console.WriteLine(); Console.WriteLine(BCDUtil.byteArrToString(sendData)); AnalysisBaseWT lk = new AnalysisBaseWT(); byte[] result = Client(LakalaIp, LakalaPort, sendData); //result string resultstr = BCDUtil.byteArrToString(result); log.Write("接收退款的数据:" + resultstr); string recode = Wanton.handleDataMac(lk.analysis(result)); //发送数据 log.Write("万通退款结果" + recode); string serialStr = JsonConvert.SerializeObject(map); //接收的数据 string receiveStr = BCDUtil.byteArrToString(result); map.Add("recode", recode); map.Add("sendStr", sendStr); map.Add("receiveStr", receiveStr); map.Add("ShopNo", param.orderNo + "|" + data[41] + "|" + data[42]); map.Add("money", param.price); return(map); //if (result.Length > 0) //{ // return lk.analysis(result); //发送数据 //} //else //{ // return null; //} }