payment_recipes 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/payment_recipes/paypal/rest/action/capture_authorization.rb +27 -0
  3. data/lib/payment_recipes/paypal/rest/action/create_payment.rb +73 -0
  4. data/lib/payment_recipes/paypal/rest/action/execute_payment.rb +25 -0
  5. data/lib/payment_recipes/paypal/rest/action/refund_capture.rb +24 -0
  6. data/lib/payment_recipes/paypal/rest/action/refund_sale.rb +24 -0
  7. data/lib/payment_recipes/paypal/rest/action/void_authorization.rb +24 -0
  8. data/lib/payment_recipes/paypal/rest/authorization.rb +172 -0
  9. data/lib/payment_recipes/paypal/rest/capture.rb +140 -0
  10. data/lib/payment_recipes/paypal/rest/payer.rb +38 -0
  11. data/lib/payment_recipes/paypal/rest/payment.rb +126 -0
  12. data/lib/payment_recipes/paypal/rest/refund.rb +160 -0
  13. data/lib/payment_recipes/paypal/rest/sale.rb +172 -0
  14. data/lib/payment_recipes/paypal/rest/settings.rb +18 -0
  15. data/lib/payment_recipes/paypal/rest/transaction.rb +118 -0
  16. data/lib/payment_recipes/paypal/soap/action/capture_authorization.rb +104 -0
  17. data/lib/payment_recipes/paypal/soap/action/create_express_checkout_payment.rb +76 -0
  18. data/lib/payment_recipes/paypal/soap/action/execute_express_checkout_payment.rb +131 -0
  19. data/lib/payment_recipes/paypal/soap/action/perform_direct_payment.rb +62 -0
  20. data/lib/payment_recipes/paypal/soap/settings.rb +22 -0
  21. data/lib/payment_recipes/paypal/soap/transaction.rb +116 -0
  22. data/lib/payment_recipes/utils/action.rb +145 -8
  23. data/lib/payment_recipes/version.rb +1 -1
  24. data/lib/payment_recipes.rb +24 -15
  25. metadata +37 -17
  26. data/lib/payment_recipes/paypal/action/capture_authorization.rb +0 -25
  27. data/lib/payment_recipes/paypal/action/create_payment.rb +0 -66
  28. data/lib/payment_recipes/paypal/action/execute_payment.rb +0 -17
  29. data/lib/payment_recipes/paypal/action/refund_capture.rb +0 -22
  30. data/lib/payment_recipes/paypal/action/refund_sale.rb +0 -22
  31. data/lib/payment_recipes/paypal/action/void_authorization.rb +0 -22
  32. data/lib/payment_recipes/paypal/authorization.rb +0 -170
  33. data/lib/payment_recipes/paypal/capture.rb +0 -138
  34. data/lib/payment_recipes/paypal/payer.rb +0 -36
  35. data/lib/payment_recipes/paypal/payment.rb +0 -124
  36. data/lib/payment_recipes/paypal/refund.rb +0 -158
  37. data/lib/payment_recipes/paypal/sale.rb +0 -170
  38. data/lib/payment_recipes/paypal/settings.rb +0 -14
  39. data/lib/payment_recipes/paypal/transaction.rb +0 -116
