Giới thiệu
Thực thi các chức năng serverless và công việc nền tự động khi xảy ra các sự kiện thanh toán. Xử lý thanh toán, gửi thông báo, cập nhật cơ sở dữ liệu và chạy các quy trình phức tạp với nền tảng thực thi chức năng đáng tin cậy của Inngest.
Tích hợp này yêu cầu URL webhook Inngest của bạn từ cấu hình hàm.
Bắt đầu
Open the Webhook Section
Trong bảng điều khiển Dodo Payments của bạn, điều hướng đến Webhooks → + Add Endpoint và mở rộng menu thả xuống tích hợp.
Select Inngest
Chọn thẻ tích hợp Inngest .
Create Inngest Function
Trong Inngest, tạo một hàm mới và sao chép URL webhook từ cấu hình hàm.
Paste Webhook URL
Dán URL webhook Inngest vào cấu hình điểm cuối.
Configure Transformation
Chỉnh sửa mã chuyển đổi để định dạng sự kiện phù hợp với hàm Inngest của bạn.
Test & Create
Kiểm tra với các payload mẫu và nhấp Create để kích hoạt tích hợp.
Done!
🎉 Các sự kiện thanh toán giờ sẽ tự động kích hoạt các hàm Inngest của bạn.
Ví dụ Mã Biến đổi
Payload Sự kiện Cơ bản
function handler ( webhook ) {
if ( webhook . eventType === "payment.succeeded" ) {
const p = webhook . payload . data ;
webhook . payload = {
name: "payment.succeeded" ,
data: {
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"
},
user: {
email: p . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
}
return webhook ;
}
See all 21 lines
Bộ xử lý Sự kiện Đăng ký
function handler ( webhook ) {
const s = webhook . payload . data ;
switch ( webhook . eventType ) {
case "subscription.active" :
webhook . payload = {
name: "subscription.started" ,
data: {
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
},
user: {
email: s . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
break ;
case "subscription.cancelled" :
webhook . payload = {
name: "subscription.cancelled" ,
data: {
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
},
user: {
email: s . customer . email
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
break ;
}
return webhook ;
}
See all 39 lines
Bộ xử lý Sự kiện Tranh chấp
function handler ( webhook ) {
if ( webhook . eventType . startsWith ( "dispute." )) {
const d = webhook . payload . data ;
webhook . payload = {
name: webhook . eventType ,
data: {
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"
},
user: {
email: d . customer ?. email || "unknown"
},
ts: Math . floor ( new Date ( webhook . payload . timestamp ). getTime () / 1000 )
};
}
return webhook ;
}
See all 22 lines
Các Trường hợp Sử dụng Inngest Thông thường
Gửi email xác nhận
Cập nhật hồ sơ khách hàng
Xử lý hoàn tiền
Tạo hóa đơn
Cập nhật tồn kho
Chào đón người đăng ký mới
Xử lý hủy đăng ký
Gửi nhắc nhở gia hạn
Cập nhật chu kỳ thanh toán
Xử lý thanh toán thất bại
Cập nhật số liệu doanh thu
Theo dõi hành vi khách hàng
Tạo báo cáo
Đồng bộ dữ liệu lên các nền tảng analytics
Tính toán tỷ lệ churn
Mẹo
Sử dụng tên sự kiện mô tả để tổ chức chức năng tốt hơn
Bao gồm ngữ cảnh người dùng cho việc thực thi chức năng
Đặt dấu thời gian chính xác cho việc sắp xếp sự kiện
Cấu trúc dữ liệu nhất quán giữa các sự kiện
Sử dụng các tính năng thử lại và xử lý lỗi của Inngest
Khắc phục sự cố
Xác nhận URL webhook chính xác và đang hoạt động
Kiểm tra hàm Inngest đã được triển khai và đang hoạt động
Đảm bảo tên sự kiện khớp với trình kích hoạt hàm
Xem lại nhật ký hàm Inngest để tìm lỗi
Data not received correctly
Kiểm tra cấu trúc payload phù hợp với mong đợi của Inngest
Xác minh tên sự kiện được định dạng đúng
Đảm bảo bao gồm tất cả trường bắt buộc
Thử nghiệm với công cụ kiểm tra webhook của Inngest