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