Marketplace合作伙伴的配置工作原理

本文档描述了QuickNode Marketplace的插件(Add-on)的配置、更新和取消配置流程。重点介绍了如何使用HTTP基本身份验证保护API,以及在接收到配置、更新或取消配置请求时需要执行的操作,包括验证凭据、存储必要信息以及如何处理错误响应等。此外,还说明了如何处理账户更新和endpoint停用请求,以及如何根据计划变更进行费用计算。

概述

无论你创建何种类型的插件,你都需要理解我们的供应、更新和取消供应流程。对于你来说,了解何时处理请求以及何时返回 429 错误至关重要。在本指南中,我们将深入探讨用于该流程的身份验证机制、每个步骤以及它们与你获得报酬的关系。

如果你不想手动实现 Provisioning API,我们的入门代码仓库提供了使用你偏好的语言实现的完整且可用的 Provisioning API:

身份验证

以下所有 Provisioning/Update API 都应使用 HTTP 基本身份验证 进行保护。 你将在 Marketplace 加入流程中收到用户名和密码。 你可以在 Marketplace 应用程序上你插件的安全选项卡中找到它:

Add On Security Tab - Marketplace

这些凭据对于你的帐户是唯一的——不要与任何人分享。 你还必须在你的 provisioning、更新和取消置备服务器上针对这些凭据实施身份验证。

🚨 如果你在未验证这些凭据的情况下 provision、更新或取消置备服务,你可能会成为欺诈的受害者,并提供你将不会获得报酬的服务。

考虑到这一点,让我们深入了解每个步骤。

Provisioning

你的 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 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
QuickNode
QuickNode
江湖只有他的大名,没有他的介绍。