setono/sylius-quickpay-plugin

Sylius的Quickpay支付插件


README

Latest Version on Packagist Software License Build Status

Quickpay支付插件用于Sylius

此插件将Quickpay添加到Sylius的支付选项中。

安装

1. 安装插件

composer require setono/sylius-quickpay-plugin

2. 确保插件已添加到 bundles.php

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

3. 导入配置文件

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

4. (可选) 导入固定数据以在您的应用程序中测试

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

5: 添加验证约束(可选)

如果您计划使用Klarna,请添加此约束。

创建 config/validator/Address.xml

<?xml version="1.0" encoding="UTF-8"?>

<constraint-mapping xmlns="https://symfony.com.cn/schema/dic/constraint-mapping"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    xsi:schemaLocation="https://symfony.com.cn/schema/dic/constraint-mapping https://symfony.com.cn/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>

参考示例应用程序中的配置配置

配置

创建一个新的类型为 Quickpay 的支付方式,并填写必要的表单字段。

测试

自动测试

运行 composer tests

手动测试

故障排除

  • 在升级到Sylius v1.6后,出现 Validation error: Transaction in wrong state for this operation

    在此提交之后,use_authorize 配置选项应为严格的 boolean 类型。更新您的 payment_method 固定数据,如在此提交中所做的那样。

    在实际应用程序中 - 在管理员中打开每个quickpay支付方式并保存,以便将隐藏的 use_authorize 表单字段以新格式存储在数据库中。

  • /payment/authorize/... URL处出现 Not authorized: Not authorized to PUT /payments/:id/link

    您应该在 https://manage.quickpay.net/account/{QUICKPAY_MERCHANT_ID}/settings/users 检查,确保 System users > API User > User permissions > Create or update payment link 中已勾选 PUT 复选框。同时检查 QUICKPAY_API_KEYQUICKPAY_AGREEMENT_ID 是否已填写为 API User 的 api key 和协议 id,而不是 Payment Window 的。

  • 验证错误:order_id 在另一个支付中已存在

    请确保您已将 QUICKPAY_ORDER_PREFIX.env.* 中更改为一些唯一的字符串,例如 qp_<projectname>_<date>_(当 date 应该在每次重新创建开发数据库时更新为实际日期时)

    • 在开发环境中重新创建数据库后,您的订单 ID 与之前相同
    • 在两个不同的项目中使用 SetonoSyliusQuickpayPlugin,但使用相同的QuickPay(开发者)账户凭据
  • 验证错误:order_id 必须介于 4 和 20 个字符之间

    您应该将 QUICKPAY_ORDER_PREFIX 截断到 11 个字符或更短。