Beispiel #1
0
        public static async Task <int> CreateOrder(Order order)
        {
            order.Mac = ZaloPayMacGenerator.CalculateOrderMac(order);

            Dictionary <string, string> orderData = new Dictionary <string, string>();

            orderData.Add("app_id", order.AppId.ToString());
            orderData.Add("app_user", order.AppUser);
            orderData.Add("app_time", order.AppTime.ToString());
            orderData.Add("app_trans_id", order.AppTransId);
            orderData.Add("description", order.Description);
            orderData.Add("amount", order.Amount.ToString());
            orderData.Add("item", order.Item);
            orderData.Add("embed_data", order.EmbedData);
            orderData.Add("mac", order.Mac);

            try
            {
                var orderResponse = await ZaloPayHelper.CreateOrder(orderData);

                if (orderResponse.Count > 0)
                {
                    //Console.WriteLine(string.Join(";", orderResponse.Select(x => x.Key + "=" + x.Value).ToArray()));
                    Order updateOrder = await App.Database.GetItemAsync(order.ID);

                    order.ReturnCode       = orderResponse["return_code"].ToString();
                    order.ReturnMessage    = orderResponse["return_message"].ToString();
                    order.SubReturnCode    = orderResponse["sub_return_code"].ToString();
                    order.SubReturnMessage = orderResponse["sub_return_message"].ToString();
                    order.OrderUrl         = orderResponse["order_url"].ToString();
                    order.ZpTransToken     = orderResponse["zp_trans_token"].ToString();
                    await App.Database.SaveItemAsync(order);
                }
                else
                {
                    order.Status = "FAILED";
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(">>> EXCEPTION!");
                Console.WriteLine(ex);
                order.Status = "FAILED";
            }
            finally
            {
                Console.WriteLine(order.OrderUrl);
            }

            return(await App.Database.SaveItemAsync(order));
        }
        public async Task <ActionResult> Post()
        {
            var amount      = long.Parse(Request.Form.Get("amount"));
            var description = Request.Form.Get("description");
            var bankcode    = Request.Form.Get("bankcode");
            var embeddata   = NgrokHelper.CreateEmbeddataWithPublicUrl();

            if (bankcode.Equals("ATM"))
            {
                embeddata["bankgroup"] = "ATM";
                bankcode = "";
            }

            var orderData = new OrderData(amount, description, bankcode, embeddata);
            var order     = await ZaloPayHelper.CreateOrder(orderData);

            var returncode = (long)order["returncode"];

            if (returncode == 1)
            {
                using (var db = new ZaloPayDemoContext())
                {
                    db.Orders.Add(new Models.Order
                    {
                        Apptransid  = orderData.Apptransid,
                        Amount      = orderData.Amount,
                        Timestamp   = orderData.Apptime,
                        Description = orderData.Description,
                        Status      = 0
                    });

                    db.SaveChanges();
                }

                return(Redirect(order["orderurl"].ToString()));
            }
            else
            {
                Session["error"] = true;
                return(Redirect("/Gateway"));
            }
        }