本指南将详细说明如何为AI男友项目设置Creem支付的Webhook URL,特别针对没有自己域名的开发者。
Webhook URL是一个HTTP接口地址,当用户完成支付后,Creem会自动向这个地址发送支付结果通知,包括:
- ✅ 支付成功/失败状态
- 💰 支付金额和商品信息
- 👤 用户身份信息
- 📄 支付详细数据
ngrok可以将你本地的服务器暴露到公网,提供临时的公网域名。
# 方法1:通过npm安装(推荐)
npm install -g ngrok
# 方法2:下载官方客户端
# 访问 https://ngrok.com/download 下载# 方法1:使用集成启动脚本(推荐)
npm run start:payment
# 方法2:单独启动机器人,webhook会自动启动
npm start
# 默认webhook端口是3001打开新的终端窗口:
# 暴露3001端口到公网
ngrok http 3001你会看到类似这样的输出:
ngrok by @inconshreveable
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.3.40
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding https://abcd1234.ngrok.io -> http://localhost:3001
Forwarding http://abcd1234.ngrok.io -> http://localhost:3001
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
从上面的输出中,你的Webhook URL就是:
https://abcd1234.ngrok.io/webhook/creem
# 安装localtunnel
npm install -g localtunnel
# 启动隧道
lt --port 3001 --subdomain my-aiboyfriend-webhook
# 你的webhook URL将是:
# https://my-aiboyfriend-webhook.loca.lt/webhook/creem- 访问 railway.app
- 连接你的GitHub仓库
- 自动部署并获得免费域名
- 访问 render.com
- 部署你的应用
- 获得免费的
onrender.com子域名
访问 Creem商户后台
通常在:设置 → API设置 → Webhooks 或类似菜单
- URL:
https://你的域名/webhook/creem - 事件类型: 选择支付相关事件
checkout.completed(支付成功)checkout.failed(支付失败)
- 签名密钥: 复制保存到
.env文件
点击"测试Webhook"按钮,确保能收到测试请求
# 确保已配置Creem相关环境变量
cp env.example .env
# 编辑.env文件,填入你的Creem配置# 终端1:启动AI男友机器人(包含webhook服务器)
npm run start:payment# 终端2:启动ngrok
ngrok http 3001- 复制ngrok提供的HTTPS URL
- 在Creem后台设置webhook为:
https://你的ngrok域名.ngrok.io/webhook/creem
- 在Discord中使用
/recharge命令 - 点击充值按钮进行测试支付
- 观察终端日志,确认收到webhook通知
访问 http://127.0.0.1:4040 可以看到ngrok的Web界面,显示所有HTTP请求。
# 使用curl测试webhook是否可达
curl -X POST https://你的ngrok域名.ngrok.io/webhook/creem \
-H "Content-Type: application/json" \
-d '{"test": "data"}'# 检查本地webhook服务器
curl http://localhost:3001/health- ✅ 每月40,000个请求(足够测试)
- ✅ 1个在线隧道
- ❌ 每次重启域名会变化
- ❌ 隧道会在8小时后断开
对于正式运营,建议:
- 购买域名和VPS服务器
- 使用HTTPS证书
- 配置防火墙和安全措施
# Creem配置
CREEM_API_KEY=sk_test_1234567890abcdef
CREEM_WEBHOOK_SECRET=whsec_1234567890abcdef
# 应用配置(ngrok示例)
APP_URL=https://abcd1234.ngrok.io
WEBHOOK_PORT=3001创建一个自动化脚本来简化开发流程:
#!/bin/bash
# start-with-ngrok.sh
echo "🚀 启动AI男友机器人 + ngrok"
# 检查ngrok是否安装
if ! command -v ngrok &> /dev/null; then
echo "❌ ngrok未安装,正在安装..."
npm install -g ngrok
fi
# 启动机器人(后台运行)
echo "🤖 启动AI男友机器人..."
npm run start:payment &
BOT_PID=$!
# 等待服务器启动
sleep 5
# 启动ngrok
echo "🌐 启动ngrok隧道..."
ngrok http 3001 &
NGROK_PID=$!
# 等待ngrok启动
sleep 3
# 获取ngrok URL
echo "📋 获取Webhook URL..."
curl -s http://localhost:4040/api/tunnels | grep -o '"public_url":"https://[^"]*"' | head -1 | sed 's/"public_url":"//g' | sed 's/"//g'
echo "✅ 服务已启动!"
echo "📍 Webhook URL: 请查看上方显示的URL,并添加 /webhook/creem"
echo "🌐 ngrok管理界面: http://127.0.0.1:4040"
# 优雅关闭处理
trap "kill $BOT_PID $NGROK_PID" EXIT
wait使用方法:
chmod +x start-with-ngrok.sh
./start-with-ngrok.sh配置完成后,你就可以在没有自己域名的情况下测试和使用Creem支付功能了! 🎉
如有问题,可以联系:changyu6899@gmail.com