setono / sylius-quickpay-plugin
Sylius的Quickpay支付插件
Requires
- php: >=8.1
- ext-json: *
- ext-mbstring: *
- doctrine/collections: ^1.6
- doctrine/orm: ^2.7
- fakerphp/faker: ^1.21
- payum/payum: ^1.6
- setono/payum-quickpay: ^1.3
- symfony/config: ^5.4 || ^6.0
- symfony/dependency-injection: ^5.4 || ^6.0
- symfony/form: ^5.4 || ^6.0
- symfony/http-foundation: ^5.4 || ^6.0
- symfony/http-kernel: ^5.4 || ^6.0
- symfony/intl: ^5.4 || ^6.0
- symfony/validator: ^5.4 || ^6.0
- viison/address-splitter: ^0.3.4
- webmozart/assert: ^1.11
- winzou/state-machine: ^0.3 || ^0.4
Requires (Dev)
- api-platform/core: ^2.7
- behat/behat: ^3.12
- lexik/jwt-authentication-bundle: ^2.16
- matthiasnoback/symfony-config-test: ^4.3
- matthiasnoback/symfony-dependency-injection-test: ^4.3
- phpspec/phpspec: ^7.3
- phpunit/phpunit: ^9.5
- psalm/plugin-phpunit: ^0.18
- psalm/plugin-symfony: ^5.0
- setono/code-quality-pack: ^2.4
- sylius/sylius: ~1.12.3
- symfony/debug-bundle: ^5.4 || ^6.0
- symfony/dotenv: ^5.4 || ^6.0
- symfony/property-info: ^5.4 || ^6.0
- symfony/serializer: ^5.4 || ^6.0
- symfony/web-profiler-bundle: ^5.4 || ^6.0
- symfony/webpack-encore-bundle: ^1.16
This package is auto-updated.
Last update: 2024-09-15 10:17:39 UTC
README
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_KEY
和QUICKPAY_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 个字符或更短。