cryptom2 / magento-discount-token
Magento 2 ERC20代币折扣扩展
Requires
- cryptom2/base: ~1.0.1
README
Magento 2模块允许使用ERC20代币作为折扣
描述
扩展允许收集和使用代币,类似于客户余额功能。订单下单后收取代币,客户可以用这笔余额作为新订单的折扣。
此外,客户可以从magento商店提取代币到自己的metamask钱包,并在另一个magento商店中使用这些代币。
扩展允许实现magento商店之间的复杂折扣或合作伙伴关系计划。
此功能使用签名消息从商店端签名提取请求,并在客户端使用签名消息提取代币。这意味着商店所有者无需为向客户发送代币支付任何GAS。客户在客户区域使用签名消息提取代币时支付所有网络税(GAS)。
功能
- 在magento商店内收集订单的“本地折扣代币”
- 使用“折扣代币”为新的订单获取折扣
- 客户可以向客户账户发送提取请求以提取代币
- 商店所有者可以使用自己的metamask账户签署客户的请求
- 客户可以使用签名消息在账户中提取代币
安装
要安装模块,您需要将存储库添加到您的 composer.json
Composer安装
composer require cryptom2/magento-discount-token:v1.0.0
Magento运行
php bin/magento setup:upgrade
设置
- 启用 - 启用/禁用代币功能
- 订单总额百分比 - 客户可以从订单总额中提取多少代币的百分比
- 乘数 - 代币的乘数(例如,如果总额为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
目录复制所有文件,并
- 部署
MagentoDiscountToken.sol
- 使用在步骤1后应获得的MagentoDiscountToken的地址部署
ControlContract.sol
重要
您必须使用相同的地址部署两个合约。此地址应该是“商店所有者地址”,并且您必须完全控制此地址。
批准控制合约操作
在部署了两个合约和ERC20代币后,您将在自己的地址上拥有100万个代币。
您需要允许控制合约管理您的代币,以便让客户能够领取。要允许控制合约管理您的代币,您需要在 MagentoDiscountToken 上运行 approve
函数。
在 spender
字段中输入控制智能合约地址,以及在 amount
字段中输入智能合约可以使用的代币数量。
注意 - 您有 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 个菜单
- 代币余额 - 与客户关联的代币余额网格
- 代币历史 - 所有代币余额操作的历史记录(添加/领取/退款等)
- 代币订单 - 每个订单的代币余额表
- 提现请求 - 客户的代币提现请求(可以签名消息以允许客户领取他的代币)
提现请求
您可以使用您的 MetaMask 签名请求。签名不会使用任何汽油费,并且仅是本地操作。签名消息后,请求状态将更改,客户可以使用签名消息哈希来领取代币。
客户代币余额页面
带有余额的客户页面。客户可以
- 查看他的代币余额
- 发送请求以领取他希望领取的代币数量
- 查看他的领取请求及其状态。如果请求已由店主签名,客户将看到“领取代币”按钮
- 通过在请求网格中点击“领取代币”按钮来领取他的代币
待办事项
- 添加从客户的 MetaMask 钱包为客户账户充值 ERC20 代币余额的功能
- 修复关于领取和签名按钮的双击问题
- 如果您感兴趣,请随时分支并修复/实现任何内容
作者
Ihor Oleksiienko
许可证
Magento ERC20 折扣代币扩展(用于 Magento 2)受 MIT 许可证许可 - 详细信息请参阅 LICENSE 文件