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