Example #1
0
        public string Post([FromBody] string value)
        {
            if (string.IsNullOrWhiteSpace(value))
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return("{'error':'Bad Request'}");
            }
            var payData = JsonConvert.DeserializeObject <PaymentData>(value);

            if (payData == null)
            {
                Response.StatusCode = (int)HttpStatusCode.BadRequest;
                return("{'error':'Bad Request'}");
            }

            try
            {
                payData             = PaymentManagement.ProcessPayment(payData);
                Response.StatusCode = (int)HttpStatusCode.OK;
                return(payData.ToString());
            }
            catch
            {
                Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                return("{'error':'Server couldn't process payment'}");
            }
        }
        public async Task Should_Return__Exception_When_BillingUserIsNotAvailable()
        {
            var paymentManagement = new PaymentManagement(_unitOfWorkMock.Object, _emailSender.Object, _webHostEnvironment.Object);

            _unitOfWorkMock.Setup(m => m.PaymentRepository).Returns(_paymentRepositoryMock.Object);
            await Assert.ThrowsAsync <ArgumentNullException>(async() => await paymentManagement.GetBillingUser(1).ConfigureAwait(false));
        }
Example #3
0
        public void PrintSlip()
        {
            TestResultDto res = new TestResultDto()
            {
                VisitID = 76,
            };

            decimal payment        = 5000;
            bool    discount       = true;
            double  discountAmount = 0.2;

            PaymentManagement paymentmanager = new PaymentManagement();
            var pay = paymentmanager.CreateSlip(res, payment, discount, discountAmount);
        }
Example #4
0
        public ActionResult ChargeAccount(ChargeAccountModel model)
        {
            PaymentManagement payMgr = new PaymentManagement(User.Identity.GetUserId <int>());

            if (model.TransferType == 1)
            {
                AlipayConfig    config  = new AlipayConfig(System.IO.Path.Combine(Request.PhysicalApplicationPath, "Config\\AliPayConfig.xml"));
                Submit          submit  = new Submit(config);
                BPaymentHistory payment = null;
                try
                {
                    payment = payMgr.CreateChargeAccountPayment(User.Identity.GetUserId <int>(), model.Amount, model.TransferType);
                    if (payment == null)
                    {
                        ViewBag.Message = "充值失败";
                        return(View(model));
                    }
                }catch (Exception ex)
                {
                    ViewBag.Message = "充值失败";
                    return(View(model));
                }

                SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>();
                sParaTemp.Add("partner", config.Partner);
                sParaTemp.Add("seller_email", config.Email);
                sParaTemp.Add("_input_charset", config.Input_charset.ToLower());
                sParaTemp.Add("service", "create_direct_pay_by_user");
                sParaTemp.Add("payment_type", "1");
                sParaTemp.Add("notify_url", config.Notify_Url);
                sParaTemp.Add("return_url", config.Return_Url);
                sParaTemp.Add("out_trade_no", payment.Id.ToString());
                sParaTemp.Add("subject", string.Format("宽迈网络账户充值 {0} 元", model.Amount));
                sParaTemp.Add("total_fee", model.Amount.ToString("0.00"));
                sParaTemp.Add("body", string.Format("宽迈网络账户充值 {0} 元", model.Amount));
                sParaTemp.Add("show_url", "");
                sParaTemp.Add("seller_id", config.Partner);
                //sParaTemp.Add("anti_phishing_key", "");
                //sParaTemp.Add("exter_invoke_ip", "");

                //建立请求
                string sHtmlText = submit.BuildRequest(sParaTemp, "get", "确认");
                //Response.Write("ok");
                Response.Clear();
                Response.Charset = "utf-8";
                Response.Write(sHtmlText);
            }
            return(View(model));
        }
        public string GetCount(string Entity)
        {
            int result = 0;

            switch (Entity)
            {
            case "Dictionary":
                _dictionaryManagement = new DictionaryManagement();
                result = _dictionaryManagement.GetAllWords().Count();
                break;

            case "Practice":
                _practiceManagement = new PracticeManagement();
                result = _practiceManagement.GetAllPractices().Count();
                break;

            case "PracticeDetail":
                _practiceDetailManagement = new PracticeDetailManagement();
                result = _practiceDetailManagement.GetAllPracticeDetails().Count();
                break;

            case "User":
                _userManagement = new UserManagement();
                result          = _userManagement.GetAllUser().Count();
                break;

            case "WordPool":
                _wordPoolManagement = new WordPoolManagement();
                result = _wordPoolManagement.GetAllWordPools().Count();
                break;

            case "WordPoolDetail":
                _wordPoolDetailManagement = new WordPoolDetailManagement();
                result = _wordPoolDetailManagement.GetAllWordPoolDetail().Count();
                break;

            case "Payment":
                _paymentManagement = new PaymentManagement();
                result             = _paymentManagement.GetAllPayments().Count();
                break;

            default:
                break;
            }
            return(result.ToString());
        }
