讲师中心 微信公众号
AI工具推荐 视频效率加速

Self-hosted Crypto Payment

Polar Sponsor
爱发电 赞助
.NET 9.0

在 Next.js + Supabase 应用中集成自托管加密支付结账,支持 ETH、BTC、SOL、USDC、USDT 及 9 条链的25+ 币种,无需支付处理机构。

自控加密支付

功能概述

自控加密支付是一项面向实际任务的技能,主要用于此技能会做什么;将一个完整的、 生产准备的加密支付系统添加到 Next. js 14+ App 路由器应用程序中, 由 Supabase 支持;

核心要点

  • no strape, no CryptAPI, no paymen。
  • 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
  • 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。

使用与执行

从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。

结果检查与注意事项

执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

自托管加密货币支付

该能力的作用

为任意基于 Supabase 的 Next.js 14+ App Router 应用添加一套完整、开箱即用的生产级加密货币支付系统。无需 Stripe、CryptAPI 或其他第三方支付处理器——您保留每一笔付款的 100% 收益。

支持的链与币种:ETH、Base、Polygon、Arbitrum、Optimism、BNB Chain、Avalanche、Solana、Bitcoin —— 同时支持各链上的 USDC/USDT/DAI 等稳定币。

系统架构:

  1. 用户选择币种 → 服务端基于 HD 钱包派生唯一地址(遵循 BIP44 / BIP84 / SLIP-0010)
  2. 服务端将该地址及预期收款金额写入数据库,并设置 1 小时过期时间
  3. 定时任务每分钟轮询真实区块链,校验余额并确认付款是否到账
  4. 确认到账后,原子化地为用户账户发放积分/升级订阅/启用附加功能

安全模型:助记词(mnemonic)永不触达客户端或源代码;用户无法干预目标地址或金额;付款确认由区块链本身验证,而非易被伪造的 Webhook。

需复制的文件

所有模板文件均位于 resources/ 目录下。请按如下路径将其复制到您的项目中:

资源文件 在您项目中的目标路径
crypto-wallets.ts src/lib/crypto-wallets.ts
crypto-checkout-route.ts src/app/api/billing/crypto-checkout/route.ts
crypto-checkout-status-route.ts src/app/api/billing/crypto-checkout/[id]/status/route.ts
check-crypto-payments-route.ts src/app/api/cron/check-crypto-payments/route.ts
crypto-payment-modal.tsx src/components/dashboard/crypto-payment-modal.tsx
005_crypto_payments.sql supabase/migrations/005_crypto_payments.sql
006_crypto_direct.sql supabase/migrations/006_crypto_direct.sql

安装步骤

1. 安装依赖

npm install ethers @scure/bip32 @scure/bip39 @scure/base @noble/hashes @solana/web3.js qrcode
npm install -D @types/qrcode

2. 执行数据库迁移

在 Supabase SQL 编辑器中(或通过 supabase db push 命令),按顺序执行以下两个迁移文件:

  • 005_crypto_payments.sql
  • 006_crypto_direct.sql

3. 添加环境变量

# 生成助记词:https://iancoleman.io/bip39/(12 或 24 个单词 —— 绝对不可提交至代码库)
CRYPTO_MASTER_MNEMONIC=word1 word2 word3 ... word12

# 用于保护定时任务端点 —— 可通过以下命令生成:
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
CRON_SECRET=your-32-char-hex-string

4. 配置定时任务(cron job)

定时端点 POST /api/cron/check-crypto-payments 必须每 60 秒调用一次。

Vercel Cron(vercel.json):

{
  "crons": [
    {
      "path": "/api/cron/check-crypto-payments",
      "schedule": "* * * * *"
    }
  ]
}

请在 cron 配置或 Vercel 控制台中添加 Authorization 请求头:

Authorization: Bearer 

Fly.io machines / 自托管环境:使用调度任务或外部定时服务(例如 cron-job.org),以 Authorization: Bearer 头部请求该端点。

5. 自定义支付类型

结算路由(checkout route)支持三种支付 type 值,请根据您应用的数据模型进行调整:

类型 作用 必需的请求体字段
credits 向用户档案添加积分 packId
plan 升级用户订阅计划 plan、months(终身订阅可选)
addon 应用一次性资源附加项 addonId、botId(可选)

如何自定义:在 crypto-checkout-route.ts 中,将 CREDIT_PACKS、PLANS 和 validAddons 替换为您自己的常量定义。金额必须始终来源于服务端常量,绝不可来自用户输入。

