在支付事件发生时,在风车中执行自定义工作流和脚本。运行数据库操作、发送通知、处理数据,并利用风车强大的工作流引擎自动化复杂的业务逻辑。
此集成需要您工作流配置中的 Windmill webhook URL。
开始使用
Open the Webhook Section
在您的 Dodo Payments 仪表板中,导航到 Webhooks → + 添加端点 并展开集成下拉菜单。 Select Windmill
选择 Windmill 集成卡。
Create Windmill Workflow
在 Windmill 中,创建新的工作流并从触发器配置中复制 webhook URL。
Paste Webhook URL
将 Windmill webhook URL 粘贴到端点配置中。
Configure Transformation
编辑转换代码以为您的 Windmill 工作流格式化事件。
Test & Create
使用示例有效负载进行测试,然后点击 Create 以激活集成。
Done!
🎉 支付事件现在将自动触发您的 Windmill 工作流。
转换代码示例
基本工作流有效负载
function handler(webhook) {
if (webhook.eventType === "payment.succeeded") {
const p = webhook.payload.data;
webhook.payload = {
event_type: webhook.eventType,
payment_id: p.payment_id,
amount: (p.total_amount / 100).toFixed(2),
currency: p.currency || "USD",
customer_email: p.customer.email,
customer_name: p.customer.name,
payment_method: p.payment_method || "unknown",
timestamp: webhook.payload.timestamp,
metadata: {
business_id: p.business_id,
product_id: p.product_id
}
};
}
return webhook;
}
订阅工作流处理程序
function handler(webhook) {
const s = webhook.payload.data;
switch (webhook.eventType) {
case "subscription.active":
webhook.payload = {
event_type: "subscription_started",
subscription_id: s.subscription_id,
customer_email: s.customer.email,
customer_name: s.customer.name,
product_id: s.product_id,
amount: (s.recurring_pre_tax_amount / 100).toFixed(2),
frequency: s.payment_frequency_interval,
next_billing: s.next_billing_date,
customer_id: s.customer.customer_id,
timestamp: webhook.payload.timestamp
};
break;
case "subscription.cancelled":
webhook.payload = {
event_type: "subscription_cancelled",
subscription_id: s.subscription_id,
customer_email: s.customer.email,
cancelled_at: s.cancelled_at,
cancel_at_next_billing: s.cancel_at_next_billing_date,
customer_id: s.customer.customer_id,
timestamp: webhook.payload.timestamp
};
break;
}
return webhook;
}
争议工作流处理程序
function handler(webhook) {
if (webhook.eventType.startsWith("dispute.")) {
const d = webhook.payload.data;
webhook.payload = {
event_type: webhook.eventType,
dispute_id: d.dispute_id,
payment_id: d.payment_id,
amount: (d.amount / 100).toFixed(2),
status: d.dispute_status,
stage: d.dispute_stage,
remarks: d.remarks || "",
urgent: webhook.eventType === "dispute.opened",
business_id: d.business_id,
timestamp: webhook.payload.timestamp
};
}
return webhook;
}
常见的风车用例
- 更新 PostgreSQL/MySQL 中的客户记录
- 向数据仓库记录支付事件
- 同步数据到外部系统
- 更新库存水平
- 跟踪分析指标
- 计算收入指标
- 处理退款和调整
- 管理订阅生命周期
- 生成报告和导出
- 验证支付数据
- 向分析平台发送数据
- 更新 CRM 系统
- 触发电子邮件活动
- 创建日历事件
- 发送短信通知
- 结构化有效负载数据以便于工作流处理
- 包含所有相关的元数据以支持业务逻辑
- 在事件中使用一致的字段命名
- 包含时间戳以便于工作流时序
- 利用风车内置的错误处理
故障排除
- 验证 webhook URL 是否正确且处于活动状态
- 检查 Windmill 工作流是否已发布并处于活动状态
- 确保有效负载结构符合工作流预期
- 查看 Windmill 执行日志以查找错误
- 检查工作流输入参数映射
- 确认数据类型与预期格式匹配
- 使用示例数据测试工作流
- 查看 Windmill 脚本执行日志