订单级事件

这些事件基于支付订单的整体生命周期和状态变化触发。商户应严格依赖这些事件(特别是 pay.transaction)作为发货或放行服务的唯一权威凭证。

🔔 事件类型 (Event Types)

事件标识 (event_identifier)触发时机与业务含义处理建议
pay.transaction订单创建 (Created):当系统成功创建一笔支付订单时触发。此时状态通常为 pending仅用于记录或对账,切勿发货
pay.transaction.update订单更新 (Updated):当订单的状态、确认金额等发生任何变化时触发。🌟 发货凭证:请监听此事件,当 Payload 中的 status 字段变为 completed 时,执行最终的发货/放行逻辑。

📦 Webhook 数据结构样例 (Payload Example)

当事件发生时,DogPay 会向您配置的 Webhook 端点发送 POST 请求。以下为 pay.transaction.update 触发且订单已完成时的完整样例:

{
    "event_id": "997daf9b-4162-4864-914c-960ff6cc16ad",
    "event_identifier": "pay.transaction.update",
    "data": {
        "id": "761ca541-df6e-4273-a3f2-e3df85e5c3b7",
        "idNo": "1940644675780100097",
        "transactionAt": "2025-07-03T05:32:00.796Z",
        "completedAt": "2025-07-04T14:32:17.366Z",
        "payType": "chain_address",
        "payer": null,
        "payChannel": "pay_001",
        "status": "completed",
        "amount": "0.02000000",
        "usdAmount": "0.02000000",
        "usdFeeAmount": "0.01000000",
        "currency": "USDC",
        "transactionId": "817f2df2-3b0e-472f-b40e-20ed4c24761c",
        "accountId": "0721aeda-ed79-4398-887b-77fd225c69f4",
        "fee": "0.01000000",
        "totalAmount": "0.00000000",
        "usdRate": "1.00000000",
        "settleStatus": "unsettled",
        "type": "pay",
        "originPayOrderId": null,
        "callId": "0f38a615-ec28-7866-351f-7fcb78862b7n",
        "balanceId": "eb078bf9-82ad-4c00-bf6a-992632b55d21",
        "cursorId": "375638181647749120",
        "successUrl": "[https://api.string.com/url](https://api.string.com/url)",
        "failureUrl": "[https://api.string.com/url](https://api.string.com/url)",
        "extraData": {
            "payType": "WEB",
            "goodsName": "测试_V2"
        },
        "payChannelCurrencyId": "c4dff705-3012-4b91-a4f5-0a4ec8a4982f",
        "waitAmountOnChain": "0",
        "doneAmountOnChain": "0.02",
        "receiveAddress": "0xB0a2821fAa9AD8c08D2764EAF85C414518137620"
    }
}
⚠️

幂等性提示 (Idempotency Note)
请使用 payload 中的 event_id 或订单的 idNo 作为防重凭证。在处理发货逻辑前,务必先查询您数据库中该订单是否已处于“已处理”状态,以防网络重试导致重复发货。