CoreShop contains a very flexible payments management system with support for many gateways (payment providers). We are using a payment abstraction library - Payum, which handles all sorts of capturing, refunding and recurring payments logic.
On CoreShop side, we integrate it into our checkout and manage all the payment data.
Available Payment Gateways for CoreShop
|Name||State||Link||Support||Offsite||Supports Server-Notification||Supports Refund|
|Heidelpay||stable||Github||PayPal, Klarna Sofort, Credit Card||No||Yes||No|
|SaferPay||stable||Github||Supported Payment Methods||Yes||Yes||Partially|
|PostFinance||stable||Github||PostFinance Card, PostFinance E-Finance, Visa, MasterCard, Diners Club, American Express, JCB, PayPal, TWINT||Yes||Yes||No|
|PowerPay||dev||Github||invoice, automatic credit check||No||No (not required)||No|
|CuraBill||dev||Github||invoice, instalments via iframe||No||No (not required)||No|
Every payment in CoreShop, successful or failed, is represented by the payment model, which contains basic information and a reference to appropriate order.
Create a Payment programmatically
As usually, use a factory to create a new PaymentMethod and give it a unique code.
$payment = $this->container->get('coreshop.factory.payment')->createNew(); $payment->setOrder($order); $payment->setCurrencyCode('EUR'); $this->container->get('coreshop.repository.payment')->add($payment);