README
Pinduoduo
拼多多开放平台非官方 Promise Node 库 Non-official Promise Node library for pinduoduo.com
安装
npm i pinduoduo --save
快速上手
const client_id = '8aa57095eacf449f94fa61e6c761a202'; //这里设置你自己的 client_id
const client_secret = ''; // 这里设置成自己的 client_secret
const Pinduoduo = require('pinduoduo');
const pdd = new Pinduoduo({
client_id,
}, client_secret);
const goods = await pdd.ddk.goods.recommend.get({
offset: 0
});
设计理念
使用 Proxy 对 API 进行了映射,使得以简单的元编程(meta programming)方式支持了全部 API(暂时不覆盖授权部分)。
Pinduoduo 构造函数
class Pinduoduo {
constructor(commonArgs[, client_secret, options]) { }
}
commonArgs - 公共参数
必填项:client_id 对于不需要授权的 API,本类库会自动生成公众请求参数并签名; 需要授权的 API 需要手动传入 access_token
client_secret
请在 open.pinduoduo.com 后台获取 第二个参数也可以是 options,client_secret 作为它的一个键传入。
options 参数
options = {
url: 'https://gw-api.pinduoduo.com/api/router',
getNestedResponse: true
}
类库的使用选项
- url - 请求网关地址,默认为正式环境
https://gw-api.pinduoduo.com/api/router
。注意官方提供的 url 是 http 而非 https 的。如果希望以官方形式,或者希望传入沙箱 url 可修改此配置。 - getNestedResponse - 是否自动解析嵌套的 response
- getBuiltUrl - 是否直接返回构建好的 URL
返回数据的自动解析:getNestedResponse
目的是使拼多多返回数据更简洁易读,仅仅解析第一级 JSON 数据。更深层次的内容不会解析。
- 当响应的 JSON 格式仅只有一个 key 时,自动返回 key 内的值;
- 当响应的 JSON 格式 key 以
_response
结尾时,自动返回此 key 内的值; - 其他情况会抛出 Error,提示
Can't get nested response.
直接返回构建好的 URL:getBuiltUrl
如果希望在客户端直接调用,或者希望使用自己的 http request lib,可以通过此功能直接获取构建好的 url,然后自己通过 post 到此 url 即可调用。 开启此选项时,不要使用 await 调用。返回的不是 Promise 对象,而直接是字符串。
此外需要注意拼多多开放平台的 IP 白名单功能。
API 调用
使用 new 生成变量名为 pdd 的实例后,即可以官方文档中的风格调用,请求参数以 Object 对象传入函数的第一个参数。
示例:pdd.goods.cats.get(商品标准类目接口)
const cats = await pdd.goods.cats.get({
parent_cat_id: 0
})
错误处理
当拼多多返回出错信息时,将会抛出 Error 对象。 Error.name - 错误码 Error.message - 错误描述
try {
const goods = await pdd.ddk.goods.recommend.get({
offset: 0
});
console.log(goods);
} catch (err) {
console.log('#', err.name, err.message);
}
Contributors
Dai Jie daijie@php.net