@@ -1,158 +0,0 @@
1
- module PaymentRecipes
2
- module PayPal
3
- class Refund
4
- attr_reader :id
5
- attr_reader :currency
6
- attr_reader :total
7
- attr_reader :payment
8
- attr_reader :payment_id
9
- attr_reader :state
10
-
11
- attr_reader :create_time
12
- attr_reader :update_time
13
-
14
- attr_reader :sale_id
15
- attr_reader :sale
16
-
17
- attr_reader :capture_id
18
- attr_reader :capture
19
-
20
- attr_reader :raw_refund
21
-
22
- include ::PaymentRecipes::Utils::Converters
23
- include ::PaymentRecipes::Utils::Equality
24
-
25
- def initialize(paypal_refund, payment: nil)
26
- unless paypal_refund.is_a?(::PayPal::SDK::REST::DataTypes::Refund)
27
- raise Exception, "#{ self.class.name } must be initialized with a PayPal Refund"
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_refund)
40
- end
41
-
42
- def reload!
43
- paypal_refund = self.class.find_raw(@id)
44
- extract_and_store(paypal_refund)
45
-
46
- self
47
- end
48
-
49
- def reload_payment!
50
- @payment = ::PaymentRecipes::PayPal::Payment.find(@payment_id)
51
-
52
- @payment
53
- end
54
-
55
- def reload_sale!
56
- return unless @sale_id
57
-
58
- @sale = ::PaymentRecipes::PayPal::Sale.find(@sale_id)
59
-
60
- @sale
61
- end
62
-
63
- def reload_capture!
64
- return unless @capture_id
65
-
66
- @capture = ::PaymentRecipes::PayPal::Capture.find(@capture_id)
67
-
68
- @capture
69
- end
70
-
71
- def payment
72
- reload_payment! unless @payment
73
-
74
- @payment
75
- end
76
-
77
- def capture
78
- reload_capture! unless @capture
79
-
80
- @capture
81
- end
82
-
83
- def sale
84
- reload_sale! unless @sale
85
-
86
- @sale
87
- end
88
-
89
- def authorizations
90
- payment.authorizations
91
- end
92
-
93
- def authorization
94
- payment.authorization
95
- end
96
-
97
- def pending?
98
- @state == :pending
99
- end
100
-
101
- def completed?
102
- @state == :completed
103
- end
104
-
105
- def failed?
106
- @state == :failed
107
- end
108
-
109
- def inspect
110
- to_str
111
- end
112
-
113
- def to_s
114
- to_str
115
- end
116
-
117
- def to_str
118
- "<#{ self.class.name } total=#{ @total.format } state=#{ @state } id=#{ @id }>"
119
- end
120
-
121
- class << self
122
- def find(id)
123
- paypal_refund = find_raw(id)
124
-
125
- if paypal_refund
126
- new(paypal_refund, payment: nil)
127
- else
128
- nil
129
- end
130
- end
131
-
132
- def find_raw(id)
133
- begin
134
- ::PayPal::SDK::REST::Refund.find(id)
135
-
136
- rescue ::PayPal::SDK::Core::Exceptions::ResourceNotFound
137
- nil
138
- end
139
- end
140
- end
141
-
142
- def extract_and_store(paypal_refund)
143
- @id = convert_to_string(paypal_refund.id)
144
- @currency = convert_to_string(paypal_refund.amount.currency)
145
- @total = convert_to_money(amount: paypal_refund.amount.total, currency: paypal_refund.amount.currency)
146
- @payment_id = convert_to_string(paypal_refund.parent_payment)
147
- @state = convert_to_symbol(paypal_refund.state)
148
-
149
- @create_time = convert_to_time(paypal_refund.create_time)
150
- @update_time = convert_to_time(paypal_refund.update_time)
151
-
152
- @sale_id = convert_to_string(paypal_refund.sale_id)
153
- @capture_id = convert_to_string(paypal_refund.capture_id)
154
- @raw_refund = paypal_refund
155
- end
156
- end
157
- end
158
- end
@@ -1,170 +0,0 @@
1
- module PaymentRecipes
2
- module PayPal
3
- class Sale
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
-
13
- attr_reader :transaction_fee
14
- attr_reader :payment_mode
15
- attr_reader :protection_eligibility
16
- attr_reader :protection_eligibility_type
17
-
18
- attr_reader :expanded
19
- attr_reader :raw_sale
20
-
21
- include ::PaymentRecipes::Utils::Converters
22
- include ::PaymentRecipes::Utils::Equality
23
-
24
- def initialize(paypal_sale, payment: nil, expanded: false)
25
- unless paypal_sale.is_a?(::PayPal::SDK::REST::DataTypes::Sale)
26
- raise Exception, "#{ self.class.name } must be initialized with a PayPal Sale"
27
- end
28
-
29
- if payment
30
- unless payment.is_a?(::PaymentRecipes::PayPal::Payment)
31
- raise Exception, "Parameter payment must be a PaymentRecipes::PayPal::Payment"
32
- end
33
-
34
- @payment = payment
35
- @payment_id = payment.id
36
- end
37
-
38
- extract_and_store(paypal_sale)
39
- @expanded = expanded
40
- end
41
-
42
- def reload!
43
- paypal_sale = self.class.find_raw(@id)
44
- extract_and_store(paypal_sale)
45
- @expanded = true
46
-
47
- self
48
- end
49
-
50
- def reload_payment!
51
- @payment = ::PaymentRecipes::PayPal::Payment.find(@payment_id)
52
-
53
- @payment
54
- end
55
-
56
- def payment
57
- reload_payment! unless @payment
58
-
59
- @payment
60
- end
61
-
62
- def transaction_fee
63
- reload! unless @transaction_fee
64
-
65
- @transaction_fee
66
- end
67
-
68
- def payment_mode
69
- reload! unless @payment_mode
70
-
71
- @payment_mode
72
- end
73
-
74
- def protection_eligibility
75
- reload! unless @protection_eligibility
76
-
77
- @protection_eligibility
78
- end
79
-
80
- def protection_eligibility_type
81
- reload! unless @protection_eligibility_type
82
-
83
- @protection_eligibility_type
84
- end
85
-
86
- def refunds
87
- payment.refunds.select do |refund|
88
- refund.sale_id == @id
89
- end
90
- end
91
-
92
- def refund
93
- refunds.first
94
- end
95
-
96
- def inspect
97
- to_str
98
- end
99
-
100
- def to_s
101
- to_str
102
- end
103
-
104
- def to_str
105
- "<#{ self.class.name } total=#{ @total.format } state=#{ @state } id=#{ @id }>"
106
- end
107
-
108
- def can_be_refunded?
109
- completed?
110
- end
111
-
112
- def completed?
113
- @state == :completed
114
- end
115
-
116
- def partially_refunded?
117
- @state == :partially_refunded
118
- end
119
-
120
- def pending?
121
- @state == :pending
122
- end
123
-
124
- def refunded?
125
- @state == :refunded
126
- end
127
-
128
- def denied?
129
- @state == :denied
130
- end
131
-
132
- class << self
133
- def find(id)
134
- paypal_sale = find_raw(id)
135
-
136
- if paypal_sale
137
- new(paypal_sale, payment: nil, expanded: true)
138
- else
139
- nil
140
- end
141
- end
142
-
143
- def find_raw(id)
144
- begin
145
- ::PayPal::SDK::REST::Sale.find(id)
146
-
147
- rescue ::PayPal::SDK::Core::Exceptions::ResourceNotFound
148
- nil
149
- end
150
- end
151
- end
152
-
153
- def extract_and_store(paypal_sale)
154
- @currency = convert_to_string(paypal_sale.amount.currency)
155
- @total = convert_to_money(amount: paypal_sale.amount.total, currency: @currency)
156
- @create_time = convert_to_time(paypal_sale.create_time)
157
- @update_time = convert_to_time(paypal_sale.update_time)
158
- @id = convert_to_string(paypal_sale.id)
159
- @payment_id = convert_to_string(paypal_sale.parent_payment)
160
- @state = convert_to_symbol(paypal_sale.state)
161
- @raw_sale = paypal_sale
162
-
163
- @transaction_fee = convert_to_money(amount: paypal_sale.transaction_fee.value, currency: paypal_sale.transaction_fee.currency)
164
- @payment_mode = convert_to_string(paypal_sale.payment_mode)
165
- @protection_eligibility = convert_to_string(paypal_sale.protection_eligibility)
166
- @protection_eligibility_type = convert_to_string(paypal_sale.protection_eligibility_type)
167
- end
168
- end
169
- end
170
- end
@@ -1,14 +0,0 @@
1
- module PaymentRecipes
2
- module PayPal
3
- module Settings
4
- def self.configure(mode:, client_id:, client_secret:)
5
- ::PayPal::SDK.configure(
6
- :mode => mode.to_s, # "sandbox" or "live"
7
- :client_id => client_id,
8
- :client_secret => client_secret,
9
- :ssl_options => { }
10
- )
11
- end
12
- end
13
- end
14
- end
@@ -1,116 +0,0 @@
1
- module PaymentRecipes
2
- module PayPal
3
- class Transaction
4
- attr_reader :currency
5
- attr_reader :total
6
- attr_reader :payment
7
- attr_reader :payment_id
8
- attr_reader :description
9
-
10
- attr_reader :subtotal
11
- attr_reader :tax
12
- attr_reader :fee
13
- attr_reader :shipping
14
- attr_reader :handling_fee
15
- attr_reader :insurance
16
- attr_reader :shipping_discount
17
- attr_reader :insurance
18
- attr_reader :gift_wrap
19
-
20
- attr_reader :sales
21
- attr_reader :authorizations
22
- attr_reader :captures
23
- attr_reader :refunds
24
-
25
- attr_reader :raw_transaction
26
-
27
- include ::PaymentRecipes::Utils::Converters
28
-
29
- def initialize(paypal_transaction, payment:, expand: false)
30
- unless paypal_transaction.is_a?(::PayPal::SDK::REST::DataTypes::Transaction)
31
- raise Exception, "#{ self.class.name } must be initialized with a PayPal Transaction"
32
- end
33
-
34
- unless payment.is_a?(::PaymentRecipes::PayPal::Payment)
35
- raise Exception, "Parameter payment must be a PaymentRecipes::PayPal::Payment"
36
- end
37
-
38
- @currency = convert_to_string(paypal_transaction.amount.currency)
39
- @total = convert_to_money(amount: paypal_transaction.amount.total, currency: @currency)
40
- @description = convert_to_string(paypal_transaction.description)
41
- @payment = payment
42
- @payment_id = payment.id
43
-
44
- @subtotal = convert_to_money(amount: paypal_transaction.amount.details.subtotal, currency: @currency)
45
- @tax = convert_to_money(amount: paypal_transaction.amount.details.tax, currency: @currency)
46
- @fee = convert_to_money(amount: paypal_transaction.amount.details.fee, currency: @currency)
47
- @shipping = convert_to_money(amount: paypal_transaction.amount.details.shipping, currency: @currency)
48
- @handling_fee = convert_to_money(amount: paypal_transaction.amount.details.handling_fee, currency: @currency)
49
- @insurance = convert_to_money(amount: paypal_transaction.amount.details.insurance, currency: @currency)
50
- @shipping_discount = convert_to_money(amount: paypal_transaction.amount.details.shipping_discount, currency: @currency)
51
- @insurance = convert_to_money(amount: paypal_transaction.amount.details.insurance, currency: @currency)
52
- @gift_wrap = convert_to_money(amount: paypal_transaction.amount.details.gift_wrap, currency: @currency)
53
- @raw_transaction = paypal_transaction
54
-
55
- @sales = []
56
- @authorizations = []
57
- @captures = []
58
- @refunds = []
59
-
60
- paypal_transaction.related_resources.each do |paypal_related_resource|
61
- if paypal_related_resource.sale.id
62
- sale = ::PaymentRecipes::PayPal::Sale.new(paypal_related_resource.sale, payment: payment)
63
- sale.reload! if expand
64
-
65
- @sales << sale
66
- end
67
-
68
- if paypal_related_resource.authorization.id
69
- authorization = ::PaymentRecipes::PayPal::Authorization.new(paypal_related_resource.authorization, payment: payment)
70
- authorization.reload! if expand
71
-
72
- @authorizations << authorization
73
- end
74
-
75
- if paypal_related_resource.capture.id
76
- capture = ::PaymentRecipes::PayPal::Capture.new(paypal_related_resource.capture, payment: payment)
77
- @captures << capture
78
- end
79
-
80
- if paypal_related_resource.refund.id
81
- refund = ::PaymentRecipes::PayPal::Refund.new(paypal_related_resource.refund, payment: payment)
82
- @refunds << refund
83
- end
84
- end
85
- end
86
-
87
- def sale
88
- @sales.first
89
- end
90
-
91
- def authorization
92
- @authorizations.first
93
- end
94
-
95
- def capture
96
- @captures.first
97
- end
98
-
99
- def refund
100
- @refunds.first
101
- end
102
-
103
- def inspect
104
- to_str
105
- end
106
-
107
- def to_s
108
- to_str
109
- end
110
-
111
- def to_str
112
- "<#{ self.class.name } total=#{ @total.format } sales=#{ @sales.size } authorizations=#{ @authorizations.size } captures=#{ @captures.size }>"
113
- end
114
- end
115
- end
116
- end