Class: BlockBee::Checkout

Inherits:
Object
  • Object
show all
Defined in:
lib/blockbee.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameters: {}, bb_params: {}, notify_url:, api_key:) ⇒ Checkout

Returns a new instance of Checkout.



262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
# File 'lib/blockbee.rb', line 262

def initialize(parameters: {}, bb_params: {}, notify_url:, api_key:)
  raise BlockBee::MissingAPIKeyError, 'Provide your API Key' if api_key.nil? || api_key.empty?
  raise BlockBee::CallbackURLMissing, 'Provide your notify URL' if notify_url.nil? || notify_url.empty?
  raise ArgumentError, 'Parameters must be a hash' unless parameters.is_a?(Hash)
  raise ArgumentError, 'BB params must be a hash' unless bb_params.is_a?(Hash)

  @parameters = parameters
  @bb_params = bb_params
  @api_key = api_key
  @notify_url = notify_url

  if @parameters
    begin
      _nu = URI.parse(notify_url)
      raise ArgumentError, 'Invalid notify URL' unless _nu.scheme && _nu.host
    rescue URI::InvalidURIError
      raise ArgumentError, 'Invalid notify URL format'
    end

    # Preserve original scheme (HTTP/HTTPS) for development flexibility
    if _nu.scheme.downcase == 'https'
      @notify_url = URI::HTTPS.build(
        host: _nu.host,
        path: _nu.path,
        query: URI.encode_www_form(parameters)
      )
    else
      @notify_url = URI::HTTP.build(
        host: _nu.host,
        path: _nu.path,
        query: URI.encode_www_form(parameters)
      )
    end
  end
end

Class Method Details

.deposit_logs(token, api_key) ⇒ Object



347
348
349
350
351
352
353
354
355
356
# File 'lib/blockbee.rb', line 347

def self.deposit_logs(token, api_key)
  _params = {
    'apikey' => api_key,
    'token' => token
  }

  _logs = BlockBee::process_request_get(nil, 'deposit/logs', params: _params)

  _logs
end

.payment_logs(token, api_key) ⇒ Object



325
326
327
328
329
330
331
332
333
334
# File 'lib/blockbee.rb', line 325

def self.payment_logs(token, api_key)
  _params = {
    'apikey' => api_key,
    'token' => token
  }

  _logs = BlockBee::process_request_get(nil, 'checkout/logs', params: _params)

  _logs
end

Instance Method Details

#deposit_requestObject



336
337
338
339
340
341
342
343
344
345
# File 'lib/blockbee.rb', line 336

def deposit_request
  _params = {
    'notify_url' => @notify_url,
    'apikey' => @api_key
  }.merge(@bb_params)

  _request = BlockBee::process_request_get(nil, 'deposit/request', params: _params)

  _request
end

#payment_request(redirect_url, value) ⇒ Object

Raises:

  • (ArgumentError)


298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# File 'lib/blockbee.rb', line 298

def payment_request(redirect_url, value)
  raise ArgumentError, 'Provide a valid number' unless value.is_a?(Numeric)
  raise ArgumentError, 'Value must be positive' unless value > 0
  raise ArgumentError, 'Redirect URL cannot be empty' if redirect_url.nil? || redirect_url.empty?
  
  # Validate redirect URL format
  begin
    _redirect = URI.parse(redirect_url)
    raise ArgumentError, 'Invalid redirect URL' unless _redirect.scheme && _redirect.host
  rescue URI::InvalidURIError
    raise ArgumentError, 'Invalid redirect URL format'
  end

  _params = {
    'redirect_url' => redirect_url,
    'notify_url' => @notify_url,
    'value' => value,
    'apikey' => @api_key
  }.merge(@bb_params)

  _request = BlockBee::process_request_get(nil, 'checkout/request', params: _params)

  return nil unless _request['status'] == 'success'

  _request
end