Nimiq Pay 迷你应用是在 Nimiq Pay 移动端 WebView 内运行的网页应用,通过注入的 Provider 与钱包通信,运行于沙箱、无法访问私钥,任何敏感操作都需用户通过原生对话框确认。本技能用于构建、脚手架、转换、校验、审计或发布这类应用。
按用途分流:新建项目遵循 scaffold 流程;转换或迁移已有代码遵循 convert 流程;发布前校验遵循 checklist;已有项目并想提问则直接根据规则继续并使用 API 参考。脚手架或转换完成后,必须运行最终校验清单。
主要能力围绕两个 Provider。Nimiq Provider 通过 @nimiq/mini-app-sdk 的 init() 访问:账户访问与消息签名需确认;共识与区块高度查询无需确认;NIM 支付(金额单位为 Luna,1 NIM = 100,000 Luna,方法有 sendBasicTransaction、sendBasicTransactionWithData)需确认;质押相关方法(新建、追加、设定活跃质押、更新委托、退休、移除)均需确认。Ethereum Provider 通过 window.ethereum 访问,属标准 EIP-1193:账户访问、消息签名(结构化数据优先 eth_signTypedData_v4 / EIP-712,纯文本用 personal_sign)、交易发送、链切换或添加均需确认;余额、合约调用、估算 gas、区块与日志、交易回执等只读查询无需确认。Nimiq Pay 实现 EIP-6963,wagmi、RainbowKit 等可自动发现。ERC-20 通过 window.ethereum 访问,先切换链,再用 eth_call 或 eth_sendTransaction,并借助 viem、ethers.js 或 wagmi 做 ABI 编码;USDT、USDC 为 6 位小数,需按代币实际 decimals 解析。
开发注意:移动优先,触控目标至少 44px,避免横向滚动,在真机或模拟器测试;用户语言可从 window.nimiqPay.language 读取(ISO 639-1,只读、每会话静态)。应用可调用外部 API 与自建后端,后端需在 Access-Control-Allow-Origin 中包含迷你应用 origin;本地开发时 fetch 应指向开发机局域网 IP 而非 localhost。避免连续弹出多个确认对话框,只读调用可批量,需确认的应串行并明确用户意图。测试网可在设置按钮长按 10 秒后切换,仅影响 Nimiq Provider,EVM 仍走主网;测试网 "Get free NIM" 每次发放 110'000 NIM。
限制:不得访问私钥、不得绕过确认对话框、不得使用 Stripe、PayPal 等第三方支付,必须使用两个 Provider。Sepolia 仅用于开发,不得向真实用户发布交易。具体方法签名、链 ID、代币地址等请查阅对应 API 参考。