class OffsitePayments::Integrations::BitPay::Helper

Public Class Methods

new(order_id, account, options) click to toggle source
Calls superclass method
# File lib/offsite_payments/integrations/bit_pay.rb, line 36
def initialize(order_id, account, options)
  super
  @account = account

  add_field('posData', {'orderId' => order_id}.to_json)
  add_field('fullNotifications', true)
  add_field('transactionSpeed', 'high')
  add_field('token', account)
end

Public Instance Methods

form_fields() click to toggle source
# File lib/offsite_payments/integrations/bit_pay.rb, line 69
def form_fields
  invoice = create_invoice

  raise ActionViewHelperError, "Invalid response while retrieving BitPay Invoice ID. Please try again." unless invoice

  { "id" => extract_invoice_id(invoice) }
end
form_method() click to toggle source
# File lib/offsite_payments/integrations/bit_pay.rb, line 65
def form_method
  "GET"
end

Private Instance Methods

add_plugin_info(request) click to toggle source
# File lib/offsite_payments/integrations/bit_pay.rb, line 78
def add_plugin_info(request)
  #add plugin info for v1 and v2 tokens
  if BitPay.v2_api_token?(@account)
    request.add_field("x-bitpay-plugin-info", "BitPay_AM" + application_id + "_Client_v2.0.1909")
  else
    request.add_field("x-bitpay-plugin-info", "BitPay_AM" + application_id + "_Client_v1.0.1909")
    request.basic_auth @account, ''
  end
end
create_invoice() click to toggle source
# File lib/offsite_payments/integrations/bit_pay.rb, line 88
def create_invoice
  uri = URI.parse(BitPay.invoicing_url(@account))
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  request = Net::HTTP::Post.new(uri.request_uri)
  request.content_type = "application/json"
  request.body = @fields.to_json
  add_plugin_info(request)

  response = http.request(request)
  JSON.parse(response.body)
end
extract_invoice_id(invoice) click to toggle source
# File lib/offsite_payments/integrations/bit_pay.rb, line 102
def extract_invoice_id(invoice)
  if BitPay.v2_api_token?(@account)
    invoice['data']['id']
  else
    invoice['id']
  end
end