Example #6
0
        public ActionResult PayHistories()
        {
            PaymentManagement payMgr = new PaymentManagement(User.Identity.GetUserId <int>());
            int page     = 1;
            int pageSize = 30;

            int.TryParse(Request["page"], out page);
            page = page > 0 ? page : 1;
            List <BPaymentHistory>            payments = payMgr.FindPayments(0, User.Identity.GetUserId <int>(), 0, out total, true, pageSize, page);
            PageItemsResult <BPaymentHistory> result   = new PageItemsResult <BPaymentHistory>()
            {
                CurrentPage = page, Items = payments, PageSize = pageSize, TotalRecords = total, EnablePaging = true
            };

            KMBit.Grids.KMGrid <BPaymentHistory> grid = new Grids.KMGrid <BPaymentHistory>(result);
            return(View(grid));
        }
        public async Task Should_Return__Null_When_Saving_OrderAndOrderProducts_Failed()
        {
            //var orderedProductsDto = new OrderedProductsDto() { };

            var orderDto = new OrderDto()
            {
                UserId             = 16,
                Username           = "******",
                OrderedProductsDto = null
            };

            _paymentRepositoryMock.Setup(x => x.CompletePayment(orderDto, localDateTime));
            //await _paymentRepositoryMock.Object.AddAsync(null);

            _unitOfWorkMock.Setup(m => m.PaymentRepository).Returns(_paymentRepositoryMock.Object);

            var paymentManagement = new PaymentManagement(_unitOfWorkMock.Object, _emailSenderMock.Object, _webHostEnvironmentMock.Object);
            var result            = await paymentManagement.CompletePayment(orderDto);

            Assert.Null(result);
        }
        public async Task ShouldRetrieveBillingUser()
        {
            UserForRegisterDto userDto;

            {
                userDto = new UserForRegisterDto()
                {
                    FirstName = "Nemo",
                    LastName  = "Memo"
                };
            }

            _paymentRepositoryMock.Setup(x => x.GetBillingUser(1)).ReturnsAsync(userDto);
            _unitOfWorkMock.Setup(m => m.PaymentRepository).Returns(_paymentRepositoryMock.Object);

            var paymentManagement          = new PaymentManagement(_unitOfWorkMock.Object, _emailSender.Object, _webHostEnvironment.Object);
            UserForRegisterDto billingUser = await paymentManagement.GetBillingUser(1).ConfigureAwait(false);

            Assert.NotNull(billingUser);
            Assert.IsAssignableFrom <UserForRegisterDto>(billingUser);
            Assert.Equal("Nemo", billingUser.FirstName);
        }
Example #9
0
        public async Task <ActionResult> Buy(IFormCollection collection)
        {
            try
            {
                var buyModel = await PrepareTicketBuyViewModel(Guid.Parse(collection["evnt.Id"]));

                if (buyModel.evnt == null || buyModel.evnt.TotalAvailableTickets < 1)
                {
                    return(View("Error"));
                }
                var paymentData = new PaymentData()
                {
                    CardNumber   = collection["paymentData.CardNumber"],
                    NameOnCard   = collection["paymentData.NameOnCard"],
                    ValidMonth   = Int32.Parse(collection["paymentData.ValidMonth"]),
                    ValidYear    = Int32.Parse(collection["paymentData.ValidYear"]),
                    SecurityCode = collection["paymentData.SecurityCode"],
                    Value        = buyModel.evnt.Price
                };
                paymentData          = PaymentManagement.ProcessPayment(paymentData);
                buyModel.paymentData = paymentData;
                if (buyModel.user.Id == Guid.Empty)
                {
                    buyModel.user = await UserManager.GetOrCreateUserByAuthId(buyModel.user);
                }
                if (paymentData.TransactionSuccessful)
                {
                    var ticket = await TicketManager.IssueEventTicket(buyModel.evnt, buyModel.user, paymentData.ToString());

                    return(RedirectToAction("ViewTicket", new { id = ticket.Id }));
                }
                return(View("Error"));
            }
            catch
            {
                return(View("Error"));
            }
        }
