Class: Transbank::TransaccionCompleta::Transaction

Inherits:
Object
  • Object
show all
Extended by:
Utils::NetHelper
Defined in:
lib/transbank/sdk/transaccion_completa/transaction.rb

Constant Summary collapse

CREATE_TRANSACTION_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions'
TRANSACTION_INSTALLMENTS_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions/:token/installments'
COMMIT_TRANSACTION_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions/:token'
TRANSACTION_STATUS_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions/:token'
REFUND_TRANSACTION_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions/:token/refunds'
CAPTURE_TRANSACTION_ENDPOINT =
'rswebpaytransaction/api/webpay/v1.0/transactions/:token/capture'

Class Method Summary collapse

Methods included from Utils::NetHelper

http_delete, http_get, http_post, http_put, keys_to_camel_case, patpass_comercio_headers, snake_to_camel_case, webpay_headers

Class Method Details

.capture(token:, buy_order:, authorization_code:, capture_amount:, options: nil) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 112

def capture(token:, buy_order:, authorization_code:, capture_amount:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  body = {
    buy_order: buy_order,
    authorization_code: authorization_code,
    capture_amount: capture_amount
  }

  url = base_url + CAPTURE_TRANSACTION_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  resp = http_put(uri_string: url, body: body, headers: headers)
  body = JSON.parse(resp.body)
  return ::Transbank::TransaccionCompleta::TransactionCaptureResponse.new(body) if resp.is_a? Net::HTTPSuccess

  raise Errors::TransactionCaptureError.new(body['error_message'], resp.code)
end

.commit(token:, id_query_installments:, deferred_period_index:, grace_period:, options: nil) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 56

def commit(token:, id_query_installments:, deferred_period_index:,
           grace_period:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  url = base_url + COMMIT_TRANSACTION_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  body = {
    id_query_installments: id_query_installments,
    deferred_period_index: deferred_period_index,
    grace_period: grace_period
  }

  resp = http_put(uri_string: url, body: body, headers: headers)
  body = JSON.parse(resp.body)
  return ::Transbank::TransaccionCompleta::TransactionCommitResponse.new(body) if resp.is_a? Net::HTTPSuccess

  raise Errors::TransactionCommitError.new(body['error_message'], resp.code)
end

.create(buy_order:, session_id:, amount:, card_number:, cvv:, card_expiration_date:, options: nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 14

def create(buy_order:, session_id:, amount:, card_number:, cvv:,
           card_expiration_date:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  body = {
    buy_order: buy_order, session_id: session_id,
    amount: amount, card_number: card_number, cvv: cvv,
    card_expiration_date: card_expiration_date
  }

  url = base_url + CREATE_TRANSACTION_ENDPOINT
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
  body = JSON.parse(resp.body)
  return ::Transbank::TransaccionCompleta::TransactionCreateResponse.new(body) if resp.is_a? Net::HTTPSuccess

  raise Errors::TransactionCreateError.new(body['error_message'], resp.code)
end

.default_integration_paramsObject



133
134
135
136
137
138
139
140
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 133

def default_integration_params
  {
    api_key: TransaccionCompleta::Base.api_key,
    commerce_code: TransaccionCompleta::Base.commerce_code,
    integration_type: TransaccionCompleta::Base.integration_type,
    base_url: TransaccionCompleta::Base.current_integration_type_url
  }
end

.installments(token:, installments_number:, options: nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 36

def installments(token:, installments_number:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  url = base_url + TRANSACTION_INSTALLMENTS_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)

  body = { installments_number: installments_number }

  resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
  body = JSON.parse(resp.body)
  if resp.is_a? Net::HTTPSuccess
    return ::Transbank::TransaccionCompleta::TransactionInstallmentsResponse.new(body)
  end

  raise Errors::TransactionInstallmentsError.new(body['error_message'], resp.code)
end

.refund(token:, amount:, options: nil) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 93

def refund(token:, amount:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  body = {
    amount: amount
  }

  url = base_url + REFUND_TRANSACTION_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
  body = JSON.parse(resp.body)
  return ::Transbank::TransaccionCompleta::TransactionRefundResponse.new(body) if resp.is_a? Net::HTTPSuccess

  raise Errors::TransactionRefundError.new(body['error_message'], resp.code)
end

.status(token:, options: nil) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/transbank/sdk/transaccion_completa/transaction.rb', line 78

def status(token:, options: nil)
  api_key = options&.api_key || default_integration_params[:api_key]
  commerce_code = options&.commerce_code || default_integration_params[:commerce_code]
  integration_type = options&.integration_type || default_integration_params[:integration_type]
  base_url = integration_type.nil? ? TransaccionCompleta::Base.integration_type[:TEST] : TransaccionCompleta::Base.integration_type_url(integration_type)

  url = base_url + TRANSACTION_STATUS_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  resp = http_get(uri_string: url, headers: headers)
  body = JSON.parse(resp.body)
  return ::Transbank::TransaccionCompleta::TransactionStatusResponse.new(body) if resp.is_a? Net::HTTPSuccess

  raise Errors::TransactionStatusError.new(body['error_message'], resp.code)
end