Class: FluvPay::Resources::Charges

Inherits:
Object
  • Object
show all
Defined in:
lib/fluvpay/resources/charges.rb

Overview

Recurso de cobranças PIX: criar, recuperar e listar.

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Charges

Returns a new instance of Charges.



11
12
13
# File 'lib/fluvpay/resources/charges.rb', line 11

def initialize(client)
  @client = client
end

Instance Method Details

#create(amount_cents:, description: nil, customer: nil, expires_in_seconds: nil, affiliate_code: nil, split_rule_id: nil, pass_fee_to_payer: nil, metadata: nil, idempotency_key: nil) ⇒ Hash

Cria uma cobrança PIX.

Escopo exigido: payments.create. O header Idempotency-Key é obrigatório na API; se não for informado, o SDK gera um UUIDv4 automaticamente.

Parameters:

  • amount_cents (Integer)

    valor em centavos (100..100000), obrigatório.

  • description (String, nil) (defaults to: nil)

    descrição (até 500 caracteres).

  • customer (Hash, nil) (defaults to: nil)

    dados do pagador (name, email, document, phone).

  • expires_in_seconds (Integer, nil) (defaults to: nil)

    expiração em segundos (60..604800).

  • affiliate_code (String, nil) (defaults to: nil)

    código de afiliado (4..24 caracteres).

  • split_rule_id (String, nil) (defaults to: nil)

    id de regra de split (20..32 caracteres).

  • pass_fee_to_payer (Boolean, nil) (defaults to: nil)

    repassar a taxa ao pagador (default true).

  • metadata (Hash, nil) (defaults to: nil)

    objeto livre de metadados.

  • idempotency_key (String, nil) (defaults to: nil)

    Idempotency-Key; gerado se omitido.

Returns:

  • (Hash)

    a cobrança criada.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/fluvpay/resources/charges.rb', line 31

def create(amount_cents:, description: nil, customer: nil, expires_in_seconds: nil,
           affiliate_code: nil, split_rule_id: nil, pass_fee_to_payer: nil,
           metadata: nil, idempotency_key: nil)
  body = {
    "amount_cents" => amount_cents,
    "description" => description,
    "customer" => clean_customer(customer),
    "expires_in_seconds" => expires_in_seconds,
    "affiliate_code" => affiliate_code,
    "split_rule_id" => split_rule_id,
    "pass_fee_to_payer" => pass_fee_to_payer,
    "metadata" => 
  }
  key = idempotency_key || FluvPay::Client.new_idempotency_key
  @client.request(:post, "/charges/", body: body, idempotency_key: key)
end

#list(status: nil, page: nil, per_page: nil, sort: nil) ⇒ FluvPay::Resources::PageList

Lista cobranças.

Escopo exigido: payments.read. Envelope: page/per_page.

Parameters:

  • status (String, nil) (defaults to: nil)

    filtra por status.

  • page (Integer, nil) (defaults to: nil)

    página (1-based).

  • per_page (Integer, nil) (defaults to: nil)

    itens por página (máx 100).

  • sort (String, nil) (defaults to: nil)

    campo de ordenação (ex: “-created_at”).

Returns:



65
66
67
68
69
70
71
72
73
74
# File 'lib/fluvpay/resources/charges.rb', line 65

def list(status: nil, page: nil, per_page: nil, sort: nil)
  params = {
    "status" => status,
    "page" => page,
    "per_page" => per_page,
    "sort" => sort
  }
  payload = @client.request(:get, "/charges/", params: params)
  PageList.new(payload)
end

#retrieve(charge_id) ⇒ Hash

Recupera uma cobrança por ID.

Escopo exigido: payments.read.

Parameters:

  • charge_id (String)

    identificador da cobrança.

Returns:

  • (Hash)

    a cobrança.



53
54
55
# File 'lib/fluvpay/resources/charges.rb', line 53

def retrieve(charge_id)
  @client.request(:get, "/charges/#{escape(charge_id)}")
end