Module: NOWPayments::Rack

Defined in:
lib/nowpayments/rack.rb

Overview

Rack/Rails integration helpers for webhook verification

Class Method Summary collapse

Class Method Details

.verify_webhook(request, ipn_secret) ⇒ Hash

Verify webhook from a Rack/Rails request object

Parameters:

  • The request object

  • IPN secret key

Returns:

  • Verified payload

Raises:

  • If verification fails



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/nowpayments/rack.rb', line 11

def self.verify_webhook(request, ipn_secret)
  raw_body = request.body.read
  request.body.rewind # Allow re-reading

  # Try both header access methods (Rack vs Rails)
  signature = request.get_header("HTTP_X_NOWPAYMENTS_SIG") if request.respond_to?(:get_header)
  signature ||= request.headers["x-nowpayments-sig"] if request.respond_to?(:headers)
  signature ||= request.env["HTTP_X_NOWPAYMENTS_SIG"]

  raise SecurityError, "Missing x-nowpayments-sig header" unless signature

  Webhook.verify!(raw_body, signature, ipn_secret)
end