Class: Payabli::TokenStorage::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/payabli/token_storage/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ void

Parameters:



9
10
11
# File 'lib/payabli/token_storage/client.rb', line 9

def initialize(client:)
  @client = client
end

Instance Method Details

#add_method(request_options: {}, **params) ⇒ Payabli::TokenStorage::Types::AddMethodResponse

Saves a payment method for reuse. This call exchanges sensitive payment information for a token that can be used to process future transactions. The ‘ReferenceId` value in the response is the `storedMethodId` to use with transactions.

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

  • :ach_validation (Boolean, nil)
  • :create_anonymous (Boolean, nil)
  • :force_customer_creation (Boolean, nil)
  • :temporary (Boolean, nil)
  • :idempotency_key (String, nil)

Returns:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/payabli/token_storage/client.rb', line 31

def add_method(request_options: {}, **params)
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
  query_param_names = %i[ach_validation create_anonymous force_customer_creation temporary]
  query_params = {}
  query_params["achValidation"] = params[:ach_validation] if params.key?(:ach_validation)
  query_params["createAnonymous"] = params[:create_anonymous] if params.key?(:create_anonymous)
  query_params["forceCustomerCreation"] = params[:force_customer_creation] if params.key?(:force_customer_creation)
  query_params["temporary"] = params[:temporary] if params.key?(:temporary)
  params = params.except(*query_param_names)

  headers = {}
  headers["idempotencyKey"] = params[:idempotency_key] if params[:idempotency_key]

  request = Payabli::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "POST",
    path: "TokenStorage/add",
    headers: headers,
    query: query_params,
    body: Payabli::TokenStorage::Types::RequestTokenStorage.new(params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Payabli::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Payabli::TokenStorage::Types::AddMethodResponse.load(response.body)
  else
    error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#get_method(request_options: {}, **params) ⇒ Payabli::TokenStorage::Types::GetMethodResponse

Retrieves details for a saved payment method.

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (Hash)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

  • :method_id (String)
  • :card_expiration_format (Integer, nil)
  • :include_temporary (Boolean, nil)

Returns:



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/payabli/token_storage/client.rb', line 81

def get_method(request_options: {}, **params)
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
  query_param_names = %i[card_expiration_format include_temporary]
  query_params = {}
  query_params["cardExpirationFormat"] = params[:card_expiration_format] if params.key?(:card_expiration_format)
  query_params["includeTemporary"] = params[:include_temporary] if params.key?(:include_temporary)
  params = params.except(*query_param_names)

  request = Payabli::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "GET",
    path: "TokenStorage/#{URI.encode_uri_component(params[:method_id].to_s)}",
    query: query_params,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Payabli::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Payabli::TokenStorage::Types::GetMethodResponse.load(response.body)
  else
    error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#remove_method(request_options: {}, **params) ⇒ Payabli::Types::PayabliApiResponsePaymethodDelete

Deletes a saved payment method.

Parameters:

  • request_options (Hash) (defaults to: {})
  • params (Hash)

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

  • :method_id (String)

Returns:



122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/payabli/token_storage/client.rb', line 122

def remove_method(request_options: {}, **params)
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
  request = Payabli::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "DELETE",
    path: "TokenStorage/#{URI.encode_uri_component(params[:method_id].to_s)}",
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Payabli::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Payabli::Types::PayabliApiResponsePaymethodDelete.load(response.body)
  else
    error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end

#update_method(request_options: {}, **params) ⇒ Payabli::Types::PayabliApiResponsePaymethodDelete

Updates a saved payment method.

Parameters:

Options Hash (request_options:):

  • :base_url (String)
  • :additional_headers (Hash{String => Object})
  • :additional_query_parameters (Hash{String => Object})
  • :additional_body_parameters (Hash{String => Object})
  • :timeout_in_seconds (Integer)

Options Hash (**params):

  • :method_id (String)
  • :ach_validation (Boolean, nil)

Returns:



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/payabli/token_storage/client.rb', line 157

def update_method(request_options: {}, **params)
  params = Payabli::Internal::Types::Utils.normalize_keys(params)
  path_param_names = %i[method_id]
  body_params = params.except(*path_param_names)

  query_param_names = %i[ach_validation]
  query_params = {}
  query_params["achValidation"] = params[:ach_validation] if params.key?(:ach_validation)
  params = params.except(*query_param_names)

  request = Payabli::Internal::JSON::Request.new(
    base_url: request_options[:base_url],
    method: "PUT",
    path: "TokenStorage/#{URI.encode_uri_component(params[:method_id].to_s)}",
    query: query_params,
    body: Payabli::TokenStorage::Types::RequestTokenStorage.new(body_params).to_h,
    request_options: request_options
  )
  begin
    response = @client.send(request)
  rescue Net::HTTPRequestTimeout
    raise Payabli::Errors::TimeoutError
  end
  code = response.code.to_i
  if code.between?(200, 299)
    Payabli::Types::PayabliApiResponsePaymethodDelete.load(response.body)
  else
    error_class = Payabli::Errors::ResponseError.subclass_for_code(code)
    raise error_class.new(response.body, code: code)
  end
end