PAGSEGURO Client Build Status Code Climate Coverage Status

Este é um plugin do Ruby on Rails que permite utilizar o PagSeguro, gateway de pagamentos do UOL.

Changelog

Como usar

Instalação

Adicione a biblioteca ao arquivo Gemfile:

gem 'pagseguro_client'

Depois de realizar a instalação da biblioteca, você precisará gerar o arquivo de configuração, que deve residir em config/pagseguro.yml. Para gerar o arquivo a partir de um modelo execute

  rails generate pagseguro_client:install

O arquivo de configuração gerado será parecido com isso:

development: &development
  ws_url: "http://localhost:4000"
  ps_url: "http://localhost:4000"
  return_to: "http://localhost:4000/successo"
  email: [email protected]
  token: "tokenGeradoPeloPagseguro"

test:
  <<: *development

production:
  ws_url: "https://ws.pagseguro.uol.com.br"
  ps_url: "https://pagseguro.uol.com.br"
  return_to: "http://www.sualoja.com.br/successo"
  email: [email protected]
  token: "tokenGeradoPeloPagseguro"

Para realizar os testes de integração da sua aplicação com o gateway, você pode usar um servidor de testes desenvolvido pelo próprio Pagseguro: Pagseguro Server

Gerando a sua ordem de pagamento

@order = PagseguroClient::Order.new(id) # Seu identificador da ordem de pagamento
@order.add(
  id: "1", # Seu identificador do produto
  description: produto.descricao,
  amount: produto.preco)
@response = order.send_request

Exemplo de resposta da ordem de pagamento

# Hash
{
  code: "8CF4BE7DCECEF0F004A6DFA0A8243412",
  url: "https://ws.pagseguro.uol.com.br/v2/checkout/payment.html?code=8CF4BE7DCECEF0F004A6DFA0A8243412"
}

Agora basta usar a url retornada para enviar o usuário para efetuar o pagamento no site do Pagseguro.

Configurando opção para URL de retorno dinâmica

Para configurar uma URL de retorno dinâmica a sua aplicação Rails, basta adicionar ao arquivo pagseguro.yml a opção return_to com o endereço para retorno que você configurou na sua aplicação:

production:
  ws_url: "https://ws.pagseguro.uol.com.br"
  ps_url: "https://pagseguro.uol.com.br"
  return_to: "http://www.sualoja.com.br/sucesso"
  email: [email protected]
  token: "tokenGeradoPeloPagseguro"

Obtendo as notificações

# No seu controller
def notificacao
  return unless request.post?

  @notification = PagseguroClient::Notification.retrieve(params[:notificationCode])
  # Seu código para utilizar a notificação

  render nothing: true
end

O objeto notification possui os seguintes métodos:

  • PagseguroClient::Notification#code: Código da notificação
  • PagseguroClient::Notification#order_id: Código da sua ordem de pagamento
  • PagseguroClient::Notification#status: Status da ordem de pagamento atual
  • PagseguroClient::Notification#payment_method: Método utilizado para o pagamento
  • PagseguroClient::Notification#client: Dados do comprador
  • PagseguroClient::Notification#address: Endereço do comprador

Consultando Transações

# No seu controller
def complete

  @transaction = PagseguroClient::Transaction.retrieve(params[:transaction_id_])
  # Seu código para utilizar a transaction
end

O objeto transaction possui os seguintes métodos:

  • PagseguroClient::Transaction#code: Código da notificação
  • PagseguroClient::Transaction#order_id: Código da sua ordem de pagamento
  • PagseguroClient::Transaction#status: Status da ordem de pagamento atual
  • PagseguroClient::Transaction#payment_method: Método utilizado para o pagamento
  • PagseguroClient::Transaction#client: Dados do comprador
  • PagseguroClient::Transaction#address: Endereço do comprador

Métodos de pagamento

  • credit_card: Cartão de crédito
  • invoice: Boleto
  • online_transfer: Pagamento online
  • pagseguro: Transferência entre contas do PagSeguro
  • oi_paggo: Oi Paggo :)

Status

  • pending: Aguardando pagamento
  • verifying: Em análise
  • approved: Aprovado
  • available: Disponível
  • refunded: Devolvido
  • canceled: Cancelado

Autor

Licença (MIT):

Mais informações no arquivo LICENSE.txt