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 operation
after upgrading to Sylius v1.6After this commit,
use_authorize
config option should be strictlyboolean
typed. Update yourpayment_method
fixtures like done at this commit.At live app - open each quickpay payment method at admin and click save so hidden
use_authorize
form field will be stored in database in new format. -
Not authorized: Not authorized to PUT /payments/:id/link
at/payment/authorize/...
url:You should check at
https://manage.quickpay.net/account/{QUICKPAY_MERCHANT_ID}/settings/users
thatSystem users
>API User
>User permissions
>Create or update payment link
havePUT
checkbox checked. Also checkQUICKPAY_API_KEY
andQUICKPAY_AGREEMENT_ID
is filled withAPI User
's api key and agreement id rather thanPayment Window
's. -
Validation error: order_id already exists on another payment
Make sure you changed your
QUICKPAY_ORDER_PREFIX
at.env.*
to some unique string likeqp_<projectname>_<date>_
(whendate
should 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
SetonoSyliusQuickpayPlugin
at two different projects but with same QuickPay (developer) account credentials
-
Validation error: order_id must have length between 4 and 20
You should cut your
QUICKPAY_ORDER_PREFIX
to 11 chars or less.