private void PayProcess()
        {
            CCreditcardPay        pay    = new CCreditcardPay();
            TransResult           result = SyncTransaction(pay);
            CReverse_YAPaymentPay rev    = new CReverse_YAPaymentPay(pay);

            if (result == TransResult.E_SUCC)
            {
                if (bisICCard)
                {
                    int state = emv.EMVTransEnd(entity.RecvField55, entity.RecvField38);
                    if (state != 0)
                    {
                        rev.Reason = "06";
                        SyncTransaction(rev);
                        ShowMessageAndGotoMain("IC确认错误,交易失败,请重试");
                        return;
                    }
                }

                if (ReceiptPrinter.ExistError())
                {
                    StartActivity("信用卡还款打印成功");
                }
                else
                {
                    StartActivity("信用卡还款交易成功");
                }
            }
            else if (result == TransResult.E_HOST_FAIL)
            {
                if (pay.ReturnCode == "51")
                {
                    ShowMessageAndGotoMain("温馨提示:抱歉!交易失败!" + "\n" +
                                           "您卡内余额不足!");
                }
                else if (pay.ReturnCode == "55")
                {
                    StartActivity("信用卡还款密码错误");
                }
                else
                {
                    ShowMessageAndGotoMain(pay.ReturnCode + "-" +
                                           pay.ReturnMessage);
                }
            }
            else if (result == TransResult.E_RECV_FAIL)
            {
                rev.Reason = "98";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("交易超时,请重试");
                return;
            }
            else if (result == TransResult.E_CHECK_FAIL)
            {
                rev.Reason = "96";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("系统异常,请稍后再试");
                return;
            }
            else
            {
                ShowMessageAndGotoMain("交易失败,请重试");
            }

            rev.ClearReverseFile();//在不发冲正文件的情况下,才清除冲正文件
        }
