Ping++ · AsyncAPI Specification
Ping Webhooks
Version
View Spec
View on GitHub
CompanyPaymentsAggregated Payment聚合支付FinTechPayment GatewaySplit SettlementWeChat PayAlipayUnionPayChinaPayoutsAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-20'
method: searched
source: https://docs.pingxx.com/api/Webhooks%20%E5%9B%9E%E8%B0%83%E6%A6%82%E8%BF%B0.html
spec_type: Webhooks
note: >-
Ping++ does not publish an AsyncAPI document. It documents an outbound Webhooks event surface:
events are delivered as HTTP POST with a JSON Event object in the body. This artifact captures
that catalog verbatim from the docs (no AsyncAPI is fabricated).
delivery:
method: POST
content_type: application/json
body: Event object
ack: respond HTTP 2xx to acknowledge; any non-2xx (return 500) triggers retry
retry:
max_attempts: 10
window: ~25 hours
schedule: [5s, 10s, 2min, 5min, 10min, 30min, 1h, 2h, 6h, 15h]
event_object:
fields:
- {name: id, type: string, description: "event id generated by Ping++ (28-char string)"}
- {name: object, value: event}
- {name: livemode, type: boolean, description: whether the event occurred in production}
- {name: created, type: timestamp}
- {name: pending_webhooks, type: int, description: number of not-yet-delivered webhooks}
- {name: type, type: string, description: event type (see event_types)}
- {name: request, type: string, description: "API Request ID; null if not API-triggered"}
- {name: data, type: hash, description: "object bound to the event; previous_attributes present on *.updated events"}
event_types:
- {type: summary.daily.available, description: "previous day (00:00-23:59:59) transaction amount & count summary, fired ~04:00 daily"}
- {type: summary.weekly.available, description: "previous week (Mon-Sun) summary, fired ~04:00 each Monday"}
- {type: summary.monthly.available, description: "previous month summary, fired ~04:00 on the 1st"}
- {type: charge.succeeded, description: "charge succeeded"}
- {type: charge.failed, description: "charge (contract deduction) failed"}
- {type: refund.succeeded, description: "refund succeeded"}
- {type: refund.failed, description: "refund failed"}
- {type: transfer.succeeded, description: "enterprise transfer/payout succeeded"}
- {type: transfer.failed, description: "enterprise transfer/payout failed"}
- {type: batch_transfer.succeeded, description: "batch transfer fully or partially succeeded"}
- {type: batch_transfer.failed, description: "batch transfer fully failed"}
- {type: batch_refund.succeeded, description: "batch refund fully or partially succeeded"}
- {type: red_envelope.sent, description: "red envelope sent"}
- {type: red_envelope.received, description: "red envelope received"}
- {type: customs.succeeded, description: "customs declaration succeeded"}
- {type: order.succeeded, description: "order paid successfully"}
- {type: order.refunded, description: "order refunded successfully"}
- {type: balance.withdrawal.succeeded, description: "withdrawal succeeded"}
- {type: balance.withdrawal.failed, description: "withdrawal failed"}
- {type: batch_withdrawal.succeeded, description: "batch withdrawal succeeded"}
- {type: batch_withdrawal.failed, description: "batch withdrawal fully or partially failed"}
- {type: batch_withdrawal.partially_succeeded, description: "batch withdrawal partially succeeded"}
- {type: batch_withdrawal.canceled, description: "batch withdrawal canceled"}
- {type: royalty_settlement.succeeded, description: "royalty settlement fully succeeded"}
- {type: royalty_settlement.partially_succeeded, description: "royalty settlement partially succeeded"}
- {type: royalty_settlement.failed, description: "royalty settlement fully failed"}
- {type: royalty_settlement.canceled, description: "royalty settlement canceled"}
- {type: recharge.succeeded, description: "recharge succeeded"}
- {type: recharge.refund.succeeded, description: "recharge refund succeeded"}
test_mode_simulation:
param: metadata[pingpp_tc]
values:
"001": simulate duplicate webhook delivery after a successful charge
"002": delay the async webhook by 5 minutes
note: test mode only; does not affect live delivery