var.rb
1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
require 'var/version'
require 'conekta'
require 'paypal-sdk-rest'
require 'acts_as_chargeable'
# Main Module
module Var
VALID_SERVICES = [:conekta]
@@var_classes = []
class << self
def valid_services
VALID_SERVICES
end
def var_classes
@@var_classes
end
def add_var_class(class_name)
@@var_classes << class_name unless @@var_classes.include? class_name
end
def create_charge(service, object, options = {})
return { error_message: 'Service is not supported' } unless VALID_SERVICES.include? service
return { error_message: "#{object.class} doesn't support charges" } unless object.respond_to?(:charge_with)
charge = object.charge_with(service, options)
charge
end
def conekta_webhook(params)
payment = params[:data][:object]
object = Var.find_charge payment[:id]
object.update_columns(var_status: payment[:status])
if object.var_payed?
time = Time.strptime payment[:paid_at].to_s, '%s'
amount = payment[:amount].to_f / 100.0
fee = payment[:fee].to_f / 100.0
object.update(var_fee: fee, var_paid_amount: amount, var_payment_method: payment[:payment_method][:object], var_payment_at: time)
end
object
rescue Exception => exception
puts exception
false
end
def find_charge(id)
Rails.application.eager_load! if Rails.env.development?
@@var_classes.map do |class_name|
class_name.where(var_id: id)
end.flatten.first
end
end
end
if defined? ActiveRecord::Base
ActiveRecord::Base.send(:include, ActsAsChargeable)
end