class Transbank::Patpass::PatpassByWebpay::Transaction
Constants
- COMMIT_TRANSACTION_ENDPOINT
- CREATE_TRANSACTION_ENDPOINT
- TRANSACTION_STATUS_ENDPOINT
Public Class Methods
commit(token:, options: nil)
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 37 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] base_url = PatpassByWebpay::Base.integration_types[options&.integration_type] || default_integration_params[:base_url] 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: nil, headers: headers) body = JSON.parse(resp.body) return ::Transbank::Patpass::PatpassByWebpay::TransactionCommitResponse.new(body) if resp.kind_of? Net::HTTPSuccess raise Errors::TransactionCommitError.new(body['error_message'], resp.code) end
create(buy_order:, session_id:, amount:, return_url:, details: ,options: nil)
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 12 def create(buy_order:, session_id:, amount:, 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? ? PatpassByWebpay::Base::integration_types[:TEST] : PatpassByWebpay::Base.integration_type_url(integration_type) wpm_detail = wpm_details(details) body = { buy_order: buy_order, session_id: session_id, amount: amount, return_url: return_url, wpm_detail: wpm_detail } 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::Patpass::PatpassByWebpay::TransactionCreateResponse.new(body) if resp.kind_of? Net::HTTPSuccess raise Errors::TransactionCreateError.new(body['error_message'], resp.code) end
default_integration_params()
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 65 def default_integration_params { api_key: PatpassByWebpay::Base.api_key, commerce_code: PatpassByWebpay::Base.commerce_code, base_url: PatpassByWebpay::Base::current_integration_type_url } end
status(token:, options: nil)
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 52 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] base_url = PatpassByWebpay::Base.integration_types[options&.integration_type] || default_integration_params[:base_url] url = base_url + "#{TRANSACTION_STATUS_ENDPOINT}/#{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::Patpass::PatpassByWebpay::TransactionStatusResponse.new(body) if resp.kind_of? Net::HTTPSuccess raise Errors::TransactionStatusError.new(body['error_message'], resp.code) end
Private Class Methods
wpm_detail_fields()
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 83 def wpm_detail_fields %i(service_id card_holder_id card_holder_name card_holder_last_name1 card_holder_last_name2 card_holder_mail cellphone_number expiration_date commerce_mail uf_flag) end
wpm_details(details)
click to toggle source
# File lib/transbank/sdk/patpass/patpass_by_webpay/transaction.rb, line 74 def wpm_details(details) # Check against the wpm_detail_fields # If one is missing, KeyError will be raised wpm_detail_fields.reduce({}) do |acc, field| acc[field] = details.fetch(field) { details.fetch(field.to_s) } acc end end