예제 #1
0
        private void RechargeFail(OrderPaidRecharge orderPaidRecharge)
        {
            var iOrderPaidRechargeService = DIFactory.GetContainer().Resolve <IOrderPaidRechargeService>();

            orderPaidRecharge.Status = OrderPaidRechargeStatusOption.Fail.ToInt();
            iOrderPaidRechargeService.Save(orderPaidRecharge);

            //orderPaidRecharge.OrderPaid.Status = OrderPaidStatusOption.Cancel.ToInt();
            //Save(orderPaidRecharge.OrderPaid);
        }
예제 #2
0
        private void RechargeSuccess(OrderPaidRecharge orderPaidRecharge, string TransNumber, DateTime TransTime)
        {
            var iOrderPaidRechargeService = DIFactory.GetContainer().Resolve <IOrderPaidRechargeService>();
            var iMemberService            = DIFactory.GetContainer().Resolve <IMemberService>();

            orderPaidRecharge.OrderPaid.Status = OrderPaidStatusOption.RechargeSuccess.ToInt();
            orderPaidRecharge.OrderPaid.Project.ReceiveAmount += orderPaidRecharge.Amount;
            Save(orderPaidRecharge.OrderPaid);

            orderPaidRecharge.Status         = OrderPaidRechargeStatusOption.Success.ToInt();
            orderPaidRecharge.BankCardNumber = orderPaidRecharge.OrderPaid.Member.BankCardNumber;
            orderPaidRecharge.TransNumber    = TransNumber;
            orderPaidRecharge.TransTime      = TransTime;
            iOrderPaidRechargeService.Save(orderPaidRecharge);

            iMemberService.BalanceChange(orderPaidRecharge.OrderPaid.Member, orderPaidRecharge.Amount, MemberBalanceHistoryTypeOption.Recharge, (AccountBankOption)orderPaidRecharge.OrderPaid.Merchant.AccountBank, remark: orderPaidRecharge.SerialNumber);
        }
예제 #3
0
        /// <summary>
        /// 充值
        /// </summary>
        /// <returns></returns>
        public BTrsInResponse Recharge(OrderPaidRecharge orderPaidRecharge)
        {
            BTrsInRequest request = new BTrsInRequest();

            request.Head.ReqJnlNo = GuidHelper.GenUniqueId();

            request.Body.CoPatrnerJnlNo = orderPaidRecharge.SerialNumber;
            request.Body.TrsDate        = DateTime.Now.ToString("yyyyMMdd");
            request.Body.CifClientId    = orderPaidRecharge.OrderPaid.Member.ClientId;
            request.Body.Amount         = orderPaidRecharge.Amount.ToString();
            request.Body.TrsType        = "0";
            request.Body.Currency       = "CNY";
            request.Body.Remark         = "资金转入";
            request.Body.Reserve1       = "";
            request.Body.Reserve2       = "";
            request.Body.Reserve3       = "";

            var result = guangDaExec.Exec(request) as BTrsInResponse;

            return(result);
        }
예제 #4
0
        ///// <summary>
        ///// 充值
        ///// </summary>
        ///// <param name="request"></param>
        ///// <returns></returns>
        //public void Recharge(string orderNumber)
        //{
        //    var iOrderPaidService = DIFactory.GetContainer().Resolve<IOrderPaidService>();

        //    var orderPaid = iOrderPaidService.Get(t => t.OrderNumber == orderNumber.Trim());

        //    if (orderPaid == null)
        //        throw new APIException("订单号(" + orderNumber.Trim() + ")不存在");

        //    if (orderPaid.Status == OrderPaidStatusOption.Default.ToInt())
        //    {
        //        Recharge(orderPaid);
        //        Freeze(orderPaid);
        //    }
        //    else if (orderPaid.Status == OrderPaidStatusOption.PaySuccess.ToInt())
        //    {
        //        Freeze(orderPaid);
        //    }
        //    else
        //    {
        //        throw new APIException("当前状态(" + orderPaid.StatusDesc + ")无法操作");
        //    }

        //}

        ///// <summary>
        ///// 提现
        ///// </summary>
        ///// <param name="request"></param>
        ///// <returns></returns>
        //public void Withdraw(string orderNumber)
        //{
        //    var iOrderPaidService = DIFactory.GetContainer().Resolve<IOrderPaidService>();

        //    var orderPaid = iOrderPaidService.Get(t => t.OrderNumber == orderNumber.Trim());

        //    if (orderPaid == null)
        //        throw new APIException("订单号(" + orderNumber.Trim() + ")不存在");

        //    if (orderPaid.Status == OrderPaidStatusOption.FrozenSuccess.ToInt())
        //    {
        //        UnFreeze(orderPaid);
        //        Withdraw(orderPaid);
        //    }
        //    else if (orderPaid.Status == OrderPaidStatusOption.UnFrozenSuccess.ToInt())
        //    {
        //        Withdraw(orderPaid);
        //    }
        //    else
        //    {
        //        throw new APIException("当前状态(" + orderPaid.StatusDesc + ")无法操作");
        //    }
        //}


        public void Recharge(OrderPaid orderPaid)
        {
            if (orderPaid.Status != OrderPaidStatusOption.PaySuccess.ToInt())
            {
                throw new Exception("当前状态不可充值(" + orderPaid.StatusDesc + ")");
            }

            var iOrderPaidRechargeService = DIFactory.GetContainer().Resolve <IOrderPaidRechargeService>();
            var iGuangDaAPIService        = DIFactory.GetContainer().Resolve <IGuangDaAPIService>();

            //var iOrderPaidService = DIFactory.GetContainer().Resolve<IOrderPaidService>();

            if (orderPaid.TransactionAmount > orderPaid.Project.ResidueAmount)
            {
                throw new Exception("剩余认筹额度不足");
            }

            if (DateTime.Now > orderPaid.Project.Deadline)
            {
                throw new Exception("已过截止日期");
            }

            OrderPaidRecharge orderPaidRecharge = new OrderPaidRecharge();

            orderPaidRecharge.OrderPaidID = orderPaid.ID;
            orderPaidRecharge.Amount      = orderPaid.TransactionAmount;
            orderPaidRecharge.Status      = OrderPaidRechargeStatusOption.Wait.ToInt();

            iOrderPaidRechargeService.Save(orderPaidRecharge);

            orderPaid.Status = OrderPaidStatusOption.RechargeWait.ToInt();

            iOrderPaidRechargeService.Commit();

            var rechargeResponse = iGuangDaAPIService.Recharge(orderPaidRecharge);

            orderPaidRecharge.ResponseCode    = rechargeResponse.Head.ResCode;
            orderPaidRecharge.ResponseMessage = rechargeResponse.Head.ResMsg;

            if (rechargeResponse.IsOK)
            {
                RechargeSuccess(orderPaidRecharge, rechargeResponse.Body.EbankJnlNo, rechargeResponse.Body.CebTrsTime.ToDateTime("yyyy-MM-dd HH:mm:ss"));

                Commit();
            }
            else if (rechargeResponse.IsWait)
            {
                //orderPaid.Status = OrderPaidStatusOption.RechargeWait.ToInt();
                //Save(orderPaid);

                //orderPaidRecharge.Status = OrderPaidRechargeStatusOption.Wait.ToInt();
                //iOrderPaidRechargeService.Save(orderPaidRecharge);

                //Commit();

                throw new APIException("充值中,请查询确认(" + rechargeResponse.Head.ResMsg + ")");
            }
            else
            {
                RechargeFail(orderPaidRecharge);

                Commit();

                throw new APIException("充值失败:" + rechargeResponse.Head.ResMsg);
            }
        }