macopedia / magento2-allegro
负责与Allegro API集成的Magento2模块,由Macopedia.com开发
Requires
- php: ^7.1
- ext-fileinfo: *
- ext-json: *
- guzzlehttp/guzzle: *
This package is auto-updated.
Last update: 2024-09-12 11:32:56 UTC
README
Allegro集成模块,支持Magento 2 >= v2.3。目前不支持当前Allegro API。
注意
模块与Allegro.pl关于将Offer与产品目录连接的最新更改不兼容:[链接](https://developer.allegro.pl/news/od-dzisiaj-nowe-oferty-w-wybranych-dzialach-wystawisz-dopiero-gdy-polaczysz-je-z-katalogiem-produktow-d2qzkBwy2CZ)。这导致今天无法使用此模块在Allegro上发布Offer。这与Allegro服务引入的改变有关。
我们提供扩展的进一步开发,需付费。欢迎联系我们:[链接](https://macopedia.com/pl/produkty/magento-2-allegro)
我们当然欢迎pull-request来解决这个问题。
合作伙伴
我们的合作伙伴帮助开发此项目。
如果您想帮助我们项目,请通过sales@macopedia.com联系我们
当前待办事项
许可
Magento 2 - Allegro集成模块源代码完全免费,并使用MIT许可发布。
功能
- 在Allegro销售产品后,更新Magento中的库存状态以及在Allegro销售后更新Allegro中的库存状态
- 从Allegro导入订单到Magento
- 从Magento自动更新订单状态
- 从Magento发布Offer到Allegro
- 从Magento发布运单号给Allegro订单
安装模块后的操作顺序
- 在MySQL MQ或RabbitMQ中添加队列配置
- 转到插件配置并选择合适的账户类型(商店->配置->Allegro->配置)
- 连接到Allegro账户
- 禁用订单导入
- 启用或禁用(根据需要)库存状态同步和运单号发送
- 绑定配送方式和支付方式
- 将Offer与Allegro上的产品绑定
- 根据需要启用或禁用订单导入
应该仅在所有产品都已与Allegro上的Offer绑定后启用订单导入 - 否则,由于缺乏匹配Allegro Offer的产品,订单可能会被忽略。
连接到Allegro账户
要将Magento商店连接到Allegro应用程序,请执行以下步骤
- 登录到Allegro账户并转到地址https://apps.developer.allegro.pl或https://apps.developer.allegro.pl.allegrosandbox.pl(对于沙箱账户),以注册新的应用程序。
- 请输入应用程序名称和URI地址进行重定向 - 应该是以下格式:http://{backend_url}/index.php/admin/allegro/system/authenticate/ 以及 https://{backend_url}/index.php/admin/allegro/system/authenticate/ 例如:
- 在Magento管理面板中登录并转到商店 -> 配置 -> Allegro -> 配置
- 在配置中输入为Allegro应用程序生成的Client ID和Client Secret值,如果我们在沙盒账户上操作,则更改账户类型,然后保存更改。
- 点击“连接到Allegro账户”按钮以从Allegro应用程序获取令牌。如果连接成功,令牌将被保存在Magento应用程序中,从而实现与Allegro账户的进一步集成。
将现有的Allegro报价与Magento商店中的产品关联
在启用订单导入之前,需要将现有的Allegro报价与其对应的Magento商店中的产品关联,操作步骤如下:
- 进入Allegro账户中的“我的报价”选项卡
- 复制报价名称下方的报价ID
- 进入与Allegro报价相对应的Magento产品编辑页面
- 将之前复制的报价ID粘贴到Allegro→ Allegro报价编号字段中并保存产品
库存状态同步
插件的一项任务是确保与Allegro相应报价关联的Magento商店中的某个产品的数量在商店和Allegro上始终保持一致。通过以下操作实现此功能:
- 监控产品数量(购买或手动在Magento管理面板中进行更改)的任何变化,并获取发生变化的产品的ID。
- 然后使用RabbitMQ或MySQL MQ将之前获取的产品ID传递到队列中,以逐步同步,按顺序处理每个出现的库存状态变化(这样库存状态可以按顺序实时更新,同时减轻系统负担,因为更改不是同时执行的)。
- 当队列中出现新的产品ID时,Consumer - 负责修改Allegro报价库存状态的类,将接收队列中的第一个ID,然后使用该ID提取该产品的当前库存状态,并将其发送到Allegro进行更新。
可以在插件配置中启用库存状态同步。
价格同步
插件还提供了同步Magento产品价格与Allegro报价价格的功能。每次产品价格更改都会发送到相应的Allegro报价。可以设置Allegro上的价格比Magento上的价格高一定的百分比(该百分比对每个报价相同)。
订单集成
在将商店与 Allegro 应用程序连接后,我们可以在配置中启用订单导入。
启用此选项后,Allegro API 将每 5 分钟查询一次订单事件。在此查询中,所有已付款的订单将被导入到 Magento。如果订单尚未付款,则将为该订单创建一个预订。可以在“销售->Allegro 预订”中查看当前预订。如果对于某个订单已存在预订且订单已付款,导入器将删除预订并在 Magento 中创建订单。
可以在任何时间通过配置插件(商店->配置->Allegro->配置->导入订单)启用或禁用创建预订的过程。
我们还可以在配置中设置要导入 Allegro 订单的商店视图。
在 Magento 商店中导入 Allegro 订单时,将记录有关产品价格和数量的信息、买家的数据、付款和发货数据以及发送给卖家的消息,该消息将出现在订单页面的“评论历史”标签中。
模块支持 Magento 下订单的标准逻辑。可以通过为名为 "allegro_order_import_before_quote_save" 的事件创建观察器来在项目中调整导入的产品(请参阅 https://developer.allegro.pl/en/orders/#04 以获取有关 API Allegro 订单查询的所有信息)。
如果由于某些原因无法导入订单,则失败信息将记录在 allegro_orders_with_errors
表中。可以在“销售->Allegro 订单错误”中查看它。
其中包含有关错误原因、导入尝试次数、第一次和最后一次导入尝试的日期以及订单 ID 的信息。要重新导入订单,请选择相关的记录,然后展开操作列表并选择 导入
订单状态映射
在插件配置中,我们可以定义 Magento 和 Allegro 之间订单状态的映射。
添加适当的映射后,在 Magento 中更改订单状态也将导致在 Allegro 中更改状态。
配送和支付方法映射
在插件配置中,我们可以定义从 Allegro 来到 Magento 商店的订单的支付方法映射。
对于配送方法映射,我们有一个动态列表可供选择,我们可以向其中添加更多条目,从左侧的列表中选择一个在 Allegro 中可用的配送方法,在右侧的列表中选择在 Magento 商店配置中可用和激活的配送方法名称。在动态列表下方,我们可以选择默认配送方法,当从 Allegro 收到未定义映射的方法时,它将被分配给订单。
对于支付方法映射,我们有两个下拉列表可供选择,我们可以从中选择一个在 Magento 商店配置中可用和激活的支付方法 - 对于在线支付和现金取货的订单。
发送运输号码
为了客户能够跟踪其订单的运输情况,请在 Allegro 中输入其运输号码和承运商信息。借助插件,您可以从 Magento 进行此操作
- 需要进入之前从 Allegro 导入的订单页面,打开“配送”标签。
- 然后点击“添加运单号”,选择快递公司并输入运单追踪号。
- 还可以选择包裹中的产品,通过设置要发送的产品数量来实现。
- 0 - 产品不在包裹中。
- 大于0的数字 - 产品以指定数量存在于包裹中。
- 可以根据订单中的产品数量添加多个运单号。
可以在插件的配置中启用或禁用运单号发送。
发布报价
使用此插件,我们可以将 Magento 上的产品发布到 Allegro。要执行此操作,请
- 在 Allegro 账户中创建配送价格表
- 添加有关 退货、投诉以及 保修的信息(仅适用于企业账户)
- 填写有关位置的信息(店铺->配置->Allegro->配置->来源)
- (可选) 选择产品属性,从中提取 EAN 码、描述和价格(店铺->配置->Allegro->配置->创建报价)
输入必要的数据后,就可以从 Magento 开始发布报价。需要选择要发布的产品,进入其页面并选择 Allegro 报价的图片。要这样做,只需单击图片,选择“Allegro”角色,然后保存产品。
我们将被重定向到发布拍卖的表单页面,其中包含以下字段
- 报价名称 - 从产品中获取
- EAN - 从产品中获取
- 报价描述 - 从产品中获取
- 价格 - 从产品中获取
- 数量 - 从产品中获取
- 配送价格表、投诉条件、退货条件、保修条件 - 从连接的 Allegro 账户中获取
- 配送时间、发票选项 - Allegro 的通用参数
- 选择类别
- 所选类别的参数
表单中的所有字段都有验证,某些参数可能发布拍卖所必需。发布的报价包含从产品获取的图片。
在填写所有字段并点击“保存”后,将生成Allegro上的报价草稿,并跳转到报价编辑页面。现在只需点击“发布”,报价即可生效。在任何时候,我们都可以编辑报价、结束报价,然后再次激活。产品已与Allegro上的报价关联。
在配置中有一个选项可以启用cron任务,该任务将从产品中删除不再存在于Allegro上的报价ID(店铺->配置->Allegro->配置->导入订单->Cron清理旧预订已启用)。
DEBUG模式
插件提供记录所有发送到和从Allegro API的数据的功能。可以在配置页面启用它(店铺->配置->Allegro->配置->调试模式)
日志数据记录到文件/var/log/allegro-http-request.log
可用命令
导入特定ID的订单:macopedia:allegro:order-import -c [CHECKOUT_FORM_ID]
导入所有订单:macopedia:allegro:orders-import
导入带有错误的订单:macopedia:allegro:orders-with-errors-import
删除具有不存在报价的产品映射:macopedia:allegro:clean-offers-mapping
配置MYSQL MQ
在config.php文件中进行配置
<?php
return [
'modules' => [
// ...
'Magento_Amqp' => 0, // important disable rabbitmq
'Magento_MysqlMq' => 1,
// ...
]
在env.php文件中进行队列配置
'queue' => [
'topics' => [
'allegro.change.stock.db' => [
'schema' => [
'schema_value' => 'Macopedia\Allegro\Api\Consumer\MessageInterface'
],
'response_schema' => [
'schema_value' => 'Macopedia\Allegro\Api\Consumer\MessageInterface'
],
'publisher' => 'allegro.change.stock.db',
],
],
'publishers' => [
'allegro.change.stock.db' => [
'name' => 'allegro.change.stock.db',
]
],
'consumers' => [
'allegro.change.stock.db' => [
'queue' => 'allegro.api', // `name` from db table `queue`
'name' => 'allegro.change.stock.db',
'handlers' => [
[
'type' => 'Macopedia\Allegro\Model\Consumer',
'method' => 'processMessage'
]
],
'consumerInstance' => 'Magento\Framework\MessageQueue\Consumer',
'instance_type' => 'Magento\Framework\MessageQueue\Consumer',
'connection' => 'db',
'maxMessages' => 2000,
'max_messages' => 2000
]
],
'exchange_topic_to_queues_map' => [
'allegro.change.stock.db--allegro.change.stock.db' => [
'allegro.api' // `name` from db table `queue`
]
]
],
在env.php文件中进行消费者配置
'cron_consumers_runner' => [
'cron_run' => true,
'max_messages' => 20000,
'consumers' => [
'AllegroApiQueueDb'
]
]
配置RABBITMQ
在config.php文件中进行配置
<?php
return [
'modules' => [
// ...
'Magento_Amqp' => 1, // important enable rabbitmq
// ...
]
在env.php文件中进行队列配置
'queue' => [
'amqp' => [
'host' => 'amqp',
'port' => '5672',
'user' => 'guest',
'password' => 'guest',
],
],
在env.php文件中进行消费者配置
'cron_consumers_runner' => [
'cron_run' => true,
'max_messages' => 20000,
'consumers' => [
'AllegroApiQueue'
]
]