Example #10
0
        // GET: PayBack此方法仅供直冲用户支付宝支付完成回调以及支付宝充值账户回调
        public ActionResult AlipayBack()
        {
            SortedDictionary <string, string> sPara = GetRequestGet();
            ChargeResult result = new ChargeResult()
            {
                Status = ChargeStatus.FAILED
            };

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                AlipayConfig config       = new AlipayConfig(System.IO.Path.Combine(Request.PhysicalApplicationPath, "Config\\AliPayConfig.xml"));
                Notify       aliNotify    = new Notify(config);
                bool         verifyResult = aliNotify.Verify(sPara, Request.QueryString["notify_id"], Request.QueryString["sign"]);

                if (verifyResult)//验证成功
                {
                    //本地系统支付号
                    string out_trade_no = Request.QueryString["out_trade_no"];
                    int    paymentId    = 0;
                    int.TryParse(out_trade_no, out paymentId);

                    //支付宝交易号
                    string trade_no = Request.QueryString["trade_no"];

                    //买家支付宝账户
                    string buyerAccount = Request.QueryString["buyer_email"];
                    //交易状态
                    string trade_status = Request.QueryString["trade_status"];
                    if (Request.QueryString["trade_status"] == "TRADE_FINISHED" || Request.QueryString["trade_status"] == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序
                        OrderManagement   orderMgr = new OrderManagement(0);
                        PaymentManagement payMgr   = new PaymentManagement(0);
                        if (paymentId > 0)
                        {
                            try
                            {
                                BPaymentHistory        payment  = null;
                                int                    total    = 0;
                                List <BPaymentHistory> payments = payMgr.FindPayments(paymentId, 0, 0, out total);
                                if (payments != null && payments.Count == 1)
                                {
                                    payment = payments[0];
                                    if (payment.PayType == 0)//直冲用户支付
                                    {
                                        result         = orderMgr.ProcessOrderAfterPaid(paymentId, trade_no, buyerAccount);
                                        result.Status  = ChargeStatus.SUCCEED;
                                        result.Message = "支付成功,已经提交到充值系统,请耐心等待...";
                                        return(Redirect("/Product/Charge?message=" + result.Message));
                                    }
                                    else if (payment.PayType == 1)//代理商用户充值账户
                                    {
                                        payMgr.UpdateAccountMoneyAfterPayment(payment);
                                        return(Redirect("/Agent/ChargeAccount?message=" + result.Message));
                                    }
                                }
                                else
                                {
                                    result.Status  = ChargeStatus.FAILED;
                                    result.Message = string.Format("支付号{0}在本系统中不存在", paymentId);
                                }
                            }
                            catch (KMBitException e)
                            {
                                result.Message = e.Message;
                                result.Status  = ChargeStatus.FAILED;
                            }
                            catch (Exception ex)
                            {
                                result.Message = ex.Message;
                                result.Status  = ChargeStatus.FAILED;
                            }
                        }
                    }
                    else
                    {
                        result.Message = string.Format("支付宝支付失败:{0}", Request.QueryString["trade_status"]);
                        result.Status  = ChargeStatus.FAILED;

                        //需要删除本地系统内的支付记录或者充值订单记录TBD
                    }
                }
                else//验证失败
                {
                    result.Message = "支付宝返回数据验证失败,请不要串改支付宝返回的数据";
                    result.Status  = ChargeStatus.FAILED;
                    //需要删除本地系统内的支付记录或者充值订单记录TBD
                }
            }
            else
            {
                result.Message = "支付宝没有返回任何数据,充值失败";
                result.Status  = ChargeStatus.FAILED;
            }
            return(Redirect("/Product/Charge?message=" + result.Message));
        }
