active_payment 0.0.8 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_payment.rb +2 -3
- data/lib/active_payment/gateway.rb +3 -3
- data/lib/active_payment/models/payable.rb +27 -0
- data/lib/active_payment/models/payee.rb +19 -0
- data/lib/active_payment/models/sale.rb +2 -2
- data/lib/active_payment/version.rb +1 -1
- data/spec/active_payment/controllers/paypal_express_checkout_callback_controller_spec.rb +1 -1
- data/spec/active_payment/gateway_spec.rb +4 -4
- data/spec/active_payment/gateways/paypal_adaptive_payment_spec.rb +11 -11
- data/spec/active_payment/gateways/paypal_express_checkout_spec.rb +10 -41
- data/spec/active_payment/models/payable_spec.rb +100 -0
- data/spec/active_payment/models/payee_spec.rb +32 -0
- data/spec/active_payment/models/sale_spec.rb +14 -41
- data/spec/active_payment/models/sales_spec.rb +3 -33
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +16077 -0
- data/spec/factories/transaction.rb +1 -0
- data/spec/helper.rb +17 -10
- metadata +8 -5
- data/lib/active_payment/models/concerns/payable.rb +0 -32
- data/lib/active_payment/models/concerns/payee.rb +0 -27
- data/lib/active_payment/models/concerns/payer.rb +0 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 752928e70a64e010c888df7e33e60a8acde5bfb5
|
4
|
+
data.tar.gz: 9a43f17688e5da7a8d3b6eb1743afee92acf3d24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65b4a9cd247f3edb1938646140741e5cf1ecec83390aad6d5aea0e166c1d8208f1b006b314ea029b8400db310cb085b5151227c05fcf6ed5969c3532e7d74bfa
|
7
|
+
data.tar.gz: 598ce55e9ab77b2c0553df607bd122a2f6b17b83fea2377e125983b232bbbfc8a4549d76b254635e9e0a38e6259b1b4156486013c35984ff6dd36c20c56a2096
|
data/lib/active_payment.rb
CHANGED
@@ -8,11 +8,10 @@ require 'active_payment/gateway'
|
|
8
8
|
require 'active_payment/configuration'
|
9
9
|
require 'active_payment/gateways/paypal_adaptive_payment'
|
10
10
|
require 'active_payment/gateways/paypal_express_checkout'
|
11
|
-
require 'active_payment/models/
|
12
|
-
require 'active_payment/models/concerns/payee'
|
13
|
-
require 'active_payment/models/concerns/payer'
|
11
|
+
require 'active_payment/models/payee'
|
14
12
|
require 'active_payment/models/sale'
|
15
13
|
require 'active_payment/models/sales'
|
14
|
+
require 'active_payment/models/payable'
|
16
15
|
|
17
16
|
module ActivePayment
|
18
17
|
attr_accessor :configuration
|
@@ -86,9 +86,9 @@ module ActivePayment
|
|
86
86
|
ip_address: ip_address,
|
87
87
|
payee_id: sale.payee.id,
|
88
88
|
payer_id: sale.payer.id,
|
89
|
-
payable_id: sale.payable ? sale.payable.id : nil,
|
90
|
-
payable_type: sale.payable ? sale.payable.class.to_s : nil,
|
91
|
-
reference_number: sale.payable.
|
89
|
+
payable_id: sale.payable.reference ? sale.payable.reference.id : nil,
|
90
|
+
payable_type: sale.payable.reference ? sale.payable.reference.class.to_s : nil,
|
91
|
+
reference_number: sale.payable.reference_number,
|
92
92
|
external_id: @purchase_token,
|
93
93
|
metadata: { description: sale.payable.description }
|
94
94
|
})
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module ActivePayment
|
2
|
+
module Models
|
3
|
+
class Payable
|
4
|
+
attr_accessor :description, :amount, :reference,
|
5
|
+
:reference_number, :external_id, :shipping, :tax,
|
6
|
+
:number, :quantity
|
7
|
+
|
8
|
+
def initialize(params = {})
|
9
|
+
@tax = 0
|
10
|
+
@shipping = 0
|
11
|
+
@number = 1
|
12
|
+
@quantity = 1
|
13
|
+
|
14
|
+
params.each { |key, value| send "#{key}=", value }
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_paypal_hash
|
18
|
+
{
|
19
|
+
name: @description,
|
20
|
+
amount: @amount.to_i,
|
21
|
+
number: @number.to_i,
|
22
|
+
quantity: @quantity.to_i
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module ActivePayment
|
2
|
+
module Models
|
3
|
+
class Payee
|
4
|
+
attr_accessor :identifier, :primary
|
5
|
+
|
6
|
+
def initialize(identifier:, primary: false)
|
7
|
+
@identifier = identifier
|
8
|
+
@primary = primary
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_paypal_hash
|
12
|
+
{
|
13
|
+
email: @identifier,
|
14
|
+
primary: @primary
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -31,7 +31,7 @@ module ActivePayment
|
|
31
31
|
|
32
32
|
def paypal_recipient
|
33
33
|
{
|
34
|
-
email: payee.
|
34
|
+
email: payee.identifier,
|
35
35
|
amount: amount,
|
36
36
|
primary: false
|
37
37
|
}
|
@@ -51,7 +51,7 @@ module ActivePayment
|
|
51
51
|
total_tax: payable.tax
|
52
52
|
},
|
53
53
|
receiver: {
|
54
|
-
email: @payee.
|
54
|
+
email: @payee.identifier
|
55
55
|
}
|
56
56
|
}
|
57
57
|
end
|
@@ -20,7 +20,7 @@ RSpec.describe ActivePayment::PaypalExpressCheckoutCallbackController, type: :co
|
|
20
20
|
describe 'success' do
|
21
21
|
let!(:transaction) { create(:transaction) }
|
22
22
|
|
23
|
-
it 'should
|
23
|
+
it 'should raise NoTransactionError if no token is passed' do
|
24
24
|
expect {
|
25
25
|
get :success
|
26
26
|
}.to raise_error(ActivePayment::NoTransactionError)
|
@@ -43,9 +43,9 @@ describe ActivePayment::Gateway do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it 'set correct transactions' do
|
46
|
-
payer =
|
47
|
-
payee =
|
48
|
-
payable =
|
46
|
+
payer = PayerObj.new
|
47
|
+
payee = PayeeObj.new
|
48
|
+
payable = PayableObj.new.to_payable
|
49
49
|
sale = ActivePayment::Models::Sale.new(payable: payable, payer: payer, payee: payee)
|
50
50
|
sales = ActivePayment::Models::Sales.new([sale])
|
51
51
|
gateway = ActivePayment::Gateway.new('paypal_adaptive_payment')
|
@@ -63,7 +63,7 @@ describe ActivePayment::Gateway do
|
|
63
63
|
expect(gateway.transactions.first.payer_id).to eq(2)
|
64
64
|
expect(gateway.transactions.first.payable_id).to eq(3)
|
65
65
|
expect(gateway.transactions.first.reference_number).to eq('3')
|
66
|
-
expect(gateway.transactions.first.payable_type).to eq('
|
66
|
+
expect(gateway.transactions.first.payable_type).to eq('PayableObj')
|
67
67
|
expect(gateway.transactions.first.gateway).to eq('ActivePayment::Gateways::PaypalAdaptivePayment')
|
68
68
|
expect(gateway.transactions.first.ip_address).to eq('127.0.0.1')
|
69
69
|
expect(gateway.transactions.first.state).to eq('pending')
|
@@ -2,16 +2,16 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe ActivePayment::Gateways::PaypalAdaptivePayment do
|
4
4
|
before(:each) do
|
5
|
-
@payer =
|
6
|
-
@payee =
|
7
|
-
@payable =
|
8
|
-
@sale = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee)
|
9
|
-
@payee2 =
|
10
|
-
@payee2.
|
11
|
-
@payee3 =
|
12
|
-
@payee3.
|
13
|
-
@sale2 = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee2)
|
14
|
-
@sale3 = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee3)
|
5
|
+
@payer = PayerObj.new
|
6
|
+
@payee = PayeeObj.new
|
7
|
+
@payable = PayableObj.new
|
8
|
+
@sale = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee.to_payee)
|
9
|
+
@payee2 = PayeeObj.new
|
10
|
+
@payee2.paypal = 'test2@paypal.com'
|
11
|
+
@payee3 = PayeeObj.new
|
12
|
+
@payee3.paypal = 'test3@paypal.com'
|
13
|
+
@sale2 = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee2.to_payee)
|
14
|
+
@sale3 = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee3.to_payee)
|
15
15
|
|
16
16
|
@sales = ActivePayment::Models::Sales.new([@sale, @sale2, @sale3])
|
17
17
|
@gateway = ActivePayment::Gateways::PaypalAdaptivePayment.new
|
@@ -37,7 +37,7 @@ describe ActivePayment::Gateways::PaypalAdaptivePayment do
|
|
37
37
|
true
|
38
38
|
end
|
39
39
|
def [](request)
|
40
|
-
|
40
|
+
'pay_key'
|
41
41
|
end
|
42
42
|
end
|
43
43
|
@success_gateway_response = SuccessMockResponse.new
|
@@ -2,47 +2,16 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe ActivePayment::Gateways::PaypalExpressCheckout do
|
4
4
|
before(:each) do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
end
|
16
|
-
class Payable
|
17
|
-
include ActivePayment::Models::Payable
|
18
|
-
|
19
|
-
def amount
|
20
|
-
100
|
21
|
-
end
|
22
|
-
|
23
|
-
def description
|
24
|
-
"description"
|
25
|
-
end
|
26
|
-
|
27
|
-
def tax
|
28
|
-
10
|
29
|
-
end
|
30
|
-
|
31
|
-
def shipping
|
32
|
-
20
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
@payer = Payer.new
|
37
|
-
@payee = Payee.new
|
38
|
-
@payable = Payable.new
|
39
|
-
@sale = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee)
|
40
|
-
@payee2 = Payee.new
|
41
|
-
@payee2.paypal_identifier = "test2@paypal.com"
|
42
|
-
@payee3 = Payee.new
|
43
|
-
@payee3.paypal_identifier = "test3@paypal.com"
|
44
|
-
@sale2 = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee2)
|
45
|
-
@sale3 = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee3)
|
5
|
+
@payer = PayerObj.new
|
6
|
+
@payee = PayeeObj.new
|
7
|
+
@payable = PayableObj.new
|
8
|
+
@sale = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee)
|
9
|
+
@payee2 = PayeeObj.new
|
10
|
+
@payee2.paypal = 'test2@paypal.com'
|
11
|
+
@payee3 = PayeeObj.new
|
12
|
+
@payee3.paypal = 'test3@paypal.com'
|
13
|
+
@sale2 = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee2.to_payee)
|
14
|
+
@sale3 = ActivePayment::Models::Sale.new(payable: @payable.to_payable, payer: @payer, payee: @payee3.to_payee)
|
46
15
|
|
47
16
|
@sales = ActivePayment::Models::Sales.new([@sale, @sale2, @sale3])
|
48
17
|
@gateway = ActivePayment::Gateways::PaypalExpressCheckout.new
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe ActivePayment::Models::Payable do
|
4
|
+
describe 'initialize' do
|
5
|
+
it 'should not raise any error if calling initialize without any parameter' do
|
6
|
+
expect { ActivePayment::Models::Payable.new }.not_to raise_error
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should set attributes when passing a hash' do
|
10
|
+
service = ActivePayment::Models::Payable.new({
|
11
|
+
description: 'desc',
|
12
|
+
amount: 1000,
|
13
|
+
reference: 200,
|
14
|
+
reference_number: 'ABC123',
|
15
|
+
number: 999,
|
16
|
+
quantity: 300,
|
17
|
+
external_id: '100',
|
18
|
+
tax: 123,
|
19
|
+
shipping: 456
|
20
|
+
})
|
21
|
+
|
22
|
+
expect(service.description).to eq('desc')
|
23
|
+
expect(service.amount).to eq(1000)
|
24
|
+
expect(service.reference).to eq(200)
|
25
|
+
expect(service.reference_number).to eq('ABC123')
|
26
|
+
expect(service.external_id).to eq('100')
|
27
|
+
expect(service.tax).to eq(123)
|
28
|
+
expect(service.shipping).to eq(456)
|
29
|
+
expect(service.number).to eq(999)
|
30
|
+
expect(service.quantity).to eq(300)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'should set default tax value to 0 if not set' do
|
34
|
+
service = ActivePayment::Models::Payable.new({
|
35
|
+
description: 'desc',
|
36
|
+
amount: 1000,
|
37
|
+
reference: 200,
|
38
|
+
reference_number: 'ABC123',
|
39
|
+
external_id: '100',
|
40
|
+
shipping: 456
|
41
|
+
})
|
42
|
+
expect(service.tax).to eq(0)
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'should set default shipping value to 0 if not set' do
|
46
|
+
service = ActivePayment::Models::Payable.new({
|
47
|
+
description: 'desc',
|
48
|
+
amount: 1000,
|
49
|
+
reference: 200,
|
50
|
+
reference_number: 'ABC123',
|
51
|
+
external_id: '100',
|
52
|
+
tax: 123
|
53
|
+
})
|
54
|
+
expect(service.shipping).to eq(0)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'should set default number value to 1 if not set' do
|
59
|
+
service = ActivePayment::Models::Payable.new({
|
60
|
+
description: 'desc',
|
61
|
+
amount: 1000,
|
62
|
+
reference: 200,
|
63
|
+
reference_number: 'ABC123',
|
64
|
+
external_id: '100',
|
65
|
+
shipping: 456
|
66
|
+
})
|
67
|
+
expect(service.number).to eq(1)
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'should set default quantity value to 1 if not set' do
|
71
|
+
service = ActivePayment::Models::Payable.new({
|
72
|
+
description: 'desc',
|
73
|
+
amount: 1000,
|
74
|
+
reference: 200,
|
75
|
+
reference_number: 'ABC123',
|
76
|
+
external_id: '100',
|
77
|
+
shipping: 456
|
78
|
+
})
|
79
|
+
expect(service.quantity).to eq(1)
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'to_paypal_hash' do
|
83
|
+
it 'should returns expect value' do
|
84
|
+
service = ActivePayment::Models::Payable.new({
|
85
|
+
description: 'desc',
|
86
|
+
amount: 1000,
|
87
|
+
reference: 200,
|
88
|
+
reference_number: 'ABC123',
|
89
|
+
external_id: '100',
|
90
|
+
tax: 123,
|
91
|
+
shipping: 456
|
92
|
+
})
|
93
|
+
expect(service.to_paypal_hash.class).to eq(Hash)
|
94
|
+
expect(service.to_paypal_hash[:name]).to eq('desc')
|
95
|
+
expect(service.to_paypal_hash[:amount]).to eq(1000)
|
96
|
+
expect(service.to_paypal_hash[:number]).to eq(1)
|
97
|
+
expect(service.to_paypal_hash[:quantity]).to eq(1)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
describe ActivePayment::Models::Payee do
|
4
|
+
describe 'initialize' do
|
5
|
+
it 'should raise error if trying to initialize without any parameters' do
|
6
|
+
expect { ActivePayment::Models::Payee.new }.to raise_error(ArgumentError)
|
7
|
+
end
|
8
|
+
|
9
|
+
it 'should not raise error is using identifier parameter' do
|
10
|
+
expect { ActivePayment::Models::Payee.new(identifier: 'test@test.com') }.not_to raise_error
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'should set primary default value to false' do
|
14
|
+
service = ActivePayment::Models::Payee.new(identifier: 'test@test.com')
|
15
|
+
expect(service.primary).to eq(false)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should allow to set primary value' do
|
19
|
+
service = ActivePayment::Models::Payee.new(identifier: 'test@test.com', primary: true)
|
20
|
+
expect(service.primary).to eq(true)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
describe 'to_paypal_hash' do
|
25
|
+
it 'should returns expect value' do
|
26
|
+
service = ActivePayment::Models::Payee.new(identifier: 'test@test.com')
|
27
|
+
expect(service.to_paypal_hash.class).to eq(Hash)
|
28
|
+
expect(service.to_paypal_hash[:email]).to eq('test@test.com')
|
29
|
+
expect(service.to_paypal_hash[:primary]).to eq(false)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -2,39 +2,12 @@ require 'helper'
|
|
2
2
|
|
3
3
|
describe ActivePayment::Models::Sale do
|
4
4
|
before(:each) do
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
class Payer
|
13
|
-
include ActivePayment::Models::Payer
|
14
|
-
end
|
15
|
-
class Payable
|
16
|
-
include ActivePayment::Models::Payable
|
17
|
-
|
18
|
-
def amount
|
19
|
-
100
|
20
|
-
end
|
21
|
-
|
22
|
-
def description
|
23
|
-
"description"
|
24
|
-
end
|
25
|
-
|
26
|
-
def tax
|
27
|
-
10
|
28
|
-
end
|
29
|
-
|
30
|
-
def shipping
|
31
|
-
20
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
@payer = Payer.new
|
36
|
-
@payee = Payee.new
|
37
|
-
@payable = Payable.new
|
5
|
+
@payer = PayerObj.new
|
6
|
+
# @payer = payer_obj.to_payer
|
7
|
+
payee_obj = PayeeObj.new
|
8
|
+
@payee = payee_obj.to_payee
|
9
|
+
payable_obj = PayableObj.new
|
10
|
+
@payable = payable_obj.to_payable
|
38
11
|
@sale = ActivePayment::Models::Sale.new(payable: @payable, payer: @payer, payee: @payee)
|
39
12
|
end
|
40
13
|
|
@@ -60,13 +33,13 @@ describe ActivePayment::Models::Sale do
|
|
60
33
|
|
61
34
|
describe 'description' do
|
62
35
|
it 'displays the payable description' do
|
63
|
-
expect(@sale.description).to eq(@payable.description)
|
36
|
+
expect(@sale.description).to eq(@sale.payable.description)
|
64
37
|
end
|
65
38
|
end
|
66
39
|
|
67
40
|
describe 'shipping' do
|
68
41
|
it 'displays the payable shipping value' do
|
69
|
-
expect(@sale.shipping).to eq(@payable.shipping)
|
42
|
+
expect(@sale.shipping).to eq(@sale.payable.shipping)
|
70
43
|
end
|
71
44
|
end
|
72
45
|
|
@@ -79,7 +52,7 @@ describe ActivePayment::Models::Sale do
|
|
79
52
|
describe 'paypal_recipient' do
|
80
53
|
it 'displays the paypal_recipient hash with correct values' do
|
81
54
|
expect(@sale.paypal_recipient).to eq({
|
82
|
-
email: @payee.
|
55
|
+
email: @sale.payee.identifier,
|
83
56
|
amount: 1,
|
84
57
|
primary: false
|
85
58
|
})
|
@@ -89,19 +62,19 @@ describe ActivePayment::Models::Sale do
|
|
89
62
|
describe 'paypal_hash' do
|
90
63
|
it 'displays the paypal_hash with correct values' do
|
91
64
|
expect(@sale.paypal_hash).to eq({
|
92
|
-
description: @payable.description,
|
65
|
+
description: @sale.payable.description,
|
93
66
|
invoice_data: {
|
94
67
|
item: [{
|
95
|
-
name: @payable.description,
|
68
|
+
name: @sale.payable.description,
|
96
69
|
item_count: 1,
|
97
70
|
item_price: 1,
|
98
71
|
price: 1
|
99
72
|
}],
|
100
|
-
total_shipping: @payable.shipping,
|
101
|
-
total_tax: @payable.tax
|
73
|
+
total_shipping: @sale.payable.shipping,
|
74
|
+
total_tax: @sale.payable.tax
|
102
75
|
},
|
103
76
|
receiver: {
|
104
|
-
email: @payee.
|
77
|
+
email: @sale.payee.identifier
|
105
78
|
}
|
106
79
|
})
|
107
80
|
end
|