示例#1
0
        public void ItemIncluirNaAssinatura(AssinaturaDb assinaturaDb, AssinaturaItemDb assinaturaItemDb, CreateSubscriptionItemRequest assinaturaItemApi)
        {
            try
            {
                // Secret key fornecida pela Mundipagg
                string basicAuthUserName = SistemaSingleton.Instancia.TokenApi;
                // Senha em branco. Passando apenas a secret key
                string basicAuthPassword = "";

                var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);

                var response = client.Subscriptions.CreateSubscriptionItem(assinaturaDb.Id_Api, assinaturaItemApi);

                assinaturaDal.ItemAssinaturaGravadaNaApiAtualizaBanco(assinaturaItemDb.Id.ToString(), response.Id);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#2
0
        public void AlteraDataFaturamentoAssinatura(AssinaturaDb assinatura)
        {
            try
            {
                // Secret key fornecida pela Mundipagg
                string basicAuthUserName = SistemaSingleton.Instancia.TokenApi;
                // Senha em branco. Passando apenas a secret key
                string basicAuthPassword = "";

                var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);

                var request = new UpdateSubscriptionBillingDateRequest
                {
                    NextBillingAt = Convert.ToDateTime(assinatura.Dia_Cobranca)
                };

                client.Subscriptions.UpdateSubscriptionBillingDate(assinatura.Id_Api, request);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
示例#3
0
        /// <summary>
        /// Busca as assinatura pelo id d tabela
        /// </summary>
        /// <param name="_id">id da tabela rec_assinatura</param>
        /// <returns>Model assinaturaDb com os itens populados</returns>
        public AssinaturaDb GetAssinaturaDb(string _id)
        {
            const string metodo = "GetAssinaturaDb";

            var clienteDal       = new ClienteDal();
            var meioPagamentoDal = new CartaoDal();
            var assinatura       = new AssinaturaDb();

            try
            {
                var sql = new StringBuilder();

                sql.Append(" select a.id, a.dt_inicio, a.intervalo, a.intervalo_quantidade, ");
                sql.Append(" a.dia_cobranca, a.quant_parcelas, a.texto_fatura, a.valor_minimo, a.status, ");
                sql.Append(" a.id_cliente, a.id_cartao, a.id_api ");
                sql.Append(" from rec_assinatura a ");
                sql.Append(" where a.id = @id ");

                using (var conn = ConexaoBd.GetConnection())
                {
                    using (var cmd = new SqlCommand(sql.ToString(), conn))
                    {
                        cmd.Parameters.Clear();
                        cmd.Parameters.AddWithValue("@id", _id);

                        using (var dr = cmd.ExecuteReader())
                        {
                            while (dr.Read())
                            {
                                assinatura.Id                   = Convert.ToInt32(dr["id"]);
                                assinatura.Dt_Inicio            = dr.GetDateTime(dr.GetOrdinal("dt_inicio"));
                                assinatura.Intervalo            = dr["intervalo"].ToString();
                                assinatura.Intervalo_Quantidade = Convert.ToInt32(dr["intervalo_quantidade"]);
                                assinatura.Dia_Cobranca         = Convert.ToInt32(dr["dia_cobranca"]);
                                assinatura.Quant_Parcelas       = Convert.ToInt32(dr["quant_parcelas"]);
                                assinatura.Texto_Fatura         = dr["texto_fatura"].ToString();
                                assinatura.Valor_Minimo         = Convert.ToDouble(dr["valor_minimo"]);
                                assinatura.Status               = dr["status"].ToString();
                                assinatura.Cliente              = clienteDal.GetClienteDb(dr["id_cliente"].ToString());
                                assinatura.MeioPagamento        = meioPagamentoDal.GetCartaoDb(dr["id_cartao"].ToString());
                                assinatura.Id_Api               = dr["id_api"].ToString();

                                // popular o model com os itens da assinatura . Pode colocar aqui ou em um método privado
                                assinatura.ItensAssinatura = GetItensAssinatura(assinatura.Id);
                            }
                        }
                    }
                }

                return(assinatura);;
            }
            catch (SqlException sqlException)
            {
                string strMensagem = "";
                strMensagem = LogDatabaseErrorUtil.CreateErrorDatabaseMessage(sqlException);
                LogDatabaseErrorUtil.LogFileWrite(strMensagem, metodo);

                sqlException.Data["MensagemCustomizada"] = LogDatabaseErrorUtil.ValidateDataBaseErrorNumber(sqlException.Number);
                sqlException.Data["Metodo"] = metodo;
                sqlException.Data["Classe"] = Camada;
                sqlException.Data["Hora"]   = DateTime.Now;

                throw;
            }
            catch (Exception ex)
            {
                string strMensagem = "";

                strMensagem = LogDatabaseErrorUtil.CreateErrorMessage(ex);
                LogDatabaseErrorUtil.LogFileWrite(strMensagem, metodo);

                ex.Data["MensagemCustomizada"] = "Ocorreu um erro ao tentar executar a operação.";
                ex.Data["Metodo"] = metodo;
                ex.Data["Classe"] = Camada;
                ex.Data["Hora"]   = DateTime.Now;

                throw;
            }
        }
示例#4
0
        public static CreateSubscriptionRequest ConverteAssinaturaDbEmApi(AssinaturaDb assinatura)
        {
            try
            {
                var billinAddress = new CreateAddressRequest
                {
                    Line1   = assinatura.Cliente.Endereco_1,
                    Line2   = assinatura.Cliente.Endereco_2,
                    ZipCode = assinatura.Cliente.Cep,
                    City    = assinatura.Cliente.Cidade,
                    State   = assinatura.Cliente.Uf,
                    Country = "BR"
                };

                var card = new CreateCardRequest
                {
                    HolderName     = assinatura.MeioPagamento.Nome_Cartao,
                    Number         = assinatura.MeioPagamento.Numero_Cartao,
                    ExpMonth       = assinatura.MeioPagamento.Val_Mes,
                    ExpYear        = assinatura.MeioPagamento.Val_Ano,
                    Cvv            = assinatura.MeioPagamento.Cvc,
                    BillingAddress = billinAddress
                };

                // por enquanto não vai trabalhar com descontos
                //var discounts = new List<CreateDiscountRequest> {
                //new CreateDiscountRequest {
                //Cycles = 1,
                //Value = 0,
                //DiscountType = "percentage"
                //}
                //};

                var items = new List <CreateSubscriptionItemRequest>();

                foreach (var item in assinatura.ItensAssinatura)
                {
                    var i = new CreateSubscriptionItemRequest
                    {
                        Description   = item.Descricao,
                        Quantity      = item.Quant,
                        PricingScheme = new CreatePricingSchemeRequest
                        {
                            Price = item.GetValor()
                        }
                    };

                    items.Add(i);
                }

                var metadata = new Dictionary <string, string>
                {
                    { "id", assinatura.Id.ToString() }
                };

                var request = new CreateSubscriptionRequest
                {
                    PaymentMethod = "credit_card",
                    Currency      = "BRL",
                    Interval      = assinatura.Intervalo,
                    IntervalCount = assinatura.Intervalo_Quantidade,
                    BillingType   = "exact_day",
                    BillingDay    = assinatura.Dia_Cobranca,
                    Installments  = assinatura.Quant_Parcelas,
                    Customer      = new CreateCustomerRequest
                    {
                        Name = assinatura.Cliente.Nome,
                        //Email = assinatura.Cliente.Email,
                        Document = assinatura.Cliente.Documento,
                        Code     = assinatura.Cliente.Codigo,
                        Type     = "individual"
                    },
                    Card = card,
                    // Discounts = discounts,
                    Items    = items,
                    Metadata = metadata
                };

                return(request);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }