Orchard Core Commerce supports multiple payment providers and allows developers to extend it further with their own.
Each provider is a stand-alone feature you can turn on or off.
- Exactly: A production-ready provider for exactly.com.
- Stripe: A production-ready provider for stripe.com.
- Dummy: A development-only provider that lets you click through the checkout without going off-site. Mainly used for UI testing.
To create a custom payment provider your code must contain the following:
- An implementation of
IPaymentProvider
registered as a service. - A shape type
Checkout{provider.Name}
, such as CheckoutStripe.cshtml and CheckoutDummy.cshtml.
The IPaymentProvider
contains implementable methods used by the CheckoutController
. To learn more about the individual methods in the interface, check out the individual methods' XML documentation.
The shape has the payment button that will be displayed on the ~/checkout
screen. It's up to you to include the front-end logic that calls out to your payment processor and to provide a callback URL. For the latter you can use the ~/checkout/callback/{providerName}/{orderId?}
action. It handles some basic state checking and redirection, but otherwise lets you resolve the pending order using IPaymentProvider.UpdateAndRedirectToFinishedOrderAsync()
.