Showing
3 changed files
with
24 additions
and
13 deletions
| 1 | -class AddVarStatusTo<%=@model_name.camelize%> < ActiveRecord::Migration | 1 | +class AddVarStatusTo<%=@model_name.pluralize.camelize%> < ActiveRecord::Migration |
| 2 | def change | 2 | def change |
| 3 | add_column :<%=@model_name.pluralize.underscore%>, :var_status, :string, default: 'pending' | 3 | add_column :<%=@model_name.pluralize.underscore%>, :var_status, :string, default: 'pending' |
| 4 | + add_column :<%=@model_name.pluralize.underscore%>, :barcode_url, :string | ||
| 4 | end | 5 | end |
| 5 | end | 6 | end | ... | ... |
| 1 | require 'rails/generators' | 1 | require 'rails/generators' |
| 2 | 2 | ||
| 3 | -class VarStatusGenerator < Rails::Generators::NamedBase | 3 | +class VarModelGenerator < Rails::Generators::NamedBase |
| 4 | source_root File.expand_path('../templates', __FILE__) | 4 | source_root File.expand_path('../templates', __FILE__) |
| 5 | desc "This generator generates layout file with navigation." | 5 | desc "This generator generates layout file with navigation." |
| 6 | 6 | ||
| 7 | - def generate_status | 7 | + def generate_model |
| 8 | d = Time.now.strftime('%Y%m%d%H%M%S') | 8 | d = Time.now.strftime('%Y%m%d%H%M%S') |
| 9 | @model_name = name | 9 | @model_name = name |
| 10 | - template "var_status.rb", | 10 | + template "var_model.rb", |
| 11 | "db/migrate/#{d}_add_var_status_to_#{name.pluralize.underscore}.rb" | 11 | "db/migrate/#{d}_add_var_status_to_#{name.pluralize.underscore}.rb" |
| 12 | end | 12 | end |
| 13 | end | 13 | end | ... | ... |
| ... | @@ -15,7 +15,6 @@ module Var | ... | @@ -15,7 +15,6 @@ module Var |
| 15 | return { error_message: 'Service is not supported' } unless VALID_SERVICES.include? service | 15 | return { error_message: 'Service is not supported' } unless VALID_SERVICES.include? service |
| 16 | return { error_message: "#{object.class.to_s} doesn't support charges"} unless object.respond_to?(:charge_with) | 16 | return { error_message: "#{object.class.to_s} doesn't support charges"} unless object.respond_to?(:charge_with) |
| 17 | charge = object.charge_with(service, options) | 17 | charge = object.charge_with(service, options) |
| 18 | - object.update_columns(var_status: 'payed') unless charge.include? :error_message | ||
| 19 | return charge | 18 | return charge |
| 20 | end | 19 | end |
| 21 | end | 20 | end |
| ... | @@ -44,15 +43,19 @@ module ActsAsChargeable | ... | @@ -44,15 +43,19 @@ module ActsAsChargeable |
| 44 | end | 43 | end |
| 45 | 44 | ||
| 46 | def charge_with_conekta(options) | 45 | def charge_with_conekta(options) |
| 47 | - if(!options.include? :card_token) | 46 | + charge = conekta_charge(options) |
| 48 | - error_message = "Conekta needs a card token sent as a third paramater" | 47 | + object.update_columns(var_status: charge.status) |
| 49 | - return { error_message: error_message} | 48 | + charge |
| 49 | + rescue Conekta::ParameterValidationError, Conekta::ProcessingError, Conekta::Error => e | ||
| 50 | + self.update_columns(var_status: 'failed') | ||
| 51 | + { error_message: e.message } | ||
| 50 | end | 52 | end |
| 53 | + | ||
| 54 | + def conekta_charge(conekta_type) | ||
| 51 | @charge ||= Conekta::Charge.create({ | 55 | @charge ||= Conekta::Charge.create({ |
| 52 | description: self.sync(:conekta, 'description'), | 56 | description: self.sync(:conekta, 'description'), |
| 53 | amount: self.sync(:conekta, 'amount'), currency: "MXN", | 57 | amount: self.sync(:conekta, 'amount'), currency: "MXN", |
| 54 | reference_id: self.sync(:conekta, 'reference_id'), | 58 | reference_id: self.sync(:conekta, 'reference_id'), |
| 55 | - card: options[:card_token], | ||
| 56 | details: { | 59 | details: { |
| 57 | name: self.sync(:conekta, 'name'), | 60 | name: self.sync(:conekta, 'name'), |
| 58 | email: self.sync(:conekta, 'email'), | 61 | email: self.sync(:conekta, 'email'), |
| ... | @@ -62,10 +65,17 @@ module ActsAsChargeable | ... | @@ -62,10 +65,17 @@ module ActsAsChargeable |
| 62 | unit_price: self.sync(:conekta, 'amount'), quantity: 1, | 65 | unit_price: self.sync(:conekta, 'amount'), quantity: 1, |
| 63 | }] | 66 | }] |
| 64 | } | 67 | } |
| 65 | - }) | 68 | + }.merge(conekta_type_of_charge(options))) |
| 66 | - rescue Conekta::ParameterValidationError, Conekta::ProcessingError, Conekta::Error => e | 69 | + end |
| 67 | - self.update_columns(var_status: 'failed') | 70 | + |
| 68 | - { error_message: e.message } | 71 | + def conekta_type_of_charge(conekta_type) |
| 72 | + if options[:conekta_type] == 'card' | ||
| 73 | + { card: options[:card_token] } | ||
| 74 | + elsif options[:conekta_type] == 'oxxo' | ||
| 75 | + { cash: { type: "oxxo", | ||
| 76 | + expires_at: (Time.zone.today + 3.days).strftime('%Y-%m-%d')} | ||
| 77 | + } | ||
| 78 | + end | ||
| 69 | end | 79 | end |
| 70 | 80 | ||
| 71 | # def charge_with_paypal(options) | 81 | # def charge_with_paypal(options) | ... | ... |
-
Please register or login to post a comment