Exemple #2
0
        protected override void Packet()
        {
            bool bIsIC = false;

            if (CommonData.UserCardType == UserBankCardType.ICCard ||
                CommonData.UserCardType == UserBankCardType.IcMagCard)
            {
                bIsIC = true;
            }

            SendPackage.SetString(0, "0200");
            if (!string.IsNullOrEmpty(CommonData.BankCardNum) && CommonData.BankCardNum.Length != 0)
            {
                SendPackage.SetString(2, CommonData.BankCardNum);
            }
            SendPackage.SetString(3, "190000");
            SendPackage.SetString(4, Utility.AmountToString(CommonData.Amount.ToString()));
            PayTraceNo = GetTraceNo();
            SendPackage.SetString(11, PayTraceNo);
            if (!string.IsNullOrEmpty(CommonData.BankCardExpDate) && CommonData.BankCardExpDate.Length != 0)//卡有效期
            {
                SendPackage.SetString(14, CommonData.BankCardExpDate);
            }
            if (bIsIC)//22
            {
                SendPackage.SetString(22, "051");
            }
            else
            {
                SendPackage.SetString(22, "021");
            }
            if (!string.IsNullOrEmpty(CommonData.BankCardSeqNum) && CommonData.BankCardSeqNum.Length != 0)//卡序列号
            {
                SendPackage.SetString(23, CommonData.BankCardSeqNum);
            }
            SendPackage.SetString(25, "81"); //服务点条件代码
            SendPackage.SetString(26, "06");
            if (!string.IsNullOrEmpty(CommonData.Track2) && CommonData.Track2.Length != 0)
            {
                SendPackage.SetString(35, CommonData.Track2.Replace('=', 'D'));
            }
            if (!string.IsNullOrEmpty(CommonData.Track3) && CommonData.Track3.Length != 0)
            {
                SendPackage.SetString(36, CommonData.Track3.Replace('=', 'D'));
            }
            SendPackage.SetArrayData(48, PacketField48());
            SendPackage.SetString(49, "156");
            SendPackage.SetArrayData(52, Utility.str2Bcd(CommonData.BankPassWord));
            switch (DType)
            {
            case DesType.Des:
                SendPackage.SetString(53, "2000000000000000");
                break;

            case DesType.TripleDes:
                SendPackage.SetString(53, "2600000000000000");
                break;
            }
            //55
            if (SendField55 != null && SendField55.Length != 0)
            {
                SendPackage.SetArrayData(55, SendField55, 0, SendField55.Length);
            }
            if (bIsIC)
            {
                SendPackage.SetString(60, "00" + GetBatchNo() + "00050");
            }
            else
            {
                SendPackage.SetString(60, "00" + GetBatchNo() + "000");
            }

            //创建冲正文件 98 96 06
            CReverse_YAPaymentPay cr = new CReverse_YAPaymentPay(this);

            cr.CreateReverseFile("98");
        }
        private void PayProcess()
        {
            CMobileRecharge       mobileRecharge = new CMobileRecharge();
            TransResult           retPay         = SyncTransaction(mobileRecharge);
            CReverse_YAPaymentPay rev            = new CReverse_YAPaymentPay(mobileRecharge);

            //Test
            //retPay = TransResult.E_RECV_FAIL;
            if (retPay == TransResult.E_SUCC)
            {
                if (bisICCard)
                {
                    int state = emv.EMVTransEnd(entity.RecvField55, entity.RecvField38);
                    if (state != 0)
                    {
                        rev.Reason = "06";
                        SyncTransaction(rev);
                        ShowMessageAndGotoMain("IC确认错误,交易失败,请重试");
                        return;
                    }
                }

                rev.ClearReverseFile();//有做冲正直接return,否则最后要清除冲正文件
                if (ReceiptPrinter.ExistError())
                {
                    StartActivity("手机充值打印成功");
                }
                else
                {
                    StartActivity("手机充值交易成功");
                }

                #region no use
                //缴费成功,发起确认交易
                //CMobileConfirm mobileConfirm = new CMobileConfirm();
                //TransResult retConfirm = SyncTransaction(mobileConfirm);
                //if (retConfirm == TransResult.E_SUCC)
                //{

                //}
                //else if (retConfirm == TransResult.E_HOST_FAIL)
                //{
                //    if (mobileConfirm.ReturnCode.ToUpper() == "ET")
                //    {
                //        //冲正
                //        CReverse_QMPay rev = new CReverse_QMPay(mobileRecharge);
                //        rev.Reason = "06";
                //        SyncTransaction(rev);
                //        ShowMessageAndGotoMain("交易失败");
                //    }
                //    else
                //    {
                //        ShowPringPage();
                //    }
                //}
                //else if (retConfirm == TransResult.E_RECV_FAIL)
                //{
                //    //检查查询交易返回结果
                //    CMobileQuery mobileQuery = new CMobileQuery();
                //    TransResult retQuery = TransResult.E_SUCC;
                //    for (int iPer = 0; iPer < 3; iPer++)
                //    {
                //        retQuery = SyncTransaction(mobileQuery);
                //        if (retQuery == TransResult.E_SUCC)
                //        {
                //            break;
                //        }
                //        else if (retQuery == TransResult.E_HOST_FAIL)
                //        {
                //            if (mobileQuery.ReturnCode.ToUpper() == "ET")
                //            {
                //                //冲正
                //                CReverse_QMPay rev = new CReverse_QMPay(mobileRecharge);
                //                rev.Reason = "06";
                //                SyncTransaction(rev);
                //            }
                //            break;
                //        }
                //        else if (retQuery != TransResult.E_RECV_FAIL)
                //        {
                //            break;
                //        }
                //    }

                //    if (retQuery == TransResult.E_SUCC)
                //    {
                //        ShowPringPage();
                //    }
                //    else if (retQuery == TransResult.E_HOST_FAIL)
                //    {
                //        if (mobileQuery.ReturnCode.ToUpper() == "ET")
                //        {
                //            ShowMessageAndGotoMain("交易失败");
                //        }
                //        else
                //        {
                //            ShowPringPage();
                //        }
                //    }
                //    else //查询交易其他情况
                //    {
                //        ShowPringPage();
                //    }
                //}
                //else //确认交易其他情况
                //{
                //    ShowPringPage();
                //}
                #endregion
            }
            else if (retPay == TransResult.E_HOST_FAIL)
            {
                if (mobileRecharge.ReturnCode == "51")
                {
                    ShowMessageAndGotoMain("温馨提示:抱歉!交易失败!" + "\n" +
                                           "您卡内余额不足!");
                }
                else if (mobileRecharge.ReturnCode == "55")
                {
                    StartActivity("手机充值密码错误");
                }
                else
                {
                    ShowMessageAndGotoMain(mobileRecharge.ReturnCode + "-" +
                                           mobileRecharge.ReturnMessage);
                }
            }
            else if (retPay == TransResult.E_RECV_FAIL)
            {
                rev.Reason = "98";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("交易失败");
                return;
            }
            else if (retPay == TransResult.E_CHECK_FAIL)
            {
                rev.Reason = "96";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("系统异常,请稍后再试");
                return;
            }
            else
            {
                ShowMessageAndGotoMain("交易失败");
            }
            rev.ClearReverseFile();//有做冲正直接return,否则最后要清除冲正文件
        }
        private void PayProcess()
        {
            TransAccessFactory db = new TransAccessFactory();
            int nTryConfirm       = 3;
            CPetroPayBeingPay     PetroPayBeingPay = new CPetroPayBeingPay();
            TransResult           retPay           = SyncTransaction(PetroPayBeingPay);
            CReverse_YAPaymentPay rev = new CReverse_YAPaymentPay(PetroPayBeingPay);

            if (retPay == TransResult.E_SUCC)
            {
                if (bisICCard)
                {
                    int state = emv.EMVTransEnd(YAPaymentPay.RecvField55, YAPaymentPay.RecvField38);
                    if (state != 0)
                    {
                        rev.Reason = "06";
                        SyncTransaction(rev);
                        ShowMessageAndGotoMain("IC确认错误,交易失败,请重试");
                        return;
                    }
                }

                if (GlobalAppData.GetInstance().AccessSwitch)
                {
                    db.PayTraceNo = YAPaymentPay.PayTraceNo;
                    ResponseData rd = new YAPaymentPay().GetResponseData();
                    db.InsertTransLog(rd);
                }
CONFIRM:
                //缴费成功,发起确认销账
                CPetroPayBillConfirm billConfirm = new CPetroPayBillConfirm();
                TransResult retConfirm = SyncTransaction(billConfirm);
                //Test
                //retConfirm = TransResult.E_RECV_FAIL;
                //PetroChinaPay.PayTraceNo = "111111";
                //PetroChinaPay.PayReferenceNo = "123456789012345678";
                if (retConfirm != TransResult.E_SUCC &&
                    retConfirm != TransResult.E_RECV_FAIL)
                {
                    if (GlobalAppData.GetInstance().AccessSwitch)
                    {
                        db.UpdateTransLog(EnumConfirmFlag.E_REVERSE);
                    }

                    //失败但不超时才发冲正
                    if (bisICCard)
                    {
                        rev.SetField55Value(emv.EMVInfo.EndField55, emv.EMVInfo.EndField55.Length);//处理之后的55域
                    }
                    rev.Reason = "06";
                    SyncTransaction(rev);
                    ShowMessageAndGotoMain("交易超时,请重试");
                    return;
                }
                else if (retConfirm == TransResult.E_RECV_FAIL)
                {
                    //超时无响应循环发送确认报文
                    if (nTryConfirm != 0)
                    {
                        nTryConfirm--;
                        goto CONFIRM;
                    }

                    //销账失败
                    //操作成功,后台发生异常,核销失败,请不要继续缴费,
                    //等待系统自动处理。次日下午4:00以后再行查看缴费情况
                    Log.Warn("银行卡扣款成功,但销账失败,需人工处理CardNo=" + CommonData.BankCardNum +
                             " 凭证号=" + YAPaymentPay.PayTraceNo + " 系统参考号=" + YAPaymentPay.PayReferenceNo);
                    rev.ClearReverseFile();//清除冲正文件
                    StartActivity("中石油支付销账失败");

                    //string failPath = Path.Combine(Application.StartupPath, "PetroConfirmFailInfo.dat");
                    //ConfirmFailInfo info = new ConfirmFailInfo();
                    //info.BankCardNo = CommonData.BankCardNum;
                    //info.PayTraceNo = PetroChinaPay.PayTraceNo;
                    //info.PayReferenceNo = PetroChinaPay.PayReferenceNo;
                    //List<ConfirmFailInfo> list = new List<ConfirmFailInfo>();
                    //list.Add(info);
                    //Utility.SaveToFile<ConfirmFailInfo>(failPath, list);
                }
                else
                {
                    if (GlobalAppData.GetInstance().AccessSwitch)
                    {
                        db.UpdateTransLog(EnumConfirmFlag.E_SUCC);
                    }

                    rev.ClearReverseFile();//清除冲正文件
                    if (ReceiptPrinter.ExistError())
                    {
                        StartActivity("中石油支付交易完成");
                    }
                    else
                    {
                        StartActivity("中石油支付交易成功是否打印");
                    }
                }
            }
            else if (retPay == TransResult.E_HOST_FAIL)
            {
                if (PetroPayBeingPay.ReturnCode == "51")
                {
                    ShowMessageAndGotoMain("温馨提示:抱歉!交易失败!" + "\n" +
                                           "您卡内余额不足!");
                }
                else if (PetroPayBeingPay.ReturnCode == "55")
                {
                    StartActivity("中石油支付密码错误");
                }
                else
                {
                    ShowMessageAndGotoMain(PetroPayBeingPay.ReturnCode + "-" + PetroPayBeingPay.ReturnMessage);
                }
            }
            else if (retPay == TransResult.E_RECV_FAIL)
            {
                rev.Reason = "98";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("交易超时,请重试");
                return;
            }
            else
            {
                ShowMessageAndGotoMain("交易失败,请重试");
            }

            rev.ClearReverseFile();//在不发冲正文件的情况下,才清除冲正文件
        }
        private void PayProcess()
        {
            int nTryConfirm = 3;
            CYATrafficPoliceBeingPay beingPay = new CYATrafficPoliceBeingPay();
            TransResult           retPay      = SyncTransaction(beingPay);
            CReverse_YAPaymentPay rev         = new CReverse_YAPaymentPay(beingPay);

            //Test
            //retPay = TransResult.E_RECV_FAIL;
            if (retPay == TransResult.E_SUCC)
            {
                if (bisICCard)
                {
                    int state = emv.EMVTransEnd(m_entity.RecvField55, m_entity.RecvField38);
                    if (state != 0)
                    {
                        rev.Reason = "06";
                        SyncTransaction(rev);
                        ShowMessageAndGotoMain("IC确认错误,交易失败,请重试");
                        return;
                    }
                }

                rev.ClearReverseFile();//缴费成功之后进入销账流程,不在发冲正报文,清除冲正文件

CONFIRM:
                //缴费成功,发起确认销账
                CYATrafficPoliceBillConfirm billConfirm = new CYATrafficPoliceBillConfirm();
                TransResult retConfirm = SyncTransaction(billConfirm);
                //Test
                //TransResult retConfirm = TransResult.E_RECV_FAIL;

                if (retConfirm != TransResult.E_SUCC)
                {
                    //超时无响应循环发送确认报文
                    if (nTryConfirm != 0 && (retConfirm == TransResult.E_RECV_FAIL || billConfirm.ReturnCode == "E1"))
                    {
                        nTryConfirm--;
                        goto CONFIRM;
                    }

                    //销账失败
                    //缴费确认未成功,48小时内系统会自动处理,请耐心等待,不要重复缴费
                    string temp0 = "银行卡扣款成功,但销账失败,需要手动销账CardNo={0},凭证号={1},系统参考号={2},缴费流水号={3}";
                    string temp  = string.Format(temp0, CommonData.BankCardNum, m_entity.PayTraceNo, m_entity.PayReferenceNo, m_entity.TPPayFlowNo);
                    Log.Warn(temp);

                    StartActivity("雅安交警罚没销账失败");
                }
                else
                {
                    string temp = string.Format("销账成功,决定书编号:{0},销账流水:{1},缴纳金额:{2}", m_entity.TPDecisionNo, m_entity.TPConfirmTraceNo, CommonData.Amount.ToString("#######0.00"));
                    Log.Info(temp);
                    if (ReceiptPrinter.ExistError())
                    {
                        StartActivity("雅安交警罚没交易完成");
                    }
                    else
                    {
                        StartActivity("雅安交警罚没交易成功是否打印");
                    }
                }
            }
            else if (retPay == TransResult.E_HOST_FAIL)
            {
                if (beingPay.ReturnCode == "51")
                {
                    ShowMessageAndGotoMain("温馨提示:抱歉!交易失败!" + "\n" +
                                           "您卡内余额不足!");
                }
                else if (beingPay.ReturnCode == "55")
                {
                    StartActivity("雅安支付密码错误");
                }
                else
                {
                    ShowMessageAndGotoMain(beingPay.ReturnCode + "-" + beingPay.ReturnMessage);
                }
            }
            else if (retPay == TransResult.E_RECV_FAIL)
            {
                rev.Reason = "98";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("交易超时,请重试");
                return;
            }
            else if (retPay == TransResult.E_UNPACKET_FAIL)
            {
                rev.Reason = "96";
                SyncTransaction(rev);
                ShowMessageAndGotoMain("系统异常,请稍后再试");
                return;
            }
            else
            {
                ShowMessageAndGotoMain("交易失败,请重试");
            }

            rev.ClearReverseFile();//在不发冲正文件的情况下,才清除冲正文件
        }
