This plugin adds Quickpay as a payment option to Sylius.
composer require setono/sylius-quickpay-plugin# config/bundles.php
Setono\SyliusQuickpayPlugin\SetonoSyliusQuickpayPlugin::class => ['all' => true],# config/packages/_sylius.yaml
imports:
- { resource: "@SetonoSyliusQuickpayPlugin/Resources/config/app/config.yaml" }# config/packages/_sylius.yaml
imports:
- { resource: "@SetonoSyliusQuickpayPlugin/Resources/config/app/fixtures.yaml" } Add this constraint if you are planning on using Klarna.
Create config/validator/Address.xml:
<?xml version="1.0" encoding="UTF-8"?>
<constraint-mapping xmlns="http://symfony.com/schema/dic/constraint-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/constraint-mapping http://symfony.com/schema/dic/services/constraint-mapping-1.0.xsd">
<class name="Sylius\Component\Addressing\Model\Address">
<constraint name="Setono\SyliusQuickpayPlugin\Validator\Constraints\AddressStreetEligibility">
<option name="message">setono_sylius_quickpay.address.street_eligibility</option>
<option name="groups">
<value>sylius_shipping_address_update</value>
<value>sylius_checkout_complete</value>
<value>sylius</value>
</option>
</constraint>
</class>
</constraint-mapping>
Like it configured at example application.
Create a new Payment method of the type Quickpay and fill out the required form fields.
Run composer tests
- Use credit card numbers from https://learn.quickpay.net/tech-talk/appendixes/test/#test-data
-
Validation error: Transaction in wrong state for this operationafter upgrading to Sylius v1.6After this commit,
use_authorizeconfig option should be strictlybooleantyped. Update yourpayment_methodfixtures like done at this commit.At live app - open each quickpay payment method at admin and click save so hidden
use_authorizeform field will be stored in database in new format. -
Not authorized: Not authorized to PUT /payments/:id/linkat/payment/authorize/...url:You should check at
https://manage.quickpay.net/account/{QUICKPAY_MERCHANT_ID}/settings/usersthatSystem users>API User>User permissions>Create or update payment linkhavePUTcheckbox checked. Also checkQUICKPAY_API_KEYandQUICKPAY_AGREEMENT_IDis filled withAPI User's api key and agreement id rather thanPayment Window's. -
Validation error: order_id already exists on another paymentMake sure you changed your
QUICKPAY_ORDER_PREFIXat.env.*to some unique string likeqp_<projectname>_<date>_(whendateshould be updated to actual every time you recreate dev database) whenever you:- Recreating your database on dev environment and your order IDs become same as they was before
- Use
SetonoSyliusQuickpayPluginat two different projects but with same QuickPay (developer) account credentials
-
Validation error: order_id must have length between 4 and 20You should cut your
QUICKPAY_ORDER_PREFIXto 11 chars or less.