Skip to content

投诉分页列表查询 ​

更新时间:2026-09-22

接口说明 ​

接口信息

  • 适用对象:间连商户(OpenAPI)
  • 请求 URL:https://webapipay.com/openapi/v1/complaint/getPageList
  • 请求方法:POST
  • Content-Type: application/json
  • 鉴权方式: Sign 签名验证(公共参数 + bizContent)

ℹ️ 公共参数说明详见 通用规则 - API公共参数 部分

商户解析说明:

  • 接口通过公共参数 subMerchantNo(子商户编号)自动查询ba_merchants 表获取商户信息
  • subMerchantNo 对应 ba_merchants.merchant_code 字段
  • 查询结果自动限定为当前商户的数据,无需手动传入商户号

请求参数(bizContent) ​

参数名类型必填参数说明
pageStringN页码,默认 1
pageSizeStringN每页条数,默认 10
complaintNoStringN投诉单号(渠道侧投诉单号),模糊匹配
stateStringN投诉单状态,如 ACCEPTED、PROCESSING、CLOSED、DROPPED
startTimeStringN开始时间,格式 YYYY-MM-DD HH:mm:ss
endTimeStringN结束时间,格式 YYYY-MM-DD HH:mm:ss

请求示例 ​

json
{
  "appId": "your_system_appid",
  "subMerchantNo": "your_sub_merchant_no",
  "bizContent": "{\"page\":1,\"pageSize\":10,\"state\":\"PROCESSING\"}",
  "version": "1.0",
  "nonce": "49d55020fa3adf6ed67b253c583ccdaa",
  "contentHash": "your_content_hash",
  "timestamp": "2026-09-22 10:00:00",
  "sign": "your_sign"
}

响应参数 ​

响应附加参数(data) ​

参数类型必须参数说明
listArrayY投诉列表数组
totalIntegerY总记录数

列表项字段说明(list[n]) ​

参数类型必须参数说明
complaintNoArrayY投诉单号(渠道侧)
paymentChannelStringY支付渠道编码
channelAvailableIdIntegerN渠道可用配置ID
payChannelTypeStringN支付方式编码
complaintSourceStringN投诉来源
stateStringY投诉状态(ACCEPTED/PROCESSING/CLOSED/DROPPED)
complaintTimeStringN投诉时间
complaintDetailStringN投诉详情
problemTypeStringN问题类型
problemDescriptionStringN问题描述
applyRefundAmountStringN申请退款金额(元)
merchantNoStringY商户号
mchIdStringN微信支付商户号
merchantNameStringN微信商户名称
merchantOrderNoStringN商户订单号
wechatOrderNoStringN微信订单号
amountStringN订单金额(元)
isFullRefundedStringN是否全额退款(0否/1是)
processTimeStringN处理时间
priorityStringN优先级
remarkStringN备注
createTimeArrayY创建时间
updatedAtStringN更新时间

响应示例 ​

成功响应: ​

json
{
  "code": "0000",
  "message": "获取成功",
  "timestamp": "2026-09-22T10:00:00.000Z",
  "data": {
    "list": [
      {
        "complaintNo": "4567890123456789012",
        "paymentChannel": "YEEPAY",
        "payChannelType": "WECHAT",
        "state": "PROCESSING",
        "complaintTime": "2026-09-20 14:30:00",
        "problemType": "REFUND",
        "applyRefundAmount": "50.00",
        "merchantNo": "M20260922001",
        "amount": "100.00",
        "createTime": "2026-09-20 14:30:00"
      }
    ],
    "total": 1
  }
}

失败响应: ​

json
// 商户解析失败
{
  "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 ComplaintListExample {
    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/getPageList";

        Map<String, String> bizContent = new HashMap<>();
        bizContent.put("page", "1");
        bizContent.put("pageSize", "10");
        bizContent.put("state", "PROCESSING");

        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 query_complaint_list(page=1, page_size=10, **kwargs):
    """查询投诉分页列表"""
    api_url = "https://webapipay.com/openapi/v1/complaint/getPageList"

    biz_content = {"page": page, "pageSize": page_size}
    biz_content.update(kwargs)

    request_data = {
        "appId": "your_app_id",
        "subMerchantNo": "your_sub_merchant_no",
        "bizContent": json.dumps(biz_content),
        "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 = query_complaint_list(state="PROCESSING")
if result.get("code") == "0000":
    for item in result["data"]["list"]:
        print(f"投诉单号: {item['complaintNo']}, 状态: {item['state']}")
php
<?php

class ComplaintList {
    private $appId = 'your_app_id';
    private $subMerchantNo = 'your_sub_merchant_no';
    private $signKey = 'your_sign_key';
    private $apiUrl = 'https://webapipay.com/openapi/v1/complaint/getPageList';

    public function query($page = 1, $pageSize = 10, $filters = []) {
        $bizContent = array_merge(['page' => $page, 'pageSize' => $pageSize], $filters);

        $requestData = [
            'appId'          => $this->appId,
            'subMerchantNo'  => $this->subMerchantNo,
            'bizContent'     => json_encode($bizContent),
            'version'        => '1.0',
            'timestamp'      => date('Y-m-d H:i:s'),
        ];
        $requestData['sign'] = $this->generateSign($requestData);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $this->apiUrl);
        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 = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true);
    }

    private function generateSign($params) {
        ksort($params);
        $signStr = '';
        foreach ($params as $key => $value) {
            if ($value !== '') $signStr .= "{$key}={$value}&";
        }
        $signStr .= "key={$this->signKey}";
        return strtoupper(md5($signStr));
    }
}

// 查询处理中的投诉
$result = (new ComplaintList())->query(1, 10, ['state' => 'PROCESSING']);
if ($result['code'] === '0000') {
    foreach ($result['data']['list'] as $item) {
        echo "投诉单号: {$item['complaintNo']}, 状态: {$item['state']}\n";
    }
}

注意事项 ​

WARNING

⚠️ 数据隔离:

  • 接口自动根据 subMerchantNo 限定商户数据范围,无法查看其他商户的投诉
  • 每次请求都会校验商户信息,确保数据安全

TIP

✅ 查询建议:

  • 推荐使用 complaintNo 模糊查询投诉单
  • 验使用 state 筛选投诉状态,如: PENDING-待处理, PROCESSING-处理中, PROCESSED-已处理, OVERDUE-超时, DROPPED-已撤诉, CLOSED-已关闭
  • 分页查询时建议 pageSize 不超过 50,避免响应过慢
  • 时间范围查询使用 startTime 和 endTime 组合