Ping++ · AsyncAPI Specification

Ping Webhooks

Version

View Spec View on GitHub CompanyPaymentsAggregated Payment聚合支付FinTechPayment GatewaySplit SettlementWeChat PayAlipayUnionPayChinaPayoutsAsyncAPIWebhooksEvents

AsyncAPI Specification

ping-webhooks.yml Raw ↑
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