前言:
最近做了个【易省多】,内容主要是推广第三方商城商品,依托于国内各大知名平台,如拼多多、京东、苏宁、唯品会、美团等,提供收集海量隐藏优惠券,有些商品的优惠券额度还是很大的。
内容:
拼多多升级了API接口,为提升各个渠道搜索、推荐场景的个性化效果,多多进宝官方将针对api接口进行升级,需要渠道对如下接口进行备案,未进行上述调整的渠道可能会出现用户搜索、推荐报错(错误码sub_code:60001)。当然,因为没有使用到custom_parameters来标记用户进行跟单,所以易省多小程序里的拼多多不需要授权。
如果没有使用到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,则用户在访问商品详情页前需进行备案,备案成功后即可正常跳转到商品详情页
缺点:次备案方式不支持在微信小程序里接入
由于做的是微信小程序,因此本文只讨论第一种备案方式。
接口文档:https://jinbao.pinduoduo.com/third-party/api-detail?apiName=pdd.ddk.rp.prom.url.generate
联盟官方很友好的为我们准备了SDK,因此只需要引入SDK,写少量的代码便可实现。
备案前需调用接口查询是否备案,防止重复备案,接口文档:https://jinbao.pinduoduo.com/third-party/api-detail?apiName=pdd.ddk.member.authority.query
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);
}
}
返回结果
前端解析获取字段app_id和page_path,即可跳转拼多多授权,授权完成即备案成功。
山水有相逢,来日皆可期,谢谢阅读,我们再会
我手中的金箍棒,上能通天,下能探海