1

从 commercetools 通过产品密钥获取产品详细信息时,我得到的响应没有Channel KeychannelId而是我得到一个随机 UUID (我相信参考 id)

final ProductProjectionByKeyGet productProjectionByKeyGet =
                ProductProjectionByKeyGet.of(productKey, ProductProjectionType.CURRENT)
                        .withExpansionPaths(product -> product.allVariants()
                                .attributes().valueSet());
        return clientManager.getClientForProjectKey(ctAdapterProperties, projectKey)
                .execute(productProjectionByKeyGet).toCompletableFuture().get();

在获取产品详细信息后的响应中,如果我们查看属性prices[].channel.id,它的值是 UUID,但在 commercetools 中,我将通道键作为字符串,如:<store>-<online>

prices={PriceDraftDsl[
    channel=Reference{
        typeId='channel', 
        id='b5c57a89-4f18-41eb-b5c3-e0de1c09cf81', 
        obj=null},
        country=<null>,
        custom=<null>,
        customerGroup=<null>,
        tiers=<null>,
        validFrom=<null>,
        validUntil=<null>,
        value=USD 12]}

当我尝试使用上述价格进行 ProductSync 时,出现以下错误异常。

ReferenceResolutionException: Failed to resolve 'channel'
reference on PriceDraft with country:'null' and value: 'USD 12'. 
Reason: Channel with key 'b5c57a89-4f18-41eb-b5c3-e0de1c09cf81' 
does not exist.

有什么方法可以获取频道的密钥而不是频道 ID 的随机 UUID?如果没有,我可以使用此 ID 获取频道详细信息吗?


我目前正在使用1.7.0包的版本commercetools-sync-java
我对此很陌生。对此的任何帮助深表感谢。提前致谢!

4

1 回答 1

1

不幸的是,产品价格不包含渠道密钥,仅包含渠道 ID。同步 java 库确实提供了通道密钥解析,因此它希望您的价格草案将包含密钥。

https://github.com/commercetools/commercetools-sync-java/blob/master/docs/usage/PRODUCT_SYNC.md#syncing-from-an-external-resource

这有帮助吗?

最好的问候布赖恩

您也可以考虑使用 Import API

https://docs.commercetools.com/tutorials/import-and-export#import-api

于 2021-05-31T11:15:41.710 回答