Module: DPay::IpnVerifier

Defined in:
lib/dpay/ipn/ipn_verifier.rb,
sig/dpay/ipn/ipn_verifier.rbs

Constant Summary collapse

REQUIRED_FIELDS =

Returns:

  • (Array[String])
%w[id amount type attempt version signature].freeze
INVALID_PAYLOAD =

Returns:

  • (String)
"Invalid IPN payload"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.construct_event(raw_body, secret_hash) ⇒ Object



14
15
16
17
18
19
20
21
22
23
# File 'lib/dpay/ipn/ipn_verifier.rb', line 14

def construct_event(raw_body, secret_hash)
  payload = parse(raw_body)
  signature = payload["signature"]
  raise SignatureVerificationError, INVALID_PAYLOAD unless signature.is_a?(String)

  expected = expected_signature(payload, secret_hash)
  raise SignatureVerificationError, "Invalid IPN signature" unless secure_compare(expected, signature)

  IpnEvent.from_verified_payload(payload)
end

Instance Method Details

#self?.construct_eventIpnEvent

Parameters:

  • raw_body (Object)
  • secret_hash (String)

Returns:



6
# File 'sig/dpay/ipn/ipn_verifier.rbs', line 6

def self?.construct_event: (untyped raw_body, String secret_hash) -> IpnEvent

#self?.expected_signatureString

Parameters:

  • payload (Hash[String, untyped])
  • secret_hash (String)

Returns:

  • (String)


8
# File 'sig/dpay/ipn/ipn_verifier.rbs', line 8

def self?.expected_signature: (Hash[String, untyped] payload, String secret_hash) -> String

#self?.parseHash[String, untyped]

Parameters:

  • raw_body (Object)

Returns:

  • (Hash[String, untyped])


7
# File 'sig/dpay/ipn/ipn_verifier.rbs', line 7

def self?.parse: (untyped raw_body) -> Hash[String, untyped]

#self?.secure_compareBoolean

Parameters:

  • expected (String)
  • actual (String)

Returns:

  • (Boolean)


9
# File 'sig/dpay/ipn/ipn_verifier.rbs', line 9

def self?.secure_compare: (String expected, String actual) -> bool