Beispiel #1
0
        public JsonResult GeneratePaykey(GenericPaymentRequest request)
        {
            try
            {
                var randomKey   = Utils.GenerateRandomID(10);
                var cashPayment = new GenericPayments();
                cashPayment.Total         = request.total;
                cashPayment.InvoiceNo     = request.invoiceno;
                cashPayment.Currency      = request.currency;
                cashPayment.PayKey        = randomKey;
                cashPayment.Gateway       = request.gateway;
                cashPayment.Hashkey       = request.hashkey;
                cashPayment.PaymentStatus = EnumPaymentStatus.Unpaid.GetHashCode();

                // Save details to db
                var db = new DbContext();
                db.SetDetails(randomKey, cashPayment);

                return(Json(randomKey, JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                Logger.GetInstance().Write(ex, "Failed during GeneratePayKey");
                return(null);
            }
        }
        /// <summary>
        /// TO USE PAYPAL REST API:
        /// CONFIG YOUR CLIENTID AND CLIENTSECREAT IN THE WEB.CONFIG
        /// MORE INFORMATION: https://github.com/paypal/PayPal-NET-SDK/
        /// </summary>
        /// <returns></returns>

        public async Task <ActionResult> Index(string paykey)
        {
            var marketplaceUrl = "http://localhost";

            if (Request.UrlReferrer != null)
            {
                marketplaceUrl = Request.UrlReferrer.ToString();
            }
            var uri = new Uri(marketplaceUrl);

            marketplaceUrl = uri.Scheme + Uri.SchemeDelimiter + uri.Authority;
            var db = new DbContext();

            try
            {
                var details = db.GetDetails(paykey);
                if (details != null)
                {
                    // Update details for the valid record
                    PaymentDetails vm = new PaymentDetails();
                    vm.CashKey  = details.PayKey;
                    vm.Currency = details.Currency;
                    decimal total;
                    if (!decimal.TryParse(details.Total, out total))
                    {
                        total = 0m;
                    }
                    vm.Total = total;
                    vm.Note  = "";

                    // Call Arcadier api to get the details
                    using (var httpClient = new HttpClient())
                    {
                        var url = marketplaceUrl + "/user/checkout/order-details" + "?gateway=" + details.Gateway + "&invoiceNo=" + details.InvoiceNo + "&paykey=" + paykey + "&hashkey=" + details.Hashkey;
                        HttpResponseMessage tokenResponse = await httpClient.GetAsync(url);

                        tokenResponse.EnsureSuccessStatusCode();
                        string text = await tokenResponse.Content.ReadAsStringAsync();

                        // Set the details to db
                        GenericPayments response = JsonConvert.DeserializeObject <GenericPayments>(text);
                        details.PayeeInfos     = response.PayeeInfos;
                        details.MarketplaceUrl = marketplaceUrl;
                        db.SetDetails(paykey, details);
                    }

                    return(View("Index", vm));
                }
            }
            catch (Exception ex)
            {
                ViewBag.ErrorMessage = ex.Message;
            }

            return(View("Error"));
        }
Beispiel #3
0
        public bool SetDetails(string name, GenericPayments details)
        {
            if (string.IsNullOrEmpty(name))
            {
                return(false);
            }
            try
            {
                string dbpath = string.Format("{0}/{1}.json", ConfigCode.GetInstance().DatabasePath, name);
                string output = JsonConvert.SerializeObject(details, Newtonsoft.Json.Formatting.None);
                File.WriteAllText(dbpath, output);
                return(true);
            }
            catch (Exception exception)
            {
                Logger.GetInstance().Write(exception, "Exception thrown in SetDetails");
            }

            return(false);
        }