如何读取二维码交易备注及生成含钱包地址、金额、备注的二维码?
生成含钱包地址、金额和备注的以太坊二维码及备注读取方案
一、以太坊URI参数的规范说明
你尝试用memo参数设置备注无效,核心原因是以太坊官方的EIP-681 URI规范里并没有定义这个参数,主流钱包仅支持规范内的参数:
amount:交易金额(注意单位是wei,若要传递ETH需转换,比如20 ETH对应20000000000000000000)message:交易备注/描述(这才是你需要用的备注参数)label:收款方标识(如商家名称)
正确的URI格式示例:
ethereum:0xYourWalletAddress?amount=20000000000000000000&message=订单编号:20240520001
如果强行用memo,仅部分小众钱包可能支持,兼容性极差,不推荐。
二、生成对应二维码的操作步骤
- 严格按照EIP-681规范构造完整的以太坊URI字符串
- 将字符串转为二维码:
- 本地开发可以用语言对应的QR库,比如Python的
qrcode库:import qrcode wallet_addr = "0xYourWalletAddress" amount_wei = "20000000000000000000" transaction_memo = "订单编号:20240520001" eth_uri = f"ethereum:{wallet_addr}?amount={amount_wei}&message={transaction_memo}" qr_img = qrcode.make(eth_uri) qr_img.save("eth_payment_qr.png") - 也可以用在线二维码生成工具,直接粘贴构造好的URI生成即可。
- 本地开发可以用语言对应的QR库,比如Python的
三、读取二维码中的交易备注
- 用扫码工具(手机钱包扫码功能、本地QR解码工具)扫描二维码,获取完整的URI字符串
- 解析URI的查询参数提取备注:
- 手动解析:拆分URI的
?之后部分,找到message=对应的值 - 代码解析(以Python为例):
from urllib.parse import urlparse, parse_qs scanned_uri = "ethereum:0xYourWalletAddress?amount=20000000000000000000&message=订单编号:20240520001" parsed_uri = urlparse(scanned_uri) params = parse_qs(parsed_uri.query) memo_content = params.get("message", [""])[0] print(memo_content) # 输出:订单编号:20240520001
- 手动解析:拆分URI的
- 主流以太坊钱包扫码后,会自动识别
message参数并在交易确认界面展示备注内容,无需手动解析。
内容的提问来源于stack exchange,提问作者Mojtaba Barari
相关产品推荐
相关产品推荐

