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));
            }
        }
Example #2
0
        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);
        }