最近在调用拼多多的搜索接口时,会得到如下的提示(以下是维易接口返回值示例,错误提示内容是一样的):
{
"error": "50001",
"msg": "sub_code(60001)业务服务错误:未传入已经授权备案过的相关参数(pid/custom_parameters), 授权备案说明链接:https://jinbao.pinduoduo.com/qa-system?questionId=204",
"data": {}
}
这是因为拼多多近期改版要求使用搜索接口必须备案Pid和custom_parameters参数(其中custom_parameters可选),并在调用拼多多的搜索接口时,提供备案的pid和custom_parameters参数对。
必须备案好Pid和custom_parameters,
调用接口时传入这个备案好的2个参数对
在错误提示中,提供了一个链接 https://jinbao.pinduoduo.com/qa-system?questionId=204 可进入查看。所谓的“授权备案”,官方解释是:
什么是授权备案?
授权备案就是把各个业务平台的uid与 多多进宝平台的pid(必填)和custom_parameters(选填)映射关联起来。
举个例子:有个业务平台A,有自己的平台用户B,B的uid 是 1234 (uid可加密,保证业务平台内唯一即可)
简单地说,就是把你的应用的用户uid(可以理解成你的系统会员ID,独一无二值)和你的PID关联起来(识别用户,知道是哪一个用户推广下单的),并把这个uid做为拼多多的参考custom_parameters的值,再组对pid进行备案。
当然,custom_parameters参数可以不提供,假如你只是搜索的话,就完全没必要提供这个参数。
1、使用拼多多官方接口的方式:
如果你自己有拼多多官网接口,可以用如下接口进行授权,
参考网址:
https://jinbao.pinduoduo.com/qa-system?questionId=218
使用pdd.ddk.rp.prom.url.generate或pdd.ddk.goods.promotion.url.generate官方接口授权备案。
2、使用维易接口进行备案:
比如下面要备案的pid是1003257_133231307,必须提供授权的access_token,custom_parameters就不备案:
那么调用维易接口
http://维易接口域名/pdd_generate?access_token=xxxxx&p_id_list=1003257_133231307&custom_parameters=6688
入参:
access_token:必选,提供授权
p_id_list:必选,要备案的pid
custom_parameters:可选,要备案的用户自定义值,格式是数字或字母串或数字字母组合串,如6688
上述接口表示:
把1003257_133231307和6688绑定,注意不要用custom_parameters={"uid":"6688"}格式,否则可能备案成功后,查询备案状态有延迟,仍会查到未绑定。
使用custom_parameters=6688格式绑定时,后续仍可用custom_parameters={"uid":"6688"}来转链
返回值如下:
返回值链接含义:
mobile_url:使用此推广链接,用户安装拼多多APP的情况下会唤起APP,否则唤起H5页面
url:普通推广长链接,唤起H5页面
现在打开url的链接:
https://mobile.yangkeduo.com/duo_coupon_landing.html?__page=auth&pid=1003257_133231307&cpsSign=CC_202231_2003151_132441303_48047214e0e604868b722e85b7b3aa58&duoduo_type=2
登录拼多多,授权,得到如下成功的提示即可。
现在使用维易拼多多搜索接口pdd_goodssearch,加上上面的pid参数(如果你有备案custom_parameters,就应和pid一起传参),就可以成功搜索了,如图:
3、备案查询维易接口:pdd_authquery
http://维易接口域名/pdd_authquery?access_token=xxxxx&pid=1003257_133231307&custom_parameters=xx
入参:
access_token:必选,提供授权
pid:必选,之前做过备案的pid
custom_parameters:可选,之前做过备案的用户自定义值,格式是6688或JSON格式“{"uid":"6688"}”
返回值:bind为1表示成功。
{
"error": "0",
"msg": "绑定备案查询成功",
"bind_status": "已绑定",
"data": {
"bind": "1",
"request_id": "1668831397813"
},
"request_id": "tMVNZcp"
}
1.使用 pid + custom_parameters 标识推手身份(推荐)
举例:若生成授权备案链接时pid参数传了234011_8979633,custom_parameters参数传了{"uid":"123456"}(uid为业务平台的用户id),则生链转链时pid参数必须传234011_8979633,custom_parameters参数可以传 {"uid":"123456","keyA":"valueA","keyB":"valueB"},只需uid和备案时一致即可。
2.只使用 pid 标识推手身份,未使用 custom_parameters 参数
举例:若生成授权备案链接时pid参数传了234011_8979633,则生链转链时pid参数必须传234011_8979633,不可以传入custom_parameters参数。
常见Q&A
Q: 可以只备案一个或若干个账户信息供所有推手使用吗?(重要)
A: 不可以,系统会定期自动监测,若监测到这种情况会对账号进行封禁处理。
Q: 备案时传了custom_parameters,后续生链时想加其他自定义字段怎么处理?
A: 假设授权备案时传的custom_parameters为{"uid":"123456"},生链转链时可以传{"uid":"123456","keyA":"valueA","keyB":"valueB"},只需json里的uid字段的value和备案时传值一样即可,其他字段可以自行添加。
Q: 备案时custom_parameters参数未传json格式,后续生链转链时想加自定义字段怎么处理?
A: 假设授权备案时传的custom_parameters为123456,生链转链时可以传{"uid":"123456","keyA":"valueA","keyB":"valueB"},只需json里的uid字段的value和备案时传值一样即可,其他字段可以自行添加。
Q: 备案时custom_parameters传的是字符串,并且同一个推手每次请求都不相同怎么处理?
A: 这种无法正常授权备案,需改造成{"uid":"业务平台的用户id","keyA":"valueA","keyB":"valueB"}这种形式。
Q: 同一个推手使用了多个pid怎么处理?
A: 不建议一个推手使用多个pid,若有区分推手行为的需求,建议使用custom_parameters传{"uid":"业务平台的用户id","keyA":"valueA","keyB":"valueB"},通过keyA、keyB来标识处理。否则若同一个推手使用了多个pid,则需为每个pid授权备案一次,影响用户体验。