用途:该技能面向 Tikkie(ABN AMRO 的收款请求产品)API v2(2.3.x)的通知订阅与 Webhook 处理,帮助搭建支付请求、退款与交易包(BUNDLE)通知的接收端。生产环境基址为 https://api.abnamro.com/v2/tikkie,沙箱为 https://api-sandbox.abnamro.com/v2/tikkie。每次 API 调用需带 API-Key 头(ABN AMRO 开发者门户应用的 consumer key)与 X-App-Token 头(Tikkie Business Portal 的 UUID 应用令牌)。不覆盖 ABN AMRO 独立的 Business Account Notification API 与已退役的 Tikkie v1。
主要能力:按 notificationType 字段分发三类通知——PAYMENT 与 REFUND 订阅 /paymentrequestssubscription,BUNDLE 订阅 /transactionssubscription。通知体仅含 subscriptionId 与令牌(paymentRequestToken、paymentToken、refundToken、bundleId),不含金额、状态、时间戳或 id。
验证与安全:Tikkie 通知没有签名、共享密钥、HMAC、时间戳头或非对称签名,官方也未发布源 IP 白名单,因此不要编写 HMAC 校验器。可用缓解措施:校验 subscriptionId 是否等于订阅时返回的 id;用令牌回查真实记录(PAYMENT 用 GET /paymentrequests/{paymentRequestToken}/payments/{paymentToken},REFUND 追加 /refunds/{refundToken},BUNDLE 用 GET /transactionbundles/{bundleId}),404 视为伪造;也可使用难以猜测的回调 URL。金额与状态一律取自回查结果。
投递与重试:HTTP POST,Content-Type: application/json,返回任意 2XX。官方为尽力投递,最多重试三次,并建议不要仅依赖通知、应实现 GET 对账轮询。重试可能重复投递,需按 paymentToken、refundToken 或 bundleId 去重以保证幂等。
环境变量:TIKKIE_SUBSCRIPTION_ID、TIKKIE_API_KEY、TIKKIE_APP_TOKEN、TIKKIE_API_BASE_URL。未设置订阅 ID 时示例会警告并跳过校验,未设置凭据时跳过回查,生产环境不应在跳过校验的情况下履约。
本地开发:npx hookdeck-cli listen 3000 tikkie --path /webhooks/tikkie,无需账号,将打印的 URL 注册到 POST /paymentrequestssubscription。Hookdeck 的 TIKKIE 源类型仅支持 POST 且无验证步骤。示例见 examples/express/、examples/nextjs/、examples/fastapi/,参考文档见 references/overview.md、setup.md、verification.md。生成文件建议注明来源注释。