daShangDao_kfzgw-info/md/pdd.md
2026-01-13 16:21:38 +08:00

502 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# pdd.dll 使用教程
## 1.创建DLL工具实例
### 加载DLL文件
```gotemplate
// PddDLL 拼多多工具DLL结构
type pddDLL struct {
dll *syscall.DLL
pddGoodsOuterCatMappingGet *syscall.Proc // 类目预测
freeCString *syscall.Proc // 释放C字符串
}
// 初始化pddDLL
func InitPddDLL() (*pddDLL, error) {
dllPath := filepath.Join("dll", "pdd.dll")
if _, err := os.Stat(dllPath); os.IsNotExist(err) {
return nil, fmt.Errorf("pdd DLL 不存在: %s", dllPath)
}
if dll, err := syscall.LoadDLL(dllPath); err != nil {
return nil, fmt.Errorf("加载pdd DLL 失败: %s", err)
} else {
return &pddDLL{
dll: dll,
pddGoodsOuterCatMappingGet: dll.MustFindProc("PddGoodsOuterCatMappingGet"),
freeCString: dll.MustFindProc("FreeCString"),
}, nil
}
}
dll, err := InitPddDLL()
```
### 获取C字符串
```gotemplate
// cStr 获取C字符串
func (m *pddDLL) cStr(p uintptr) string {
if p == 0 {
return ""
}
b := []byte{}
for i := uintptr(0); ; i++ {
c := *(*byte)(unsafe.Pointer(p + i))
if c == 0 {
break
}
b = append(b, c)
}
s := string(b)
if m.freeCString != nil {
m.freeCString.Call(p)
}
return s
}
```
## 2. 使用dll函数示例
```gotemplate
// 类目预测
func (m *pddDLL) PddGoodsOuterCatMappingGet(clientId, clientSecret, accessToken,
outerCatId, outerCatName, outerGoodsName string) (string, error) {
proc, err := m.dll.FindProc("PddGoodsOuterCatMappingGet")
if err != nil {
return "", fmt.Errorf("找不到函数 PddGoodsOuterCatMappingGet: %v", err)
}
clientIdPtr, _ := syscall.BytePtrFromString(clientId)
clientSecretPtr, _ := syscall.BytePtrFromString(clientSecret)
accessTokenPtr, _ := syscall.BytePtrFromString(accessToken)
outerCatIdPtr, _ := syscall.BytePtrFromString(outerCatId)
outerCatNamePtr, _ := syscall.BytePtrFromString(outerCatName)
outerGoodsNamePtr, _ := syscall.BytePtrFromString(outerGoodsName)
resultPtr, _, _ := proc.Call(
uintptr(unsafe.Pointer(clientIdPtr)),
uintptr(unsafe.Pointer(clientSecretPtr)),
uintptr(unsafe.Pointer(accessTokenPtr)),
uintptr(unsafe.Pointer(outerCatIdPtr)),
uintptr(unsafe.Pointer(outerCatNamePtr)),
uintptr(unsafe.Pointer(outerGoodsNamePtr)),
)
result := m.cStr(resultPtr)
return result, nil
}
```
# 接口详情
## 1. 类目预测--PddGoodsOuterCatMappingGet
### 请求信息
```gotemplate
dll.PddGoodsOuterCatMappingGet(clientId, clientSecret, accessToken,
outerCatId, outerCatName, outerGoodsName)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| outerCatId | string | 是 | 外部平台类目ID |
| outerCatName | string | 是 | 外部平台类目名称 |
| outerGoodsName | string | 是 | 外部商品名称 |
### 响应示例
```json
{
"outer_cat_mapping_get_response": {
"cat_id2": 16028,
"cat_id3": 16031,
"cat_id1": 15543,
"request_id": "17666480184871649",
"cat_id4": 0
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 2. 快递公司查看--PddLogisticsCompaniesGet
### 请求信息
```gotemplate
dll.PddLogisticsCompaniesGet(clientId, clientSecret)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
### 响应示例
```json
{
"logistics_companies_get_response": {
"logistics_companies": [
{
"available": 1,
"code": "SF",
"id": 1,
"logistics_company": "顺丰速运"
},
{
"available": 1,
"code": "STO",
"id": 2,
"logistics_company": "申通快递"
}
]
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 3. erp打单信息同步--PddErpOrderSync
### 请求信息
```gotemplate
dll.PddErpOrderSync(clientId, clientSecret, accessToken, logisticsId,
orderSn, orderState, waybillNo)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| logisticsId | string | 是 | 物流公司ID |
| orderSn | string | 是 | 拼多多订单号 |
| orderState | string | 是 | 订单状态 |
| waybillNo | string | 是 | 运单号 |
### 响应示例
```json
{
"erp_order_sync_response": {
"is_success": true,
"request_id": "17666480184871650"
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 4. 拼多多订单同步--PddOrderSynchronization
### 请求信息
```gotemplate
dll.PddOrderSynchronization(clientId, clientSecret, accessToken, logisticsCompany, logisticsOnlineSendJson)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| logisticsCompany | string | 是 | 物流公司名称 |
| logisticsOnlineSendJson | string | 是 | 拼多多订单同步json字符串 |
### 响应示例
```json
{
"erp_order_sync_response": {
"is_success": true,
"request_id": "17666480184871651"
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 5. 商品图片上传接口--PddGoodsImgUpload
### 请求信息
```gotemplate
dll.PddGoodsImgUpload(clientId, clientSecret, accessToken, filePath)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| filePath | string | 是 | 图片文件路径 |
### 响应示例
```json
{
"goods_img_upload_response": {
"image_url": "http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg",
"request_id": "17666480184871652"
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 6. 商品新增接口--PddGoodsAdd
### 请求信息
```gotemplate
dll.PddGoodsAdd(clientId, clientSecret, accessToken, goodsAddJson)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| goodsAddJson | string | 是 | 商品信息JSON字符串 |
#### 商品信息JSON结构示例
```json
{
"goods_name": "测试商品",
"goods_desc": "商品描述",
"cat_id": 20111,
"goods_type": 1,
"market_price": 9900,
"is_folt": false,
"is_pre_sale": false,
"is_refundable": true,
"shipment_limit_second": 86400,
"cost_template_id": 10001,
"image_url": "http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg",
"carousel_gallery": [
"http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg"
],
"detail_gallery": [
"http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg"
],
"sku_list": [
{
"out_sku_sn": "SKU001",
"price": 8900,
"quantity": 100,
"spec_id_list": "1001:10001",
"sku_properties": [
{
"ref_pid": 1001,
"value": "红色",
"vid": 10001,
"punit": "个"
}
],
"is_onsale": 1,
"limit_quantity": 10,
"multi_price": 8500,
"thumb_url": "http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg",
"weight": 500
}
]
}
```
### 响应示例
```json
{
"goods_add_response": {
"goods_id": 123456789,
"goods_name": "测试商品",
"goods_sn": "G202501200001",
"request_id": "17666480184871653"
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 7. 联合拼多多图片上传的商品新增--SelfPddGoodsAdd
### 请求信息
```gotemplate
dll.SelfPddGoodsAdd(clientId, clientSecret, accessToken, filePath, goodsAddJson)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| filePath | string | 是 | 图片文件路径 |
| goodsAddJson | string | 是 | 商品信息JSON字符串不需包含image_url|
#### 接口说明
此接口为组合接口,内部执行以下步骤:
1.上传商品主图文件到拼多多服务器
2.获取图片URL并自动填充到商品信息中
3.调用商品新增接口创建商品
#### 商品信息JSON结构示例
```json
{
"goods_name": "测试商品",
"goods_desc": "商品描述",
"cat_id": 20111,
"goods_type": 1,
"market_price": 9900,
"is_folt": false,
"is_pre_sale": false,
"is_refundable": true,
"shipment_limit_second": 86400,
"cost_template_id": 10001,
"image_url": "",
"carousel_gallery": [
"http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg"
],
"detail_gallery": [
"http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg"
],
"sku_list": [
{
"out_sku_sn": "SKU001",
"price": 8900,
"quantity": 100,
"spec_id_list": "1001:10001",
"sku_properties": [
{
"ref_pid": 1001,
"value": "红色",
"vid": 10001,
"punit": "个"
}
],
"is_onsale": 1,
"limit_quantity": 10,
"multi_price": 8500,
"thumb_url": "http://oms-imageimg.pinduoduo.com/upload/2025/01/20/e9a8c1b6e1a84f1d8d7c3a8b9e2f5c7d.jpg",
"weight": 500
}
]
}
```
### 响应示例
```json
{
"goods_add_response": {
"goods_id": 123456790,
"goods_name": "测试商品",
"goods_sn": "G202501200002",
"request_id": "17666480184871654"
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 8. 批量数据解密脱敏接口--PddOpenDecryptMaskBatch
### 请求信息
```gotemplate
dll.PddOpenDecryptMaskBatch(clientId, clientSecret, accessToken, reqJson)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| clientId | string | 是 | 拼多多开放平台ClientID |
| clientSecret | string | 是 | 拼多多开放平台ClientSecret |
| accessToken | string | 是 | 授权令牌 |
| reqJson | string | 是 | 信息JSON字符串 |
#### 信息JSON结构示例
```json
[
{
"data_tag": "251229-272441044622514",
"encrypted_data": "~AgAAAAPlscEH0psOJAEXpTdsLOWvDJ9bB7IEjIoqNfiDhhJR9NHOxsdZ+PEFluSSCngCikoDU+CP/sSXZJ92ic7+PdNlJNLA7g/6VUMDWF6RvjW9IeRN+lKNarsjWDQR~0~"
}
]
```
### 响应示例
```json
{
"open_decrypt_mask_batch_response": {
"data_decrypt_list": [
{
"data_tag": "str",
"data_type": 0,
"decrypted_data": "str",
"encrypted_data": "str",
"error_code": 0,
"error_msg": "str"
}
]
}
}
```
### 错误响应示例
```json
{
"error_response": {
"error_msg": "公共参数错误:type",
"sub_msg": "",
"sub_code": null,
"error_code": 10001,
"request_id": "15440104776643887"
}
}
```
## 12.释放C字符串内存--FreeCString
### 请求信息
```gotemplate
dll.FreeCString(str)
```
### 请求参数
| 参数名 | 类型 | 必填 | 说明 |
|--|--|--|----------|
| str | string | 是 | 需要释放的字符串 |