拼多多联盟使用pid和custom_parameters进行备案

356 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情

前言:

最近做了个【易省多】,内容主要是推广第三方商城商品,依托于国内各大知名平台,如拼多多、京东、苏宁、唯品会、美团等,提供收集海量隐藏优惠券,有些商品的优惠券额度还是很大的。

image.png

内容:

拼多多升级了API接口,为提升各个渠道搜索、推荐场景的个性化效果,多多进宝官方将针对api接口进行升级,需要渠道对如下接口进行备案,未进行上述调整的渠道可能会出现用户搜索、推荐报错(错误码sub_code:60001)。当然,因为没有使用到custom_parameters来标记用户进行跟单,所以易省多小程序里的拼多多不需要授权。

image.png

如果没有使用到custom_parameters来标记用户进行跟单的话,只要对pid进行备案即可,这样可以手动调用备案接口将pid备案一次,之后调用任何接口就写死这个pid就行了。

如果需要用到custom_parameters来标记用户进行跟单,那么pid和custom_parameters,每一组都需要进行备案,备案一次即可无需重复备案。

备案:

官方提供了两种备案接口

①绑定备案接口:

pdd.ddk.rp.prom.url.generate

优点:如果做的是微信小程序,那么就可以用这个接口来备案

缺点:处理麻烦,需要在下单流程外,即进入商品详情页前需独立调用进行备案

②单品生链接口

pdd.ddk.goods.promotion.url.generate

pdd.ddk.oauth.goods.prom.url.generate

优点:不影响下单流程,新增入参generate_authority_url,则用户在访问商品详情页前需进行备案,备案成功后即可正常跳转到商品详情页

缺点:此备案方式不支持在微信小程序里接入。

联盟官方很友好的为我们准备了SDK,因此只需要引入SDK,写少量的代码便可实现。

备案前需调用接口查询是否备案,防止重复备案。

image.png

PddDdkMemberAuthorityQueryRequest param = new PddDdkMemberAuthorityQueryRequest();
  StringBuffer sb = new StringBuffer(thirdPlat.getPDD_PID());
  param.setPid(sb.insert(8,"_").toString());
  Map<String,Object> customParameters = new HashMap<>();
  customParameters.put("uid",userUuid);
  param.setCustomParameters(JSON.toJSONString(customParameters));
  try {
      PddDdkMemberAuthorityQueryResponse response = client.syncInvoke(param);
      String data = JsonUtil.transferToJson(response);
      logger.info("pddAuthorityQuery:{}", data);
      JSONObject jsonObject = JSONObject.parseObject(data);
      if (jsonObject.containsKey("error_response")) {
          JSONObject resObject = jsonObject.getJSONObject("error_response");
          return JsonModel.toFail(resObject);
      } else {
          JSONObject resObject = jsonObject.getJSONObject("authority_query_response");
          return JsonModel.toSuccess(resObject);
      }
  } catch (Exception e) {
      e.printStackTrace();
      return JsonModel.toFail(null);
  }
}

开始备案,调用pdd.ddk.rp.prom.url.generate接口,参数channel_type固定传入10,由于我们是需要跳转拼多多小程序授权的,因此generate_we_app固定传true,传入p_id_list和custom_parameters,代码如下

StringBuffer sb = new StringBuffer(thirdPlat.getPDD_PID());
  List<String> pidList = new ArrayList<>(1);
  pidList.add(sb.insert(8,"_").toString());
  param.setPIdList(pidList);
  param.setChannelType(10);
  param.setGenerateWeApp(true);
  Map<String,Object> customParameters = new HashMap<>();
  customParameters.put("uid",userUuid);
  param.setCustomParameters(JSON.toJSONString(customParameters));
  try {
      PddDdkRpPromUrlGenerateResponse response = client.syncInvoke(param);
      String data = JsonUtil.transferToJson(response);
      logger.info("pddPromUrlGenerate:{}", data);
      JSONObject jsonObject = JSONObject.parseObject(data);
      if (jsonObject.containsKey("error_response")) {
          JSONObject resObject = jsonObject.getJSONObject("error_response");
          return JsonModel.toFail(resObject);
      } else {
          JSONObject resObject = jsonObject.getJSONObject("rp_promotion_url_generate_response");
          return JsonModel.toSuccess(resObject);
      }
  } catch (Exception e) {
      e.printStackTrace();
      return JsonModel.toFail(null);
  }
}

返回结果

image.png

前端解析获取字段app_id和page_path,即可跳转拼多多授权,授权完成即备案成功。

image.png

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海