Class: CheckoutController

Inherits:
ApplicationController
  • Object
show all
Defined in:
lib/pagseguro/checkout_controller.rb,
lib/e4commerce/ps_checkout_template.rb

Instance Method Summary collapse

Instance Method Details

#createObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/pagseguro/checkout_controller.rb', line 2

def create
  # O modo como você irá armazenar os produtos que estão sendo comprados
  # depende de você. Neste caso, temos um modelo Order que referência os
  # produtos que estão sendo comprados.
  order = Order.find(params[:id])

  payment = PagSeguro::PaymentRequest.new

  # Você também pode fazer o request de pagamento usando credenciais
  # diferentes, como no exemplo abaixo

  payment = PagSeguro::PaymentRequest.new(email: 'abc@email', token: 'token')

  payment.reference = order.id
  payment.notification_url = notifications_url
  payment.redirect_url = processing_url

  order.products.each do |product|
    payment.items << {
      id: product.id,
      description: product.title,
      amount: product.price,
      weight: product.weight
    }
  end

  # Caso você precise passar parâmetros para a api que ainda não foram
  # mapeados na gem, você pode fazer de maneira dinâmica utilizando um
  # simples hash.
  payment.extra_params << { paramName: 'paramValue' }
  payment.extra_params << { senderBirthDate: '07/05/1981' }
  payment.extra_params << { extraAmount: '-15.00' }

  response = payment.register

  # Caso o processo de checkout tenha dado errado, lança uma exceção.
  # Assim, um serviço de rastreamento de exceções ou até mesmo a gem
  # exception_notification poderá notificar sobre o ocorrido.
  #
  # Se estiver tudo certo, redireciona o comprador para o PagSeguro.
  if response.errors.any?
    raise response.errors.join("\n")
  else
    redirect_to response.url
  end
end