投诉详情查询
更新时间:2026-09-22
接口说明
根据投诉单号查询投诉的详细信息,包括投诉内容、关联订单、退款信息等。系统会自动校验投诉单是否属于当前商户。
接口信息
- 适用对象:间连商户(OpenAPI)
- 请求 URL:
https://webapipay.com/openapi/v1/complaint/getInfo - 请求方法:POST
- Content-Type:
application/json - 鉴权方式: Sign 签名验证(公共参数 + bizContent)
ℹ️ 公共参数说明详见 通用规则 - API公共参数 部分
查询说明:
- 使用渠道侧投诉单号 complaintNo 进行查询,而非系统内部ID
- 系统会自动校验投诉单归属,确保只能查询本商户的投诉
请求参数(bizContent)
| 参数名 | 类型 | 必填 | 参数说明 |
|---|---|---|---|
complaintNo | String | Y | 投诉单号(渠道侧投诉单号) |
请求示例
json
{
"appId": "your_system_appid",
"subMerchantNo": "your_sub_merchant_no",
"bizContent": "{\"complaintNo\":\"4567890123456789012\"}",
"version": "1.0",
"nonce": "49d55020fa3adf6ed67b253c583ccdaa",
"contentHash": "your_content_hash",
"timestamp": "2026-09-22 10:00:00",
"sign": "your_sign"
}响应参数
响应附加参数(data)
| 参数 | 类型 | 必须 | 参数说明 |
|---|---|---|---|
id | Integer | Y | 投诉单内部ID |
complaintNo | String | Y | 投诉单号(渠道侧) |
paymentChannel | String | Y | 支付渠道编码 |
channelAvailableId | Integer | N | 渠道可用配置ID |
channelName | String | N | 渠道名称 |
payChannelType | String | N | 支付方式编码 |
complaintSource | String | N | 投诉来源 |
state | String | Y | 投诉状态(ACCEPTED/PROCESSING/CLOSED/DROPPED) |
complaintTime | String | N | 投诉时间 |
complaintDetail | String | N | 投诉详情 |
complaintContact | String | N | 投诉人联系方式 |
complaintOpenId | String | N | 投诉人OpenID |
complaintCount | Integer | N | 投诉次数 |
isResponse | Integer | N | 是否已回复(0否/1是) |
problemType | String | N | 问题类型 |
problemDescription | String | N | 问题描述 |
applyRefundAmount | String | N | 申请退款金额(元) |
merchantNo | String | Y | 商户号 |
mchId | String | N | 微信支付商户号 |
merchantName | String | N | 微信商户名称 |
merchantOrderNo | String | N | 商户订单号 |
wechatOrderNo | String | N | 微信订单号 |
channelOrderNo | String | N | 渠道订单号 |
amount | String | N | 订单金额(元) |
isFullRefunded | String | N | 是否全额退款(0否/1是) |
processTime | String | N | 处理时间 |
processRemark | String | N | 处理备注 |
priority | String | N | 优先级 |
remark | String | N | 备注 |
createTime | Array | Y | 创建时间 |
updatedAt | String | N | 更新时间 |
响应示例
成功响应:
json
{
"code": "0000",
"message": "获取成功",
"timestamp": "2026-09-22T10:00:00.000Z",
"data": {
"id": 1,
"complaintNo": "4567890123456789012",
"paymentChannel": "YEEPAY",
"channelName": "易宝支付",
"payChannelType": "WECHAT",
"state": "PROCESSING",
"complaintTime": "2026-09-20 14:30:00",
"complaintDetail": "商品与描述不符,申请退款",
"problemType": "REFUND",
"applyRefundAmount": "50.00",
"merchantNo": "M20260922001",
"merchantOrderNo": "ORD20260920001",
"amount": "100.00",
"createTime": "2026-09-20 14:30:00"
}
}失败响应:
json
// 投诉单号缺失
{
"code": "4001",
"message": "缺少投诉单号(complaintNo)",
"timestamp": "2026-09-22T10:00:00.000Z",
"data": {}
}
// 投诉单不存在或不属于当前商户
{
"code": "4001",
"message": "查询失败",
"timestamp": "2026-09-22T10:00:00.000Z",
"data": {}
}代码示例
Java
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
public class ComplaintInfoExample {
public static void main(String[] args) {
String appId = "your_app_id";
String subMerchantNo = "your_sub_merchant_no";
String signKey = "your_sign_key";
String apiUrl = "https://webapipay.com/openapi/v1/complaint/getInfo";
Map<String, String> bizContent = new HashMap<>();
bizContent.put("complaintNo", "4567890123456789012");
Map<String, String> requestData = new HashMap<>();
requestData.put("appId", appId);
requestData.put("subMerchantNo", subMerchantNo);
requestData.put("bizContent", JSON.toJSONString(bizContent));
requestData.put("version", "1.0");
requestData.put("timestamp", "2026-09-22 10:00:00");
String sign = SignUtil.generateSign(requestData, signKey);
requestData.put("sign", sign);
String response = HttpUtil.post(apiUrl, requestData);
System.out.println("投诉详情:" + response);
}
}Python
import requests
import json
def get_complaint_info(complaint_no):
"""查询投诉详情"""
api_url = "https://webapipay.com/openapi/v1/complaint/getInfo"
request_data = {
"appId": "your_app_id",
"subMerchantNo": "your_sub_merchant_no",
"bizContent": json.dumps({"complaintNo": complaint_no}),
"version": "1.0",
"timestamp": "2026-09-22 10:00:00",
}
request_data["sign"] = generate_sign(request_data, "your_sign_key")
response = requests.post(api_url, json=request_data, timeout=30)
return response.json()
result = get_complaint_info("4567890123456789012")
if result.get("code") == "0000":
data = result["data"]
print(f"投诉状态: {data['state']}, 退款金额: {data['applyRefundAmount']}")PHP
<?php
$requestData = [
'appId' => 'your_app_id',
'subMerchantNo' => 'your_sub_merchant_no',
'bizContent' => json_encode(['complaintNo' => '4567890123456789012']),
'version' => '1.0',
'timestamp' => date('Y-m-d H:i:s'),
];
$requestData['sign'] = generateSign($requestData, 'your_sign_key');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://webapipay.com/openapi/v1/complaint/getInfo');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if ($response['code'] === '0000') {
$data = $response['data'];
echo "投诉状态: {$data['state']}, 退款金额: {$data['applyRefundAmount']}";
}注意事项
WARNING
⚠️ 权限校验:
- 系统会自动校验投诉单是否属于当前商户(通过 merchant_no 和 user_id 双重校验)
- 查询非本商户的投诉单将返回查询失败
TIP
✅ 使用建议:
- 使用渠道侧投诉单号 complaintNo 查询,而非系统内部ID
- 投诉详情包含关联订单信息,可用于关联业务处理