@funnelsgrove/sdk

中文文档
0.4.0发布于 2026/09/17TypeScriptES Module零依赖近 30 天下载 4939

在网络应用程序中嵌入漏斗Grove付费墙

中文使用文档
文档目录3 节
  1. 在前端挂载
  2. 补全并返回 URL
  3. 支付安排和推出

@ funnelsgrove/ sdk (英语)

在网络应用中直接嵌入已出版的FunnelsGrove付费墙. 没有后端, 需要密钥,或付费墙会话。 一揽子计划没有框架依赖性.

npm install @funnelsgrove/sdk

执行是释放候选人。 npm 目前包含 仅限元数据 0.0.0-bootstrap.0 保留,没有可执行的SDK代码.

在前端挂载

import { mountPaywall } from '@funnelsgrove/sdk';

const paywall = mountPaywall({
  container: '#paywall',
  paywallUrl: 'https://pay.example.com/paywall',
  ...(currentUser.funnelsGroveUserId
    ? { userId: currentUser.funnelsGroveUserId }
    : { email: currentUser.email }),
  returnUrl: '/billing/complete',
  onReady: ({ userId }) => console.log('Paywall ready for FG user', userId),
  onComplete: () => console.log('Payment confirmed'),
  onError: (error) => showPaymentError(error.message),
});

// On route change, modal close, or component cleanup:
paywall.destroy();

paywallUrl 是已公布的付费墙路由,没有查询参数或一个 碎片。 生产中使用HTTPS;支持本地host HTTP进行开发. 已出版的漏斗供应其公开的FG密钥和漏斗配置.

提供 FG userId 或电子邮件. userId 是现有的 FG 公开 user_id范围 到这个漏斗和测试/生活环境。 这不是你申请的账号 或者FG的内部行ID。 未知的ID 失败而不创建用户或退后 到电子邮件。 仅通过电子邮件,FG实现常态化并再用,或创建犬类用户. 同一邮件的同步请求汇合到一个用户上 。 如果两个字段都是 但是,它们必须匹配或解析失败。 决议不会改变 现有用户的电子邮件或购买历史. onReady({ userId }) 显示选中的 FG ID; 挂载保存用于后续的提供者返回 。 如果电子邮件表在 paywall 解决另一个所有者, 它显示在 iframe 内部的冲突并保留 当前购买者; 从应用程序中重新打开以选择不同的账户.

这遵循了FG的公测身份模式. 浏览器提供的ID/电子邮件不是 证明一个经认证的应用账户的所有权。 此 SDK 不改变 现有公共用户API的访问模式.

补全并返回 URL

returnUrl 是可选的。 相对的 URL 在应用页面中解决 。 在FG之后 校验成功离职,SDK呼叫 onComplete 每个挂载一次 导航父窗口到 returnUrl。没有它,呼叫者处理 导航 尚未支付或未支付的付款没有重新定向。 目的地被保留下来了 ; 无法替换儿童信息。 已配置的重定向仍然运行 若为 onComplete 抛出; 使用回调同步通知和处理 在您的应用程序中调用错误 .

使用已核实的帐单webhooks/订阅状态来批准和取消访问, 包括延期和取消。 浏览器调用和重定向只告诉 用来刷新状态的应用程序.

onError 收到一个 PaywallError 与 code数字 :

  • paywall_unavailable:重开付费墙或纠正其配置/身份.
  • confirmation_pending: 保留框并使用 检查付款状况。 。 。 .
  • payment_failed: 保留机框让买家再试一次.

SDK 检查消息来源、发送窗口和 iframe 实例,并调整 iframe高处. 设置使用 postMessage; 用户身份和 应用程序返回 URL 在 ifram/ 提供者 URL 中缺失 。 提供者的成功/失败 返回 重新装入 FG 付费墙并恢复原挂载的设置 亲子关系。 在重定向时保持母机挂起 。 被替换的父母或 提供者返回到顶级窗口需要从应用程序重新打开. 固门还原也使用了 sessionStorage 用于其退出 ID; 被屏蔽 存储可以防止重定向恢复。 内置取出不需要存储 .

支付安排和推出

漏斗使用其现有的 Stale/ Solidgate 检查出局,包括符合条件 钱包。 iframe已经 allow="payment *"登记/核查应用程序和漏斗 用于 Apple Pay 的域名,并与提供者配置 Google Pay 。 托管 frame-ancestors 应用 frame-src 政策必须允许预期的起源. 真正的钱包和 3DS 需要提供者/浏览器接受; 本地定着不 建立这种支持.

按依赖顺序公布SDK、运行时间、分析和付款,部署 匹配 API,然后重建目标漏斗。 旧漏斗不懂 这个嵌入式协议。 API 图像在本地 SDK/ 运行时 tarball 之前创建本地 SDK/ runtime tarball npm发布,但促销的CLI门需要公布的包件文物.

这是一套无害环境管理方案。 类型脚本支持 moduleResolution: "NodeNext" 或者说 "Bundler"。没有导入服务器; @funnelsgrove/sdk/embed 是内部 FG跑时桥. 犬科行为和测试绘图在 docs/product-specs/sdk.md。 。 。 .

版本与发布记录

@funnelsgrove/sdk 共发布 2 个版本,首次发布于 2026/09/17;过去 12 个月发布了 2 个版本。

版本发布日期距今
0.4.0latest2026/09/171 个月前
0.0.0-bootstrap.0bootstrap2026/09/171 个月前

关于 @funnelsgrove/sdk 的常见问题

@funnelsgrove/sdk 是什么?

在网络应用程序中嵌入漏斗Grove付费墙

如何安装 @funnelsgrove/sdk?

在项目目录运行 npm install @funnelsgrove/sdk,或使用 pnpm add / yarn add / bun add。

@funnelsgrove/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@funnelsgrove/sdk 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@funnelsgrove/sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@funnelsgrove/sdk 可以商用吗?

@funnelsgrove/sdk 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@funnelsgrove/sdk 的下载量有多少?

根据 npm 官方下载统计,@funnelsgrove/sdk 在 2026/10/16 – 2026/11/14 这 30 天内被下载 4,939 次,日均约 165 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@funnelsgrove/sdk 还在维护吗?

最新版本 0.4.0 发布于 2026/09/17(1 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/09/17。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。