管理员如何更新Salesforce Commerce Cloud发货订单的自定义字段?求可用API
更新Salesforce Commerce Cloud发货单自定义字段的方法与可用API
一、手动更新(适用于少量发货单)
- 登录SFCC Business Manager,进入订单管理模块
- 定位目标订单,进入详情页后切换到发货单标签页
- 找到对应发货单,点击编辑按钮
- 在自定义字段区域直接修改值,保存即可
二、API批量更新(适用于大量发货单)
SFCC提供两种核心API方案处理批量更新需求:
1. OCAPI(Open Commerce API)- 订单管理端点
通过OCAPI的订单管理接口可直接更新发货单自定义属性,核心端点:PATCH /orders/{order_no}/shipments/{shipment_id}
请求示例(JSON格式):
{ "custom": { "your_custom_field_name": "new_target_value", "another_custom_field": "updated_content" } }
- 权限配置:需在OCAPI设置中为API客户端开启
orders.shipments.patch的访问权限 - 批量处理流程:先调用
GET /orders获取所有订单列表,再遍历每个订单调用GET /orders/{order_no}/shipments获取对应发货单,最后逐个发起PATCH请求完成更新
2. 服务器端Script API(适合批量作业)
如果需要通过定时任务执行大规模更新,可使用SFCC的SSJS脚本API:
示例代码:
var OrderMgr = require('dw/order/OrderMgr'); var shipmentIterator; // 可添加过滤条件,比如只处理已发货订单 var orderIterator = OrderMgr.queryOrders('status = {0}', 'creationDate desc', 'SHIPPED'); while (orderIterator.hasNext()) { var order = orderIterator.next(); var shipments = order.getShipments(); for (var i = 0; i < shipments.length; i++) { var shipment = shipments[i]; // 更新自定义字段 shipment.custom.your_custom_field = 'batch_updated_value'; // 保存修改 shipment.update(); } } orderIterator.close();
- 执行方式:将代码封装为自定义作业,在Business Manager的作业调度中配置定时执行
- 注意:测试环境验证后再部署到生产,可添加订单状态、时间范围等过滤条件缩小处理范围
三、关键注意事项
- 自定义字段需提前在Business Manager的订单设置 > 自定义属性中完成发货单字段定义
- OCAPI调用需注意速率限制,批量操作时建议控制请求频次
- 生产环境操作前务必备份数据,避免误操作影响业务
内容的提问来源于stack exchange,提问作者Anurag Sharma
相关产品推荐
相关产品推荐

