Current section
Files
Jump to
Current section
Files
lib/response.ex
defmodule RxpHpp.Response do
alias RxpHpp.Common
alias RxpHpp.Generator
@moduledoc """
Holds info for the Realex Hpp response.
"""
defstruct(
merchant_id: nil,
account: nil,
order_id: nil,
amount: nil,
authcode: nil,
timestamp: nil,
sha1hash: nil,
result: nil,
message: nil,
cvnresult: nil,
pasref: nil,
batchid: nil,
eci: nil,
cavv: nil,
xid: nil,
comment1: nil,
comment2: nil,
tss: nil
)
def build_hash(response, secret) do
%RxpHpp.Response{response | sha1hash: generate_hash(secret, response)}
end
def valid_hash?(secret, %RxpHpp.Response{sha1hash: sha1hash} = response) do
generate_hash(secret, response) == sha1hash
end
def generate_hash(
secret,
%RxpHpp.Response{
timestamp: timestamp,
merchant_id: merchant_id,
order_id: order_id,
result: result,
message: message,
pasref: pasref,
authcode: authcode
}) do
[
timestamp,
merchant_id,
order_id,
result,
message,
pasref,
authcode
]
|> Enum.map(&Common.value_or_default/1)
|> Generator.encode_hash(secret)
end
end