chatwoot-develop/enterprise/app/controllers/public/api/v1/captain/webhooks_controller.rb

47 lines
1.4 KiB
Ruby

class Public::Api::V1::Captain::WebhooksController < ActionController::API
def inter_pix
Rails.logger.info "[Captain::InterWebhook] 🔔 Received Webhook: #{params.to_unsafe_h}"
# Inter sends an array of "pix" objects
pix_events = params[:pix] || []
pix_events.each do |event|
txid = event[:txid]
next unless txid
charge = ::Captain::PixCharge.find_by(txid: txid)
if charge
Rails.logger.info "[Captain::InterWebhook] ✅ Found Charge for TXID: #{txid}"
# Update Charge
charge.update!(
status: 'paid',
paid_at: Time.current,
raw_webhook_payload: event.to_json
)
# Update Reservation
reservation = charge.reservation
if reservation
reservation.update!(
status: :active,
payment_status: :paid
)
Rails.logger.info "[Captain::InterWebhook] 🏨 Reservation ##{reservation.id} Confirmed!"
# Trigger N8n Webhook
::Captain::WebhookSenderService.new(reservation).perform
# Send WhatsApp Confirmation
::Captain::WhatsappNotificationService.new(reservation).perform
end
else
Rails.logger.warn "[Captain::InterWebhook] ⚠️ Charge NOT found for TXID: #{txid}"
end
end
render json: { status: 'received' }, status: :ok
end
end