Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Ruby Gems
/
var
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
Abraham Rodriguez
2016-01-05 15:53:51 -0600
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
3537e5024d3a4c58093caafb7f580b03e786658d
3537e502
1 parent
3aa308eb
exceptions
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
43 additions
and
53 deletions
lib/var.rb
lib/var.rb
View file @
3537e50
...
...
@@ -12,10 +12,11 @@ module Var
end
def
self
.
create_charge
(
service
,
object
,
options
=
{})
binding
.
pry
return
{
error_message:
'Service is not supported'
}
unless
VALID_SERVICES
.
include?
service
return
{
error_message:
"
#{
object
.
class
.
to_s
}
doesn't support charges"
}
unless
object
.
respond_to?
(
:charge_with
)
object
.
charge_with
(
service
,
options
)
charge
=
object
.
charge_with
(
service
,
options
)
object
.
update_columns
(
var_status:
'payed'
)
unless
charge
.
include?
:error_message
return
charge
end
end
...
...
@@ -37,24 +38,19 @@ module ActsAsChargeable
" charges with
#{
service
.
to_s
}
"
return
{
error_message:
error_message
}
end
begin
self
.
send
(
"charge_with_
#{
service
.
to_s
}
"
,
options
)
rescue
=>
exception
return
{
error_message:
exception
.
message
}
end
rescue
Exception
=>
exception
{
error_message:
exception
.
message
}
end
def
charge_with_conekta
(
options
)
binding
.
pry
if
(
!
options
.
include?
:card_token
)
error_message
=
"Conekta needs a card token sent as a third paramater"
return
{
error_message:
error_message
}
end
begin
@charge
||=
Conekta
::
Charge
.
create
({
description:
self
.
sync
(
:conekta
,
'description'
),
amount:
self
.
sync
(
:conekta
,
'amount'
),
currency:
"MXN"
,
amount:
self
.
sync
(
:conekta
,
'amount'
),
currency:
"MXN"
,
reference_id:
self
.
sync
(
:conekta
,
'reference_id'
),
card:
options
[
:card_token
],
details:
{
...
...
@@ -63,60 +59,56 @@ module ActsAsChargeable
line_items:
[{
name:
self
.
sync
(
:conekta
,
'name'
),
description:
self
.
sync
(
:conekta
,
'description'
),
unit_price:
self
.
sync
(
:conekta
,
'amount'
),
quantity:
1
,
unit_price:
self
.
sync
(
:conekta
,
'amount'
),
quantity:
1
,
}]
}
})
rescue
=>
exception
rescue
Conekta
::
ParameterValidationError
,
Conekta
::
ProcessingError
,
Conekta
::
Error
=>
e
self
.
update_columns
(
var_status:
'failed'
)
return
{
error_message:
exception
.
message
}
end
{
error_message:
e
.
message
}
end
def
charge_with_paypal
(
options
)
if
(
!
options
.
include?
:card
)
error_message
=
"Paypal needs a card sent as a third paramater"
return
{
error_message:
error_message
}
end
@payment
=
PayPal
::
SDK
::
REST
::
Payment
.
new
({
intent:
"sale"
,
payer:
{
payer_info:
{
email:
self
.
sync
(
:paypal
,
'email'
)},
payment_method:
"credit_card"
,
funding_instruments:
[{
credit_card:
{
type:
options
[
:card
][
:type
],
number:
options
[
:card
][
:number
],
expire_month:
options
[
:card
][
:expire_month
],
expire_year:
options
[
:card
][
:expire_year
],
cvv2:
options
[
:card
][
:cvv2
]}}]},
transactions:
[{
item_list:
{
items:
[{
name:
self
.
sync
(
:paypal
,
'name'
),
sku:
self
.
sync
(
:paypal
,
'sku'
),
price:
self
.
sync
(
:paypal
,
'price'
),
currency:
"MXN"
,
quantity:
1
}]},
amount:
{
total:
self
.
sync
(
:paypal
,
'price'
),
currency:
"MXN"
},
description:
self
.
sync
(
:paypal
,
'description'
)
}]})
end
#
def charge_with_paypal(options)
#
if(!options.include? :card)
#
error_message = "Paypal needs a card sent as a third paramater"
#
return { error_message: error_message}
#
end
#
@payment = PayPal::SDK::REST::Payment.new({
#
intent: "sale",
#
payer: {
#
payer_info: {
#
email: self.sync(:paypal, 'email')},
#
payment_method: "credit_card",
#
funding_instruments: [{
#
credit_card: {
#
type: options[:card][:type],
#
number: options[:card][:number],
#
expire_month: options[:card][:expire_month],
#
expire_year: options[:card][:expire_year],
#
cvv2: options[:card][:cvv2]}}]},
#
transactions: [{
#
item_list: {
#
items: [{
#
name: self.sync(:paypal, 'name'),
#
sku: self.sync(:paypal, 'sku'),
#
price: self.sync(:paypal, 'price'),
#
currency: "MXN",
#
quantity: 1 }]},
#
amount: {
#
total: self.sync(:paypal, 'price'),
#
currency: "MXN" },
#
description: self.sync(:paypal, 'description') }]})
#
end
def
find_charge
(
service
)
begin
if
!
instance_support?
(
service
)
error_message
=
"
#{
self
.
class
.
to_s
}
doesn't support"
\
" charges with
#{
service
.
to_s
}
"
return
{
error_message:
error_message
}
end
self
.
send
(
"find_
#{
service
.
to_s
}
_charge"
)
rescue
=>
exception
return
{
error_message:
exception
.
message
}
end
rescue
Exception
=>
exception
{
error_message:
exception
.
message
}
end
def
charged?
(
service
)
...
...
@@ -135,9 +127,7 @@ module ActsAsChargeable
def
sync
(
service
,
key
)
service_attributes
=
self
.
send
(
"
#{
service
.
to_s
}
_attributes"
)
if
!
service_attributes
.
include?
key
.
to_sym
return
self
.
send
(
key
)
end
return
self
.
send
(
key
)
if
!
service_attributes
.
include?
key
.
to_sym
self
.
send
(
service_attributes
[
key
.
to_sym
])
end
...
...
Please
register
or
login
to post a comment