defmodule GnApiSdkElixir.Charge do @moduledoc """ Módulo de integração de cobranças """ alias GnApiSdkElixir.Request @doc """ Permite criar uma transação já associando um método de pagamento, podendo ser boleto bancário ou cartão de crédito, em apenas uma etapa. """ def create_one_step(items, payment) do Request.post("/v1/charge/one-step", %{items: items, payment: payment}) end @doc """ Permite criar uma nova transação; retorna um código identificador da transação denominado charge_id. """ def create(items) do Request.post("/v1/charge", %{items: items}) end @doc """ Permite criar uma nova transação; retorna um código identificador da transação denominado charge_id. """ def get(charge_id) do Request.get("/v1/charge/#{charge_id}") end @doc """ Permite incluir informações como notification_url e custom_id à uma transação existente. Este endpoint é de extrema importância para atualizar sua URL de notificação atrelada às transações ou modificar o custom_id previamente associado às suas transações. """ def metadata(charge_id, metadata) do Request.put("/v1/charge/#{charge_id}/metadata", metadata) end @doc """ Permite efetuar a alteração da data de vencimento de uma transação em que a forma de pagamento é boleto bancário (banking_billet) e que ainda não foi paga. O formato da data de vencimento deve seguir o seguinte padrão: YYYY-MM-DD. """ def billet(charge_id, expire) do Request.put("/v1/charge/#{charge_id}/billet", %{expire_at: expire}) end @doc """ Através deste endpoint é possível cancelar uma transação criada. Somente transações com status new, waiting, unpaid ou link podem ser canceladas. """ def cancel(charge_id) do Request.put("/v1/charge/#{charge_id}/cancel", nil) end @doc """ Permite associar um método de pagamento à uma transação já criada. Após gerar uma transação através do endpoint POST /v1/charge, esta fica classificada com o status de new (novo), ou seja, uma nova transação foi gerada, porém, nenhum método de pagamento foi atribuído a ela. """ def pay(charge_id, payment) do Request.post("/v1/charge/#{charge_id}/pay", %{payment: payment}) end @doc """ Permite o reenvio do boleto bancário para o e-mail desejado. """ def billet_resend(charge_id, email) do Request.post("/v1/charge/#{charge_id}/billet/resend", %{email: email}) end @doc """ O histórico de uma transação representa todas as ações que ocorreram com esta transação até o presente momento. É possível adicionar mensagens personalizadas a este histórico utilizando o endpoint /v1/charge/:id/history. """ def history(charge_id, description) do Request.post("/v1/charge/#{charge_id}/history", description) end @doc """ Permite retornar um link para uma tela de pagamento da Gerencianet. Em outras palavras, o integrador gera uma cobrança e, em seguida, ao invés de definir o pagamento via boleto bancário ou cartão de crédito, o integrador pode solicitar um link escolhendo inclusive se a tela de pagamento deve aceitar boleto, cartão ou ambos.. """ def link(charge_id, %{message: message, expire_at: expire_at, request_delivery_address: request_delivery_address, payment_method: payment_method}) do Request.post("/v1/charge/#{charge_id}/link", %{message: message, expire_at: expire_at, request_delivery_address: request_delivery_address, payment_method: payment_method}) end @doc """ Permite retornar um link para uma tela de pagamento da Gerencianet. Em outras palavras, o integrador gera uma cobrança e, em seguida, ao invés de definir o pagamento via boleto bancário ou cartão de crédito, o integrador pode solicitar um link escolhendo inclusive se a tela de pagamento deve aceitar boleto, cartão ou ambos.. """ def link_update(charge_id, expire_at) do Request.put("/v1/charge/#{charge_id}/link", %{expire_at: expire_at}) end @doc """ Você pode definir que a transação será do tipo boleto balancete. Este é um modelo muito utilizado por condomínios e contabilidades. """ def balance_sheet(charge_id, data) do Request.post("/v1/charge/#{charge_id}/balance-sheet", data) end @doc """ Você pode definir que a transação será do tipo boleto balancete. Este é um modelo muito utilizado por condomínios e contabilidades. """ def settle(charge_id) do Request.put("/v1/charge/#{charge_id}/settle", nil) end end