在 check-crypto-payments-route.ts 中,请更新 applyPayment() 函数,实现您应用在付款确认后所需执行的操作(如增加积分、解锁功能、更新订阅状态等)。

6. 接入支付弹窗组件

import { CryptoPaymentModal } from '@/components/dashboard/crypto-payment-modal'

// 示例:购买积分包
 setModalOpen(false)}
/>

该弹窗组件自动处理币种选择、二维码展示、倒计时以及付款状态轮询。

地址派生原理

每笔支付都会从您的主助记词派生出一个唯一的充值地址:

  • EVM 链(ETH、Base、Polygon 等):m/44'/60'/0'/0/{index} —— 校验和格式的以太坊地址,兼容所有 EVM 兼容链
  • Bitcoin:m/84'/0'/0'/0/{index} —— 原生 SegWit P2WPKH 地址(bc1q...)
  • Solana:m/44'/501'/{index}'/0' —— SLIP-0010 ed25519 格式(与 Phantom/Solflare 钱包一致)

derivation_index 每次支付递增,并持久化存储于数据库中。UNIQUE 约束确保不会有两个活跃支付共享同一地址。

注意事项:一个助记词控制全部收款钱包,请务必安全备份。如需清空资金(sweep funds),可将该助记词导入 MetaMask(EVM)、Phantom(SOL)或符合 BIP84 规范的钱包(BTC),然后派生对应子账户。

需要自定义的内容

内容 所在位置
支持的币种列表 SUPPORTED_COINS,位于 crypto-checkout-route.ts
优先展示的快捷币种 QUICK_PICKS,位于 crypto-payment-modal.tsx
支付有效期(默认 1 小时) expiresAt,位于 crypto-checkout-route.ts
余额容差(默认 0.5%) minRequired,位于 check-crypto-payments-route.ts
支付类型及履约逻辑 applyPayment(),位于 check-crypto-payments-route.ts
速率限制(默认 3 次请求 / 5 分钟) checkRateLimit 调用,位于 crypto-checkout-route.ts

安全说明

  • crypto-wallets.ts 是纯服务端文件 —— 切勿在客户端组件或页面中导入
  • CRYPTO_MASTER_MNEMONIC 绝不可出现在源代码、Git 历史记录或日志中
  • 定时任务端点使用 timingSafeEqual 对比 CRON_SECRET,防止计时攻击
  • 支付金额始终源自服务端常量,用户无法篡改
  • 地址唯一性由数据库层面保障(wallet_type + derivation_index 字段组合建立唯一索引)

故障排查

“CRYPTO_MASTER_MNEMONIC 未设置” —— 环境变量缺失。请将其添加至 .env.local(开发环境)或部署平台的环境变量配置中(生产环境)。

付款未确认到账 —— 请检查定时任务是否正常运行,且请求头 Authorization: Bearer 是否完全匹配。同时查看 Vercel 或服务器日志中以 [check-crypto] 开头的日志行。

“Failed to allocate payment address” —— 极其罕见的并发冲突(已重试 3 次失败)。可安全重试。

EVM 链代币未被识别 —— 请确认该代币在对应链上的合约地址已加入 crypto-wallets.ts 中的 ERC20_CONTRACTS 映射表。可前往 etherscan.io 查询该链上 USDC/USDT 的官方合约地址。

目录

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

相关专题

更多
Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

Playwright 页面操作指南
Playwright 页面操作指南

Playwright页面操作专题汇集元素定位、点击与输入、等待响应、多页面切换、Iframe、事件监听及文件处理的已审核文章,便于按操作场景查阅示例与常见问题。

0

2026.10.21

Playwright 入门教程
Playwright 入门教程

Playwright入门专题汇集测试框架安装、VS Code配置、录制脚本、编写首个用例、运行调试及查看报告的已审核文章,帮助初学者搭建端到端测试流程。

0

2026.10.21

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

0

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

0

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

0

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

0

2026.10.16

Revel框架MVC路由与控制器
Revel框架MVC路由与控制器

本专题聚焦Revel框架MVC核心机制,讲解路由定义、控制器Action、参数绑定、请求响应和反向路由,并结合常见场景梳理接口请求处理流程。

0

2026.10.16

Revel框架入门与安装配置
Revel框架入门与安装配置

本专题从Revel框架环境搭建讲起,系统介绍命令行工具安装、项目创建、目录结构、配置文件及热代码重载,帮助开发者快速完成首个Go Web应用。

0

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn