class Transbank::Webpay::WebpayPlus::MallDeferredTransaction

Constants

CAPTURE_TRANSACTION_ENDPOINT
COMMIT_TRANSACTION_ENDPOINT
CREATE_TRANSACTION_ENDPOINT
REFUND_TRANSACTION_ENDPOINT
TRANSACTION_STATUS_ENDPOINT

Public Class Methods

capture(token:, child_commerce_code:, buy_order:, authorization_code:, capture_amount:, options: nil) click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 77
def capture(token:, child_commerce_code:, 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? ? WebpayPlus::Base::integration_type[:TEST] : WebpayPlus::Base.integration_type_url(integration_type)

  url = base_url + CAPTURE_TRANSACTION_ENDPOINT.gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  body = {
    commerce_code: child_commerce_code,
    buy_order: buy_order,
    authorization_code: authorization_code,
    capture_amount: capture_amount
  }
  resp = http_put(uri_string: url, body: body, headers: headers)
  body = JSON.parse(resp.body)
  return ::Transbank::Webpay::WebpayPlus::TransactionCaptureResponse.new(body) if resp.kind_of? Net::HTTPSuccess
  raise Errors::TransactionCaptureError.new(body['error_message'], resp.code)
end
commit(token:, options:nil) click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 31
def commit(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? ? WebpayPlus::Base::integration_type[:TEST] : WebpayPlus::Base.integration_type_url(integration_type)
  url = base_url + "#{COMMIT_TRANSACTION_ENDPOINT}/#{token}"
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  resp = http_put(uri_string: url, body: {}, headers: headers)
  json = JSON.parse(resp.body)
  return ::Transbank::Webpay::WebpayPlus::MallTransactionCommitResponse.new(json) if resp.kind_of? Net::HTTPSuccess
  raise Errors::TransactionCommitError.new(json['error_message'], resp.code)
end
create(buy_order:, session_id:, return_url:, details:, options: nil) click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 13
def create(buy_order:, session_id:, return_url:, details:, 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? ? WebpayPlus::Base::integration_type[:TEST] : WebpayPlus::Base.integration_type_url(integration_type)

  url = base_url + CREATE_TRANSACTION_ENDPOINT
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  body = {buy_order: buy_order,
          session_id: session_id,
          details: details,
          return_url: return_url}
  resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
  json = JSON.parse(resp.body)
  return ::Transbank::Webpay::WebpayPlus::TransactionCreateResponse.new(json) if resp.kind_of? Net::HTTPSuccess
  raise Errors::TransactionCreateError.new(json['error_message'], resp.code)
end
default_integration_params() click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 97
def default_integration_params
  {
    api_key: WebpayPlus::Base.api_key,
    commerce_code: WebpayPlus::Base.commerce_code,
    integration_type: WebpayPlus::Base::integration_type,
    base_url: WebpayPlus::Base::current_integration_type_url
  }
end
refund(token:, buy_order:, child_commerce_code:, amount:, options:nil) click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 45
def refund(token:, buy_order:, child_commerce_code:, 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? ? WebpayPlus::Base::integration_type[:TEST] : WebpayPlus::Base.integration_type_url(integration_type)
  url = base_url + "#{REFUND_TRANSACTION_ENDPOINT}".gsub(':token', token)
  headers = webpay_headers(commerce_code: commerce_code, api_key: api_key)
  body = {
    buy_order: buy_order,
    commerce_code: child_commerce_code,
    amount: amount
  }
  resp = http_post(uri_string: url, body: body, headers: headers, camel_case_keys: false)
  json = JSON.parse(resp.body)
  return ::Transbank::Webpay::WebpayPlus::TransactionRefundResponse.new(json) if resp.kind_of? Net::HTTPSuccess
  raise Errors::TransactionRefundError.new(json['error_message'], resp.code)
end
status(token:, options: nil) click to toggle source
# File lib/transbank/sdk/webpay/webpay_plus/mall_deferred/mall_deferred_transaction.rb, line 63
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? ? WebpayPlus::Base::integration_type[:TEST] : WebpayPlus::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)
  json = JSON.parse(resp.body)
  return ::Transbank::Webpay::WebpayPlus::MallTransactionStatusResponse.new(json) if resp.kind_of? Net::HTTPSuccess
  raise Errors::TransactionStatusError.new(json['error_message'], resp.code)
end