payment_recipes 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/payment_recipes/paypal/rest/action/capture_authorization.rb +27 -0
- data/lib/payment_recipes/paypal/rest/action/create_payment.rb +73 -0
- data/lib/payment_recipes/paypal/rest/action/execute_payment.rb +25 -0
- data/lib/payment_recipes/paypal/rest/action/refund_capture.rb +24 -0
- data/lib/payment_recipes/paypal/rest/action/refund_sale.rb +24 -0
- data/lib/payment_recipes/paypal/rest/action/void_authorization.rb +24 -0
- data/lib/payment_recipes/paypal/rest/authorization.rb +172 -0
- data/lib/payment_recipes/paypal/rest/capture.rb +140 -0
- data/lib/payment_recipes/paypal/rest/payer.rb +38 -0
- data/lib/payment_recipes/paypal/rest/payment.rb +126 -0
- data/lib/payment_recipes/paypal/rest/refund.rb +160 -0
- data/lib/payment_recipes/paypal/rest/sale.rb +172 -0
- data/lib/payment_recipes/paypal/rest/settings.rb +18 -0
- data/lib/payment_recipes/paypal/rest/transaction.rb +118 -0
- data/lib/payment_recipes/paypal/soap/action/capture_authorization.rb +104 -0
- data/lib/payment_recipes/paypal/soap/action/create_express_checkout_payment.rb +76 -0
- data/lib/payment_recipes/paypal/soap/action/execute_express_checkout_payment.rb +131 -0
- data/lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb +62 -0
- data/lib/payment_recipes/paypal/soap/settings.rb +22 -0
- data/lib/payment_recipes/paypal/soap/transaction.rb +116 -0
- data/lib/payment_recipes/utils/action.rb +145 -8
- data/lib/payment_recipes/version.rb +1 -1
- data/lib/payment_recipes.rb +24 -15
- metadata +37 -17
- data/lib/payment_recipes/paypal/action/capture_authorization.rb +0 -25
- data/lib/payment_recipes/paypal/action/create_payment.rb +0 -66
- data/lib/payment_recipes/paypal/action/execute_payment.rb +0 -17
- data/lib/payment_recipes/paypal/action/refund_capture.rb +0 -22
- data/lib/payment_recipes/paypal/action/refund_sale.rb +0 -22
- data/lib/payment_recipes/paypal/action/void_authorization.rb +0 -22
- data/lib/payment_recipes/paypal/authorization.rb +0 -170
- data/lib/payment_recipes/paypal/capture.rb +0 -138
- data/lib/payment_recipes/paypal/payer.rb +0 -36
- data/lib/payment_recipes/paypal/payment.rb +0 -124
- data/lib/payment_recipes/paypal/refund.rb +0 -158
- data/lib/payment_recipes/paypal/sale.rb +0 -170
- data/lib/payment_recipes/paypal/settings.rb +0 -14
- data/lib/payment_recipes/paypal/transaction.rb +0 -116
@@ -1,66 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
module Action
|
4
|
-
class CreatePayment < PaymentRecipes::Utils::Action
|
5
|
-
variable :intent, ::Symbol
|
6
|
-
variable :attributes, ::Hash
|
7
|
-
variable :amount, ::Money
|
8
|
-
variable :description, ::String
|
9
|
-
|
10
|
-
include ::PaymentRecipes::Utils::Converters
|
11
|
-
|
12
|
-
def perform
|
13
|
-
unless [:sale, :authorize].include?(@intent)
|
14
|
-
raise Exception, "Allowed values for intent: :sale, :authorize"
|
15
|
-
end
|
16
|
-
|
17
|
-
@paypal_payment = ::PayPal::SDK::REST::Payment.new(payment_attributes)
|
18
|
-
@paypal_payment.create
|
19
|
-
|
20
|
-
@payment = ::PaymentRecipes::PayPal::Payment.find(@paypal_payment.id)
|
21
|
-
|
22
|
-
@payment
|
23
|
-
end
|
24
|
-
|
25
|
-
def payment
|
26
|
-
@payment
|
27
|
-
end
|
28
|
-
|
29
|
-
def paypal_payment
|
30
|
-
@paypal_payment
|
31
|
-
end
|
32
|
-
|
33
|
-
def redirect_url
|
34
|
-
paypal_payment.links.select { |link| link.rel == 'approval_url' }.first.href rescue nil
|
35
|
-
end
|
36
|
-
|
37
|
-
def sale
|
38
|
-
return nil unless @payment
|
39
|
-
|
40
|
-
@payment.sale
|
41
|
-
end
|
42
|
-
|
43
|
-
def authorization
|
44
|
-
return nil unless @payment
|
45
|
-
|
46
|
-
@payment.authorization
|
47
|
-
end
|
48
|
-
|
49
|
-
def payment_attributes
|
50
|
-
{
|
51
|
-
"intent" => convert_to_string(@intent),
|
52
|
-
"transactions" => [
|
53
|
-
{
|
54
|
-
"amount" => {
|
55
|
-
"total" => @amount.to_s,
|
56
|
-
"currency" => @amount.currency.iso_code
|
57
|
-
},
|
58
|
-
"description" => @description
|
59
|
-
}
|
60
|
-
]
|
61
|
-
}.merge(attributes)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
module Action
|
4
|
-
class ExecutePayment < PaymentRecipes::Utils::Action
|
5
|
-
variable :payment, PaymentRecipes::PayPal::Payment
|
6
|
-
variable :payer_id, String
|
7
|
-
|
8
|
-
def perform
|
9
|
-
@payment.raw_payment.execute( :payer_id => payer_id )
|
10
|
-
@payment.reload!
|
11
|
-
|
12
|
-
@payment
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
module Action
|
4
|
-
class RefundCapture < PaymentRecipes::Utils::Action
|
5
|
-
variable :capture, PaymentRecipes::PayPal::Capture
|
6
|
-
|
7
|
-
def perform
|
8
|
-
if @capture.can_be_refunded?
|
9
|
-
@capture.raw_capture.refund({})
|
10
|
-
|
11
|
-
@capture.reload!
|
12
|
-
@capture.reload_payment!
|
13
|
-
else
|
14
|
-
raise Exception, "Capture can't be refunded"
|
15
|
-
end
|
16
|
-
|
17
|
-
@capture
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
module Action
|
4
|
-
class RefundSale < PaymentRecipes::Utils::Action
|
5
|
-
variable :sale, PaymentRecipes::PayPal::Sale
|
6
|
-
|
7
|
-
def perform
|
8
|
-
if @sale.can_be_refunded?
|
9
|
-
@sale.raw_sale.refund({})
|
10
|
-
|
11
|
-
@sale.reload!
|
12
|
-
@sale.reload_payment!
|
13
|
-
else
|
14
|
-
raise Exception, "Sale can't be refunded"
|
15
|
-
end
|
16
|
-
|
17
|
-
@sale
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
module Action
|
4
|
-
class VoidAuthorization < PaymentRecipes::Utils::Action
|
5
|
-
variable :authorization, PaymentRecipes::PayPal::Authorization
|
6
|
-
|
7
|
-
def perform
|
8
|
-
if @authorization.can_be_captured?
|
9
|
-
@authorization.raw_authorization.void()
|
10
|
-
|
11
|
-
@authorization.reload!
|
12
|
-
@authorization.reload_payment!
|
13
|
-
else
|
14
|
-
raise Exception, "Authorization can't be voided"
|
15
|
-
end
|
16
|
-
|
17
|
-
@authorization
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,170 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
class Authorization
|
4
|
-
attr_reader :id
|
5
|
-
attr_reader :currency
|
6
|
-
attr_reader :total
|
7
|
-
attr_reader :payment
|
8
|
-
attr_reader :payment_id
|
9
|
-
attr_reader :subtotal
|
10
|
-
attr_reader :state
|
11
|
-
attr_reader :create_time
|
12
|
-
attr_reader :update_time
|
13
|
-
attr_reader :valid_until
|
14
|
-
|
15
|
-
attr_reader :payment_mode
|
16
|
-
attr_reader :protection_eligibility
|
17
|
-
attr_reader :protection_eligibility_type
|
18
|
-
|
19
|
-
attr_reader :expanded
|
20
|
-
attr_reader :raw_authorization
|
21
|
-
|
22
|
-
include PaymentRecipes::Utils::Converters
|
23
|
-
include PaymentRecipes::Utils::Equality
|
24
|
-
|
25
|
-
def initialize(paypal_authorization, payment: nil, expanded: false)
|
26
|
-
unless paypal_authorization.is_a?(::PayPal::SDK::REST::DataTypes::Authorization)
|
27
|
-
raise Exception, "#{ self.class.name } must be initialized with a PayPal Authorization"
|
28
|
-
end
|
29
|
-
|
30
|
-
if payment
|
31
|
-
unless payment.is_a?(::PaymentRecipes::PayPal::Payment)
|
32
|
-
raise Exception, "Parameter payment must be a PaymentRecipes::PayPal::Payment"
|
33
|
-
end
|
34
|
-
|
35
|
-
@payment = payment
|
36
|
-
@payment_id = payment.id
|
37
|
-
end
|
38
|
-
|
39
|
-
extract_and_store(paypal_authorization)
|
40
|
-
@expanded = expanded
|
41
|
-
end
|
42
|
-
|
43
|
-
def reload!
|
44
|
-
paypal_authorization = self.class.find_raw(@id)
|
45
|
-
extract_and_store(paypal_authorization)
|
46
|
-
@expanded = true
|
47
|
-
|
48
|
-
self
|
49
|
-
end
|
50
|
-
|
51
|
-
def reload_payment!
|
52
|
-
@payment = ::PaymentRecipes::PayPal::Payment.find(@payment_id)
|
53
|
-
|
54
|
-
@payment
|
55
|
-
end
|
56
|
-
|
57
|
-
def payment
|
58
|
-
reload_payment! unless @payment
|
59
|
-
|
60
|
-
@payment
|
61
|
-
end
|
62
|
-
|
63
|
-
def payment_mode
|
64
|
-
reload! unless @payment_mode
|
65
|
-
|
66
|
-
@payment_mode
|
67
|
-
end
|
68
|
-
|
69
|
-
def protection_eligibility
|
70
|
-
reload! unless @protection_eligibility
|
71
|
-
|
72
|
-
@protection_eligibility
|
73
|
-
end
|
74
|
-
|
75
|
-
def protection_eligibility_type
|
76
|
-
reload! unless @protection_eligibility_type
|
77
|
-
|
78
|
-
@protection_eligibility_type
|
79
|
-
end
|
80
|
-
|
81
|
-
def captures
|
82
|
-
payment.captures
|
83
|
-
end
|
84
|
-
|
85
|
-
def capture
|
86
|
-
captures.first
|
87
|
-
end
|
88
|
-
|
89
|
-
def inspect
|
90
|
-
to_str
|
91
|
-
end
|
92
|
-
|
93
|
-
def pending?
|
94
|
-
@state == :pending
|
95
|
-
end
|
96
|
-
|
97
|
-
def authorized?
|
98
|
-
@state == :authorized
|
99
|
-
end
|
100
|
-
|
101
|
-
def partially_captured?
|
102
|
-
@state == :partially_captured
|
103
|
-
end
|
104
|
-
|
105
|
-
def captured?
|
106
|
-
@state == :captured
|
107
|
-
end
|
108
|
-
|
109
|
-
def expired?
|
110
|
-
@state == :expired
|
111
|
-
end
|
112
|
-
|
113
|
-
def voided?
|
114
|
-
@state == :voided
|
115
|
-
end
|
116
|
-
|
117
|
-
def can_be_captured?
|
118
|
-
authorized? || partially_captured?
|
119
|
-
end
|
120
|
-
|
121
|
-
def to_s
|
122
|
-
to_str
|
123
|
-
end
|
124
|
-
|
125
|
-
def to_str
|
126
|
-
"<#{ self.class.name } total=#{ @total.format } state=#{ @state } id=#{ @id }>"
|
127
|
-
end
|
128
|
-
|
129
|
-
class << self
|
130
|
-
def find(id)
|
131
|
-
paypal_authorization = find_raw(id)
|
132
|
-
|
133
|
-
if paypal_authorization
|
134
|
-
new(paypal_authorization, payment: nil, expanded: true)
|
135
|
-
else
|
136
|
-
nil
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def find_raw(id)
|
141
|
-
begin
|
142
|
-
::PayPal::SDK::REST::Authorization.find(id)
|
143
|
-
|
144
|
-
rescue ::PayPal::SDK::Core::Exceptions::ResourceNotFound
|
145
|
-
nil
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
private
|
151
|
-
|
152
|
-
def extract_and_store(paypal_authorization)
|
153
|
-
@id = convert_to_string(paypal_authorization.id)
|
154
|
-
@currency = convert_to_string(paypal_authorization.amount.currency)
|
155
|
-
@total = convert_to_money(amount: paypal_authorization.amount.total, currency: @currency)
|
156
|
-
@subtotal = convert_to_money(amount: paypal_authorization.amount.details.subtotal, currency: @currency)
|
157
|
-
@create_time = convert_to_time(paypal_authorization.create_time)
|
158
|
-
@update_time = convert_to_time(paypal_authorization.update_time)
|
159
|
-
@valid_until = convert_to_time(paypal_authorization.valid_until)
|
160
|
-
@payment_id = convert_to_string(paypal_authorization.parent_payment)
|
161
|
-
@state = convert_to_symbol(paypal_authorization.state)
|
162
|
-
@raw_authorization = paypal_authorization
|
163
|
-
|
164
|
-
@payment_mode = convert_to_string(paypal_authorization.payment_mode)
|
165
|
-
@protection_eligibility = convert_to_string(paypal_authorization.protection_eligibility)
|
166
|
-
@protection_eligibility_type = convert_to_string(paypal_authorization.protection_eligibility_type)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
end
|
@@ -1,138 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
class Capture
|
4
|
-
attr_reader :currency
|
5
|
-
attr_reader :total
|
6
|
-
attr_reader :create_time
|
7
|
-
attr_reader :id
|
8
|
-
attr_reader :payment
|
9
|
-
attr_reader :payment_id
|
10
|
-
attr_reader :state
|
11
|
-
attr_reader :update_time
|
12
|
-
attr_reader :transaction_fee
|
13
|
-
attr_reader :raw_capture
|
14
|
-
|
15
|
-
include ::PaymentRecipes::Utils::Converters
|
16
|
-
include ::PaymentRecipes::Utils::Equality
|
17
|
-
|
18
|
-
def initialize(paypal_capture, payment: nil)
|
19
|
-
unless paypal_capture.is_a?(::PayPal::SDK::REST::DataTypes::Capture)
|
20
|
-
raise Exception, "#{ self.class.name } must be initialized with a PayPal Capture"
|
21
|
-
end
|
22
|
-
|
23
|
-
if payment
|
24
|
-
unless payment.is_a?(::PaymentRecipes::PayPal::Payment)
|
25
|
-
raise Exception, "Parameter payment must be a PaymentRecipes::PayPal::Payment"
|
26
|
-
end
|
27
|
-
|
28
|
-
@payment = payment
|
29
|
-
@payment_id = payment.id
|
30
|
-
end
|
31
|
-
|
32
|
-
extract_and_store(paypal_capture)
|
33
|
-
end
|
34
|
-
|
35
|
-
def reload!
|
36
|
-
paypal_capture = self.class.find_raw(@id)
|
37
|
-
extract_and_store(paypal_capture)
|
38
|
-
|
39
|
-
self
|
40
|
-
end
|
41
|
-
|
42
|
-
def reload_payment!
|
43
|
-
@payment = ::PaymentRecipes::PayPal::Payment.find(@payment_id)
|
44
|
-
|
45
|
-
@payment
|
46
|
-
end
|
47
|
-
|
48
|
-
def payment
|
49
|
-
reload_payment! unless @payment
|
50
|
-
|
51
|
-
@payment
|
52
|
-
end
|
53
|
-
|
54
|
-
def authorizations
|
55
|
-
payment.authorizations
|
56
|
-
end
|
57
|
-
|
58
|
-
def authorization
|
59
|
-
payment.authorization
|
60
|
-
end
|
61
|
-
|
62
|
-
def refunds
|
63
|
-
payment.refunds.select do |refund|
|
64
|
-
refund.capture_id == @id
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def refund
|
69
|
-
refunds.first
|
70
|
-
end
|
71
|
-
|
72
|
-
def can_be_refunded?
|
73
|
-
completed?
|
74
|
-
end
|
75
|
-
|
76
|
-
def pending?
|
77
|
-
@state == :pending
|
78
|
-
end
|
79
|
-
|
80
|
-
def completed?
|
81
|
-
@state == :completed
|
82
|
-
end
|
83
|
-
|
84
|
-
def refunded?
|
85
|
-
@state = :refunded
|
86
|
-
end
|
87
|
-
|
88
|
-
def partially_refunded?
|
89
|
-
@state = :partially_refunded
|
90
|
-
end
|
91
|
-
|
92
|
-
def inspect
|
93
|
-
to_str
|
94
|
-
end
|
95
|
-
|
96
|
-
def to_s
|
97
|
-
to_str
|
98
|
-
end
|
99
|
-
|
100
|
-
def to_str
|
101
|
-
"<#{ self.class.name } total=#{ @total.format } state=#{ @state } id=#{ @id }>"
|
102
|
-
end
|
103
|
-
|
104
|
-
class << self
|
105
|
-
def find(id)
|
106
|
-
paypal_capture = find_raw(id)
|
107
|
-
|
108
|
-
if paypal_capture
|
109
|
-
new(paypal_capture, payment: nil)
|
110
|
-
else
|
111
|
-
nil
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
def find_raw(id)
|
116
|
-
begin
|
117
|
-
::PayPal::SDK::REST::Capture.find(id)
|
118
|
-
|
119
|
-
rescue ::PayPal::SDK::Core::Exceptions::ResourceNotFound
|
120
|
-
nil
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
|
125
|
-
def extract_and_store(paypal_capture)
|
126
|
-
@currency = convert_to_string(paypal_capture.amount.currency)
|
127
|
-
@total = convert_to_money(amount: paypal_capture.amount.total, currency: @currency)
|
128
|
-
@create_time = convert_to_time(paypal_capture.create_time)
|
129
|
-
@update_time = convert_to_time(paypal_capture.update_time)
|
130
|
-
@id = convert_to_string(paypal_capture.id)
|
131
|
-
@payment_id = convert_to_string(paypal_capture.parent_payment)
|
132
|
-
@state = convert_to_symbol(paypal_capture.state)
|
133
|
-
@transaction_fee = convert_to_money(amount: paypal_capture.transaction_fee.value, currency: paypal_capture.transaction_fee.currency)
|
134
|
-
@raw_capture = paypal_capture
|
135
|
-
end
|
136
|
-
end
|
137
|
-
end
|
138
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
class Payer
|
4
|
-
attr_reader :payment_method
|
5
|
-
attr_reader :funding_instruments
|
6
|
-
attr_reader :raw_payer
|
7
|
-
|
8
|
-
include ::PaymentRecipes::Utils::Converters
|
9
|
-
|
10
|
-
def initialize(paypal_payer)
|
11
|
-
unless paypal_payer.is_a?(::PayPal::SDK::REST::DataTypes::Payer)
|
12
|
-
raise Exception, "#{ self.class.name } must be initialized with a PayPal Payer"
|
13
|
-
end
|
14
|
-
|
15
|
-
@payment_method = convert_to_symbol(paypal_payer.payment_method)
|
16
|
-
@raw_payer = paypal_payer
|
17
|
-
end
|
18
|
-
|
19
|
-
def funding_instrument
|
20
|
-
@funding_instruments.first
|
21
|
-
end
|
22
|
-
|
23
|
-
def inspect
|
24
|
-
to_str
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_s
|
28
|
-
to_str
|
29
|
-
end
|
30
|
-
|
31
|
-
def to_str
|
32
|
-
"<#{ self.class.name } payment_method=#{ @payment_method }>"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
module PaymentRecipes
|
2
|
-
module PayPal
|
3
|
-
class Payment
|
4
|
-
attr_reader :id
|
5
|
-
attr_reader :intent
|
6
|
-
attr_reader :create_time
|
7
|
-
attr_reader :update_time
|
8
|
-
attr_reader :state
|
9
|
-
attr_reader :transactions
|
10
|
-
attr_reader :sales
|
11
|
-
attr_reader :authorizations
|
12
|
-
attr_reader :captures
|
13
|
-
attr_reader :refunds
|
14
|
-
attr_reader :payer
|
15
|
-
attr_reader :raw_payment
|
16
|
-
|
17
|
-
include ::PaymentRecipes::Utils::Converters
|
18
|
-
include ::PaymentRecipes::Utils::Equality
|
19
|
-
|
20
|
-
def initialize(paypal_payment, expand: false)
|
21
|
-
unless paypal_payment.is_a?(::PayPal::SDK::REST::DataTypes::Payment)
|
22
|
-
raise Exception, "#{ self.class.name } must be initialized with a PayPal Payment"
|
23
|
-
end
|
24
|
-
|
25
|
-
extract_and_store(paypal_payment, expand: expand)
|
26
|
-
end
|
27
|
-
|
28
|
-
def reload!
|
29
|
-
paypal_payment = self.class.find_raw(@id)
|
30
|
-
extract_and_store(paypal_payment)
|
31
|
-
|
32
|
-
self
|
33
|
-
end
|
34
|
-
|
35
|
-
def transaction
|
36
|
-
@transactions.first
|
37
|
-
end
|
38
|
-
|
39
|
-
def sale
|
40
|
-
@sales.first
|
41
|
-
end
|
42
|
-
|
43
|
-
def authorization
|
44
|
-
@authorizations.first
|
45
|
-
end
|
46
|
-
|
47
|
-
def capture
|
48
|
-
@captures.first
|
49
|
-
end
|
50
|
-
|
51
|
-
def refund
|
52
|
-
@refunds.first
|
53
|
-
end
|
54
|
-
|
55
|
-
def inspect
|
56
|
-
to_str
|
57
|
-
end
|
58
|
-
|
59
|
-
def to_s
|
60
|
-
to_str
|
61
|
-
end
|
62
|
-
|
63
|
-
def to_str
|
64
|
-
"<#{ self.class.name } intent=#{ @intent } state=#{ @state } id=#{ @id }>"
|
65
|
-
end
|
66
|
-
|
67
|
-
class << self
|
68
|
-
def find(id, expand: false)
|
69
|
-
paypal_payment = find_raw(id)
|
70
|
-
|
71
|
-
if paypal_payment
|
72
|
-
new(paypal_payment, expand: expand)
|
73
|
-
else
|
74
|
-
nil
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def find_raw(id)
|
79
|
-
begin
|
80
|
-
::PayPal::SDK::REST::Payment.find(id)
|
81
|
-
|
82
|
-
rescue ::PayPal::SDK::Core::Exceptions::ResourceNotFound
|
83
|
-
nil
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def history(count:, page: 1, expand: false)
|
88
|
-
paypal_payment_history = ::PayPal::SDK::REST::Payment.all(count: count, start_index: count * (page - 1))
|
89
|
-
|
90
|
-
paypal_payment_history.payments.map do |paypal_payment|
|
91
|
-
new(paypal_payment, expand: expand)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
private
|
97
|
-
|
98
|
-
def extract_and_store(paypal_payment, expand: false)
|
99
|
-
@id = convert_to_string(paypal_payment.id)
|
100
|
-
@intent = convert_to_symbol(paypal_payment.intent)
|
101
|
-
@create_time = convert_to_time(paypal_payment.create_time)
|
102
|
-
@update_time = convert_to_time(paypal_payment.update_time)
|
103
|
-
@state = convert_to_symbol(paypal_payment.state)
|
104
|
-
@raw_payment = paypal_payment
|
105
|
-
@transactions = []
|
106
|
-
@sales = []
|
107
|
-
@authorizations = []
|
108
|
-
@captures = []
|
109
|
-
@refunds = []
|
110
|
-
@payer = ::PaymentRecipes::PayPal::Payer.new(paypal_payment.payer)
|
111
|
-
|
112
|
-
paypal_payment.transactions.each do |paypal_transaction|
|
113
|
-
transaction = ::PaymentRecipes::PayPal::Transaction.new(paypal_transaction, payment: self, expand: expand)
|
114
|
-
@sales += transaction.sales
|
115
|
-
@authorizations += transaction.authorizations
|
116
|
-
@captures += transaction.captures
|
117
|
-
@refunds += transaction.refunds
|
118
|
-
|
119
|
-
@transactions << transaction
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|