Class: PayTrace::RecurringTransaction

Inherits:
Object
  • Object
show all
Defined in:
lib/paytrace/recurring_transaction.rb

Constant Summary collapse

CREATE_METHOD =
"CreateRecur"
DELETE_METHOD =
"DeleteRecur"
UPDATE_METHOD =
"UpdateRecur"
EXPORT_APPROVED_METHOD =
"ExportCustomerRecur"
EXPORT_SCHEDULED_METHOD =
"ExportRecur"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(raw_response) ⇒ RecurringTransaction

Returns a new instance of RecurringTransaction.



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/paytrace/recurring_transaction.rb', line 13

def initialize(raw_response)
  response_map = Hash[raw_response.split('+').map {|pair| pair.split('=')}]
  @id = response_map["RECURID"].to_i
  @amount = response_map["AMOUNT"].to_f
  @customer_id = response_map["CUSTID"]
  @next = response_map["NEXT"]
  @total_count = response_map["TOTALCOUNT"].to_i
  @current_count = response_map["CURRENTCOUNT"].to_i
  @repeat = response_map["REPEAT"].to_i
  @description = response_map["DESCRIPTION"]
end

Instance Attribute Details

#amountObject (readonly)

Returns the value of attribute amount.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def amount
  @amount
end

#current_countObject (readonly)

Returns the value of attribute current_count.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def current_count
  @current_count
end

#customer_idObject (readonly)

Returns the value of attribute customer_id.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def customer_id
  @customer_id
end

#descriptionObject (readonly)

Returns the value of attribute description.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def description
  @description
end

#idObject (readonly)

Returns the value of attribute id.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def id
  @id
end

#nextObject (readonly)

Returns the value of attribute next.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def next
  @next
end

#repeatObject (readonly)

Returns the value of attribute repeat.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def repeat
  @repeat
end

#total_countObject (readonly)

Returns the value of attribute total_count.



5
6
7
# File 'lib/paytrace/recurring_transaction.rb', line 5

def total_count
  @total_count
end

Class Method Details

.create(params = {}) ⇒ Object



37
38
39
# File 'lib/paytrace/recurring_transaction.rb', line 37

def self.create(params = {})
  parse_response(set_request_data(CREATE_METHOD, params))
end

.delete(params = {}) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/paytrace/recurring_transaction.rb', line 41

def self.delete(params = {})
  request = PayTrace::API::Request.new
  request.set_param(:method, DELETE_METHOD)
  if params[:recur_id]
    request.set_param(:recur_id, params[:recur_id])
  else
    request.set_param(:customer_id, params[:customer_id])
  end

  gateway = PayTrace::API::Gateway.new
  parse_response(gateway.send_request(request))
end

.export_approved(params = {}) ⇒ Object



33
34
35
# File 'lib/paytrace/recurring_transaction.rb', line 33

def self.export_approved(params = {})
  set_request_data(EXPORT_APPROVED_METHOD, params)
end

.export_scheduled(params = {}) ⇒ Object



29
30
31
# File 'lib/paytrace/recurring_transaction.rb', line 29

def self.export_scheduled(params = {})
  parse_response(set_request_data(EXPORT_SCHEDULED_METHOD, params))
end

.parse_response(response) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
# File 'lib/paytrace/recurring_transaction.rb', line 58

def self.parse_response(response)
  unless response.has_errors?
    values = response.values

    if values.has_key?("RECURRINGPAYMENT")
      new(values["RECURRINGPAYMENT"])
    else
      values["RECURID"]
    end
  end
end

.set_request_data(method, params) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/paytrace/recurring_transaction.rb', line 70

def self.set_request_data(method, params)
  request = PayTrace::API::Request.new
  request.set_param(:method, method)

  request.set_param(:recur_id, params[:recur_id])
  request.set_param(:customer_id, params[:customer_id])
  request.set_param(:recur_frequency, params[:recur_frequency])
  request.set_param(:recur_start, params[:recur_start])
  request.set_param(:recur_count, params[:recur_count])
  request.set_param(:amount, params[:amount])
  request.set_param(:transaction_type, params[:transaction_type])
  request.set_param(:description, params[:description])
  request.set_param(:recur_receipt, params[:recur_receipt])
  request.set_param(:recur_type, params[:recur_type])

  gateway = PayTrace::API::Gateway.new
  gateway.send_request(request)
end

.update(params = {}) ⇒ Object



54
55
56
# File 'lib/paytrace/recurring_transaction.rb', line 54

def self.update(params = {})
  parse_response(set_request_data(UPDATE_METHOD, params))
end

Instance Method Details

#inspectObject



25
26
27
# File 'lib/paytrace/recurring_transaction.rb', line 25

def inspect
  "<RecurringTransaction:#{@id},customer id:#{@customer_id},amount: #{@amount},next: #{@next}>"
end