所有文章 > 如何集成API > WEB3钱包如何为支付网关提供商实现 USDC 支付
WEB3钱包如何为支付网关提供商实现 USDC 支付

WEB3钱包如何为支付网关提供商实现 USDC 支付

对于支付网关提供商来说,设置链上结账体验可能很困难。他们不仅必须管理用于交易和数据管理的区块链节点基础设施的复杂性,还必须确保用户体验简单、快速和轻松。

但是,借助 Circle 的可编程钱包,商家可以快速将 USDC 支付添加到他们的支付网关中。通过将可编程钱包与 Avalanche 或 Solana 等快速、高效的区块链相结合,商家可以提供与传统卡支付相媲美的简化、高效和用户友好的体验。

让我们看看如何构建这个解决方案。

使用可编程钱包启用 USDC 支付

我们将使用 Circle 的可编程钱包、API 和 Gas Station 构建我们的 USDC 支付解决方案。我们将创建一个金库钱包来接收付款,然后将资金转移到商家钱包,以便更永久地存放我们的商家总资金。

  • 首先,我们将使用 Programmable Wallets 来创建我们的钱包。在本教程中,我们将使用开发人员控制的钱包,它使开发人员能够控制钱包的密钥以管理资金。这允许支付提供商代表商家促进区块链交易,而无需担心私钥管理。
  • 接下来,我们将使用服务器端 Node.js SDK 调用 API。此 SDK 抽象出区块链(例如 Polygon PoS 和 Solana)之间的任何差异,从而允许您以与区块链无关的方式构建交易流。
  • 然后,我们将使用 Gas Station 功能,这样我们就不必担心在将资金从我们的金库钱包转移到我们的商家钱包时,管理付款管理员费用支付者来赞助交易费用(称为 gas)的复杂性。

第 1 步:设置开发人员控制的钱包

让我们先创建一个金库钱包,我们将在其中接收付款。在此示例中,我们将它在 Solana 上创建为开发人员控制的钱包。

为此,我们需要一个 wallet set。顾名思义,这是一组由相同的加密私钥控制的钱包。使用服务器端 SDK 通过以下脚本创建钱包集:

const { initiateDeveloperControlledWalletsClient } = require('@circle-fin/developer-controlled-wallets');
const sdk = initiateDeveloperControlledWalletsClient({
apiKey: '',
entitySecret: ''
});

const main = async () => {
const response = await sdk.createWalletSet({
name: 'Solana WalletSet'
});

console.log(response["data"])
}

main()

这将生成一个包含我们的 Wallet Set ID 的响应:

walletSet: {
id: '01904ab2-df1e-7218-b722-f779f0dfa711',
custodyType: 'DEVELOPER',
name: 'Solana WalletSet',
updateDate: '2024-06-24T14:42:34Z',
createDate: '2024-06-24T14:42:34Z'
}

现在让我们创建我们的金库钱包。我们将传入:

  • 我们新创建的 walletSetId
  • Solana (SOL_DEVNET) 作为区块链
  • EOA 作为账户类型
const { initiateDeveloperControlledWalletsClient } = require('@circle-fin/developer-controlled-wallets');
const sdk = initiateDeveloperControlledWalletsClient({
apiKey: '',
entitySecret: ''
});

const main = async () => {
const response = await sdk.createWallets({
accountType: 'EOA',
blockchains: ['SOL-DEVNET'],
count: 1,
walletSetId: ''
});

console.log(response["data"])
}

main();

请注意,您始终可以使用 Circle 控制台查看您的钱包和交易历史记录:

image1-8 月 22-2024-05-39-43-5821-PM

第 2 步:准备接受付款

让我们准备好接受客户的 USDC 付款到我们的金库钱包中。

首先,我们需要知道我们的金库钱包地址,以便提供给客户进行支付。此地址与钱包 ID 不同。您可以直接从 Console 获取钱包地址列表,也可以使用以下脚本获取钱包地址:

