예제 #1
0
        private TransResult Unpack8583()
        {
            var ret = TransResult.E_RECV_FAIL;

            try
            {
                var RecvData = new byte[recvLen - headLen];
                RecvData = UnpackHead();

                byte[] len8583 = new byte[2];
                Array.Copy(RecvData, len8583, 2);
                int lenthOf8583 = len8583[0] * 256 + len8583[1];
                if (lenthOf8583 != 0)
                {
                    var RecvBytes = new byte[RecvData.Length - headLen_8583]; //包体数据
                    Array.Copy(RecvData, headLen_8583, RecvBytes, 0, RecvData.Length - headLen_8583);
                    var headBytes = new byte[headLen_8583];
                    Array.Copy(RecvData, headBytes, headLen_8583); //包头数据
                    //解包
                    ret        = TransResult.E_UNPACKET_FAIL;
                    FrontBytes = headBytes;
                    HandleFrontBytes(headBytes); //根据报文头来判断是否要下载密钥
                    RecvPackage.ParseBuffer(RecvBytes, SendPackage.ExistValue(0));


                    var nRet = UnPackFix();
                    if (!mInvokeSetResult)
                    {
                        throw new Exception("should invoke SetRespInfo() in UnPackFix()");
                    }
                    mInvokeSetResult = false;
                    ret = nRet ? TransResult.E_SUCC : TransResult.E_HOST_FAIL;
                    CLog.Info(RecvPackage.GetLogText());
                }
                else
                {
                    ret = TransResult.E_HOST_FAIL;
                }
                if (recvLen > headLen + lenthOf8583 + 2)
                {
                    byte[] jsonByte = new byte[recvLen - headLen - lenthOf8583 - 2];
                    Array.Copy(RecvData, lenthOf8583 + 2, jsonByte, 0, jsonByte.Length);
                    var strJson = Encoding.Default.GetString(jsonByte);
                    RecvPackageJson = JsonConvert.DeserializeObject <CommunicateInfo>(strJson);
                }
            }
            catch (Exception ex)
            {
                Log.Error(GetType().Name, ex);
            }
            return(ret);
        }
예제 #2
0
        private TransResult UnPackBankBag()
        {
            var  ret  = TransResult.E_UNPACKET_FAIL;
            bool bret = false;
            bool wret;

            //string key = "V9Zhy1tiOOoy/tDQHIlYFVfWYctbYjjq";
            try
            {
                var RecvData = new byte[recvLen - headLen];
                RecvData = UnpackHead();
                byte[] bbaglen = new byte[4];
                Array.Copy(RecvData, 0, bbaglen, 0, 4);
                int ibaglen = int.Parse(Encoding.GetEncoding("GBK").GetString(bbaglen).Replace("\0", ""));

                if (ibaglen != 0)
                {
                    byte[] btemprecv = new byte[ibaglen];
                    Array.Copy(RecvData, 4, btemprecv, 0, ibaglen);
                    string tempstr  = Encoding.GetEncoding("GBK").GetString(btemprecv);
                    byte[] recvdata = Convert.FromBase64String(tempstr);
                    int    nibaglen = (recvdata.Length % 8 == 0 ? recvdata.Length : recvdata.Length + 8 - recvdata.Length % 8);
                    byte[] Bagdata  = new byte[nibaglen];
                    Array.Copy(recvdata, Bagdata, nibaglen);
                    byte[] bkey        = Convert.FromBase64String(mainKey);
                    byte[] bagrecvdata = Encrypt.DES3Decrypt(Bagdata, bkey);
                    RecvBagData = Encoding.GetEncoding("GBK").GetString(bagrecvdata);
                    Log.Info("Unpackdata:" + RecvBagData);
                    bret = Unpackbagfix();
                    ret  = bret ? TransResult.E_SUCC : TransResult.E_HOST_FAIL;
                }
                if (recvLen > headLen + ibaglen + 4)
                {
                    wret = false;
                    byte[] jsonByte = new byte[recvLen - headLen - ibaglen - 4];
                    Array.Copy(RecvData, ibaglen + 4, jsonByte, 0, jsonByte.Length);
                    var strJson = Encoding.GetEncoding("GBK").GetString(jsonByte);
                    Log.Info("strJson:" + strJson);
                    RecvPackageJson = JsonConvert.DeserializeObject <CommunicateInfo>(strJson);
                    wret            = UnpackJsonfix();
                    ret             = bret && wret ? TransResult.E_SUCC : TransResult.E_HOST_FAIL;
                }
            }
            catch (Exception ex)
            {
                ret = TransResult.E_UNPACKET_FAIL;
                Log.Error(GetType().Name, ex);
            }

            //Encrypt.DES3Decrypt(recvStr, keyStr);
            return(ret);
        }
예제 #3
0
        private TransResult UnpackJson()
        {
            var ret = TransResult.E_UNPACKET_FAIL;

            try
            {
                var RecvData = new byte[recvLen - headLen];
                RecvData = UnpackHead();
                var strJson = Encoding.Default.GetString(RecvData);
                //string str = "{\"returnMessage\": \"Query Succeed/ QueryErrStr:数据查询错误…..\",\"rowCount\": \"10\",\"DS\": [{\"寄件日期\": \"2015-01-02\",\"目的地\": \" xxxxx \", \"收件人\": \"xxxxx\",\"运单号\": \" xxxxx xxxxxx\",\"运单号校验码\": \" xxxxx xxxxxx \",\"货号\": \"xxx-xx\",\"代收金额\" : \"20\",\"代扣运费\": \"130\", \"手续费\": \"10\",\"实际应付\": \"150\",\"实际应付校验码\": \"xxxxxxxx\",\"银行\" : \"xxxxx\",\"行卡号\": \"xxxxxxxx\",\"银行卡号校验码\": \"xxxxxx\",\"账户姓名\": \"xxxxxxx\"}]}";

                CommunicateInfo recv = RecvPackageJson as CommunicateInfo;
                if (recv != null)
                {
                    RecvPackageJson = JsonConvert.DeserializeObject <CommunicateInfo>(strJson);
                    ret             = TransResult.E_SUCC;
                }
                else
                {
                    if (string.Compare(strJson, "00") == 0)
                    {
                        //确认返回成功
                        ret = TransResult.E_SUCC;
                    }
                    else
                    {
                        Log.Error("TransVerify Error msg:" + strJson);
                        return(ret);
                    }
                }

                Log.Debug("Unpack Json Succ!");
            }
            catch (Exception ex)
            {
                Log.Error("Unpack Json Error!", ex);
            }

            return(ret);
        }
예제 #4
0
 protected PFBankPay()
 {
     RecvPackageJson = new CommunicateInfo();
     //ListPFWL = new List<WlInfo>();
 }