统一回调入口是 `/api/payments/callback/{provider}`,例如 `alipay`、`wxpay`、`stripe`。
正在准备内容,请稍候。
正在切换页面...
网络较慢时会保留当前状态,直到新页面准备完成。
这页按接入顺序说明回调怎么配、怎么验、哪些状态算成功,以及重复通知怎么处理。
统一回调入口是 `/api/payments/callback/[provider]`。第三方通知先打到这里,再由服务端决定是否更新订单状态。
统一回调入口是 `/api/payments/callback/{provider}`,例如 `alipay`、`wxpay`、`stripe`。
只有通过 token 或签名校验的回调才会继续处理;非法 JSON 或缺少订单号会直接返回 400。
当前默认接受 `SUCCESS`、`PAID`、`TRADE_SUCCESS` 三类状态,其他状态只确认收到,不执行充值入账。
{
"orderNo": "PO202604060001",
"thirdPartyOrderNo": "202604060900001234",
"status": "SUCCESS"
}生产环境至少启用一种校验方式。签名更稳,令牌更适合测试或过渡期。
curl -X POST "https://api.ciyuan.com/api/payments/callback/alipay" \
-H "Content-Type: application/json" \
-H "x-tokenai-callback-token: $PAYMENT_CALLBACK_TOKEN" \
-d '{
"orderNo": "PO202604060001",
"thirdPartyOrderNo": "202604060900001234",
"status": "SUCCESS"
}'BODY='{"orderNo":"PO202604060001","thirdPartyOrderNo":"202604060900001234","status":"SUCCESS"}'
TIMESTAMP=$(date +%s%3N)
SIGNATURE=$(printf '%s' "alipay.${TIMESTAMP}.${BODY}" | openssl dgst -sha256 -hmac "$PAYMENT_CALLBACK_SIGNING_SECRET" -binary | xxd -p -c 256)
curl -X POST "https://api.ciyuan.com/api/payments/callback/alipay" \
-H "Content-Type: application/json" \
-H "x-tokenai-timestamp: ${TIMESTAMP}" \
-H "x-tokenai-signature: ${SIGNATURE}" \
-d "${BODY}"PAYMENT_NOTIFY_BASE_URL="https://api.ciyuan.com" PAYMENT_CALLBACK_TOKEN="replace-with-a-callback-secret" PAYMENT_CALLBACK_SIGNING_SECRET="" PAYMENT_CALLBACK_MAX_AGE_SECONDS="300"
当前默认把 `SUCCESS`、`PAID`、`TRADE_SUCCESS` 视为成功状态,其他状态只确认收到,不触发入账。
到账逻辑会先检查订单状态,再在同一个事务里更新订单、余额和流水,避免重复回调导致重复入账。