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