Exemple #1
0
        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"));
        }