class Khipu::KhipuApiEndpoint

Public Class Methods

new(receiver_id, secret) click to toggle source
Calls superclass method
# File lib/khipu/khipu_api_endpoint.rb, line 6
def initialize(receiver_id, secret)
  super(receiver_id, secret)
end

Public Instance Methods

create_authenticated_payment_url(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 51
def create_authenticated_payment_url(args)
  endpoint = 'createAuthenticatedPaymentURL'
  check_arguments(args, [:subject, :amount, :payer_username])
  params = {
      receiver_id: @receiver_id,
      subject: args[:subject],
      body: args[:body] || '',
      amount: args[:amount],
      payer_username: args[:payer_username],
      payer_email: args[:payer_email] || '',
      bank_id: args[:bank_id] || '',
      expires_date: args[:expires_date] || '',
      transaction_id: args[:transaction_id] || '',
      custom: args[:custom] || '',
      notify_url: args[:notify_url] || '',
      return_url: args[:return_url] || '',
      cancel_url: args[:cancel_url] || '',
      picture_url: args[:picture_url] || ''
  }
  resp = execute(endpoint, params)
  resp_items = %w(id url mobile-url)
  resp.select{|key, value| resp_items.include?(key)}
end
create_email(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 75
def create_email(args)
  endpoint = 'createEmail'
  check_arguments(args, [:subject, :destinataries, :pay_directly, :send_emails])
  params = {
      receiver_id: @receiver_id,
      subject: args[:subject],
      body: args[:body] || '',
      destinataries: args[:destinataries].to_json,
      pay_directly: args[:pay_directly],
      send_emails: args[:send_emails],
      expires_date: args[:expires_date] || '',
      transaction_id: args[:transaction_id] || '',
      custom: args[:custom] || '',
      notify_url: args[:notify_url] || '',
      return_url: args[:return_url] || '',
      cancel_url: args[:cancel_url] || '',
      picture_url: args[:picture_url] || ''
  }
  execute(endpoint, params)
end
create_payment_url(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 28
def create_payment_url(args)
  endpoint = 'createPaymentURL'
  check_arguments(args, [:subject, :amount])
  params = {
      receiver_id: @receiver_id,
      subject: args[:subject],
      body: args[:body] || '',
      amount: args[:amount],
      payer_email: args[:payer_email] || '',
      bank_id: args[:bank_id] || '',
      expires_date: args[:expires_date] || '',
      transaction_id: args[:transaction_id] || '',
      custom: args[:custom] || '',
      notify_url: args[:notify_url] || '',
      return_url: args[:return_url] || '',
      cancel_url: args[:cancel_url] || '',
      picture_url: args[:picture_url] || ''
  }
  resp = execute(endpoint, params)
  resp_items = %w(id url mobile-url)
  resp.select{|key, value| resp_items.include?(key)}
end
create_receiver(args) click to toggle source

Integrator API

# File lib/khipu/khipu_api_endpoint.rb, line 193
def create_receiver(args)
  endpoint = 'createReceiver'
  check_arguments(args, [:email, :first_name, :last_name, :notify_url, :identifier, :bussiness_category, :bussiness_name,
                         :phone, :address_line_1, :address_line_2, :address_line_3, :country_code])
  params = {
      receiver_id: @receiver_id,
      email: args[:email],
      first_name: args[:first_name],
      last_name: args[:last_name],
      notify_url: args[:notify_url],
      identifier: args[:identifier],
      bussiness_category: args[:bussiness_category],
      bussiness_name: args[:bussiness_name],
      phone: args[:phone],
      address_line_1: args[:address_line_1],
      address_line_2: args[:address_line_2],
      address_line_3: args[:address_line_3],
      country_code: args[:country_code]
  }
  execute(endpoint, params, true, true, Khipu::INTEGRATOR_API_URL)
end
execute(endpoint, params, add_hash = true, json_response = true, base_url = Khipu::API_URL) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 10
def execute(endpoint, params, add_hash = true, json_response = true, base_url = Khipu::API_URL)
  post_params = params.clone
  if add_hash
    post_params['hash'] = hmac_sha256(@secret, concatenated(params))
  end
  post(endpoint, post_params, json_response, base_url)
end
get_payment_notification(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 181
def get_payment_notification(args)
  endpoint = 'getPaymentNotification'
  check_arguments(args, [:notification_token])
  params = {
      receiver_id: @receiver_id,
      notification_token: args[:notification_token]
  }
  execute(endpoint, params)
end
payment_status(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 18
def payment_status(args)
  endpoint = 'paymentStatus'
  check_arguments(args, [:payment_id])
  params = {
      receiver_id: @receiver_id,
      payment_id: args[:payment_id]
  }
  execute(endpoint, params)
end
receiver_banks() click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 96
def receiver_banks
  endpoint = 'receiverBanks'
  params = {
      receiver_id: @receiver_id
  }
  resp = execute(endpoint, params)
  resp_items = %w(id name message min-amount)
  resp['banks'].map{|item| item.select{|key, value| resp_items.include?(key)} }
end
receiver_status() click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 106
def receiver_status
  endpoint = 'receiverStatus'
  params = {
      receiver_id: @receiver_id,
  }
  execute(endpoint, params)
end
set_bill_expired(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 114
def set_bill_expired(args)
  endpoint = 'setBillExpired'
  check_arguments(args, [:bill_id])
  params = {
      receiver_id: @receiver_id,
      bill_id: args[:bill_id],
      text: args[:text] || ''
  }
  execute(endpoint, params)
end
set_paid_by_receiver(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 125
def set_paid_by_receiver(args)
  endpoint = 'setPaidByReceiver'
  check_arguments(args, [:payment_id])
  params = {
      receiver_id: @receiver_id,
      payment_id: args[:payment_id],
  }
  execute(endpoint, params)
end
set_rejected_by_payer(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 135
def set_rejected_by_payer(args)
  endpoint = 'setRejectedByPayer'
  check_arguments(args, [:payment_id])
  params = {
      receiver_id: @receiver_id,
      payment_id: args[:payment_id],
      text: args[:text] || ''
  }
  execute(endpoint, params)
end
verify_payment_notification(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 146
def verify_payment_notification(args)
  endpoint = 'verifyPaymentNotification'
  check_arguments(args, [:api_version, :notification_id, :subject, :amount, :payer_email, :notification_signature])
  params = {
      api_version: args[:api_version],
      receiver_id: @receiver_id,
      notification_id: args[:notification_id],
      subject: args[:subject],
      amount: args[:amount],
      currency: args[:currency] || 'CLP',
      transaction_id: args[:transaction_id] || '',
      payer_email: args[:payer_email] || '',
      custom: args[:custom] || '',
      notification_signature: args[:notification_signature]
  }
  resp = execute(endpoint, params, false, false)
  resp == 'VERIFIED'
end
verify_payment_notification_local(args) click to toggle source
# File lib/khipu/khipu_api_endpoint.rb, line 165
def verify_payment_notification_local(args)
  check_arguments(args, [:api_version, :notification_id, :subject, :amount, :payer_email, :notification_signature])
  params = {
      api_version: args[:api_version],
      receiver_id: @receiver_id,
      notification_id: args[:notification_id],
      subject: args[:subject],
      amount: args[:amount],
      currency: args[:currency] || 'CLP',
      transaction_id: args[:transaction_id] || '',
      payer_email: args[:payer_email] || '',
      custom: args[:custom] || ''
  }
  verify_signature(params, args[:notification_signature])
end