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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ed3fcc600ad3010c438e0fd42e964612f151d1bfacf1fab96bc781ca2e5d2fe2
4
- data.tar.gz: c57032392b824d12f83aa4b63bc452cfdd88d22da8a88452426d150cddb226a4
3
+ metadata.gz: '0685a047c48bfcef886c06c2c161c4f68606c55374809544179708b0bf0872a4'
4
+ data.tar.gz: 06a95c3d4f19e3919bf9a2e4ba7534d2aae694cc1dcb6bda340112e3412c53c5
5
5
  SHA512:
6
- metadata.gz: f39b40bd6e0ceceb9f152fe4f2f7a2337368bd41bb823bbd1a403a2d126bc2b5c4446e82cd288758f93c422c8360cab41fb6f92bfeeb73ac5eb4ca0dc2ff4c5d
7
- data.tar.gz: 8464c1cbbc5d25fb74390cd500f1ec8a7dddf2615d2281407ae8fe3ab361b5738e11aa1223d2c9c75a76a991122eba0f248f5152706b645aad44ee3acf985686
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) 2025 [Vendo Connect Inc.](https://getvendo.com), released under [AGPL 3.0 license](https://github.com/spree/spree_stripe/blob/main/LICENSE.md). Please refer to [this blog post](https://spreecommerce.org/why-spree-is-changing-its-open-source-license-to-agpl-3-0-and-introducing-a-commercial-license/) and [that blog post](https://spreecommerce.org/open-source-ecommerce-transparency/) to learn more about Spree licensing.
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
- [![Spree Commerce 5 version](https://vendo-production-res.cloudinary.com/image/upload/w_2000/q_auto/v1742985405/docs/github/Spree_Commerce_open-source_eCommerce_myzurl.jpg)](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'].invoke
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,5 +1,5 @@
1
1
  module SpreeStripe
2
- class ApplePayDomainVerificationController < ::Spree::StoreController
2
+ class ApplePayDomainVerificationController < Spree::BaseController
3
3
  def show
4
4
  gateway = SpreeStripe::Gateway.last
5
5
 
@@ -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
- Spree::StoreController.prepend(SpreeStripe::StoreControllerDecorator) if defined?(Spree::StoreController)
9
+ if defined?(Spree::StoreController)
10
+ Spree::StoreController.prepend(SpreeStripe::StoreControllerDecorator) if defined?(Spree::StoreController)
11
+ end
@@ -12,4 +12,6 @@ module SpreeStripe
12
12
  end
13
13
  end
14
14
 
15
- Spree::CheckoutHelper.prepend(SpreeStripe::CheckoutHelperDecorator)
15
+ if defined?(Spree::CheckoutHelper)
16
+ Spree::CheckoutHelper.prepend(SpreeStripe::CheckoutHelperDecorator)
17
+ 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 }, { stripe_version: Stripe.api_version }) }
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, api_version: Stripe.api_version }
390
+ { api_key: preferred_secret_key }
391
391
  end
392
392
 
393
- def send_request(&block)
394
- result, _response = client.request(&block)
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
@@ -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.importmap.paths << root.join('config/importmap.rb')
26
- # https://github.com/rails/importmap-rails?tab=readme-ov-file#sweeping-the-cache-in-development-and-test
27
- app.config.importmap.cache_sweepers << root.join('app/javascript')
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
@@ -1,5 +1,5 @@
1
1
  module SpreeStripe
2
- VERSION = '1.4.0'.freeze
2
+ VERSION = '1.5.0'.freeze
3
3
 
4
4
  def gem_version
5
5
  Gem::Version.new(VERSION)
data/lib/spree_stripe.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'spree_core'
2
- require 'spree_extension'
3
2
  require 'spree_stripe/engine'
4
3
  require 'spree_stripe/version'
5
4
  require 'spree_stripe/configuration'
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.0
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.0.0.alpha
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.0.0.alpha
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.0.0.alpha
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.0.0.alpha
39
+ version: 5.3.0
54
40
  - !ruby/object:Gem::Dependency
55
- name: spree_extension
41
+ name: stripe
56
42
  requirement: !ruby/object:Gem::Requirement
57
43
  requirements:
58
44
  - - ">="
59
45
  - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :runtime
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: '0'
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: '0'
56
+ version: '10.1'
57
+ - - "<"
58
+ - !ruby/object:Gem::Version
59
+ version: '19'
82
60
  - !ruby/object:Gem::Dependency
83
- name: stripe
61
+ name: stripe_event
84
62
  requirement: !ruby/object:Gem::Requirement
85
63
  requirements:
86
64
  - - "~>"
87
65
  - !ruby/object:Gem::Version
88
- version: 10.1.0
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: 10.1.0
73
+ version: '2.14'
96
74
  - !ruby/object:Gem::Dependency
97
- name: stripe_event
75
+ name: dotenv
98
76
  requirement: !ruby/object:Gem::Requirement
99
77
  requirements:
100
- - - "~>"
78
+ - - ">="
101
79
  - !ruby/object:Gem::Version
102
- version: '2.11'
103
- type: :runtime
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: '2.11'
87
+ version: '0'
110
88
  - !ruby/object:Gem::Dependency
111
- name: dotenv
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
- - AGPL-3.0-or-later
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/).