public HttpResponseMessage CreateDonateLiqpayInfo(LiqPayPostInfo liqPayInfo) { try { ILiqPayData liqPayData; string data; string signature; liqPayData = DataHelper.CreateLiqPayData(liqPayInfo, _donatePublicKey, _donateServerUrl); data = Convert.ToBase64String(Encoding.UTF8.GetBytes(new JavaScriptSerializer().Serialize(liqPayData))); signature = Convert.ToBase64String(SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(_donatePrivateKey + data + _donatePrivateKey))); using (LiqPayDBEntities db = new LiqPayDBEntities()) { db.rl_liqpay_donate_info.Add(new rl_liqpay_donate_info() { Action = liqPayData.action, Amount = liqPayData.amount, Currency = liqPayData.currency, Email = liqPayInfo.Email, Name = liqPayInfo.Name, Order_id = liqPayData.order_id, Signature = signature, Status = "not paid yet", Subscribe_amount = liqPayInfo.IsSubscribe ? liqPayInfo.Amount : 0, Subscribe_date_start = liqPayInfo.IsSubscribe ? ((LiqPaySubData)liqPayData)?.subscribe_date_start : "", Subscribe_periodicity = liqPayInfo.IsSubscribe ? "month" : "", TypeOfPayer = liqPayInfo.TypeOfPayer, Created_Date = DateTime.Now, }); db.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.OK, new LiqPayInfo() { Data = data, Signature = signature })); } catch (Exception ex) { using (LiqPayDBEntities db = new LiqPayDBEntities()) { db.Errors.Add(new Errors() { ErrorDate = DateTime.Now, ErrorMessage = ex.Message, ErrorInfo = ex.StackTrace }); db.SaveChanges(); } return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }
public static ILiqPayData CreateLiqPayData(LiqPayPostInfo liqPayInfo, string publicKey, string serverUrl) { ILiqPayData liqPayData; var orderId = Guid.NewGuid().ToString(); var subStartDate = DateTime.Now.ToString("yyyy-MM-dd") + " " + DateTime.Now.ToString("hh:mm:ss"); if (liqPayInfo.IsSubscribe) { liqPayData = new LiqPaySubData() { public_key = publicKey, version = "3", action = "subscribe", amount = liqPayInfo.Amount, currency = "UAH", description = ConfigurationManager.AppSettings["description"], order_id = orderId, subscribe = liqPayInfo.Amount, subscribe_date_start = subStartDate, subscribe_periodicity = ConfigurationManager.AppSettings["subscribe_periodicity"], result_url = ConfigurationManager.AppSettings["result_url"], server_url = serverUrl, sandbox = int.Parse(ConfigurationManager.AppSettings["test_mode"]) }; } else { liqPayData = new LiqPayData() { public_key = publicKey, version = "3", action = "pay", amount = liqPayInfo.Amount, currency = "UAH", description = ConfigurationManager.AppSettings["description"], order_id = orderId, result_url = ConfigurationManager.AppSettings["result_url"], server_url = serverUrl, sandbox = int.Parse(ConfigurationManager.AppSettings["test_mode"]) }; } return(liqPayData); }