Abraham Rodriguez

conekta_webhook

......@@ -5,19 +5,42 @@ require 'paypal-sdk-rest'
# Main Module
module Var
# TODO: add paypal
# @@valid_services = [:conekta, :paypal]
VALID_SERVICES = [:conekta]
@@var_classes = []
def self.valid_services
VALID_SERVICES
end
def self.var_classes
@@var_classes
end
def self.add_var_class(class_name)
@@var_classes << class_name unless @@var_classes.include? class_name
end
def self.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 self.conekta_webhook(params)
payment = params[:data][:object]
object = find_charge payment[:id]
object.update_columns(var_status: payment[:status])
true
rescue Exception => exception
false
end
def find_charge(id)
@@var_classes.map do |class_name|
class_name.where(var_id: id)
end.flatten.first
end
end
# Module for models
module ActsAsChargeable
......@@ -28,6 +51,7 @@ module ActsAsChargeable
include ChargeableInstanceMethods
cattr_accessor :sync_attributes
self.sync_attributes = keys
Var.add_var_class(self)
end
end
# Instance Methods
......
# Var Version
module Var
VERSION = '0.2.8'
VERSION = '0.2.9'
end
......