Example #11
0
        public HttpResponseMessage WeChatPayBack()
        {
            var    resp      = new HttpResponseMessage(HttpStatusCode.OK);
            string returnXML = null;

            logger.Info("PaymentController.WeChatPayBack is being called by Wechat payment notify service.........................");
            Stream stream = Request.InputStream;

            if (stream != null)
            {
                StreamReader rs = null;
                try
                {
                    rs = new StreamReader(stream);
                    string result = rs.ReadToEnd();
                    if (!string.IsNullOrEmpty(result))
                    {
                        logger.Info("Below is the data posted by wechat payment service");
                        logger.Info(result);
                        string paraValues = WeChatPaymentWrapper.ParsePaymentNotifySignParas(result);
                        logger.Info(string.Format("{0} needs to be signed", paraValues));
                        BaseResponse          baseresponse = WeChatPaymentWrapper.ParsePaymentNotify(result);
                        PaymentNotifyResponse response     = null;
                        if (baseresponse != null)
                        {
                            response = (PaymentNotifyResponse)baseresponse;
                        }
                        logger.Info(string.Format("Signature sent by wechat is {0}", response.sign));
                        WeChatPayConfig config = PersistentValueManager.config;
                        paraValues += "&key=" + config.ShopSecret;
                        string sign = UrlSignUtil.GetMD5(paraValues).ToUpper();
                        logger.Info(string.Format("Signature caculated by localsystem is {0}", sign));
                        if (sign != response.sign)
                        {
                            logger.Error("Two signatures are different, the request was not sent by wechat payment system.");
                            returnXML    = "<xml><return_code>FAIL</return_code><return_msg>签名不正确</return_msg></xml>";
                            resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                        }
                        logger.Info("Sign verification passed");
                        OrderManagement   orderMgr = new OrderManagement(0);
                        PaymentManagement payMgr   = new PaymentManagement(0);
                        int paymentId = 0;
                        int.TryParse(response.out_trade_no, out paymentId);
                        if (paymentId > 0)
                        {
                            logger.Info("Going to process payment id" + paymentId);
                            ChargeResult cResult = null;
                            try
                            {
                                BPaymentHistory        payment  = null;
                                int                    total    = 0;
                                List <BPaymentHistory> payments = payMgr.FindUnProcessedOnLinePayments(paymentId, 0, 0, out total);
                                if (payments != null && payments.Count == 1)
                                {
                                    payment = payments[0];
                                    if (payment.PayType == 0)//直冲用户支付
                                    {
                                        logger.Info("OpenId:" + response.openid);
                                        logger.Info("OpenTradeNo:" + response.transaction_id);
                                        cResult = orderMgr.ProcessOrderAfterPaid(paymentId, response.transaction_id, response.openid);
                                        logger.Info(cResult.Status.ToString());
                                        logger.Info(cResult.Message);
                                        if (cResult.Status == ChargeStatus.SUCCEED)
                                        {
                                            logger.Info("The payment status has been successfully synced to local system.");
                                            returnXML    = "<xml><return_code>SUCCESS</return_code><return_msg>OK</return_msg></xml>";
                                            resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                                            return(resp);
                                        }
                                        else
                                        {
                                            logger.Error(cResult.Message);
                                            returnXML    = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>";
                                            resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                                            return(resp);
                                        }
                                    }
                                }
                                else
                                {
                                    logger.Warn("Didn't find payment by id:" + paymentId);
                                    returnXML    = "<xml><return_code>FAIL</return_code><return_msg>out_trade_no is wrong</return_msg></xml>";
                                    resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                                }
                            }
                            catch (KMBitException e)
                            {
                                returnXML    = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>";
                                resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                                logger.Error(e);
                            }
                            catch (Exception ex)
                            {
                                returnXML    = "<xml><return_code>FAIL</return_code><return_msg>unexpected error</return_msg></xml>";
                                resp.Content = new StringContent(returnXML, System.Text.Encoding.UTF8, "text/plain");
                                logger.Fatal(ex);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex);
                }
            }
            logger.Info("Done...................");
            return(resp);
        }
 public PaymentController()
 {
     _paymentManagement = new PaymentManagement();
 }