Sha256: e252b12a878836e8d002cb9b8a09951d31cd36d657280830bc55f896f80b6cf2

Contents?: true

Size: 995 Bytes

Versions: 2

Compression:

Stored size: 995 Bytes

Contents

module CatarsePagarme
  class NotificationsController < CatarsePagarme::ApplicationController
    skip_before_action :authenticate_user!

    def create
      if payment
        payment.payment_notifications.create(contribution: payment.contribution, extra_data: params.to_json)

        if valid_postback?
          delegator.change_status_by_transaction(params[:current_status])
          delegator.update_transaction

          return render nothing: true, status: 200
        end
      end

      render_invalid_postback_response
    end

    protected

    def payment
      @payment ||=  PaymentEngines.find_payment({ gateway_id: params[:id], gateway: 'Pagarme' })
    end

    def valid_postback?
      raw_post  = request.raw_post
      signature = request.headers['HTTP_X_HUB_SIGNATURE']
      PagarMe::Postback.valid_request_signature?(raw_post, signature)
    end

    def render_invalid_postback_response
      render json: {error: 'invalid postback'}, status: 400
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
catarse_pagarme-3.0.1 app/controllers/catarse_pagarme/notifications_controller.rb
catarse_pagarme-3.0.0 app/controllers/catarse_pagarme/notifications_controller.rb