如何通过 SEP-7 链接在 Stellar 上接受 USDC

使用 Cosmos Pay 时,Stellar 上的支付链接就是一个 SEP-7 请求:客户扫描其二维码,或在 Freighter、LOBSTR、xBull 等钱包中打开它,并在钱包中确认这笔 USDC 支付。USDC 直接进入您的 Stellar 账户,Cosmos Pay 通过链接的 memo 找到这笔付款后,即将该链接标记为已支付。您的账户必须已建立 USDC 信任线,才能接收 USDC。

SEP-7 链接包含什么

SEP-7 是 Stellar 的支付请求标准:一个 web+stellar:pay 链接或其二维码,包含您的地址、金额、资产及其发行方,以及一个数字 memo。

Cosmos Pay 会为每个链接生成一个 memo,并在您账户收到的付款中查找它。只有同时满足以下条件的付款才会被接受:带有该 memo、付到您的地址、使用链接指定的资产、在链接创建之后发出,且在链接设定了金额时与该金额完全一致。

准备您的账户

  • 您的 Stellar 账户必须已在网络上存在,并已建立 USDC 信任线,才能接收 USDC。添加账户时 Cosmos Pay 不会检查这一点;向没有该信任线的账户付款,会在客户签名后失败。
  • 在控制台中将该账户添加到您的组织,并签署控制台请求签署的内容,以证明该账户属于您。
  • 测试时,在 Testnet 上执行同样的操作。Testnet 的水龙头 Friendbot 可以向账户发送测试 XLM,链接在那里也可以用 XLM 收款。

您的客户需要什么

  • 一个能打开 SEP-7 链接的 Stellar 钱包(例如 Cosmos Pay Wallet、Freighter、LOBSTR、xBull、Albedo 或 Rabet),其中持有 USDC 以及少量用于支付网络费的 XLM。无需 Cosmos Pay 账户。
  • 一笔直接的 USDC 付款。如果钱包在途中将其他资产兑换成 USDC(即路径支付,path payment),这笔付款无法完成该链接的支付。
  • 在 Testnet 上,付款前须先将钱包切换到 Testnet:链接不注明网络,遵循 SEP-7 的钱包因此会默认使用主网。

在 Stellar 上接受您的第一笔 USDC 支付

  1. 切换到沙箱

    登录控制台,在顶部选择“沙箱”。在那里创建的链接运行在 Stellar Testnet 上,不涉及真实资金。

  2. 添加您的 Stellar 账户

    确认该账户已存在并已建立 USDC 信任线,然后在组织设置中添加它,并签署控制台请求签署的内容。

  3. 创建链接

    在“支付”中选择“创建支付链接”,选择 Stellar、金额(也可不填)和 USDC,然后选择您的账户,如有需要再添加一条消息。

  4. 用钱包付款

    打开收银台页面,用已切换到同一网络的 Stellar 钱包扫描其二维码,或在同一设备上打开链接。确认支付后,Cosmos Pay 找到这笔付款,收银台即变为“已支付”。

  5. 在服务器上确认

    在控制台中添加 Webhook 端点。支付获得确认后,Cosmos Pay 会发送使用 HMAC-SHA256 签名的 PAYMENT_INTENT_SUCCEEDED。请在收到该事件时交付订单。

  6. 切换到生产环境

    选择“生产环境”,并创建生产 API 密钥(以 prod_ 开头)。链接现在运行在 Stellar 主网上,那里预设的是 Circle 发行的 USDC。

从服务器创建链接

调用 POST /v1/payment-intents/pay,以您的账户作为目标地址并填写金额;收取 USDC 时,填写资产代码及其发行方。也可以使用 TypeScript SDK 中的 client.paymentIntents.createPay:chain 默认为 Stellar。响应中包含链接(其 uri 以 web+stellar:pay 开头)及其二维码。

如果您知道客户的账户,交易意图(POST /v1/payment-intents/tx,或 SDK 中的 createTx)会改为返回一笔未签名的交易,供客户签署。该交易必须在五分钟内签署。

如果您自行设置 memo,请只将它用于一笔支付:同一 memo 搭配不同条件会被拒绝。

须知

  • 您可以不填金额,由客户自行决定。一条最多 300 个字符的消息会显示在客户的钱包中。
  • 如果在支付上加收您自己的费用,收银台会请客户提供其账户,并构建一笔同时向您和您的收费钱包付款的交易。
  • 在控制台中,待处理的 Stellar 链接提供一项核查,可凭交易哈希完成该链接的支付。
  • 链接过期后才到达的付款,可将其交易哈希发送到 POST /v1/payment-intents/:id/validate 来完成该链接的支付。
  • Stellar 网络费由客户的钱包以 XLM 支付。隐私支付会在链上隐藏金额,它在 Stellar 上以 XLM 运行,目前仅限 Testnet。

常见问题 与解答。

按网络查看支付:Stellar 支付Solana 支付Monad 支付

为什么向我的账户付款失败了?

最常见的原因是收款账户缺少 USDC 信任线。请添加信任线,然后创建新的链接并重新发送。

哪些钱包可以支付 SEP-7 链接?

任何能打开 SEP-7 链接的 Stellar 钱包,例如 Cosmos Pay Wallet、Freighter、LOBSTR、xBull、Albedo 或 Rabet。

客户可以用 XLM 支付 USDC 链接吗?

不可以。只有直接的 USDC 付款才能完成该链接的支付:在途中将 XLM 兑换成 USDC 的付款不行。

可以不用真实资金测试吗?

可以。在沙箱中并使用测试密钥(dv_)时,链接运行在 Stellar Testnet 上,USDC 在那里有预设,Friendbot 也会发送测试 XLM。

立即开始接受 稳定币支付。

创建免费账户,生成测试密钥,今天就发出您的第一个支付链接。

联系我们

关于套餐、集成或受保护付款的问题:告诉我们,我们会通过邮件回复。

我们仅使用这些信息回复您。