public async Task <ActionResult> SendOrder([Microsoft.AspNetCore.Mvc.FromBody] OrderParamModel model) { SendOrderResponseModel <SendOrderDataModel> sendOrderResponseModel = null; try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constant.proHost); client.DefaultRequestHeaders.Add("Accept-Language", "vi"); client.DefaultRequestHeaders.Add("jwt", String.Format(@"Bearer {0}", FunctionHelpers.GenerateJwtToken())); HttpResponseMessage response = await client.PostAsJsonAsync(Constant.sendOrderApi, model); if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); if (responseString != null) { sendOrderResponseModel = JsonConvert.DeserializeObject <SendOrderResponseModel <SendOrderDataModel> >(responseString); return(Json(new { data = sendOrderResponseModel, Message = "Thành công." })); } } } return(Json(new { data = new SendOrderResponseModel <SendOrderDataModel>(), Message = "Có lỗi xẩy ra." })); } catch (Exception ex) { return(Json(new { data = new SendOrderResponseModel <SendOrderDataModel>(), Message = ex.ToString() })); } }
public async Task <ActionResult> SendOrder(OrderParamModel model) { var isMatch = false; var orderDetailModel = await GetOrderDetailFromBaoKim(model.mrc_order_id); if (orderDetailModel.code == 0 && orderDetailModel.data != null) { if (double.Parse(orderDetailModel.data.total_amount, CultureInfo.InvariantCulture) != model.total_amount) { isMatch = false; } else if (!orderDetailModel.data.description.ToLower().Equals(model.description.ToLower())) { isMatch = false; } else if (!orderDetailModel.data.url_success.ToLower().Equals(model.url_success.ToLower())) { isMatch = false; } else if (orderDetailModel.data.merchant_id != model.merchant_id) { isMatch = false; } else if (!orderDetailModel.data.url_detail.ToLower().Equals(model.url_detail.ToLower().ToString())) { isMatch = false; } else if (!orderDetailModel.data.lang.ToLower().Equals(model.lang.ToLower())) { isMatch = false; } else if (Convert.ToInt32(orderDetailModel.data.accept_bank) != model.accept_bank) { isMatch = false; } else if (Convert.ToInt32(orderDetailModel.data.accept_cc) != model.accept_cc) { isMatch = false; } else if (Convert.ToInt32(orderDetailModel.data.accept_qrpay) != model.accept_qrpay) { isMatch = false; } else if (Convert.ToInt32(orderDetailModel.data.accept_e_wallet) != model.accept_e_wallet) { isMatch = false; } else if (int.Parse(orderDetailModel.data.bpm_id) != model.bpm_id) { isMatch = false; } else if (!orderDetailModel.data.webhooks.ToLower().Equals(model.webhooks.ToLower())) { isMatch = false; } else if (!orderDetailModel.data.customer_email.ToLower().Equals(model.customer_email.ToLower())) { isMatch = false; } else if (!orderDetailModel.data.customer_name.ToLower().Equals(model.customer_name.ToLower())) { isMatch = false; } else if (!orderDetailModel.data.customer_address.ToLower().Equals(model.customer_address.ToLower())) { isMatch = false; } else { return(Json(new { Success = true, data = orderDetailModel.data })); } await CancelOrder(model.mrc_order_id); //model.mrc_order_id = baokim_vm.orderParamModel.mrc_order_id; } if (!isMatch) { try { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constant.proHost); client.DefaultRequestHeaders.Add("Accept-Language", "vi"); client.DefaultRequestHeaders.Add("jwt", String.Format(@"Bearer {0}", FunctionHelpers.GenerateJwtToken())); HttpResponseMessage response = await client.PostAsJsonAsync(Constant.sendOrderApi, model); if (response.IsSuccessStatusCode) { var responseString = await response.Content.ReadAsStringAsync(); var message = string.Empty; if (responseString != null) { try { SendOrderResponseModel <SendOrderDataModel> sendOrderResponseModel = null; sendOrderResponseModel = JsonConvert.DeserializeObject <SendOrderResponseModel <SendOrderDataModel> >(responseString); if (sendOrderResponseModel.message != null) //Lỗi validate dữ liệu/tham số { if (!string.IsNullOrEmpty(FunctionHelpers.GenerateErrorMsg(sendOrderResponseModel.message.total_amount))) { message = FunctionHelpers.GenerateErrorMsg("Tổng số tiền"); } else if (!string.IsNullOrEmpty(FunctionHelpers.GenerateErrorMsg(sendOrderResponseModel.message.customer_phone))) { message = FunctionHelpers.GenerateErrorMsg("Số điện thoại"); } else if (!string.IsNullOrEmpty(FunctionHelpers.GenerateErrorMsg(sendOrderResponseModel.message.customer_email))) { message = FunctionHelpers.GenerateErrorMsg("Email"); } else if (!string.IsNullOrEmpty(FunctionHelpers.GenerateErrorMsg(sendOrderResponseModel.message.mrc_order_id))) { message = FunctionHelpers.GenerateErrorMsg("Mã đơn hàng"); } else { message += FunctionHelpers.GenerateErrorMsg(""); } } if (!string.IsNullOrEmpty(message)) { return(Json(new { Success = false, Message = message })); } } catch { SendOrderResponseModelv2 <SendOrderDataModel> sendOrderResponseModel = null; sendOrderResponseModel = JsonConvert.DeserializeObject <SendOrderResponseModelv2 <SendOrderDataModel> >(responseString); if (sendOrderResponseModel.data != null) { return(Json(new { Success = true, data = sendOrderResponseModel.data })); } return(Json(new { Success = false, Message = "Số tiền / total_amount vượt quá giới hạn 30.000 VNĐ cho mỗi lần xác thực đối với website chưa được xác thực" })); } } } } return(Json(new { Success = false, Message = "Có lỗi xẩy ra vui lòng thử lại." })); } catch { return(Json(new { Success = false, Message = "Có lỗi xẩy ra vui lòng thử lại." })); } } return(Json(new { Success = false, Message = "Có lỗi xẩy ra vui lòng thử lại." })); }
public static string ZoomToken(OrderParamModel model = null) { // Token will be good for 20 minutes DateTime Expiry = DateTime.UtcNow.AddMinutes(20); int ts = (int)(Expiry - new DateTime(1970, 1, 1)).TotalSeconds; var generator = new Random(); Byte[] b = new Byte[32]; generator.NextBytes(b); var tokenId = Convert.ToBase64String(b); // Create Security key using public key above: var securityKey = new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(Encoding.UTF8.GetBytes(PRO_API_SECRET)); // length should be >256b var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature); //Finally create a Token var header = new JwtHeader(credentials); var payload = new JwtPayload(); if (model != null) { //Zoom Required Payload payload = new JwtPayload { { "iss", PRO_API_KEY }, { "exp", ts }, { "jti", tokenId }, { "form_params", new OrderParamModel { mrc_order_id = model.mrc_order_id, total_amount = model.total_amount, description = model.description, url_success = model.url_success, merchant_id = model.merchant_id, url_detail = model.url_detail, lang = model.lang, bpm_id = model.bpm_id, accept_bank = model.accept_bank, accept_cc = model.accept_cc, accept_qrpay = model.accept_qrpay, accept_e_wallet = model.accept_e_wallet, webhooks = model.webhooks, customer_email = model.customer_email, customer_phone = model.customer_phone, customer_name = model.customer_name, customer_address = model.customer_address } } }; } else { payload = new JwtPayload { { "iss", PRO_API_KEY }, { "exp", ts }, { "jti", tokenId } }; } var secToken = new JwtSecurityToken(header, payload); var handler = new JwtSecurityTokenHandler(); // Token to String so you can use it in your client var tokenString = handler.WriteToken(secToken); return(tokenString); }
public BaoKimPaymentViewModel() { bankPaymentModel = new BankModel <BankPaymentDetailModel>(); orderParamModel = new OrderParamModel(); }