class AmexTokenizationClient::ProvisioningPayload

Attributes

account_number[R]
email[R]
expiry_month[R]
expiry_year[R]
ip_address[R]
is_on_file[R]
name[R]
user_id[R]

Public Class Methods

new(account_number:, name:, expiry_month:, expiry_year:, email:, is_on_file:, user_id: nil, ip_address: nil) click to toggle source
# File lib/amex_tokenization_client/provisioning_payload.rb, line 9
def initialize(account_number:, name:, expiry_month:, expiry_year:, email:, is_on_file:, user_id: nil, ip_address: nil)
  @account_number, @expiry_month, @expiry_year = account_number, expiry_month, expiry_year
  @name, @email, @is_on_file, @ip_address = name, email, is_on_file, ip_address
  @user_id = user_id
end

Public Instance Methods

to_json(encryption_key_id, encryption_key) click to toggle source
# File lib/amex_tokenization_client/provisioning_payload.rb, line 15
def to_json(encryption_key_id, encryption_key)
  Hash[
    account_data: account_data(encryption_key_id, encryption_key),
    user_data: { user_id: user_id, name: name, email: email }.compact,
    risk_assessment_data: risk_assessment_data
  ].to_json
end

Protected Instance Methods

account_data(encryption_key_id, encryption_key) click to toggle source
# File lib/amex_tokenization_client/provisioning_payload.rb, line 25
def account_data(encryption_key_id, encryption_key)
   json = JSON.generate Hash[
    account_type: 'credit_card',
    credit_card: { account_number: account_number, expiry_month: expiry_month, expiry_year: expiry_year }
  ]
  jwe_encrypt(json, encryption_key_id, encryption_key)
end
jwe_encrypt(data, encryption_key_id, encryption_key) click to toggle source
# File lib/amex_tokenization_client/provisioning_payload.rb, line 39
def jwe_encrypt(data, encryption_key_id, encryption_key)
  JWE.encrypt(data, encryption_key, alg: 'A256KW', enc: 'A128GCM', kid: encryption_key_id)
end
risk_assessment_data() click to toggle source
# File lib/amex_tokenization_client/provisioning_payload.rb, line 33
def risk_assessment_data
  data = { account_input_method: is_on_file ? 'On File' : 'User Input' }
  data[:ip_address] = ip_address if ip_address
  data
end