本文档描述了QuickNode Marketplace的插件(Add-on)的配置、更新和取消配置流程。重点介绍了如何使用HTTP基本身份验证保护API,以及在接收到配置、更新或取消配置请求时需要执行的操作,包括验证凭据、存储必要信息以及如何处理错误响应等。此外,还说明了如何处理账户更新和endpoint停用请求,以及如何根据计划变更进行费用计算。
无论你创建何种类型的插件,你都需要理解我们的供应、更新和取消供应流程。对于你来说,了解何时处理请求以及何时返回 429 错误至关重要。在本指南中,我们将深入探讨用于该流程的身份验证机制、每个步骤以及它们与你获得报酬的关系。
如果你不想手动实现 Provisioning API,我们的入门代码仓库提供了使用你偏好的语言实现的完整且可用的 Provisioning API:
以下所有 Provisioning/Update API 都应使用 HTTP 基本身份验证 进行保护。 你将在 Marketplace 加入流程中收到用户名和密码。 你可以在 Marketplace 应用程序上你插件的安全选项卡中找到它:
这些凭据对于你的帐户是唯一的——不要与任何人分享。 你还必须在你的 provisioning、更新和取消置备服务器上针对这些凭据实施身份验证。
🚨 如果你在未验证这些凭据的情况下 provision、更新或取消置备服务,你可能会成为欺诈的受害者,并提供你将不会获得报酬的服务。
考虑到这一点,让我们深入了解每个步骤。
你的 API 必须接受带有如下所示有效负载的 HTTP POST 请求。 我们将在客户成功为你的服务付费后发送此信息:
{
"quicknode-id": "9469f6bfc411b1c23f0f3677bcd22b890a4a755273dc2c0ad38559f7e1eb2700",
"endpoint-id": "2c03e048-5778-4944-b804-0de77df9363a",
"wss-url": "wss://long-late-firefly.quiknode.pro/2f568e4df78544629ce9af64bbe3cef9145895f5/",
"http-url": "https://long-late-firefly.quiknode.pro/2f568e4df78544629ce9af64bbe3cef9145895f5/",
"referers": ["quicknode.com"], // 如果未设置,也可能为空
"contract_addresses": [],
"chain": "ethereum",
"network": "mainnet",
"plan": "your-plan-slug",
}
这应根据 quicknode-id 触发你这边的服务幂等性置备。 我们建议你至少存储此 ID 以及在置备请求中发送的 plan。
如果设置了 referers,你将需要将其作为标头传递给你向客户端点发出的每个请求。 此外,你绝对应该存储所有这些信息。
注意 - 任何在标头中包含 X-QN-TESTING 的传入请求都来自 QuickNode 开发团队或测试工具。
我们希望你的响应具有以下结构:
{
"status": "success", // 或 "error"
"dashboard-url": "http://auth.yoursite.com/access/jwt",
"access-url": "http://api.yoursite.com/some-token-here"
}
我们将使用 access-url 向客户展示他们如何访问该服务(例如,如果它是一个浏览器、graph instance、某种索引、GraphQL API 或 REST API)。 如果你提供 JSON-RPC 方法,则只需将 access-url 作为 null 返回。 我们将使用 dashboard-url 通过 SSO 将客户登录到你的服务。 我们在此处有一份关于 SSO 的指南here。
如果响应为 error,请务必使用非 200 HTTP 状态代码。
如果客户轮换他们的 token、添加或删除 referrer、更新用于交互的批准合约或更改他们的 plan,我们将向你的更新 URL 发送一个 PUT 请求,如下所示:
{
"quicknode-id": "9469f6bfc411b1c23f0f3677bcd22b890a4a755273dc2c0ad38559f7e1eb2700",
"endpoint-id": "2c03e048-5778-4944-b804-0de77df9363a",
"wss-url": "wss://long-late-firefly.quiknode.pro/2f568e4df78544629ce9af64bbe3cef9145895f5/",
"http-url": "https://long-late-firefly.quiknode.pro/2f568e4df78544629ce9af64bbe3cef9145895f5/",
"referers": ["quicknode.com"], // 如果未设置,也可能为空
"contract-addresses": [],
"chain": "ethereum",
"network": "mainnet",
"plan": "new-plan-id"
}
你只需回复:
{
"status": "success" // 或 "error"
}
以及适当的 HTTP 状态代码。
如果更改 plan,所有费用将按比例计算。 例如,如果客户在月初购买了一个 100 美元的 plan,然后在当月 15 日更改为一个 150 美元的 plan,我们将只向客户额外收取 25 美元,因为他们已经被收取了 100 美元。 剩余的 50 美元将按剩余的 15 天按比例计算为 (150 美元 - 100 美元)*(15/30)。
由于一个帐户可以在一个 plan 下有多个端点,我们也会告诉你客户何时关闭一个端点,这样你就不再为该端点提供流量。 发生这种情况时,我们将向你的停用端点 URL 发送一个 DELETE 请求,如下所示:
{
"quicknode-id": "9469f6bfc411b1c23f0f3677bcd22b890a4a755273dc2c0ad38559f7e1eb2700",
"endpoint-id": "2c03e048-5778-4944-b804-0de77df9363a",
"chain": "ethereum",
"network": "mainnet"
}
你只需回复:
{
"status": "success" // 或 "error"
}
以及适当的 HTTP 状态代码。
要获得链和网络的完整列表,请参阅 指南 我们如何为 Marketplace 合作伙伴代理 RPC 请求 的最后一部分。
当客户的付款失败(最后一次)或他们取消服务时,我们将向你的取消置备 URL 发送一个取消置备 DELETE 请求,如下所示:
{
"quicknode-id": "9469f6bfc411b1c23f0f3677bcd22b890a4a755273dc2c0ad38559f7e1eb2700",
}
当你收到此调用时,你应立即停用具有匹配 quicknode-id
的帐户。
你应该回复:
{
"status": "success" // 或 "error"
}
以及适当的 HTTP 状态代码。
这些步骤和信息对于顺利和安全地集成到 QuickNode Marketplace 至关重要。 我们提供了一些工具来简化与我们合作伙伴的安全集成开发,但我们很乐意回答你可能有的任何其他问题!
我们 ❤️ 反馈! 如果你对此指南有任何反馈或问题,请在此处告诉我们! 我们很乐意倾听你的意见!
- 原文链接: quicknode.com/guides/mar...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!