setono/sylius-quickpay-plugin

Quickpay payment plugin for Sylius

Installs: 37 819

Dependents: 1

Suggesters: 0

Security: 0

Stars: 4

Watchers: 3

Forks: 3

Open Issues: 3

Type:sylius-plugin


README

Latest Version on Packagist Software License Build Status

Quickpay Payment plugin for Sylius

This plugin adds Quickpay as a payment option to Sylius.

Installation

1. Install plugin

composer require setono/sylius-quickpay-plugin

2. Make sure the plugin is added to bundles.php:

# config/bundles.php
Setono\SyliusQuickpayPlugin\SetonoSyliusQuickpayPlugin::class => ['all' => true],

3. Import the config file

# config/packages/_sylius.yaml
imports:
    - { resource: "@SetonoSyliusQuickpayPlugin/Resources/config/app/config.yaml" }

4. (Optional) Import fixtures to play in your app

# config/packages/_sylius.yaml
imports:
    - { resource: "@SetonoSyliusQuickpayPlugin/Resources/config/app/fixtures.yaml" }    

5: Add validator constraint (optional)

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.

Configuration

Create a new Payment method of the type Quickpay and fill out the required form fields.

Testing

Automated tests

Run composer tests

Manual testing

Troubleshooting

  • Validation error: Transaction in wrong state for this operation after upgrading to Sylius v1.6

    After this commit, use_authorize config option should be strictly boolean typed. Update your payment_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 that System users > API User > User permissions > Create or update payment link have PUT checkbox checked. Also check QUICKPAY_API_KEY and QUICKPAY_AGREEMENT_ID is filled with API User's api key and agreement id rather than Payment 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 like qp_<projectname>_<date>_ (when date 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.