private async Task <IActionResult> RedirectToPayment() { var userType = GetUserType(); var isBusiness = userType != "user"; var PaymentReference = Guid.NewGuid().ToString(); var mark = GetCartUserMark(); int?accountId = null; if (isBusiness) { accountId = _ctx.AccountUsers.FirstOrDefault(x => x.UserId == mark.userId && x.Active).AccountId; } var order = await _createOrder.Do(new CreateOrder.Request { UserMark = mark, PayementReference = PaymentReference, AccountId = accountId }); var redirectUrl = _payment.GetRedirectLink(new OneOffPayment.Request { BuyerEmail = GetUserEmail(), //PaymentReference = PaymentReference, PaymentReference = order.OrderNumber, TotalValue = order.SubTotal }); return(Redirect(redirectUrl)); }
public async Task <IActionResult> OnPostRequestPayment( [FromServices] OneOffPayment payment, [FromServices] CreateOrder createOrder) { var PaymentReference = Guid.NewGuid().ToString(); var order = await createOrder.Do(new CreateOrder.Request { UserMark = GetCartUserMark(), PayementReference = PaymentReference, }); var totalValue = order.OrderProducts.Sum(x => x.Product.Price * x.Qty); var redirectUrl = payment.GetRedirectLink(new OneOffPayment.Request { BuyerEmail = GetUserEmail(), PaymentReference = PaymentReference, TotalValue = totalValue ?? 0m }); var client = new SmtpClient(_config["Email:SMTP"], Convert.ToInt32(_config["Email:PORT"])) { UseDefaultCredentials = false, Credentials = new NetworkCredential(_config["Email:Username"], _config["Email:Password"]) }; var mailMessage = new MailMessage { To = { Input.PayerEmail }, Subject = "Order Subject", Body = $@" <h1>Order Approval</h1> <a href=""{redirectUrl}"">Approve Order Here</a> ", From = new MailAddress(_config["Email:Username"]), IsBodyHtml = true }; await client.SendMailAsync(mailMessage); return(RedirectToPage("/Checkout/Confirmation")); }