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)); }
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); }
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()); }
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); }
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")); } }
// 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)); }
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(); }