Class: Datatrans::JSON::Transaction::Init

Inherits:
Object
  • Object
show all
Defined in:
lib/datatrans/json/transaction/init.rb

Direct Known Subclasses

Authorize

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(datatrans, params) ⇒ Init

Returns a new instance of Init.



9
10
11
12
# File 'lib/datatrans/json/transaction/init.rb', line 9

def initialize(datatrans, params)
  @datatrans = datatrans
  @params = params
end

Instance Attribute Details

#datatransObject



7
8
9
# File 'lib/datatrans/json/transaction/init.rb', line 7

def datatrans
  @datatrans
end

#paramsObject



7
8
9
# File 'lib/datatrans/json/transaction/init.rb', line 7

def params
  @params
end

Instance Method Details

#post(url, options = {}) ⇒ Object



14
15
16
17
18
19
# File 'lib/datatrans/json/transaction/init.rb', line 14

def post(url, options = {})
  options = options
    .merge(datatrans.proxy)
    .merge(basic_auth: {username: datatrans.merchant_id, password: datatrans.password})
  HTTParty.post(url, **options)
end

#processObject



21
22
23
24
25
# File 'lib/datatrans/json/transaction/init.rb', line 21

def process
  post(datatrans.url(:init_transaction),
    headers: {"Content-Type" => "application/json"},
    body: request_body.to_json).parsed_response
end

#request_bodyObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/datatrans/json/transaction/init.rb', line 27

def request_body
  auto_settle = params[:auto_settle].nil? ? true : params[:auto_settle]

  body = {
    currency: params[:currency],
    refno: params[:refno],
    amount: params[:amount],
    autoSettle: auto_settle,
    paymentMethods: params[:payment_methods],
    redirect: {
      successUrl: params[:success_url],
      cancelUrl: params[:cancel_url],
      errorUrl: params[:error_url]
    }
  }

  body["option"] = params[:option] if params[:option].present?

  body
end