SuperAPI AI 工具集

b2c-hooks

通用与其它

查看项目

更新于 10-16 01:11

技能介绍

用途:B2C Commerce Hooks 是平台扩展点机制,允许通过注册脚本自定义业务逻辑,在 OCAPI/SCAPI 请求或系统事件中被 HookMgr 调用。

主要能力与类型:分为 OCAPI/SCAPI 钩子(扩展 API 资源,含 before、after、modifyResponse)与系统钩子(订单计算、支付、订单号生成等核心逻辑),以及自定义扩展点;同一扩展点可注册多个实现。

使用方式:在 package.json 中通过 hooks 字段引用 hooks.json;在 hooks.json 的 hooks 数组中按 name 与 script 注册;脚本导出与钩子方法名同名的函数。用 dw.system.HookMgr 的 hasHook(extensionPoint) 判断是否存在,callHook(extensionPoint, functionName, args...) 调用;可用 request.custom 在同请求的钩子间传递数据,用 request.isSCAPI() 区分 SCAPI 与 OCAPI。OCAPI/SCAPI 钩子需在 Business Manager 的 Administration > Global Preferences > Feature Switches 中启用 API hook execution。

关键限制:OCAPI/SCAPI 钩子只要返回任意值(包括 Status.OK),就会跳过系统实现及后续钩子,这是常见错误来源;仅在需要终止处理或有意跳过系统实现时返回 Status.ERROR。自定义钩子则始终执行全部注册实现。钩子过多错误会触发熔断(HTTP 503),超时返回 HTTP 504。计算钩子中避免使用事务,beforeGET 中避免慢速外部调用。订单支付推荐使用 Order-PI 授权接缝流程,而非默认在 dw.ocapi.shop.order.afterPOST 中授权;确定失败可用 POST /orders/{orderNo}/actions/fail?reopenBasket=true 并带 payment_auth_failure,不确定结果应保留 CREATED 订单以便对账。