Class: CheckoutController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- CheckoutController
- Defined in:
- lib/pagseguro/checkout_controller.rb,
lib/e4commerce/ps_checkout_template.rb
Instance Method Summary collapse
Instance Method Details
#create ⇒ Object
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 |