调用前期准备
安全性提示: app_secret为应用核心密钥,禁止在前端代码中暴露,仅可在服务端调用接口时使用。
- 商户注册:在 拼货邦商户平台 注册登录。
- 创建应用:单应用调用/token接口频率限制为100次/分钟,发布货物接口为500次/分钟,超出返回429错误码。
- 提交公司信息审核,开通api请求权限:72小时内审核。
- 生成app_secret:app_secret 为敏感信息,需加密存储,禁止明文传输。
一、基础信息
| 项目 |
说明 |
| 接口基础域名 |
https://pinhuobang.com/api/v1 |
| 通信协议 |
HTTPS |
| 请求方式 |
POST(部分接口支持GET) |
| 数据格式 |
JSON(请求/返回均为JSON,编码UTF-8) |
| 签名机制 |
HMAC-SHA256(具体加密方式,参考 Data数据加密方式) |
接口概览
| 接口路径 |
接口名称 |
请求方式 |
接口描述 |
/login/getCode |
获取Code换取AccessToken |
POST |
获取Code换取用户AccessToken |
/login/getAccessToken |
获取AccessToken |
POST |
获取AccessToken |
/login/getRefreshToken |
刷新AccessToken |
POST |
AccessToken过期时,用RefreshToken获取新Token |
/base/getBaseTruckSize |
获取车辆尺寸信息 |
POST |
获取车辆尺寸信息 |
/base/getBaseTruckType |
获取车辆类型信息 |
POST |
获取车辆类型信息 |
/base/getBaseXzqh |
获取行政区划信息 |
POST |
获取行政区划信息 |
/pay/pay |
获取发货定金支付信息 |
POST |
获取发货定金支付信息 |
/shipping/addShippingGoods |
添加发货信息 |
POST |
添加发货信息 |
/shipping/deleteShippingGoods |
删除发货信息 |
POST |
删除发货信息 |
/shipping/updateShippingGoods |
更新发货信息 |
POST |
更新发货信息 |
/shipping/getPageShippingGoods |
获取分页发货信息 |
POST |
获取分页发货信息 |
/shipping/getShippingGoods |
获取发货详细信息 |
POST |
获取发货信息详细信息 |
/shipping/getAllShippingGoods |
获取全部发货信息 |
POST |
获取全部发货信息(最多1000条) |
/shipping/exportShippingGoods |
导出全部发货信息 |
POST |
导出全部发货信息(最多连续一年) |
头部参数
请求头参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
备注 |
| Authorization |
是 |
string |
Bearer eyJ0eXAiOiJKV1Qi... |
JWT 生成标准token |
通过code获取 |
| X-Original-Url |
是 |
string |
/api/v1/login/login |
请求地址 |
请求地址,分布式请求地址转发 |
| X-Request-ID |
是 |
string |
013Z5t0w3X8b621n0U2w3F8k23Z5t0w9 |
请求唯一ID |
单次有效,下次请求失效,可以为空,但是必须有键 |
| X-Client-Id |
是 |
string |
phb-app-driver-uniapp |
授权回调地址 |
需与平台配置完全一致 |
| X-Access-Id |
是 |
string |
c3c1349a1185f291f40ae9cb20ea0d01 |
上次请求唯一ID |
上次请求唯一ID(头部返回X-Request-ID) |
| Content-Type |
是 |
string |
application/json |
数据类型 |
固定值,不可修改 |
| X-Requested-With |
是 |
string |
XMLHttpRequest |
数据类型 |
固定值,不可修改 |
返回头参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
备注 |
| Authorization |
是 |
string |
Bearer eyJ0eXAiOiJKV1Qi... |
JWT 生成标准token |
通过code获取 |
| X-Original-Url |
是 |
string |
/api/v1/login/login |
请求地址 |
请求地址,分布式请求地址转发 |
| X-Request-ID |
是 |
string |
013Z5t0w3X8b621n0U2w3F8k23Z5t0w9 |
请求唯一ID |
下次请求 X-Access-Id 字段必须带上 |
二、通过Code换取AccessToken
接口信息
| 项目 |
说明 |
| 接口路径 |
/oauth/access_token |
| 请求方式 |
POST |
| 是否需要授权 |
否 |
| 接口超时时间 |
5秒 |
请求参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
备注 |
| app_id |
是 |
string |
wx1234567890abcdef |
应用唯一标识 |
开放平台创建应用后分配 |
| app_secret |
是 |
string |
1234567890abcdef1234567890abcdef |
应用密钥 |
需妥善保管,禁止暴露给前端 |
| code |
是 |
string |
013Z5t0w3X8b621n0U2w3F8k23Z5t0w9 |
授权码 |
单次有效,有效期5分钟 |
| redirect_uri |
是 |
string |
https://yourdomain.com/callback |
授权回调地址 |
需与平台配置完全一致 |
| grant_type |
是 |
string |
authorization_code |
授权类型 |
固定值,不可修改 |
请求示例(curl)
curl -X POST 'https://api.xxx.com/v1/oauth/access_token' \
-H 'Content-Type: application/json' \
-d '{
"app_id": "wx1234567890abcdef",
"app_secret": "1234567890abcdef1234567890abcdef",
"code": "013Z5t0w3X8b621n0U2w3F8k23Z5t0w9",
"redirect_uri": "https://yourdomain.com/callback",
"grant_type": "authorization_code"
}'
返回数据
成功响应(HTTP 200)
{
"code": 0,
"msg": "success",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 7200,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"scope": "snsapi_userinfo",
"create_time": 1734567890
},
"request_id": "req-1234567890abcdef"
}
失败响应(HTTP 400)
{
"code": 40001,
"msg": "授权码code已过期或无效",
"request_id": "req-1234567890abcdef",
"detail": "code有效期为5分钟,且仅可使用一次"
}
返回参数说明
| 参数名 |
类型 |
描述 |
| code |
int |
业务状态码,0表示成功 |
| msg |
string |
响应信息,成功为"success" |
| data |
object |
成功时返回核心数据,失败为null |
| request_id |
string |
请求ID,用于问题排查 |
三、刷新AccessToken
接口信息
| 项目 |
说明 |
| 接口路径 |
/oauth/refresh_token |
| 请求方式 |
POST |
| 是否需要授权 |
否 |
| 接口超时时间 |
5秒 |
请求参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
| app_id |
是 |
string |
wx1234567890abcdef |
应用唯一标识 |
| app_secret |
是 |
string |
1234567890abcdef1234567890abcdef |
应用密钥 |
| refresh_token |
是 |
string |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
刷新Token |
| grant_type |
是 |
string |
refresh_token |
授权类型,固定值 |
返回示例
{
"code": 0,
"msg": "success",
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 7200,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"scope": "snsapi_userinfo"
},
"request_id": "req-0987654321fedcba"
}
四、获取用户基本信息
接口信息
| 项目 |
说明 |
| 接口路径 |
/user/info |
| 请求方式 |
GET |
| 是否需要授权 |
是 |
| 接口超时时间 |
5秒 |
请求参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
| access_token |
是 |
string |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
用户AccessToken |
| openid |
是 |
string |
o6_bmjrPTlm6_2sgVt7hMZOPfL2M |
用户唯一标识 |
请求示例(curl)
curl -X GET 'https://api.xxx.com/v1/user/info?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&openid=o6_bmjrPTlm6_2sgVt7hMZOPfL2M'
返回示例
{
"code": 0,
"msg": "success",
"data": {
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "张三",
"sex": 1,
"city": "北京",
"province": "北京",
"country": "中国",
"avatar_url": "https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfT..."
},
"request_id": "req-abcdef1234567890"
}
五、创建订单接口
接口信息
| 项目 |
说明 |
| 接口路径 |
/order/create |
| 请求方式 |
POST |
| 是否需要授权 |
是 |
| 接口超时时间 |
5秒 |
请求参数
| 参数名 |
必选 |
类型 |
示例值 |
参数描述 |
| access_token |
是 |
string |
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... |
用户AccessToken |
| order_no |
是 |
string |
ORD202512190001 |
商户订单号(唯一) |
| amount |
是 |
int |
100 |
订单金额(单位:分) |
| goods_name |
是 |
string |
VIP会员月卡 |
商品名称 |
| notify_url |
是 |
string |
https://yourdomain.com/order/notify |
订单回调通知地址 |
请求示例(curl)
curl -X POST 'https://api.xxx.com/v1/order/create' \
-H 'Content-Type: application/json' \
-d '{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"order_no": "ORD202512190001",
"amount": 100,
"goods_name": "VIP会员月卡",
"notify_url": "https://yourdomain.com/order/notify"
}'
返回示例
{
"code": 0,
"msg": "success",
"data": {
"order_id": "1234567890",
"order_no": "ORD202512190001",
"pay_url": "https://pay.xxx.com/pay?orderId=1234567890",
"create_time": 1734567890
},
"request_id": "req-9876543210abcdef"
}
六、错误码说明
| 错误码 |
错误描述 |
解决方案 |
| 0 |
成功 |
- |
| 40001 |
code已过期或无效 |
重新引导用户授权获取新code |
| 40002 |
app_id不存在或无效 |
核对app_id是否与平台配置一致 |
| 40003 |
app_secret错误 |
检查应用密钥是否正确,确认未泄露 |
| 40004 |
redirect_uri不匹配 |
确保回调地址与平台配置完全一致 |
| 40005 |
refresh_token已过期 |
重新引导用户授权 |
| 40101 |
access_token已过期或无效 |
刷新或重新获取access_token |
| 40102 |
无接口访问权限 |
检查应用是否已开通该接口权限 |
| 40301 |
订单号已存在 |
更换唯一的商户订单号 |
| 50000 |
服务器内部错误 |
稍后重试,或提供request_id联系技术支持 |
七、调用注意事项
安全性提示: app_secret为应用核心密钥,禁止在前端代码中暴露,仅可在服务端调用接口时使用。
- 协议要求:所有接口必须使用HTTPS协议调用,HTTP请求会被直接拒绝。
- 频率限制:单应用调用/token接口频率限制为100次/分钟,订单接口为500次/分钟,超出返回429错误码。
- 缓存建议:AccessToken有效期2小时,建议本地缓存(如Redis),避免频繁调用接口。
- 敏感信息:code、refresh_token、access_token均为敏感信息,需加密存储,禁止明文传输。
- 订单幂等性:创建订单接口需保证商户订单号唯一,避免重复创建订单。
- 问题排查:调用失败时请先核对参数,若仍有问题,保留request_id联系平台技术支持。