Marcelo

Progress in var specs

--color
\ No newline at end of file
module Var
class ConektaCardHandler < ConektaHandler
PAYMENT_METHOD_STRING = "Card".freeze
end
end
\ No newline at end of file
module Var
class ConektaHandler
PAYMENT_METHOD_STRING = 'Conekta_payment'.freeze
class << self
def analyze(event)
process_payment event[:data][:object] if
event[:data][:object][:status] == "paid"
process_charge event[:data][:object]
end
def process_payment(payment_info)
object = Var.find_charge payment_info[:id]
time = Time.strptime payment_info[:paid_at].to_s, '%s'
amount = payment_info[:amount].to_f / 100.0
fee = payment_info[:fee].to_f / 100.0
object.update(var_fee: fee, var_paid_amount: amount,
var_payment_method: self::PAYMENT_METHOD_STRING,
var_payment_at: time,
var_status: payment_info[:status])
end
def process_charge(charge_info)
# TODO: raise error if object is nil
object = Var.find_charge charge_info[:id]
object.update(var_status: charge_info[:status])
end
end
end
end
\ No newline at end of file
module Var
class ConektaOxxoHandler < ConektaHandler
PAYMENT_METHOD_STRING = "OXXO".freeze
end
end
\ No newline at end of file
module Var
class ConektaPayoutHandler
class << self
def analyze(event)
end
end
end
end
\ No newline at end of file
module Var
class ConektaSpeiHandler < ConektaHandler
PAYMENT_METHOD_STRING = "Bank Transfer".freeze
end
end
\ No newline at end of file
class AddVarStatusTo<%=@model_name.pluralize.camelize%> < ActiveRecord::Migration
def change
add_column :<%=@model_name.pluralize.underscore%>, :var_status, :string, default: 'pending'
add_column :<%=@model_name.pluralize.underscore%>, :var_status, :string, default: 'pending_payment'
add_column :<%=@model_name.pluralize.underscore%>, :var_barcode_url, :string
add_column :<%=@model_name.pluralize.underscore%>, :var_barcode, :string
add_column :<%=@model_name.pluralize.underscore%>, :var_payment, :datetime
......
......@@ -2,6 +2,11 @@ require 'var/version'
require 'conekta'
require 'paypal-sdk-rest'
require 'acts_as_chargeable'
require 'conekta_handler'
require 'conekta_oxxo_handler'
require 'conekta_card_handler'
require 'conekta_spei_handler'
require 'conekta_payout_handler'
# Main Module
module Var
......@@ -25,18 +30,28 @@ module Var
def conekta_webhook(event)
raise "Hash expected, received #{event.class}" unless event.class == Hash
raise 'Malformed hash received' unless event[:data] &&
event[:data][:object]
payment = event[:data][:object]
process_charge_creation_with_card event
raise 'Malformed hash received' unless (event[:data] &&
event[:data][:object]) ||
event[:object]
if event.keys[0] == :object
ConektaPayoutHandler.analyze(event)
else
payment_type = event[:data][:object][:payment_method][:object]
case payment_type
when "cash_payment"
ConektaOxxoHandler.analyze(event)
when "card_payment"
ConektaCardHandler.analyze(event)
when "bank_transfer_payment"
ConektaSpeiHandler.analyze(event)
end
end
# payment = event[:data][:object]
# object = Var.find_charge payment[:id]
# # object.handle_conekta_event
# update_object_var_data(object, payment)
# object
end
def process_charge_creation_with_card(p)
end
def update_object_var_data(object, data)
payment = data
......@@ -51,7 +66,7 @@ module Var
end
def find_charge(id)
Rails.application.eager_load! if Rails.env.development?
# Rails.application.eager_load! if Rails.env.development?
@@var_classes.map do |class_name|
class_name.where(var_id: id)
end.flatten.first
......
require 'spec_helper'
describe ConektaHandler do
it 'processes oxxo payment' do
end
it 'processes card payment' do
end
it 'processes oxxo payment' do
end
it 'processes payout' do
end
end
\ No newline at end of file
This diff is collapsed. Click to expand it.