Skip to Content
3. 示例示例

Examples

本页提供 v0.1(Phase 1)常用的接入示例:商品配置、购买、权益恢复、钱包事件、能力检测。

1) 商品配置(Product Mapping)

PHSDK 不允许前端随意传金额;所有价格、Token、链信息由配置决定。

{ "version": "0.1", "products": { "coin_pack_1": { "chainId": 8453, "token": { "address": "0xTOKEN...", "symbol": "USDC", "decimals": 6 }, "payee": "0xPAYEE...", "amount": "1990000", "entitlement": { "id": "coin_pack_1", "type": "consumable", "quantity": 2000 } } } }

说明:

  • amount 为最小单位(避免浮点误差)
  • productId 是游戏唯一需要关心的参数

2) 发起购买

const result = await sdk.pay.purchase({ productId: "coin_pack_1" }); switch (result.status) { case "CONFIRMED": // ✅ 建议在确认后再发放高价值权益(Phase 1 默认写本地) break; case "SUBMITTED": // 交易已广播,等待确认 break; case "REJECTED": // 用户拒签 break; case "FAILED": // 交易失败(revert / status=0) break; }

3) 查询/恢复权益(Local Entitlements)

const { entitlements } = await sdk.pay.getEntitlements(); console.log(entitlements);

4) 钱包事件

sdk.on("wallet.accountsChanged", ({ accounts }) => { console.log("accounts changed", accounts); }); sdk.on("wallet.chainChanged", ({ chainId }) => { console.log("chain changed", chainId); });

5) 能力检测(推荐)

const caps = await sdk.env.getCapabilities(); if (!caps.modules.pay.purchase) alert("Payment not supported in this wallet");

6) 可复制的示例仓库结构

见:Sample Repo Skeleton

7) Mock bridge(调试用)

当宿主仅提供 WebView + window.ethereum 时,可先注入 mock bridge 脚本模拟宿主接入:

<script src="/path/to/bridge.mock.js"></script>