cryptom2/magento-discount-token

Magento 2 ERC20代币折扣扩展

v1.0.1 2023-03-18 10:44 UTC

This package is auto-updated.

Last update: 2024-09-18 13:47:36 UTC


README

Magento 2模块允许使用ERC20代币作为折扣

描述

扩展允许收集和使用代币,类似于客户余额功能。订单下单后收取代币,客户可以用这笔余额作为新订单的折扣。

此外,客户可以从magento商店提取代币到自己的metamask钱包,并在另一个magento商店中使用这些代币。

扩展允许实现magento商店之间的复杂折扣或合作伙伴关系计划。

此功能使用签名消息从商店端签名提取请求,并在客户端使用签名消息提取代币。这意味着商店所有者无需为向客户发送代币支付任何GAS。客户在客户区域使用签名消息提取代币时支付所有网络税(GAS)。

功能

  1. 在magento商店内收集订单的“本地折扣代币”
  2. 使用“折扣代币”为新的订单获取折扣
  3. 客户可以向客户账户发送提取请求以提取代币
  4. 商店所有者可以使用自己的metamask账户签署客户的请求
  5. 客户可以使用签名消息在账户中提取代币

安装

要安装模块,您需要将存储库添加到您的 composer.json

Composer安装

composer require cryptom2/magento-discount-token:v1.0.0

Magento运行

php bin/magento setup:upgrade

设置

Checkout Payment Page

  • 启用 - 启用/禁用代币功能
  • 订单总额百分比 - 客户可以从订单总额中提取多少代币的百分比
  • 乘数 - 代币的乘数(例如,如果总额为50美元,百分比为4,乘数为100 - 客户将拥有= 50 * 0.04 * 100 = 200 代币。折扣将为 {grand_total} - {tokens}/{multiplier}
  • 代币符号 - ERC20代币创建中使用的代币符号
  • 代币名称 - ERC20代币创建中使用的代币名称
  • 代币地址 - ERC20代币的地址
  • 智能合约地址 - 管理提取代币和签署客户请求的智能合约的地址
  • 智能合约Abi - 智能合约的Abi

如何使用

部署ERC20代币和控制智能合约

Hardhat

要部署ERC20代币和智能合约,您可以使用Hardhat。安装hardhat并将当前模块中hardhat文件夹的文件夹复制到hardhat根目录。

然后从hardhat根目录运行

npx hardhat node - 运行节点

npx hardhat run --network localhost .\scripts\deploy.js

Remix Ide

要使用Remix IDE部署合约,您需要下载IDE或使用web remix IDE。您需要从 hardhat/contracts 目录复制所有文件,并

  1. 部署 MagentoDiscountToken.sol
  2. 使用在步骤1后应获得的MagentoDiscountToken的地址部署 ControlContract.sol

重要

您必须使用相同的地址部署两个合约。此地址应该是“商店所有者地址”,并且您必须完全控制此地址。

批准控制合约操作

在部署了两个合约和ERC20代币后,您将在自己的地址上拥有100万个代币。

您需要允许控制合约管理您的代币,以便让客户能够领取。要允许控制合约管理您的代币,您需要在 MagentoDiscountToken 上运行 approve 函数。

spender 字段中输入控制智能合约地址,以及在 amount 字段中输入智能合约可以使用的代币数量。

Checkout Payment Page

注意 - 您有 1,000,000 个代币,但 totalsupply 会显示为 1,000,000 * 10**18。这样做是为了模拟以太币(Ether)和微以太币(Wei)之间的关系,因此允许在点后实现 18 个零的十进制。

因此,要允许您的智能合约仅从您的账户中使用 2000 个代币,您应该输入 2000 * 10**18,最终金额将是 2,000,000,000,000,000,000,000

屏幕截图

菜单

管理面板有 4 个菜单

  • 代币余额 - 与客户关联的代币余额网格
  • 代币历史 - 所有代币余额操作的历史记录(添加/领取/退款等)
  • 代币订单 - 每个订单的代币余额表
  • 提现请求 - 客户的代币提现请求(可以签名消息以允许客户领取他的代币)

Admin Menu

提现请求

您可以使用您的 MetaMask 签名请求。签名不会使用任何汽油费,并且仅是本地操作。签名消息后,请求状态将更改,客户可以使用签名消息哈希来领取代币。

Withdraw Request

客户代币余额页面

带有余额的客户页面。客户可以

  • 查看他的代币余额
  • 发送请求以领取他希望领取的代币数量
  • 查看他的领取请求及其状态。如果请求已由店主签名,客户将看到“领取代币”按钮
  • 通过在请求网格中点击“领取代币”按钮来领取他的代币

Withdraw Request

待办事项

  • 添加从客户的 MetaMask 钱包为客户账户充值 ERC20 代币余额的功能
  • 修复关于领取和签名按钮的双击问题
  • 如果您感兴趣,请随时分支并修复/实现任何内容

作者

Ihor Oleksiienko

许可证

Magento ERC20 折扣代币扩展(用于 Magento 2)受 MIT 许可证许可 - 详细信息请参阅 LICENSE 文件