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
Marcelo
2016-07-13 15:09:35 -0500
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
6f36d876f4307a5ce80562f40e6b849cd61a9186
6f36d876
1 parent
f6245313
Builds for 1 pipeline
failed
in 0 seconds
Updates on var specs and gem modifications
Changes
7
Builds
1
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
58 additions
and
34 deletions
bin/console
lib/acts_as_chargeable.rb
spec/conekta_handler_spec.rb
spec/mocks/var_database_mock.rb
spec/mocks/var_models_mock.rb
spec/mocks/webhooks_requests.rb
spec/spec_helper.rb
bin/console
View file @
6f36d87
#!/usr/bin/env ruby
# frozen_string_literal: true
require
'pry'
require
'bundler/setup'
require
'active_record'
require
'active_support'
...
...
@@ -9,9 +9,10 @@ require 'var'
require_relative
'../spec/mocks/var_database_mock.rb'
require_relative
'../spec/mocks/var_models_mock.rb'
Time
.
zone
=
'America/Monterrey'
ActiveRecord
::
Base
.
establish_connection
(
adapter:
'sqlite3'
,
database:
':memory:'
)
ActiveRecord
::
Schema
.
verbose
=
false
VarDatabaseMock
.
setup_db
require
'pry'
Pry
.
start
...
...
lib/acts_as_chargeable.rb
View file @
6f36d87
...
...
@@ -26,11 +26,8 @@ module ActsAsChargeable
def
charge_with_conekta
(
options
)
charge
=
conekta_charge
(
options
)
amount
=
charge
.
amount
/
100
.
0
fee
=
charge
.
fee
/
100
.
0
update_columns
(
var_status:
charge
.
status
,
var_id:
charge
.
id
,
var_service:
'conekta'
,
var_fee:
fee
,
var_paid_amount:
amount
,
var_payment_method:
charge
.
payment_method
.
object
)
var_service:
'conekta'
)
update_conekta_barcode
(
charge
)
if
options
[
:conekta_type
]
==
'oxxo'
if
var_payed?
time
=
Time
.
zone
.
now
...
...
@@ -63,7 +60,7 @@ module ActsAsChargeable
{
card:
options
[
:card_token
]
}
elsif
options
[
:conekta_type
]
==
'oxxo'
{
cash:
{
type:
'oxxo'
,
expires_at:
(
Time
.
zone
.
today
+
3
.
days
).
strftime
(
'%Y-%m-%d'
)
}
}
expires_at:
(
Time
.
zone
.
now
+
3
.
days
).
strftime
(
'%Y-%m-%d'
)
}
}
end
end
...
...
spec/conekta_handler_spec.rb
View file @
6f36d87
...
...
@@ -15,6 +15,29 @@ describe Var::ConektaHandler do
var
}
# TODO: Probar errores en Var.create_charge
it
'processes oxxo charge'
do
allow_any_instance_of
(
Product
).
to
receive
(
:conekta_charge
).
and_return
(
JSON
.
parse
(
ConektaChargeCreateObject
::
OXXO_CREATE_CHARGE_OBJECT
,
object_class:
OpenStruct
))
charge
=
Var
.
create_charge
(
:conekta
,
product
,
{
"conekta_type"
:
"oxxo"
})
Var
::
ConektaHandler
.
analyze
(
WebHookPostRequest
::
OXXO_CHARGE_CREATED
)
expect
(
product
.
var_status
).
to
eq
(
'pending_payment'
)
end
it
'processes card charge'
do
allow_any_instance_of
(
Product
).
to
receive
(
:conekta_charge
).
and_return
(
JSON
.
parse
(
ConektaChargeCreateObject
::
CARD_CREATE_CHARGE_OBJECT
,
object_class:
OpenStruct
))
charge
=
Var
.
create_charge
(
:conekta
,
product
,
{
"conekta_type"
:
"card"
})
Var
::
ConektaHandler
.
analyze
(
WebHookPostRequest
::
CARD_CHARGE_CREATED
)
expect
(
product
.
var_status
).
to
eq
(
'pending_payment'
)
end
xit
'processes spei charge'
do
end
it
'processes payout'
do
end
it
'processes oxxo payment'
do
Var
::
ConektaHandler
.
analyze
(
WebHookPostRequest
::
OXXO_CHARGE_CREATED
)
expect
(
product
.
var_status
).
to
eq
(
'paid'
)
...
...
@@ -27,6 +50,9 @@ describe Var::ConektaHandler do
it
'processes oxxo payment'
do
end
xit
'processes spei payment'
do
end
it
'processes payout'
do
end
end
...
...
spec/mocks/var_database_mock.rb
View file @
6f36d87
...
...
@@ -5,7 +5,7 @@ class VarDatabaseMock
ActiveRecord
::
Schema
.
define
(
version:
1
)
do
create_table
:products
do
|
t
|
t
.
string
:code
t
.
string
:name
t
.
string
:var_status
,
default:
'pending'
t
.
string
:var_barcode_url
t
.
string
:var_barcode
...
...
spec/mocks/var_models_mock.rb
View file @
6f36d87
# frozen_string_literal: true
class
Product
<
ActiveRecord
::
Base
acts_as_chargeable
acts_as_chargeable
conekta:
{
description: :description
,
amount: :amount
,
email: :buyer_mail
,
reference_id: :id
}
def
description
"Producto cool"
end
def
amount
134
.
00
end
def
buyer_mail
"compradordelproducto@mimail.com"
end
def
name
"Nombre del producto"
end
end
...
...
spec/mocks/webhooks_requests.rb
View file @
6f36d87
...
...
@@ -2,32 +2,13 @@
module
WebHookPostRequest
CARD_CHARGE_CREATED
=
{
"data"
:
{
"object"
:
{
"id"
:
'5511d4ce2412294cf6000081'
,
"livemode"
:
false
,
"created_at"
:
1_427_231_950
,
"status"
:
'pending_payment'
,
"currency"
:
'MXN'
,
"description"
:
'Stogies'
,
"reference_id"
:
'9839-wolf_pack'
,
"failure_code"
:
nil
,
"failure_message"
:
nil
,
"monthly_installments"
:
nil
,
"object"
:
'charge'
,
"amount"
:
20_000
,
"paid_at"
:
nil
,
"fee"
:
963
,
"customer_id"
:
''
,
"refunds"
:
[],
"payment_method"
:
{
"name"
:
'Jorge Lopez'
,
"exp_month"
:
'12'
,
"exp_year"
:
'19'
,
"auth_code"
:
nil
,
"object"
:
'card_payment'
,
"last4"
:
'4242'
,
"brand"
:
'visa'
},
"details"
:
{
"name"
:
nil
,
"phone"
:
nil
,
"email"
:
nil
,
"line_items"
:
[]
}
},
"previous_attributes"
:
{}
},
"livemode"
:
false
,
"webhook_status"
:
'pending'
,
"id"
:
'5511d4ce2412294cf6000084'
,
"object"
:
'event'
,
"type"
:
'charge.created'
,
"created_at"
:
1_427_231_950
,
"webhook_logs"
:
[{
"id"
:
'webhl_nPzGMBeQmMUu7aQ'
,
"url"
:
'http://requestb.in/1em0jsx1'
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:
'webhook_log'
,
"last_attempted_at"
:
0
}]
}.
freeze
OXXO_CHARGE_CREATED
=
{
"data"
:
{
"object"
:
{
"id"
:"5514803f241229981e0022e6"
,
"livemode"
:false
,
"created_at"
:
1427406911
,
"status"
:"pending_payment"
,
"currency"
:"MXN"
,
"description"
:"Stogies"
,
"reference_id"
:"9839-wolf_pack"
,
"failure_code"
:nil
,
"failure_message"
:nil
,
"monthly_installments"
:nil
,
"object"
:"charge"
,
"amount"
:
20000
,
"paid_at"
:nil
,
"fee"
:
812
,
"customer_id"
:""
,
"refunds"
:[]
,
"payment_method"
:
{
"barcode"
:"38100000000042290121213001160013"
,
"barcode_url"
:"http://s3.amazonaws.com/cash_payment_barcodes/"
+
"38100000000042290121213001160013.png"
,
"object"
:"cash_payment"
,
"type"
:"oxxo"
,
"expires_at"
:
1430006400
,
"store_name"
:"OXXO"
},
"details"
:
{
"name"
:"Wolverine"
,
"phone"
:"403-342-0642"
,
"email"
:"logan@x-men.org"
,
"line_items"
:[]
}
},
"previous_attributes"
:{}},
"livemode"
:false
,
"webhook_status"
:"pending"
,
"id"
:"5514803f241229981e0022e9"
,
"object"
:"event"
,
"type"
:"charge.created"
,
"created_at"
:
1427406911
,
"webhook_logs"
:[
{
"id"
:"webhl_PBmYvkfdNDYKezJ"
,
"url"
:"http://requestb.in/u3n4ywu3"
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:"webhook_log"
,
"last_attempted_at"
:
0
}]}.
freeze
OXXO_CHARGE_CREATED
=
{
"data"
:{
"object"
:{
"id"
:"5514803f241229981e0022e6"
,
"livemode"
:false
,
"created_at"
:
1427406911
,
"status"
:"pending_payment"
,
"currency"
:"MXN"
,
"description"
:"Stogies"
,
"reference_id"
:"9839-wolf_pack"
,
"failure_code"
:nil
,
"failure_message"
:nil
,
"monthly_installments"
:nil
,
"object"
:"charge"
,
"amount"
:
20000
,
"paid_at"
:nil
,
"fee"
:
812
,
"customer_id"
:""
,
"refunds"
:[]
,
"payment_method"
:{
"barcode"
:"38100000000042290121213001160013"
,
"barcode_url"
:"http://s3.amazonaws.com/cash_payment_barcodes/38100000000042290121213001160013.png"
,
"object"
:"cash_payment"
,
"type"
:"oxxo"
,
"expires_at"
:
1430006400
,
"store_name"
:"OXXO"
},
"details"
:{
"name"
:"Wolverine"
,
"phone"
:"403-342-0642"
,
"email"
:"logan@x-men.org"
,
"line_items"
:[]
}},
"previous_attributes"
:{}},
"livemode"
:false
,
"webhook_status"
:"pending"
,
"id"
:"5514803f241229981e0022e9"
,
"object"
:"event"
,
"type"
:"charge.created"
,
"created_at"
:
1427406911
,
"webhook_logs"
:[{
"id"
:"webhl_PBmYvkfdNDYKezJ"
,
"url"
:"http://requestb.in/u3n4ywu3"
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:"webhook_log"
,
"last_attempted_at"
:
0
}]}.
freeze
SPEI_CHARGE_CREATED
=
{
"data"
:
{
"object"
:
{
"id"
:
'551499322412292eec002159'
,
"livemode"
:
false
,
"created_at"
:
1_427_413_298
,
"status"
:
'pending_payment'
,
"currency"
:
'MXN'
,
"description"
:
'Stogies'
,
"reference_id"
:
'9839-wolf_pack'
,
"failure_code"
:
nil
,
"failure_message"
:
nil
,
"monthly_installments"
:
nil
,
"object"
:
'charge'
,
"amount"
:
20_000
,
"paid_at"
:
nil
,
"fee"
:
928
,
"customer_id"
:
''
,
"refunds"
:
[],
"payment_method"
:
{
"clabe"
:
'646180111800012432'
,
"bank"
:
'STP'
,
"issuing_account_holder"
:
nil
,
"issuing_account_tax_id"
:
nil
,
"issuing_account_bank"
:
nil
,
"issuing_account_number"
:
nil
,
"receiving_account_holder"
:
nil
,
"receiving_account_tax_id"
:
nil
,
"receiving_account_number"
:
'646180111800012432'
,
"receiving_account_bank"
:
'STP'
,
"reference_number"
:
nil
,
"description"
:
nil
,
"tracking_code"
:
nil
,
"executed_at"
:
nil
,
"object"
:
'bank_transfer_payment'
,
"type"
:
'spei'
,
"expires_at"
:
1_435_189_298
},
"details"
:
{
"name"
:
'Wolverine'
,
"phone"
:
'403-342-0642'
,
"email"
:
'logan@x-men.org'
,
"line_items"
:
[]
}
},
"previous_attributes"
:
{}
},
"livemode"
:
false
,
"webhook_status"
:
'pending'
,
"id"
:
'551499322412292eec00215c'
,
"object"
:
'event'
,
"type"
:
'charge.created'
,
"created_at"
:
1_427_413_298
,
"webhook_logs"
:
[{
"id"
:
'webhl_ENPXoFkKWyDqTAt'
,
"url"
:
'http://requestb.in/151xj4r1'
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:
'webhook_log'
,
"last_attempted_at"
:
1_427_413_285
}]
}
SPEI_CHARGE_CREATED
=
{
"data"
:
{
"object"
:
{
"id"
:
'551499322412292eec002159'
,
"livemode"
:
false
,
"created_at"
:
1_427_413_298
,
"status"
:
'pending_payment'
,
"currency"
:
'MXN'
,
"description"
:
'Stogies'
,
"reference_id"
:
'9839-wolf_pack'
,
"failure_code"
:
nil
,
"failure_message"
:
nil
,
"monthly_installments"
:
nil
,
"object"
:
'charge'
,
"amount"
:
20_000
,
"paid_at"
:
nil
,
"fee"
:
928
,
"customer_id"
:
''
,
"refunds"
:
[],
"payment_method"
:
{
"clabe"
:
'646180111800012432'
,
"bank"
:
'STP'
,
"issuing_account_holder"
:
nil
,
"issuing_account_tax_id"
:
nil
,
"issuing_account_bank"
:
nil
,
"issuing_account_number"
:
nil
,
"receiving_account_holder"
:
nil
,
"receiving_account_tax_id"
:
nil
,
"receiving_account_number"
:
'646180111800012432'
,
"receiving_account_bank"
:
'STP'
,
"reference_number"
:
nil
,
"description"
:
nil
,
"tracking_code"
:
nil
,
"executed_at"
:
nil
,
"object"
:
'bank_transfer_payment'
,
"type"
:
'spei'
,
"expires_at"
:
1_435_189_298
},
"details"
:
{
"name"
:
'Wolverine'
,
"phone"
:
'403-342-0642'
,
"email"
:
'logan@x-men.org'
,
"line_items"
:
[]
}
},
"previous_attributes"
:
{}
},
"livemode"
:
false
,
"webhook_status"
:
'pending'
,
"id"
:
'551499322412292eec00215c'
,
"object"
:
'event'
,
"type"
:
'charge.created'
,
"created_at"
:
1_427_413_298
,
"webhook_logs"
:
[{
"id"
:
'webhl_ENPXoFkKWyDqTAt'
,
"url"
:
'http://requestb.in/151xj4r1'
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:
'webhook_log'
,
"last_attempted_at"
:
1_427_413_285
}]
}.
freeze
CARD_CHARGE_PAID
=
{
"data"
:
{
"object"
:
{
"id"
:
'5511d4ce2412294cf6000081'
,
"livemode"
:
false
,
"created_at"
:
1_427_231_950
,
"status"
:
'paid'
,
"currency"
:
'MXN'
,
"description"
:
'Stogies'
,
"reference_id"
:
'9839-wolf_pack'
,
"failure_code"
:
nil
,
"failure_message"
:
nil
,
"monthly_installments"
:
nil
,
"object"
:
'charge'
,
"amount"
:
20_000
,
"paid_at"
:
1_427_231_952
,
"fee"
:
963
,
"customer_id"
:
''
,
"refunds"
:
[],
"payment_method"
:
{
"name"
:
'Jorge Lopez'
,
"exp_month"
:
'12'
,
"exp_year"
:
'19'
,
"auth_code"
:
'000000'
,
"object"
:
'card_payment'
,
"last4"
:
'4242'
,
"brand"
:
'visa'
},
"details"
:
{
"name"
:
nil
,
"phone"
:
nil
,
"email"
:
nil
,
"line_items"
:
[]
}
},
"previous_attributes"
:
{
"payment_method"
:
{}
}
},
"livemode"
:
false
,
"webhook_status"
:
'pending'
,
"id"
:
'5511d4d02412294cf6000088'
,
"object"
:
'event'
,
"type"
:
'charge.paid'
,
"created_at"
:
1_427_231_952
,
"webhook_logs"
:
[{
"id"
:
'webhl_m5kgkhmgETe6Y4s'
,
"url"
:
'http://requestb.in/1em0jsx1'
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:
'webhook_log'
,
"last_attempted_at"
:
0
}]
}.
freeze
OXXO_CHARGE_PAID
=
{
"data"
:{
"object"
:{
"id"
:"5514803f241229981e0022e6"
,
"livemode"
:false
,
"created_at"
:
1427406911
,
"status"
:"paid"
,
"currency"
:"MXN"
,
"description"
:"Stogies"
,
"reference_id"
:"9839-wolf_pack"
,
"failure_code"
:nil
,
"failure_message"
:nil
,
"monthly_installments"
:nil
,
"object"
:"charge"
,
"amount"
:
20000
,
"paid_at"
:
1427406913
,
"fee"
:
812
,
"customer_id"
:""
,
"refunds"
:[]
,
"payment_method"
:{
"barcode"
:"38100000000042290121213001160013"
,
"barcode_url"
:"http://s3.amazonaws.com/cash_payment_barcodes/38100000000042290121213001160013.png"
,
"object"
:"cash_payment"
,
"type"
:"oxxo"
,
"expires_at"
:
1430006400
,
"store_name"
:"OXXO"
},
"details"
:{
"name"
:"Wolverine"
,
"phone"
:"403-342-0642"
,
"email"
:"logan@x-men.org"
,
"line_items"
:[]
}},
"previous_attributes"
:{
"status"
:"pending_payment"
}},
"livemode"
:false
,
"webhook_status"
:"pending"
,
"id"
:"55148042241229d4fb00b58a"
,
"object"
:"event"
,
"type"
:"charge.paid"
,
"created_at"
:
1427406914
,
"webhook_logs"
:[{
"id"
:"webhl_yYes9gx41vAj6ag"
,
"url"
:"http://requestb.in/151xj4r1"
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:"webhook_log"
,
"last_attempted_at"
:
1427406984
}]}.
freeze
SPEI_CHARGE_PAID
=
{
"data"
:{
"object"
:{
"id"
:"551499322412292eec002159"
,
"livemode"
:false
,
"created_at"
:
1427413298
,
"status"
:"paid"
,
"currency"
:"MXN"
,
"description"
:"Stogies"
,
"reference_id"
:"9839-wolf_pack"
,
"failure_code"
:nil
,
"failure_message"
:nil
,
"monthly_installments"
:nil
,
"object"
:"charge"
,
"amount"
:
20000
,
"paid_at"
:
1427413301
,
"fee"
:
928
,
"customer_id"
:""
,
"refunds"
:[]
,
"payment_method"
:{
"clabe"
:"646180111800012432"
,
"bank"
:"STP"
,
"issuing_account_holder"
:nil
,
"issuing_account_tax_id"
:nil
,
"issuing_account_bank"
:nil
,
"issuing_account_number"
:nil
,
"receiving_account_holder"
:nil
,
"receiving_account_tax_id"
:nil
,
"receiving_account_number"
:"646180111800012432"
,
"receiving_account_bank"
:"STP"
,
"reference_number"
:nil
,
"description"
:nil
,
"tracking_code"
:nil
,
"executed_at"
:nil
,
"object"
:"bank_transfer_payment"
,
"type"
:"spei"
,
"expires_at"
:
1435189298
},
"details"
:{
"name"
:"Wolverine"
,
"phone"
:"403-342-0642"
,
"email"
:"logan@x-men.org"
,
"line_items"
:[]
}},
"previous_attributes"
:{
"status"
:"pending_payment"
}},
"livemode"
:false
,
"webhook_status"
:"pending"
,
"id"
:"551499352412299fd600b5ce"
,
"object"
:"event"
,
"type"
:"charge.paid"
,
"created_at"
:
1427413301
,
"webhook_logs"
:[{
"id"
:"webhl_zNFL9UGDd4dY9Hb"
,
"url"
:"http://requestb.in/151xj4r1"
,
"failed_attempts"
:
0
,
"last_http_response_status"
:
-
1
,
"object"
:"webhook_log"
,
"last_attempted_at"
:
1427413289
}]}.
freeze
end
...
...
spec/spec_helper.rb
View file @
6f36d87
...
...
@@ -7,7 +7,9 @@ require 'var'
require
'mocks/var_database_mock'
require
'mocks/var_models_mock'
require
'mocks/webhooks_requests'
require
'mocks/conekta_charge_create_objects'
Time
.
zone
=
'America/Monterrey'
ActiveRecord
::
Base
.
establish_connection
(
adapter:
'sqlite3'
,
database:
':memory:'
)
ActiveRecord
::
Schema
.
verbose
=
false
...
...
Please
register
or
login
to post a comment