概述
@elata-biosciences/app-payments 让你的应用可以打开 Elata 的结账流程,并查询用户拥有哪些物品。Elata 负责结账、以 USDC 收款并记录所有权。你的应用永远不会接触钱包或支付信息。
你的物品目录由 Elata 团队配置。请联系我们,提供你想出售的物品、标题和价格。
正确的流程
先根据所有权控制界面,再购买,然后应用权益。requestPurchase 只记录用户拥有某个物品。拥有它意味着什么由你的应用决定。
注意事项
根据 status 分支,而不是 txHash
根据 status 分支,而不是 txHash
如果用户已经拥有该物品,Elata 会跳过支付并返回
{ status: "success", txHash: "" }。检查 if (result.txHash) 的代码会错误处理这种情况。两种价格格式
两种价格格式
CatalogItem.priceUsdc 是 USDC 的最小单位(6 位小数):"50000" 表示 $0.05。RequestPurchaseInput.priceUsdc 是 Elata 会忽略的自由格式显示提示。Elata 始终按目录价格收费。物品是一次性解锁
物品是一次性解锁
每个物品只能购买一次。物品不支持消耗品(按次扣减的余额)或周期性计费。如需持续收入,请使用订阅计划。
超时
超时
requestPurchase 最多等待 5 分钟让用户完成结账。getCatalog、getOwnedItems 和 hasItem 默认 10 秒。在 Elata 之外没有人会回复,因此请将 timeout 处理为“显示物品可购买”。错误
调用只会以带有code 的 AppPaymentsError 拒绝:
正常的
cancelled 或 error 购买结果会被 resolve,而不是 reject。
安全模型
- 你的应用无法伪造所有权。所有权只有在支付验证通过后才由 Elata 记录。
- 你的应用永远看不到支付信息、钱包私钥或会话令牌。
- 使用相同的
requestId重复请求不会重复扣费。 - 物品销售收入支付到应用所有者的钱包。
动手试试
examples/iap-demo:一个自包含的 HTML 文件,内置模拟 Elata,可在本地运行完整流程。- npm 上的包 README