Exemple #1
0
        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() }));
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
 public BaoKimPaymentViewModel()
 {
     bankPaymentModel = new BankModel <BankPaymentDetailModel>();
     orderParamModel  = new OrderParamModel();
 }