spree_stripe 1.4.0 → 1.5.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.
- checksums.yaml +4 -4
- data/README.md +1 -21
- data/Rakefile +5 -1
- data/app/controllers/spree_stripe/apple_pay_domain_verification_controller.rb +1 -1
- data/app/controllers/spree_stripe/payment_intents_controller.rb +3 -3
- data/app/controllers/spree_stripe/store_controller_decorator.rb +3 -1
- data/app/helpers/spree_stripe/checkout_helper_decorator.rb +3 -1
- data/app/jobs/spree_stripe/attach_customer_to_credit_card_job.rb +18 -0
- data/app/models/spree_stripe/gateway.rb +19 -24
- data/app/models/spree_stripe/order_decorator.rb +0 -8
- data/app/services/spree_stripe/register_domain.rb +2 -2
- data/app/subscribers/spree_stripe/order_completed_subscriber.rb +14 -0
- data/lib/spree_stripe/engine.rb +14 -3
- data/lib/spree_stripe/version.rb +1 -1
- data/lib/spree_stripe.rb +0 -1
- metadata +32 -49
- data/LICENSE.md +0 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '0685a047c48bfcef886c06c2c161c4f68606c55374809544179708b0bf0872a4'
|
|
4
|
+
data.tar.gz: 06a95c3d4f19e3919bf9a2e4ba7534d2aae694cc1dcb6bda340112e3412c53c5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c8648f877e85f2d7a2ca4fc9bcb665d0917ed604787ecc389e50efffccaf293b787ddba10f08a932081362885abae8744cdb253608ce9f2e9057e9f8c89dc58c
|
|
7
|
+
data.tar.gz: ac48dc36a6279dc83dcd2babaa6109fa47741db163d0359cc54c08e4eb176a7b652ff267021746036bb70527e8c79a57891771bbb7ea81c1a6c0ca844c8999de
|
data/README.md
CHANGED
|
@@ -15,10 +15,6 @@ If you like what you see, consider giving this repo a GitHub star :star:
|
|
|
15
15
|
|
|
16
16
|
Thank you for supporting Spree open-source :heart:
|
|
17
17
|
|
|
18
|
-
> [!IMPORTANT]
|
|
19
|
-
> This Stripe integration for Spree is free to use for private projects but requires a [Commercial License](https://spreecommerce.org/why-consider-a-commercial-license-for-your-multi-tenant-or-saas-spree-based-project/) if you're planning to use it for your [SaaS](https://spreecommerce.org/multi-tenant-white-label-ecommerce/) or a [multi-tenant eCommerce](https://spreecommerce.org/multi-tenant-white-label-ecommerce/) website.
|
|
20
|
-
> Feel free to [reach out](https://spreecommerce.org/get-started/) to learn more.
|
|
21
|
-
|
|
22
18
|
> [!TIP]
|
|
23
19
|
> Looking for a [Stripe Connect integration](#looking-for-a-stripe-connect-integration-for-spree) for Spree? It's available with the [Enterprise Edition](https://spreecommerce.org/spree-commerce-version-comparison-community-edition-vs-enterprise-edition/).
|
|
24
20
|
|
|
@@ -114,7 +110,7 @@ If you'd like to contribute, please take a look at the
|
|
|
114
110
|
[instructions](CONTRIBUTING.md) for installing dependencies and crafting a good
|
|
115
111
|
pull request.
|
|
116
112
|
|
|
117
|
-
Copyright (c)
|
|
113
|
+
Copyright (c) 2026 [Vendo Connect Inc.](https://getvendo.com), released under [MIT](https://github.com/spree/spree_stripe/blob/main/LICENSE).
|
|
118
114
|
|
|
119
115
|
## Looking for a Stripe Connect integration for Spree?
|
|
120
116
|
|
|
@@ -128,19 +124,3 @@ Spree Commerce [Enterprise Edition](https://spreecommerce.org/spree-commerce-ver
|
|
|
128
124
|
- Built-in fraud prevention tools
|
|
129
125
|
|
|
130
126
|
Feel free to [reach out](https://spreecommerce.org/get-started/) to learn more.
|
|
131
|
-
|
|
132
|
-
## Spree 5 Announcement & Demo
|
|
133
|
-
|
|
134
|
-
[](https://spreecommerce.org/announcing-spree-5-the-biggest-open-source-release-ever/)
|
|
135
|
-
|
|
136
|
-
We’re thrilled to unveil [Spree 5](https://spreecommerce.org/announcing-spree-5-the-biggest-open-source-release-ever/
|
|
137
|
-
) — the most powerful and feature-packed open-source release in Spree Commerce’s history, including:
|
|
138
|
-
- A completely revamped Admin Dashboard experience: boost your team's productivity
|
|
139
|
-
- A Mobile-First, No-code Customizable Storefront: raise conversions and loyalty
|
|
140
|
-
- New integrations: a native [Stripe integration](https://github.com/spree/spree_stripe), and also Stripe Connect, Klaviyo integrations available with the Enterprise Edition
|
|
141
|
-
- Enterprise Edition Admin Features: Audit Log, [Multi-Vendor Marketplace](https://spreecommerce.org/marketplace-ecommerce/), [Multi-tenant / White-label SaaS eCommerce](https://spreecommerce.org/multi-tenant-white-label-ecommerce/)
|
|
142
|
-
|
|
143
|
-
Read the [full Spree 5 announcement here](https://spreecommerce.org/announcing-spree-5-the-biggest-open-source-release-ever/) and the [changelog of Spree 5](https://github.com/spree/spree/releases) followup improvements.
|
|
144
|
-
|
|
145
|
-
Check out the [Spree 5 demo](https://demo.spreecommerce.org/) for yourself, including this Stripe integration.
|
|
146
|
-
|
data/Rakefile
CHANGED
|
@@ -17,5 +17,9 @@ end
|
|
|
17
17
|
desc 'Generates a dummy app for testing'
|
|
18
18
|
task :test_app do
|
|
19
19
|
ENV['LIB_NAME'] = 'spree_stripe'
|
|
20
|
-
Rake::Task['extension:test_app'].
|
|
20
|
+
Rake::Task['extension:test_app'].execute(
|
|
21
|
+
install_storefront: true,
|
|
22
|
+
install_admin: true
|
|
23
|
+
)
|
|
24
|
+
system({ 'BUNDLE_GEMFILE' => File.expand_path('Gemfile', __dir__) }, 'rails g spree_legacy_api_v2:install')
|
|
21
25
|
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# this is the endpoint that Stripe JS SDK will redirect customer to after payment
|
|
2
2
|
# it will handle the payment intent status and process the payment
|
|
3
3
|
module SpreeStripe
|
|
4
|
-
class PaymentIntentsController < Spree::StoreController
|
|
5
|
-
include Spree::CheckoutAnalyticsHelper
|
|
4
|
+
class PaymentIntentsController < defined?(Spree::StoreController) ? Spree::StoreController : Spree::BaseController
|
|
5
|
+
include Spree::CheckoutAnalyticsHelper if defined?(Spree::CheckoutAnalyticsHelper)
|
|
6
6
|
|
|
7
7
|
# GET /spree/payment_intents/:id
|
|
8
8
|
def show
|
|
@@ -30,7 +30,7 @@ module SpreeStripe
|
|
|
30
30
|
@order = SpreeStripe::CompleteOrder.new(payment_intent: @payment_intent_record).call
|
|
31
31
|
|
|
32
32
|
# set the session flag to indicate that the order was placed now
|
|
33
|
-
track_checkout_completed if @order.completed?
|
|
33
|
+
track_checkout_completed if @order.completed? && defined?(track_checkout_completed)
|
|
34
34
|
|
|
35
35
|
# redirect the customer to the complete checkout page
|
|
36
36
|
redirect_to spree.checkout_complete_path(@order.token), status: :see_other
|
|
@@ -6,4 +6,6 @@ module SpreeStripe
|
|
|
6
6
|
end
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
if defined?(Spree::StoreController)
|
|
10
|
+
Spree::StoreController.prepend(SpreeStripe::StoreControllerDecorator) if defined?(Spree::StoreController)
|
|
11
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module SpreeStripe
|
|
2
|
+
class AttachCustomerToCreditCardJob < BaseJob
|
|
3
|
+
def perform(order_id)
|
|
4
|
+
return if Spree.user_class.blank?
|
|
5
|
+
|
|
6
|
+
order = Spree::Order.find_by(id: order_id)
|
|
7
|
+
return if order.blank? || order.user_id.blank?
|
|
8
|
+
|
|
9
|
+
gateway = order.store.stripe_gateway
|
|
10
|
+
return if gateway.blank?
|
|
11
|
+
|
|
12
|
+
user = Spree.user_class.find_by(id: order.user_id)
|
|
13
|
+
return if user.blank?
|
|
14
|
+
|
|
15
|
+
gateway.attach_customer_to_credit_card(user)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -95,7 +95,7 @@ module SpreeStripe
|
|
|
95
95
|
payment_intent: payment_intent_id
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
response = send_request { Stripe::Refund.create(payload) }
|
|
98
|
+
response = send_request { |opts| Stripe::Refund.create(payload, opts) }
|
|
99
99
|
|
|
100
100
|
success(response.id, response)
|
|
101
101
|
end
|
|
@@ -165,7 +165,7 @@ module SpreeStripe
|
|
|
165
165
|
# @return [Stripe::Customer] the created Stripe customer
|
|
166
166
|
def create_customer(order: nil, user: nil)
|
|
167
167
|
payload = build_customer_payload(order: order, user: user)
|
|
168
|
-
response = send_request { Stripe::Customer.create(payload) }
|
|
168
|
+
response = send_request { |opts| Stripe::Customer.create(payload, opts) }
|
|
169
169
|
|
|
170
170
|
customer = gateway_customers.build(user: user, profile_id: response.id)
|
|
171
171
|
customer.save! if user.present?
|
|
@@ -185,7 +185,7 @@ module SpreeStripe
|
|
|
185
185
|
return if customer.blank?
|
|
186
186
|
|
|
187
187
|
payload = build_customer_payload(order: order, user: user)
|
|
188
|
-
send_request { Stripe::Customer.update(customer.profile_id, payload) }
|
|
188
|
+
send_request { |opts| Stripe::Customer.update(customer.profile_id, payload, opts) }
|
|
189
189
|
end
|
|
190
190
|
|
|
191
191
|
# Creates a Stripe payment intent for the order
|
|
@@ -206,7 +206,7 @@ module SpreeStripe
|
|
|
206
206
|
).call
|
|
207
207
|
|
|
208
208
|
protect_from_error do
|
|
209
|
-
response = send_request { Stripe::PaymentIntent.create(payload) }
|
|
209
|
+
response = send_request { |opts| Stripe::PaymentIntent.create(payload, opts) }
|
|
210
210
|
|
|
211
211
|
success(response.id, response)
|
|
212
212
|
end
|
|
@@ -228,29 +228,29 @@ module SpreeStripe
|
|
|
228
228
|
payment_method_id: payment_method_id
|
|
229
229
|
).call.slice(:amount, :currency, :payment_method, :shipping, :customer)
|
|
230
230
|
|
|
231
|
-
response = send_request { Stripe::PaymentIntent.update(payment_intent_id, payload) }
|
|
231
|
+
response = send_request { |opts| Stripe::PaymentIntent.update(payment_intent_id, payload, opts) }
|
|
232
232
|
|
|
233
233
|
success(response.id, response)
|
|
234
234
|
end
|
|
235
235
|
end
|
|
236
236
|
|
|
237
237
|
def retrieve_payment_intent(payment_intent_id)
|
|
238
|
-
send_request { Stripe::PaymentIntent.retrieve({ id: payment_intent_id, expand: ['payment_method'] }) }
|
|
238
|
+
send_request { |opts| Stripe::PaymentIntent.retrieve({ id: payment_intent_id, expand: ['payment_method'] }, opts) }
|
|
239
239
|
end
|
|
240
240
|
|
|
241
241
|
def confirm_payment_intent(payment_intent_id)
|
|
242
|
-
send_request { Stripe::PaymentIntent.confirm(payment_intent_id) }
|
|
242
|
+
send_request { |opts| Stripe::PaymentIntent.confirm(payment_intent_id, {}, opts) }
|
|
243
243
|
end
|
|
244
244
|
|
|
245
245
|
def capture_payment_intent(payment_intent_id, amount_in_cents)
|
|
246
|
-
send_request { Stripe::PaymentIntent.capture(payment_intent_id, { amount_to_capture: amount_in_cents }) }
|
|
246
|
+
send_request { |opts| Stripe::PaymentIntent.capture(payment_intent_id, { amount_to_capture: amount_in_cents }, opts) }
|
|
247
247
|
end
|
|
248
248
|
|
|
249
249
|
# Cancels a Stripe payment intent
|
|
250
250
|
#
|
|
251
251
|
# @param payment_intent_id [String] Stripe payment intent ID, eg. pi_123
|
|
252
252
|
def cancel_payment_intent(payment_intent_id)
|
|
253
|
-
send_request { Stripe::PaymentIntent.cancel(payment_intent_id) }
|
|
253
|
+
send_request { |opts| Stripe::PaymentIntent.cancel(payment_intent_id, {}, opts) }
|
|
254
254
|
end
|
|
255
255
|
|
|
256
256
|
# Ensures a Stripe payment intent exists for Spree payment
|
|
@@ -282,12 +282,12 @@ module SpreeStripe
|
|
|
282
282
|
end
|
|
283
283
|
|
|
284
284
|
def retrieve_charge(charge_id)
|
|
285
|
-
send_request { Stripe::Charge.retrieve(charge_id) }
|
|
285
|
+
send_request { |opts| Stripe::Charge.retrieve(charge_id, opts) }
|
|
286
286
|
end
|
|
287
287
|
|
|
288
288
|
def create_ephemeral_key(customer_id)
|
|
289
289
|
protect_from_error do
|
|
290
|
-
response = send_request { Stripe::EphemeralKey.create({ customer: customer_id },
|
|
290
|
+
response = send_request { |opts| Stripe::EphemeralKey.create({ customer: customer_id }, opts.merge(stripe_version: Stripe.api_version)) }
|
|
291
291
|
|
|
292
292
|
success(response.secret, response)
|
|
293
293
|
end
|
|
@@ -295,7 +295,7 @@ module SpreeStripe
|
|
|
295
295
|
|
|
296
296
|
def create_setup_intent(customer_id)
|
|
297
297
|
protect_from_error do
|
|
298
|
-
response = send_request { Stripe::SetupIntent.create({ customer: customer_id, automatic_payment_methods: { enabled: true } }) }
|
|
298
|
+
response = send_request { |opts| Stripe::SetupIntent.create({ customer: customer_id, automatic_payment_methods: { enabled: true } }, opts) }
|
|
299
299
|
|
|
300
300
|
success(response.client_secret, response)
|
|
301
301
|
end
|
|
@@ -303,9 +303,9 @@ module SpreeStripe
|
|
|
303
303
|
|
|
304
304
|
def create_tax_calculation(order)
|
|
305
305
|
protect_from_error do
|
|
306
|
-
send_request do
|
|
306
|
+
send_request do |opts|
|
|
307
307
|
Stripe::Tax::Calculation.create(
|
|
308
|
-
SpreeStripe::TaxPresenter.new(order: order).call
|
|
308
|
+
SpreeStripe::TaxPresenter.new(order: order).call, opts
|
|
309
309
|
)
|
|
310
310
|
end
|
|
311
311
|
end
|
|
@@ -319,7 +319,7 @@ module SpreeStripe
|
|
|
319
319
|
expand: ['line_items']
|
|
320
320
|
}
|
|
321
321
|
|
|
322
|
-
send_request { Stripe::Tax::Transaction.create_from_calculation(payload) }
|
|
322
|
+
send_request { |opts| Stripe::Tax::Transaction.create_from_calculation(payload, opts) }
|
|
323
323
|
end
|
|
324
324
|
end
|
|
325
325
|
|
|
@@ -330,7 +330,7 @@ module SpreeStripe
|
|
|
330
330
|
customer = fetch_or_create_customer(user: user)
|
|
331
331
|
return if customer.blank?
|
|
332
332
|
|
|
333
|
-
send_request { Stripe::PaymentMethod.attach(payment_method_id, { customer: customer.profile_id }) }
|
|
333
|
+
send_request { |opts| Stripe::PaymentMethod.attach(payment_method_id, { customer: customer.profile_id }, opts) }
|
|
334
334
|
|
|
335
335
|
user.default_credit_card.update(gateway_customer_profile_id: customer.profile_id, gateway_customer_id: customer.id)
|
|
336
336
|
rescue Stripe::StripeError => e
|
|
@@ -387,16 +387,11 @@ module SpreeStripe
|
|
|
387
387
|
end
|
|
388
388
|
|
|
389
389
|
def api_options
|
|
390
|
-
{ api_key: preferred_secret_key
|
|
390
|
+
{ api_key: preferred_secret_key }
|
|
391
391
|
end
|
|
392
392
|
|
|
393
|
-
def send_request
|
|
394
|
-
|
|
395
|
-
result
|
|
396
|
-
end
|
|
397
|
-
|
|
398
|
-
def client
|
|
399
|
-
@client ||= Stripe::StripeClient.new(api_options)
|
|
393
|
+
def send_request
|
|
394
|
+
yield(api_options)
|
|
400
395
|
end
|
|
401
396
|
|
|
402
397
|
private
|
|
@@ -26,14 +26,6 @@ module SpreeStripe
|
|
|
26
26
|
payment_intents.update_all(customer_id: customer_id) if customer_id.present?
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
def persist_user_credit_card
|
|
30
|
-
super
|
|
31
|
-
stripe_gateway = store.stripe_gateway
|
|
32
|
-
return if stripe_gateway.blank?
|
|
33
|
-
|
|
34
|
-
stripe_gateway.attach_customer_to_credit_card(user)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
29
|
def stripe_payment_intent
|
|
38
30
|
@stripe_payment_intent ||= payment_intents.last.stripe_payment_intent
|
|
39
31
|
end
|
|
@@ -3,14 +3,14 @@ module SpreeStripe
|
|
|
3
3
|
def call(model:)
|
|
4
4
|
gateway = model.is_a?(Spree::Store) ? model.stripe_gateway : model.store.stripe_gateway
|
|
5
5
|
|
|
6
|
-
payment_method_domain = gateway.send_request { Stripe::PaymentMethodDomain.create({ domain_name: model.url }) }
|
|
6
|
+
payment_method_domain = gateway.send_request { |opts| Stripe::PaymentMethodDomain.create({ domain_name: model.url }, opts) }
|
|
7
7
|
|
|
8
8
|
attributes_to_update = { stripe_apple_pay_domain_id: payment_method_domain.id }
|
|
9
9
|
|
|
10
10
|
tld_length = model.url.split('.').length
|
|
11
11
|
if tld_length > 2 && model.is_a?(Spree::CustomDomain)
|
|
12
12
|
top_level_domain_name = model.url.split('.').last(tld_length - 1).join('.')
|
|
13
|
-
top_level_domain = gateway.send_request { Stripe::PaymentMethodDomain.create({ domain_name: top_level_domain_name }) }
|
|
13
|
+
top_level_domain = gateway.send_request { |opts| Stripe::PaymentMethodDomain.create({ domain_name: top_level_domain_name }, opts) }
|
|
14
14
|
attributes_to_update[:stripe_top_level_domain_id] = top_level_domain.id
|
|
15
15
|
end
|
|
16
16
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module SpreeStripe
|
|
2
|
+
class OrderCompletedSubscriber < Spree::Subscriber
|
|
3
|
+
subscribes_to 'order.completed'
|
|
4
|
+
|
|
5
|
+
on 'order.completed', :attach_customer_to_credit_card
|
|
6
|
+
|
|
7
|
+
def attach_customer_to_credit_card(event)
|
|
8
|
+
order_id = event.payload['id']
|
|
9
|
+
return if order_id.blank?
|
|
10
|
+
|
|
11
|
+
SpreeStripe::AttachCustomerToCreditCardJob.perform_later(order_id)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/lib/spree_stripe/engine.rb
CHANGED
|
@@ -4,6 +4,9 @@ module SpreeStripe
|
|
|
4
4
|
isolate_namespace Spree
|
|
5
5
|
engine_name 'spree_stripe'
|
|
6
6
|
|
|
7
|
+
# Add app/subscribers to autoload paths
|
|
8
|
+
config.paths.add 'app/subscribers', eager_load: true
|
|
9
|
+
|
|
7
10
|
# use rspec for tests
|
|
8
11
|
config.generators do |g|
|
|
9
12
|
g.test_framework :rspec
|
|
@@ -22,9 +25,11 @@ module SpreeStripe
|
|
|
22
25
|
end
|
|
23
26
|
|
|
24
27
|
initializer 'spree_stripe.importmap', before: 'importmap' do |app|
|
|
25
|
-
app.config.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
+
if app.config.respond_to?(:importmap)
|
|
29
|
+
app.config.importmap.paths << root.join('config/importmap.rb')
|
|
30
|
+
# https://github.com/rails/importmap-rails?tab=readme-ov-file#sweeping-the-cache-in-development-and-test
|
|
31
|
+
app.config.importmap.cache_sweepers << root.join('app/javascript')
|
|
32
|
+
end
|
|
28
33
|
end
|
|
29
34
|
|
|
30
35
|
def self.activate
|
|
@@ -33,6 +38,12 @@ module SpreeStripe
|
|
|
33
38
|
end
|
|
34
39
|
end
|
|
35
40
|
|
|
41
|
+
config.after_initialize do
|
|
42
|
+
Spree.subscribers.concat [
|
|
43
|
+
SpreeStripe::OrderCompletedSubscriber
|
|
44
|
+
]
|
|
45
|
+
end
|
|
46
|
+
|
|
36
47
|
config.to_prepare(&method(:activate).to_proc)
|
|
37
48
|
end
|
|
38
49
|
end
|
data/lib/spree_stripe/version.rb
CHANGED
data/lib/spree_stripe.rb
CHANGED
metadata
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_stripe
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
- Vendo Connect Inc.
|
|
7
|
+
- Vendo Connect Inc., Vendo Sp. z o.o.
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
@@ -15,100 +15,78 @@ dependencies:
|
|
|
15
15
|
requirements:
|
|
16
16
|
- - ">="
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version: 5.
|
|
18
|
+
version: 5.3.0
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
23
|
- - ">="
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version: 5.
|
|
26
|
-
- !ruby/object:Gem::Dependency
|
|
27
|
-
name: spree_storefront
|
|
28
|
-
requirement: !ruby/object:Gem::Requirement
|
|
29
|
-
requirements:
|
|
30
|
-
- - ">="
|
|
31
|
-
- !ruby/object:Gem::Version
|
|
32
|
-
version: 5.0.0.alpha
|
|
33
|
-
type: :runtime
|
|
34
|
-
prerelease: false
|
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
-
requirements:
|
|
37
|
-
- - ">="
|
|
38
|
-
- !ruby/object:Gem::Version
|
|
39
|
-
version: 5.0.0.alpha
|
|
25
|
+
version: 5.3.0
|
|
40
26
|
- !ruby/object:Gem::Dependency
|
|
41
27
|
name: spree_admin
|
|
42
28
|
requirement: !ruby/object:Gem::Requirement
|
|
43
29
|
requirements:
|
|
44
30
|
- - ">="
|
|
45
31
|
- !ruby/object:Gem::Version
|
|
46
|
-
version: 5.
|
|
32
|
+
version: 5.3.0
|
|
47
33
|
type: :runtime
|
|
48
34
|
prerelease: false
|
|
49
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
50
36
|
requirements:
|
|
51
37
|
- - ">="
|
|
52
38
|
- !ruby/object:Gem::Version
|
|
53
|
-
version: 5.
|
|
39
|
+
version: 5.3.0
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
|
-
name:
|
|
41
|
+
name: stripe
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|
|
57
43
|
requirements:
|
|
58
44
|
- - ">="
|
|
59
45
|
- !ruby/object:Gem::Version
|
|
60
|
-
version: '
|
|
61
|
-
|
|
62
|
-
prerelease: false
|
|
63
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
-
requirements:
|
|
65
|
-
- - ">="
|
|
66
|
-
- !ruby/object:Gem::Version
|
|
67
|
-
version: '0'
|
|
68
|
-
- !ruby/object:Gem::Dependency
|
|
69
|
-
name: importmap-rails
|
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
|
71
|
-
requirements:
|
|
72
|
-
- - ">="
|
|
46
|
+
version: '10.1'
|
|
47
|
+
- - "<"
|
|
73
48
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '
|
|
49
|
+
version: '19'
|
|
75
50
|
type: :runtime
|
|
76
51
|
prerelease: false
|
|
77
52
|
version_requirements: !ruby/object:Gem::Requirement
|
|
78
53
|
requirements:
|
|
79
54
|
- - ">="
|
|
80
55
|
- !ruby/object:Gem::Version
|
|
81
|
-
version: '
|
|
56
|
+
version: '10.1'
|
|
57
|
+
- - "<"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '19'
|
|
82
60
|
- !ruby/object:Gem::Dependency
|
|
83
|
-
name:
|
|
61
|
+
name: stripe_event
|
|
84
62
|
requirement: !ruby/object:Gem::Requirement
|
|
85
63
|
requirements:
|
|
86
64
|
- - "~>"
|
|
87
65
|
- !ruby/object:Gem::Version
|
|
88
|
-
version:
|
|
66
|
+
version: '2.14'
|
|
89
67
|
type: :runtime
|
|
90
68
|
prerelease: false
|
|
91
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
92
70
|
requirements:
|
|
93
71
|
- - "~>"
|
|
94
72
|
- !ruby/object:Gem::Version
|
|
95
|
-
version:
|
|
73
|
+
version: '2.14'
|
|
96
74
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
name:
|
|
75
|
+
name: dotenv
|
|
98
76
|
requirement: !ruby/object:Gem::Requirement
|
|
99
77
|
requirements:
|
|
100
|
-
- - "
|
|
78
|
+
- - ">="
|
|
101
79
|
- !ruby/object:Gem::Version
|
|
102
|
-
version: '
|
|
103
|
-
type: :
|
|
80
|
+
version: '0'
|
|
81
|
+
type: :development
|
|
104
82
|
prerelease: false
|
|
105
83
|
version_requirements: !ruby/object:Gem::Requirement
|
|
106
84
|
requirements:
|
|
107
|
-
- - "
|
|
85
|
+
- - ">="
|
|
108
86
|
- !ruby/object:Gem::Version
|
|
109
|
-
version: '
|
|
87
|
+
version: '0'
|
|
110
88
|
- !ruby/object:Gem::Dependency
|
|
111
|
-
name:
|
|
89
|
+
name: jsonapi-rspec
|
|
112
90
|
requirement: !ruby/object:Gem::Requirement
|
|
113
91
|
requirements:
|
|
114
92
|
- - ">="
|
|
@@ -182,7 +160,6 @@ executables: []
|
|
|
182
160
|
extensions: []
|
|
183
161
|
extra_rdoc_files: []
|
|
184
162
|
files:
|
|
185
|
-
- LICENSE.md
|
|
186
163
|
- README.md
|
|
187
164
|
- Rakefile
|
|
188
165
|
- app/assets/config/spree_stripe_manifest.js
|
|
@@ -201,6 +178,7 @@ files:
|
|
|
201
178
|
- app/javascript/spree_stripe/application.js
|
|
202
179
|
- app/javascript/spree_stripe/controllers/stripe_button_controller.js
|
|
203
180
|
- app/javascript/spree_stripe/controllers/stripe_controller.js
|
|
181
|
+
- app/jobs/spree_stripe/attach_customer_to_credit_card_job.rb
|
|
204
182
|
- app/jobs/spree_stripe/base_job.rb
|
|
205
183
|
- app/jobs/spree_stripe/complete_order_job.rb
|
|
206
184
|
- app/jobs/spree_stripe/create_tax_transaction_job.rb
|
|
@@ -265,6 +243,7 @@ files:
|
|
|
265
243
|
- app/services/spree_stripe/webhook_handlers/payment_intent_payment_failed.rb
|
|
266
244
|
- app/services/spree_stripe/webhook_handlers/payment_intent_succeeded.rb
|
|
267
245
|
- app/services/spree_stripe/webhook_handlers/setup_intent_succeeded.rb
|
|
246
|
+
- app/subscribers/spree_stripe/order_completed_subscriber.rb
|
|
268
247
|
- app/views/spree/admin/payment_methods/configuration_guides/_spree_stripe.html.erb
|
|
269
248
|
- app/views/spree/admin/payment_methods/custom_form_fields/_spree_stripe.html.erb
|
|
270
249
|
- app/views/spree/admin/payment_methods/descriptions/_spree_stripe.html.erb
|
|
@@ -297,8 +276,12 @@ files:
|
|
|
297
276
|
- vendor/javascript/@stripe--stripe-js--dist--pure.esm.js.js
|
|
298
277
|
homepage: https://github.com/spree/spree_stripe
|
|
299
278
|
licenses:
|
|
300
|
-
-
|
|
301
|
-
metadata:
|
|
279
|
+
- MIT
|
|
280
|
+
metadata:
|
|
281
|
+
bug_tracker_uri: https://github.com/spree/spree_stripe/issues
|
|
282
|
+
changelog_uri: https://github.com/spree/spree_stripe/releases/tag/v1.5.0
|
|
283
|
+
documentation_uri: https://docs.spreecommerce.org/
|
|
284
|
+
source_code_uri: https://github.com/spree/spree_stripe/tree/v1.5.0
|
|
302
285
|
rdoc_options: []
|
|
303
286
|
require_paths:
|
|
304
287
|
- lib
|
data/LICENSE.md
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# LICENSE
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Vendo Connect Inc.
|
|
4
|
-
All rights reserved.
|
|
5
|
-
|
|
6
|
-
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
7
|
-
|
|
8
|
-
This program is distributed in the hope that it will be useful,
|
|
9
|
-
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
10
|
-
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
11
|
-
GNU Affero General Public License for more details.
|
|
12
|
-
|
|
13
|
-
You should have received a copy of the GNU Affero General Public License
|
|
14
|
-
along with this program. If not, see [https://www.gnu.org/licenses/](https://www.gnu.org/licenses/).
|