Exemple #6
0
        protected override void Packet()
        {
            bool bIsIC = false;

            if (CommonData.UserCardType == UserBankCardType.ICCard ||
                CommonData.UserCardType == UserBankCardType.IcMagCard)
            {
                bIsIC = true;
            }

            SendPackage.SetString(0, "0200");
            SendPackage.SetString(3, "190000");
            SendPackage.SetString(4, Utility.AmountToString(PayEntity.TotalAmount.ToString()));
            PayEntity.PayTraceNo = GetTraceNo();
            SendPackage.SetString(11, PayEntity.PayTraceNo);
            if (!string.IsNullOrEmpty(CommonData.BankCardExpDate) && CommonData.BankCardExpDate.Length != 0)//卡有效期
            {
                SendPackage.SetString(14, CommonData.BankCardExpDate);
            }
            if (bIsIC)//22
            {
                SendPackage.SetString(22, "051");
            }
            else
            {
                SendPackage.SetString(22, "021");
            }
            if (!string.IsNullOrEmpty(CommonData.BankCardSeqNum) && CommonData.BankCardSeqNum.Length != 0)//卡序列号
            {
                SendPackage.SetString(23, CommonData.BankCardSeqNum);
            }
            SendPackage.SetString(25, "00");
            SendPackage.SetString(26, "06");
            if (!string.IsNullOrEmpty(CommonData.Track2) && CommonData.Track2.Length != 0)
            {
                SendPackage.SetString(35, CommonData.Track2.Replace('=', 'D'));
            }
            if (!string.IsNullOrEmpty(CommonData.Track3))
            {
                SendPackage.SetString(36, CommonData.Track3.Replace('=', 'D'));
            }
            //SendPackage.SetString(48, "PA" + "08" + PayEntity.CreditcardNum.PadRight(20, ' ') + "N" + "0".PadRight(11, '0') + "#");
            string f48 = "PA" + "08" + PayEntity.CreditcardNum.PadRight(20, ' ') + "N" + "0".PadRight(11, '0') + "#";

            SendPackage.SetArrayData(48, Encoding.Default.GetBytes(f48));
            SendPackage.SetArrayData(52, Utility.str2Bcd(CommonData.BankPassWord));
            SendPackage.SetString(49, "156");
            switch (DType)
            {
            case DesType.Des:
                SendPackage.SetString(53, "2000000000000000");
                break;

            case DesType.TripleDes:
                SendPackage.SetString(53, "2600000000000000");
                break;
            }
            //55
            if (bIsIC && PayEntity.SendField55 != null && PayEntity.SendField55.Length != 0)
            {
                SendPackage.SetArrayData(55, PayEntity.SendField55);
            }
            if (PayEntity.UseICCard)
            {
                SendPackage.SetString(60, "00" + GetBatchNo() + "00050");
            }
            else
            {
                SendPackage.SetString(60, "00" + GetBatchNo() + "000");
            }

            //创建冲正文件 98 96 06
            CReverse_YAPaymentPay cr = new CReverse_YAPaymentPay(this);

            cr.CreateReverseFile("98");
        }