Solidus is not built to process payments by itself, and it does not include any integrations for popular payment service providers (PSPs) . You must install a Solidus extension or create your own integration.
The Solidus extensions listed below give you access to some popular payment service providers:
solidus_braintree
(Braintree v.zero)solidus_paypal_braintree
solidus_adyen
solidus_affirm
solidus_klarna_payments
solidus_paybright
solidus_culqi
solidus_payu_latam
In order for you to successfully process payments, your payment methods need to
send information to a payment service provider. You can use the
Spree::PaymentMethod
and Spree::PaymentMethod::CreditCard
classes as a
reference for building out your own PSP integrations.
Typically, PSP integrations use the Spree::PaymentMethod
base class to build
out to the PSP's specifications and API. When you model out payment methods
using Spree::PaymentMethod
as a base class, you can get Solidus admin panel
functionality with very little effort.
Note that the Spree::PaymentMethod
base class also has a similar interface to
the
active_merchant
gem.
For an example, see how the solidus_paypal_braintree
gem builds its
SolidusPaypalBraintree::Gateway
class
class:
it sets its own preferences and overrides many of the methods originally defined
in Spree::PaymentMethod
.
Solidus also provides a
Spree::PaymentMethod::CreditCard
class. While it is not a functional credit card-based payment method, it is a
good candidate as a base class for building your own credit card-based payment
methods.
You would need to extend or rewrite this class with your preferred PSP integration.
After switching payment service provider, there may be Spree::PaymentMethod
records referencing a type
class that does not exist anymore. Trying to
retrieve these records through an ActiveRecord
query raises a
Spree::PaymentMethod::UnsupportedPaymentMethod
error.
If you cannot delete these records, you can deactivate them running
rake payment_method:deactivate_unsupported_payment_methods
.
This way, their type
will be set to Spree::PaymentMethod
, allowing for
records retrieval without errors. Also, their real type
value will be stored
in the type_before_removal
attribute.
Solidus is an open source platform supported by the community. We encourage everyone using Solidus to contribute back to the documentation and the code.
If you’re interested in contributing to the docs, get started with the contributing guidelines. If you see something that needs fixing and can’t do it yourself, please send us an email.