DCC签名事件

当消费者访问客户网站上的PDP时触发DCC事件。此事件将产品数据发送到Bazaarvoice,由于PDP的代码是公开可见的,因此很容易被复制或拦截。

传统的DCC包含一个事件回调功能,该功能可以触发AWS Bazaarvoice组件,该组件向PDP发送信号。回调事件和产品数据到达Bazaarvoice后,AWS组件验证接收到的数据是否与PDP数据匹配。由于IP阻塞、超时或重定向阻止数据验证步骤的完成,这通常会失败。

然而,DCC签名事件使用JSON Web令牌(JWT)对事件进行数字签名。这个JWT与产品数据一起发送。在配置中,记录一个公钥,用于在Bazaarvoice服务器上验证此数据。这消除了对回调的需要,并减少了目录中产品更新失败的可能性。

先决条件

联系Bazaarvoice客户服务在尝试使用以下步骤提供产品目录数据之前启用DCC。

设置DCC签名事件

执行以下步骤设置DCC签名事件。

步骤1:生成密钥

在OSX/linux上执行以下命令生成所需的密钥:

ssh-keygen -t rsa -b 2048 -m PEM -f bvdcc。密钥openssl rsa -in bvdcc。bvdcc.key.pub .key. out PEM -out
注意:Bazaarvoice必须使用RSA编码元素才能接受您的代码。

这些命令将生成以下两个文件:

  • bvdcc.key-客户端的私钥。这应该只用于对客户端服务器上的事件进行签名。
  • 警告:它应该安全地存储,永远不要共享。
  • bvdcc.key.pub—客户端的公钥。这些数据不需要安全地存储。应该在配置中的DCC键设置下添加:

步骤2:实现服务器端数据

建议的方法是:

  1. 修改产品数据javascript,使其在正确的格式大同。
  2. 使用JWT令牌对产品数据进行签名,方法是将以下代码作为使用JWT的事件签名模板节点库
  3. 注意:关键部分是signcataloggupdate函数,它将返回一个字符串数组。
    安装库;保存jsonwebtoken的使用方法;/*资必威投注网源:jsonwebtoken模块:https://www.npmjs.com/package/jsonwebtoken fs模块:https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options JSON。stringify方法:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify */ //SERVER端伪代码//导入所需的模块(jsonwebtoken和fs) const jwt = require('jsonwebtoken');Const fs = require('fs');//将先前生成(并秘密存储)的私钥分配给变量const privateKey = fs。readFileSync('私钥路径在这里');const locale = 'en_US';const产必威手机版本品= [{productId”:“MH02”、“活动”:假的,”productName”:“提顿套衫连帽衫”、“productDescription”:“提顿连帽衫描述”、“productImageURL”:“https: mywebsite.com \ \ \酒店\媒体\目录\产品\ mh02-black_main.jpg”、“productPageURL”:“https: mywebsite.com \ \ \ teton-pullover-hoodie.html”、“名牌”:“MyBrand”、“categoryPath”:[{" id ": " 123 ", "名称":“父类别名称"},{" id ":“123 - 1”、“名称”:"犯罪"},{" id ":“123-1-9”、“名称”:"裤子"}],"upcs":["724742001735","724742006907","077320775406","077320775307"], "manufacturerPartNumbers":["mpn1","mpn2","mpn3","mpn4","mpn5"], "eans":["0724742001735","0724742006907","0077320775406","0077320775307"], "isbns":["9781891830754","9781603090506","9781891830716","9781603090254"], "modelNumbers":["model1","model2","model3","model4"], "family": "F02", "price": "12.99", "currencyCode": "USD", "color": "red", "size": "large", "material": "nylon", "availability":true}, //自定义属性示例"customAttributes": [{"id": "CustomAttributeId123", "value": "自定义属性值1"},{"id": "CustomAttributeId456", "value": "自定义属性值2",}],//将多个产品添加到单个调用示例{"productId": "1_Black", "productName": "蜂鸟印花t恤黑","productPageURL": "http:必威手机版本//dcc-test-site.qa.us-east-1.nexus.bazaarvoice.com/men/1-3-hummingbird-printed-t-shirt-6419892469002.html",},]; //Passes catalog data and privateKey into the token; encoded as RS256 function signCatalogUpdate(products, privateKey) { return products.map(product => jwt.sign({ locale, catalogProducts: [ product ] }, privateKey, { algorithm: 'RS256' })); } //Assigns the returned output from the signCatalogUpdate function to a variable which is then visible on front-end const bvDCC = signCatalogUpdate(products, privateKey); //Outputs DCC product data in a console log, and enters 2 spaces for any NULL values console.log(JSON.stringify(bvDCC, null, 2));
  4. 使用API将签名数据公开给前端javascript。
  5. 将代码作为window.dccSignedTokens暴露给前端。
    注意:要查看代码示例,请访问这个网站 并通过右键单击并选择“Inspect”进入开发人员窗口。

步骤3:实现前端数据

用以下实现之一替换PDP上现有的“cataloggupdate”DCC javascript:

多产品PDP:

使用自定义属性的产品显示页面的JavaScript示例必威手机版本

如果您的产品的属性没有包必威手机版本含在我们的标准DCC数据属性集合中,您仍然可以将它们作为自定义属性添加到您的JavaScript,如下面的示例所示。