// Import and configure the developer-controlled wallet SDK
const { initiateDeveloperControlledWalletsClient } = require('@circle-fin/developer-controlled-wallets');
const sdk = initiateDeveloperControlledWalletsClient({
apiKey: '',
entitySecret: ''
});

const response = await sdk.getWallet({id: '223d9a78-ca33-4cbd-ab83-8f083e3c045b'});

第 3 步:接受付款

现在我们等待用户的 USDC 付款。我们可以使用以下脚本查询商家钱包的代币余额,以检查是否已付款:

const response = await circleDeveloperSdk.getWalletTokenBalance({
id: ''
});

注意: 为了更好地管理付款,您可以将交易会话信息存储在数据库中,并包含付款意向和其他相关详细信息。一旦交易记录在区块链上,您就可以使用区块浏览器链接或其他交易详细信息来更新数据库记录。这种方法为每个商家钱包提供了全面而详细的交易历史记录。

第 4 步:将资金转入商家账户并使用 Gas Station 赞助 gas 费用

付款完成后,我们不希望 USDC 留在我们的金库钱包(或可能我们数千个金库钱包)中。相反,我们希望将 USDC 路由到单个商家钱包中。

但是,要转移 USDC,我们需要支付 gas 费用(在这种情况下,由于我们使用的是 Solana,因此我们需要以 SOL 支付)。在处理数以千计的交易和钱包时,这可能会很麻烦。因此,我们将使用我们的 Gas Station 功能来简化此操作。

Gas Station 无需获得 SOL 并为每笔交易支付汽油费。相反,您可以使用您选择的货币(例如,USDC 而不是 SOL)单独支付 gas 费用。

Solana 钱包默认支持 Gas Station。使用如下脚本使用 Gas Station 将 USDC 转移到商家钱包:

const response = await circleDeveloperSdk.createTransaction({
walletId: '',
tokenId: '',
destinationAddress: '',
amounts: [''],
fee: {
type: 'level',
config: {
feeLevel: 'MEDIUM'
}
}
});

我们在这里使用了几个参数:

  • walletId – 我们从中转移的源钱包(我们的金库钱包)的 ID
  • tokenId – 将要转移的代币的 ID(在我们的例子中为 USDC 的 ID)
  • destinationAddress – 我们要转移到的钱包的 ID(我们的商家钱包)
  • amount – 要发送的代币数量(在我们的例子中为 USDC)
  • feeLevel – 用于为交易支付 gas 的动态区块链费用水平设置(LOW、MEDIUM 或 HIGH)。这是根据网络流量、验证者供应和交易验证需求计算得出的。可以通过估算费用 API 调用获取每个费用级别的估算值。

关于区块确认的说明

要使区块链认为付款或交易已完成,您必须在交易被接受后等待多个区块确认。这可能会导致付款确认延迟。例如,使用 Ethereum 时,您最多可以等待 3 分钟,以便将交易视为完成。

不过,Solana 是商家支付的绝佳选择。它速度很快,典型的区块确认时间仅为 400 毫秒,确认时间可与银行卡支付相媲美。

如何找到区块链钱包API?

幂简集成是国内领先的API集成管理平台,专注于为开发者提供全面、高效、易用的API集成解决方案。幂简API平台可以通过以下两种方式找到所需API:通过关键词搜索API(例如,输入’区块链钱包‘这类品类词,更容易找到结果)、或者从API Hub分类页进入寻找。

此外,幂简集成博客会编写API入门指南、多语言API对接指南、API测评等维度的文章,让开发者快速使用目标API。

结论

对于希望将 USDC 支付添加到其支付网关的商家服务公司,Circle 的可编程钱包提供了一个全面而强大的解决方案。利用 Solana 的高级处理功能以及独特的 Gas Station 功能,可实现简化、高效和用户友好的支付体验。

此外,Programmable Wallets 使您能够随着对面向未来的支付网关的需求的发展,动态扩展到多资产和多区块链基础设施。

#你可能也喜欢这些API文章!