solidus_mollie 0.1.0 → 0.9.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/LICENSE +21 -23
- data/README.md +88 -56
- data/app/controllers/solidus_mollie/callbacks_controller.rb +43 -0
- data/app/decorators/solidus_mollie/spree/checkout_controller_decorator.rb +60 -0
- data/app/models/solidus_mollie/client.rb +66 -0
- data/app/models/solidus_mollie/mollie_source.rb +31 -0
- data/app/models/solidus_mollie/payment_method.rb +106 -0
- data/app/models/solidus_mollie/response.rb +33 -0
- data/app/services/solidus_mollie/create_order_payment.rb +76 -0
- data/app/services/solidus_mollie/process_webhook.rb +68 -0
- data/app/views/spree/checkout/payment/_mollie.html.erb +3 -0
- data/config/locales/en.yml +5 -6
- data/config/routes.rb +6 -15
- data/db/migrate/20260620143922_create_solidus_mollie_sources.rb +15 -0
- data/lib/generators/solidus_mollie/install/install_generator.rb +24 -16
- data/lib/generators/solidus_mollie/install/templates/initializer.rb +5 -4
- data/lib/solidus_mollie/engine.rb +26 -14
- data/lib/solidus_mollie/factories.rb +16 -0
- data/lib/solidus_mollie/version.rb +1 -1
- data/lib/solidus_mollie.rb +9 -1
- metadata +47 -81
- data/.circleci/config.yml +0 -41
- data/.gem_release.yml +0 -5
- data/.github/stale.yml +0 -17
- data/.github_changelog_generator +0 -2
- data/.gitignore +0 -20
- data/.rspec +0 -2
- data/.rubocop.yml +0 -5
- data/CHANGELOG.md +0 -1
- data/Gemfile +0 -33
- data/Rakefile +0 -6
- data/app/assets/javascripts/spree/backend/solidus_mollie.js +0 -2
- data/app/assets/javascripts/spree/frontend/solidus_mollie.js +0 -2
- data/app/assets/stylesheets/spree/backend/solidus_mollie.css +0 -4
- data/app/assets/stylesheets/spree/frontend/solidus_mollie.css +0 -4
- data/app/controllers/spree/api/mollie_controller.rb +0 -31
- data/app/controllers/spree/mollie_controller.rb +0 -53
- data/app/decorators/models/line_item_decorator.rb +0 -21
- data/app/decorators/models/payment_create_decorator.rb +0 -22
- data/app/models/spree/gateway/mollie_gateway.rb +0 -155
- data/app/models/spree/mollie/order_serializer.rb +0 -169
- data/app/models/spree/mollie/payment_state_updater.rb +0 -62
- data/app/models/spree/mollie_logger.rb +0 -16
- data/app/models/spree/mollie_payment_source.rb +0 -57
- data/app/models/spree/payment_method/mollie.rb +0 -26
- data/app/views/spree/admin/payments/source_forms/_mollie.html.erb +0 -8
- data/app/views/spree/admin/payments/source_views/_mollie.html.erb +0 -27
- data/app/views/spree/api/payments/show.json.jbuilder +0 -5
- data/app/views/spree/api/payments/source_views/_mollie.json.jbuilder +0 -2
- data/bin/console +0 -17
- data/bin/rails +0 -7
- data/bin/rails-engine +0 -13
- data/bin/rails-sandbox +0 -16
- data/bin/rake +0 -7
- data/bin/sandbox +0 -86
- data/bin/setup +0 -8
- data/db/migrate/20201110194821_create_solidus_mollie_payment_source.rb +0 -14
- data/lib/solidus_mollie/configuration.rb +0 -21
- data/lib/solidus_mollie/testing_support/factories.rb +0 -4
- data/solidus_mollie.code-workspace +0 -8
- data/solidus_mollie.gemspec +0 -35
- data/spec/solidus_mollie_gateway_spec.rb +0 -5
- data/spec/spec_helper.rb +0 -31
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module SolidusMollie
|
|
4
|
+
# Settlement logic, driven by Mollie's webhook (the source of truth). Looks up
|
|
5
|
+
# the local payment from the Mollie id, re-fetches the authoritative status
|
|
6
|
+
# from Mollie, then advances the Spree::Payment and order. Designed to be
|
|
7
|
+
# idempotent: Mollie may call the webhook several times.
|
|
8
|
+
class ProcessWebhook
|
|
9
|
+
class PaymentNotFound < StandardError; end
|
|
10
|
+
|
|
11
|
+
def self.call(mollie_payment_id:)
|
|
12
|
+
new(mollie_payment_id: mollie_payment_id).call
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def initialize(mollie_payment_id:)
|
|
16
|
+
@mollie_payment_id = mollie_payment_id
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def call
|
|
20
|
+
raise PaymentNotFound, 'missing id' if @mollie_payment_id.to_s.empty?
|
|
21
|
+
|
|
22
|
+
source = SolidusMollie::MollieSource.find_by(mollie_payment_id: @mollie_payment_id)
|
|
23
|
+
raise PaymentNotFound, @mollie_payment_id unless source
|
|
24
|
+
|
|
25
|
+
payment = ::Spree::Payment.find_by(source: source)
|
|
26
|
+
raise PaymentNotFound, "no payment for #{@mollie_payment_id}" unless payment
|
|
27
|
+
|
|
28
|
+
remote = payment.payment_method.client.get_payment(@mollie_payment_id)
|
|
29
|
+
source.update!(status: remote.status)
|
|
30
|
+
|
|
31
|
+
settle(payment, remote.status)
|
|
32
|
+
payment
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
private
|
|
36
|
+
|
|
37
|
+
def settle(payment, status)
|
|
38
|
+
::ActiveRecord::Base.transaction do
|
|
39
|
+
if SolidusMollie::PAID_STATUSES.include?(status)
|
|
40
|
+
mark_paid(payment)
|
|
41
|
+
elsif SolidusMollie::FAILED_STATUSES.include?(status)
|
|
42
|
+
mark_failed(payment)
|
|
43
|
+
end
|
|
44
|
+
# open / pending / authorized: leave as-is and wait for the next webhook.
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def mark_paid(payment)
|
|
49
|
+
return if payment.completed?
|
|
50
|
+
|
|
51
|
+
payment.started_processing! if payment.checkout?
|
|
52
|
+
payment.complete! unless payment.completed?
|
|
53
|
+
complete_order(payment.order)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def mark_failed(payment)
|
|
57
|
+
return if payment.failed? || payment.void?
|
|
58
|
+
|
|
59
|
+
payment.failure! if payment.pending? || payment.processing? || payment.checkout?
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def complete_order(order)
|
|
63
|
+
return unless order.confirm?
|
|
64
|
+
|
|
65
|
+
order.complete!
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
data/config/locales/en.yml
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
# Sample localization file for English. Add more files in this directory for other locales.
|
|
2
|
-
# See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
|
|
3
|
-
|
|
4
1
|
en:
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
solidus_mollie:
|
|
3
|
+
payment_error: "We couldn't start your Mollie payment: %{message}"
|
|
4
|
+
confirming_payment: "Thanks! We're confirming your payment with Mollie."
|
|
5
|
+
order_not_found: "Order not found."
|
|
6
|
+
redirect_notice: "You'll be redirected to Mollie to complete your payment securely."
|
data/config/routes.rb
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
Spree
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
namespace :api, defaults: { format: 'json' } do
|
|
11
|
-
resources :mollie do
|
|
12
|
-
member do
|
|
13
|
-
get :payment_methods
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
3
|
+
# Mount onto Spree's engine so the helpers are available as
|
|
4
|
+
# spree.mollie_webhook_url / spree.mollie_return_url.
|
|
5
|
+
::Spree::Core::Engine.routes.draw do
|
|
6
|
+
post '/mollie/webhook', to: 'solidus_mollie/callbacks#webhook', as: :mollie_webhook
|
|
7
|
+
get '/mollie/return', to: 'solidus_mollie/callbacks#return', as: :mollie_return
|
|
8
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class CreateSolidusMollieSources < ActiveRecord::Migration[7.1]
|
|
4
|
+
def change
|
|
5
|
+
create_table :solidus_mollie_sources do |t|
|
|
6
|
+
t.string :mollie_payment_id
|
|
7
|
+
t.string :mollie_method
|
|
8
|
+
t.string :status
|
|
9
|
+
t.references :payment_method
|
|
10
|
+
t.references :user
|
|
11
|
+
t.timestamps
|
|
12
|
+
end
|
|
13
|
+
add_index :solidus_mollie_sources, :mollie_payment_id, unique: true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,37 +1,45 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require 'rails/generators'
|
|
4
|
+
|
|
3
5
|
module SolidusMollie
|
|
4
6
|
module Generators
|
|
5
7
|
class InstallGenerator < Rails::Generators::Base
|
|
6
|
-
class_option :auto_run_migrations, type: :boolean, default: false
|
|
7
8
|
source_root File.expand_path('templates', __dir__)
|
|
8
9
|
|
|
10
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
|
11
|
+
|
|
9
12
|
def copy_initializer
|
|
10
13
|
template 'initializer.rb', 'config/initializers/solidus_mollie.rb'
|
|
11
14
|
end
|
|
12
15
|
|
|
13
|
-
def
|
|
14
|
-
|
|
15
|
-
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_mollie\n"
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def add_stylesheets
|
|
19
|
-
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_mollie\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
|
20
|
-
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_mollie\n", before: %r{\*/}, verbose: true # rubocop:disable Layout/LineLength
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def add_migrations
|
|
24
|
-
run 'bin/rails railties:install:migrations FROM=solidus_mollie'
|
|
16
|
+
def copy_migrations
|
|
17
|
+
rake 'railties:install:migrations FROM=solidus_mollie'
|
|
25
18
|
end
|
|
26
19
|
|
|
27
20
|
def run_migrations
|
|
28
|
-
run_migrations = options[:auto_run_migrations] ||
|
|
21
|
+
run_migrations = options[:auto_run_migrations] ||
|
|
22
|
+
['', 'y', 'Y'].include?(ask('Run migrations now? [Yn]'))
|
|
29
23
|
if run_migrations
|
|
30
|
-
|
|
24
|
+
rake 'db:migrate'
|
|
31
25
|
else
|
|
32
|
-
|
|
26
|
+
say_status :skip, 'migrations (run `rails db:migrate` later)', :yellow
|
|
33
27
|
end
|
|
34
28
|
end
|
|
29
|
+
|
|
30
|
+
def show_readme
|
|
31
|
+
say <<~MSG, :green
|
|
32
|
+
|
|
33
|
+
solidus_mollie installed.
|
|
34
|
+
|
|
35
|
+
Next steps:
|
|
36
|
+
1. Add a payment method in the admin (Configuration -> Payment Methods -> New),
|
|
37
|
+
choosing "SolidusMollie::PaymentMethod" as the provider, and paste your
|
|
38
|
+
Mollie API key (test_... or live_...).
|
|
39
|
+
2. Make sure your store is reachable over HTTPS at a public URL so Mollie can
|
|
40
|
+
reach the webhook at /mollie/webhook (use a tunnel like ngrok in dev).
|
|
41
|
+
MSG
|
|
42
|
+
end
|
|
35
43
|
end
|
|
36
44
|
end
|
|
37
45
|
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
# solidus_mollie configuration.
|
|
4
|
+
#
|
|
5
|
+
# The Mollie API key is configured per payment method in the Solidus admin
|
|
6
|
+
# (Configuration -> Payment Methods), so nothing is required here. This file is
|
|
7
|
+
# a placeholder for any future global settings.
|
|
@@ -1,26 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require 'spree/core'
|
|
4
|
-
require 'solidus_mollie'
|
|
5
|
-
|
|
6
3
|
module SolidusMollie
|
|
7
|
-
class Engine < Rails::Engine
|
|
8
|
-
include SolidusSupport::EngineExtensions
|
|
9
|
-
|
|
10
|
-
isolate_namespace ::Spree
|
|
4
|
+
class Engine < ::Rails::Engine
|
|
5
|
+
include SolidusSupport::EngineExtensions if defined?(SolidusSupport::EngineExtensions)
|
|
11
6
|
|
|
12
7
|
engine_name 'solidus_mollie'
|
|
13
|
-
|
|
14
8
|
|
|
15
|
-
#
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
# NOT isolated: routes are drawn onto Spree's engine (see config/routes.rb)
|
|
10
|
+
# so helpers resolve as spree.mollie_webhook_url / spree.mollie_return_url.
|
|
11
|
+
|
|
12
|
+
# Register the payment method so it appears in the admin "New Payment Method"
|
|
13
|
+
# provider dropdown.
|
|
14
|
+
initializer 'solidus_mollie.register_payment_method' do |app|
|
|
15
|
+
app.reloader.to_prepare do
|
|
16
|
+
methods = Rails.application.config.spree.payment_methods
|
|
17
|
+
methods << SolidusMollie::PaymentMethod unless methods.include?(SolidusMollie::PaymentMethod)
|
|
18
|
+
rescue StandardError => e
|
|
19
|
+
Rails.logger.warn("[solidus_mollie] could not auto-register payment method: #{e.message}")
|
|
20
|
+
end
|
|
18
21
|
end
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
# Prepend our checkout override so confirm-step orders paying with Mollie are
|
|
24
|
+
# redirected to Mollie's hosted checkout instead of completing synchronously.
|
|
25
|
+
config.to_prepare do
|
|
26
|
+
SolidusMollie::Engine.prepare_decorators
|
|
27
|
+
end
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
def self.prepare_decorators
|
|
30
|
+
Spree::CheckoutController.prepend(SolidusMollie::Spree::CheckoutControllerDecorator)
|
|
31
|
+
rescue NameError
|
|
32
|
+
Rails.logger.info(
|
|
33
|
+
'[solidus_mollie] Spree::CheckoutController not found; skipping checkout override. ' \
|
|
34
|
+
'For an API/headless frontend, call SolidusMollie::CreateOrderPayment yourself.'
|
|
35
|
+
)
|
|
24
36
|
end
|
|
25
37
|
end
|
|
26
38
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
FactoryBot.define do
|
|
4
|
+
factory :mollie_payment_method, class: 'SolidusMollie::PaymentMethod' do
|
|
5
|
+
name { 'Mollie' }
|
|
6
|
+
available_to_admin { true }
|
|
7
|
+
available_to_users { true }
|
|
8
|
+
preferences { { api_key: 'test_fakekey', mollie_method: '' } }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
factory :mollie_source, class: 'SolidusMollie::MollieSource' do
|
|
12
|
+
association :payment_method, factory: :mollie_payment_method
|
|
13
|
+
mollie_payment_id { "tr_#{SecureRandom.alphanumeric(10)}" }
|
|
14
|
+
status { 'open' }
|
|
15
|
+
end
|
|
16
|
+
end
|
data/lib/solidus_mollie.rb
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'mollie-api-ruby'
|
|
4
|
+
require 'solidus_core'
|
|
4
5
|
require 'solidus_mollie/version'
|
|
5
6
|
require 'solidus_mollie/engine'
|
|
7
|
+
|
|
8
|
+
module SolidusMollie
|
|
9
|
+
# Mollie payment statuses that mean "money has been received".
|
|
10
|
+
PAID_STATUSES = %w[paid].freeze
|
|
11
|
+
# Statuses that mean the payment will never succeed and should be failed.
|
|
12
|
+
FAILED_STATUSES = %w[failed expired canceled].freeze
|
|
13
|
+
end
|
metadata
CHANGED
|
@@ -1,161 +1,127 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: solidus_mollie
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
- Dermot Tynan
|
|
7
|
+
- Kalopa Robotics
|
|
9
8
|
autorequire:
|
|
10
|
-
bindir:
|
|
9
|
+
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2026-
|
|
11
|
+
date: 2026-06-20 00:00:00.000000000 Z
|
|
13
12
|
dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
|
15
|
-
name:
|
|
14
|
+
name: mollie-api-ruby
|
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
|
17
16
|
requirements:
|
|
18
|
-
- - "
|
|
19
|
-
- !ruby/object:Gem::Version
|
|
20
|
-
version: 4.6.0
|
|
21
|
-
- - "<"
|
|
17
|
+
- - "~>"
|
|
22
18
|
- !ruby/object:Gem::Version
|
|
23
|
-
version: '
|
|
19
|
+
version: '4.0'
|
|
24
20
|
type: :runtime
|
|
25
21
|
prerelease: false
|
|
26
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
27
23
|
requirements:
|
|
28
|
-
- - "
|
|
29
|
-
- !ruby/object:Gem::Version
|
|
30
|
-
version: 4.6.0
|
|
31
|
-
- - "<"
|
|
24
|
+
- - "~>"
|
|
32
25
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '
|
|
26
|
+
version: '4.0'
|
|
34
27
|
- !ruby/object:Gem::Dependency
|
|
35
|
-
name:
|
|
28
|
+
name: solidus_core
|
|
36
29
|
requirement: !ruby/object:Gem::Requirement
|
|
37
30
|
requirements:
|
|
38
|
-
- - "
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '4.0'
|
|
34
|
+
- - "<"
|
|
39
35
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '
|
|
36
|
+
version: '5'
|
|
41
37
|
type: :runtime
|
|
42
38
|
prerelease: false
|
|
43
39
|
version_requirements: !ruby/object:Gem::Requirement
|
|
44
40
|
requirements:
|
|
45
|
-
- - "
|
|
41
|
+
- - ">="
|
|
46
42
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0
|
|
43
|
+
version: '4.0'
|
|
44
|
+
- - "<"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '5'
|
|
48
47
|
- !ruby/object:Gem::Dependency
|
|
49
|
-
name:
|
|
48
|
+
name: solidus_support
|
|
50
49
|
requirement: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
|
52
51
|
- - "~>"
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
|
-
version:
|
|
53
|
+
version: '0.8'
|
|
55
54
|
type: :runtime
|
|
56
55
|
prerelease: false
|
|
57
56
|
version_requirements: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
58
|
- - "~>"
|
|
60
59
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
60
|
+
version: '0.8'
|
|
62
61
|
- !ruby/object:Gem::Dependency
|
|
63
62
|
name: solidus_dev_support
|
|
64
63
|
requirement: !ruby/object:Gem::Requirement
|
|
65
64
|
requirements:
|
|
66
65
|
- - "~>"
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '2.
|
|
67
|
+
version: '2.5'
|
|
69
68
|
type: :development
|
|
70
69
|
prerelease: false
|
|
71
70
|
version_requirements: !ruby/object:Gem::Requirement
|
|
72
71
|
requirements:
|
|
73
72
|
- - "~>"
|
|
74
73
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '2.
|
|
76
|
-
description:
|
|
77
|
-
|
|
74
|
+
version: '2.5'
|
|
75
|
+
description: A Solidus extension that lets your store accept payments through Mollie
|
|
76
|
+
using their hosted (redirect) checkout and webhooks.
|
|
77
|
+
email:
|
|
78
|
+
- support@kalopa.com
|
|
78
79
|
executables: []
|
|
79
80
|
extensions: []
|
|
80
81
|
extra_rdoc_files: []
|
|
81
82
|
files:
|
|
82
|
-
- ".circleci/config.yml"
|
|
83
|
-
- ".gem_release.yml"
|
|
84
|
-
- ".github/stale.yml"
|
|
85
|
-
- ".github_changelog_generator"
|
|
86
|
-
- ".gitignore"
|
|
87
|
-
- ".rspec"
|
|
88
|
-
- ".rubocop.yml"
|
|
89
|
-
- CHANGELOG.md
|
|
90
|
-
- Gemfile
|
|
91
83
|
- LICENSE
|
|
92
84
|
- README.md
|
|
93
|
-
-
|
|
94
|
-
- app/
|
|
95
|
-
- app/
|
|
96
|
-
- app/
|
|
97
|
-
- app/
|
|
98
|
-
- app/
|
|
99
|
-
- app/
|
|
100
|
-
- app/
|
|
101
|
-
- app/
|
|
102
|
-
- app/models/spree/gateway/mollie_gateway.rb
|
|
103
|
-
- app/models/spree/mollie/order_serializer.rb
|
|
104
|
-
- app/models/spree/mollie/payment_state_updater.rb
|
|
105
|
-
- app/models/spree/mollie_logger.rb
|
|
106
|
-
- app/models/spree/mollie_payment_source.rb
|
|
107
|
-
- app/models/spree/payment_method/mollie.rb
|
|
108
|
-
- app/views/spree/admin/payments/source_forms/_mollie.html.erb
|
|
109
|
-
- app/views/spree/admin/payments/source_views/_mollie.html.erb
|
|
110
|
-
- app/views/spree/api/payments/show.json.jbuilder
|
|
111
|
-
- app/views/spree/api/payments/source_views/_mollie.json.jbuilder
|
|
112
|
-
- bin/console
|
|
113
|
-
- bin/rails
|
|
114
|
-
- bin/rails-engine
|
|
115
|
-
- bin/rails-sandbox
|
|
116
|
-
- bin/rake
|
|
117
|
-
- bin/sandbox
|
|
118
|
-
- bin/setup
|
|
85
|
+
- app/controllers/solidus_mollie/callbacks_controller.rb
|
|
86
|
+
- app/decorators/solidus_mollie/spree/checkout_controller_decorator.rb
|
|
87
|
+
- app/models/solidus_mollie/client.rb
|
|
88
|
+
- app/models/solidus_mollie/mollie_source.rb
|
|
89
|
+
- app/models/solidus_mollie/payment_method.rb
|
|
90
|
+
- app/models/solidus_mollie/response.rb
|
|
91
|
+
- app/services/solidus_mollie/create_order_payment.rb
|
|
92
|
+
- app/services/solidus_mollie/process_webhook.rb
|
|
93
|
+
- app/views/spree/checkout/payment/_mollie.html.erb
|
|
119
94
|
- config/locales/en.yml
|
|
120
95
|
- config/routes.rb
|
|
121
|
-
- db/migrate/
|
|
96
|
+
- db/migrate/20260620143922_create_solidus_mollie_sources.rb
|
|
122
97
|
- lib/generators/solidus_mollie/install/install_generator.rb
|
|
123
98
|
- lib/generators/solidus_mollie/install/templates/initializer.rb
|
|
124
99
|
- lib/solidus_mollie.rb
|
|
125
|
-
- lib/solidus_mollie/configuration.rb
|
|
126
100
|
- lib/solidus_mollie/engine.rb
|
|
127
|
-
- lib/solidus_mollie/
|
|
101
|
+
- lib/solidus_mollie/factories.rb
|
|
128
102
|
- lib/solidus_mollie/version.rb
|
|
129
|
-
- solidus_mollie.code-workspace
|
|
130
|
-
- solidus_mollie.gemspec
|
|
131
|
-
- spec/solidus_mollie_gateway_spec.rb
|
|
132
|
-
- spec/spec_helper.rb
|
|
133
103
|
homepage: https://github.com/kalopa/solidus_mollie
|
|
134
104
|
licenses:
|
|
135
|
-
- BSD-
|
|
105
|
+
- BSD-2-Clause
|
|
136
106
|
metadata:
|
|
137
|
-
|
|
138
|
-
source_code_uri: https://github.com/kalopa/solidus_mollie
|
|
139
|
-
changelog_uri: https://github.com/kalopa/solidus_mollie/releases
|
|
107
|
+
rubygems_mfa_required: 'true'
|
|
140
108
|
post_install_message:
|
|
141
109
|
rdoc_options: []
|
|
142
110
|
require_paths:
|
|
143
111
|
- lib
|
|
144
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
145
113
|
requirements:
|
|
146
|
-
- - "
|
|
114
|
+
- - ">="
|
|
147
115
|
- !ruby/object:Gem::Version
|
|
148
|
-
version: '
|
|
116
|
+
version: '3.1'
|
|
149
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
118
|
requirements:
|
|
151
119
|
- - ">="
|
|
152
120
|
- !ruby/object:Gem::Version
|
|
153
121
|
version: '0'
|
|
154
122
|
requirements: []
|
|
155
|
-
rubygems_version: 3.
|
|
123
|
+
rubygems_version: 3.4.19
|
|
156
124
|
signing_key:
|
|
157
125
|
specification_version: 4
|
|
158
|
-
summary:
|
|
159
|
-
test_files:
|
|
160
|
-
- spec/solidus_mollie_gateway_spec.rb
|
|
161
|
-
- spec/spec_helper.rb
|
|
126
|
+
summary: Mollie payments for Solidus
|
|
127
|
+
test_files: []
|
data/.circleci/config.yml
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
version: 2.1
|
|
2
|
-
|
|
3
|
-
orbs:
|
|
4
|
-
# Always take the latest version of the orb, this allows us to
|
|
5
|
-
# run specs against Solidus supported versions only without the need
|
|
6
|
-
# to change this configuration every time a Solidus version is released
|
|
7
|
-
# or goes EOL.
|
|
8
|
-
solidusio_extensions: solidusio/extensions@volatile
|
|
9
|
-
|
|
10
|
-
jobs:
|
|
11
|
-
run-specs-with-postgres:
|
|
12
|
-
executor: solidusio_extensions/postgres
|
|
13
|
-
steps:
|
|
14
|
-
- solidusio_extensions/run-tests
|
|
15
|
-
run-specs-with-mysql:
|
|
16
|
-
executor: solidusio_extensions/mysql
|
|
17
|
-
steps:
|
|
18
|
-
- solidusio_extensions/run-tests
|
|
19
|
-
lint-code:
|
|
20
|
-
executor: solidusio_extensions/sqlite-memory
|
|
21
|
-
steps:
|
|
22
|
-
- solidusio_extensions/lint-code
|
|
23
|
-
|
|
24
|
-
workflows:
|
|
25
|
-
"Run specs on supported Solidus versions":
|
|
26
|
-
jobs:
|
|
27
|
-
- run-specs-with-postgres
|
|
28
|
-
- run-specs-with-mysql
|
|
29
|
-
- lint-code
|
|
30
|
-
|
|
31
|
-
"Weekly run specs against master":
|
|
32
|
-
triggers:
|
|
33
|
-
- schedule:
|
|
34
|
-
cron: "0 0 * * 4" # every Thursday
|
|
35
|
-
filters:
|
|
36
|
-
branches:
|
|
37
|
-
only:
|
|
38
|
-
- master
|
|
39
|
-
jobs:
|
|
40
|
-
- run-specs-with-postgres
|
|
41
|
-
- run-specs-with-mysql
|
data/.gem_release.yml
DELETED
data/.github/stale.yml
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
# Number of days of inactivity before an issue becomes stale
|
|
2
|
-
daysUntilStale: 60
|
|
3
|
-
# Number of days of inactivity before a stale issue is closed
|
|
4
|
-
daysUntilClose: false
|
|
5
|
-
# Issues with these labels will never be considered stale
|
|
6
|
-
exemptLabels:
|
|
7
|
-
- pinned
|
|
8
|
-
- security
|
|
9
|
-
# Label to use when marking an issue as stale
|
|
10
|
-
staleLabel: stale
|
|
11
|
-
# Comment to post when marking an issue as stale. Set to `false` to disable
|
|
12
|
-
markComment: >
|
|
13
|
-
This issue has been automatically marked as stale because it has not had
|
|
14
|
-
recent activity. It might be closed if no further activity occurs. Thank you
|
|
15
|
-
for your contributions.
|
|
16
|
-
# Comment to post when closing a stale issue. Set to `false` to disable
|
|
17
|
-
closeComment: false
|
data/.github_changelog_generator
DELETED
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
data/CHANGELOG.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
# Changelog
|
data/Gemfile
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
source 'https://rubygems.org'
|
|
4
|
-
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
5
|
-
|
|
6
|
-
branch = ENV.fetch('SOLIDUS_BRANCH', 'master')
|
|
7
|
-
gem 'solidus', github: 'solidusio/solidus', branch: branch
|
|
8
|
-
|
|
9
|
-
# Needed to help Bundler figure out how to resolve dependencies,
|
|
10
|
-
# otherwise it takes forever to resolve them.
|
|
11
|
-
# See https://github.com/bundler/bundler/issues/6677
|
|
12
|
-
gem 'rails', '>0.a'
|
|
13
|
-
|
|
14
|
-
# Provides basic authentication functionality for testing parts of your engine
|
|
15
|
-
gem 'solidus_auth_devise'
|
|
16
|
-
|
|
17
|
-
case ENV['DB']
|
|
18
|
-
when 'mysql'
|
|
19
|
-
gem 'mysql2'
|
|
20
|
-
when 'postgresql'
|
|
21
|
-
gem 'pg'
|
|
22
|
-
else
|
|
23
|
-
gem 'sqlite3'
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
gemspec
|
|
27
|
-
|
|
28
|
-
# Use a local Gemfile to include development dependencies that might not be
|
|
29
|
-
# relevant for the project or for other contributors, e.g. pry-byebug.
|
|
30
|
-
#
|
|
31
|
-
# We use `send` instead of calling `eval_gemfile` to work around an issue with
|
|
32
|
-
# how Dependabot parses projects: https://github.com/dependabot/dependabot-core/issues/1658.
|
|
33
|
-
send(:eval_gemfile, 'Gemfile-local') if File.exist? 'Gemfile-local'
|
data/Rakefile
DELETED