---
url: "https://pay.weixin.qq.com/doc/v3/partner/4012691802.md"
title: "查询投诉单协商历史"
doc_id: 4012691802
---

>更新时间：2025.08.28

商户可通过调用此接口，查询指定投诉单的用户与商户的协商历史，以分页输出查询结果，方便商户根据处理历史来制定后续处理方案。




## 接口说明

支持商户：【普通服务商】　【从业机构（银行）】　【从业机构（支付机构）】　【渠道商】　【清算机构】

请求方式：【GET】 `/v3/merchant-service/complaints-v2/{complaint_id}/negotiation-historys`

请求域名：【主域名】https://api.mch.weixin.qq.com 使用该域名将访问就近的接入点

　　　　　【备域名】https://api2.mch.weixin.qq.com 使用该域名将访问异地的接入点，指引[点击查看](https://pay.weixin.qq.com/doc/v3/merchant/4012075113.md)

## 请求参数

### Header 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| Authorization | string | true | 请参考 [签名认证](https://pay.weixin.qq.com/doc/v3/merchant/4012365342.md#%E8%AF%B7%E6%B1%82%E6%8E%A5%E5%8F%A3%E5%90%8E%E7%AB%AF%E7%AD%BE%E5%90%8D) 生成认证信息 |
| Accept | string | true | 请设置为 `application/json` |
### Path 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| complaint_id | string(64) | true | 【投诉单号】 投诉单对应的投诉单号 |
### Query 参数
| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| limit | integer | false | 【分页大小】 设置该次请求返回的最大协商历史条数，范围\[1,300\] |
| offset | integer | false | 【分页开始位置】 该次请求的分页开始位置，从0开始计数，例如offset=10，表示从第11条记录开始返回。 |
## 应答参数

200 OK

| 参数名 | 类型 | 必填 | 描述 |
| --- |  --- | --- | --- |
| data | array[object] | false | 【投诉协商历史】 投诉协商历史 |
| data.log_id | string(64) | true | 【操作流水号】 操作流水号 |
| data.operator | string(64) | true | 【操作人】 当前投诉协商记录的操作人 |
| data.operate_time | string(64) | true | 【操作时间】 当前投诉协商记录的操作时间 |
| data.operate_type | string | true | 【操作类型】 当前投诉协商记录的操作类型，对应枚举ComplaintNegotiationOperateType<br>可选取值<br><ul><li>`USER_CREATE_COMPLAINT`:  用户提交投诉</li><li>`USER_CONTINUE_COMPLAINT`:  用户继续投诉</li><li>`USER_RESPONSE`:  用户留言</li><li>`PLATFORM_RESPONSE`:  平台留言</li><li>`MERCHANT_RESPONSE`:  商户留言</li><li>`MERCHANT_CONFIRM_COMPLETE`:  商户申请结单</li><li>`USER_CREATE_COMPLAINT_SYSTEM_MESSAGE`:  用户提交投诉系统通知</li><li>`COMPLAINT_FULL_REFUNDED_SYSTEM_MESSAGE`:  投诉单发起全额退款系统通知</li><li>`USER_CONTINUE_COMPLAINT_SYSTEM_MESSAGE`:  用户继续投诉系统通知</li><li>`USER_REVOKE_COMPLAINT`:  用户主动撤诉（只存在于历史投诉单的协商历史中）</li><li>`USER_COMFIRM_COMPLAINT`:  用户确认投诉解决（只存在于历史投诉单的协商历史中）</li><li>`PLATFORM_HELP_APPLICATION`:  平台催办</li><li>`USER_APPLY_PLATFORM_HELP`:  用户申请平台协助</li><li>`MERCHANT_APPROVE_REFUND`:  商户同意退款申请</li><li>`MERCHANT_REFUSE_RERUND`:  商户拒绝退款申请, 此时操作内容里展示拒绝原因</li><li>`USER_SUBMIT_SATISFACTION`:  用户提交满意度调查结果,此时操作内容里会展示满意度分数</li><li>`SERVICE_ORDER_CANCEL`:  服务订单已取消</li><li>`SERVICE_ORDER_COMPLETE`:  服务订单已完成</li><li>`COMPLAINT_PARTIAL_REFUNDED_SYSTEM_MESSAGE`:  投诉单发起部分退款系统通知</li><li>`COMPLAINT_REFUND_RECEIVED_SYSTEM_MESSAGE`:  投诉单退款到账系统通知</li><li>`COMPLAINT_ENTRUSTED_REFUND_SYSTEM_MESSAGE`:  投诉单受托退款系统通知</li><li>`USER_APPLY_PLATFORM_SERVICE`:  用户申请平台协助</li><li>`USER_CANCEL_PLATFORM_SERVICE`:  用户取消平台协助</li><li>`PLATFORM_SERVICE_FINISHED`:  客服结束平台协助</li><li>`USER_CLICK_RESPONSE`:  用户因点击产生留言</li></ul> |
| data.operate_details | string(500) | false | 【操作内容】 当前投诉协商记录的具体内容 |
| data.image_list | array[string] | false | 【图片凭证】 商户或微信支付客服上传的图片，以URL形式返回。注：此字段不包含用户提交的图片凭证，建议统一使用complaint\_media\_list字段接收和请求资料凭证，未来该字段将废弃 |
| data.complaint_media_list | object | false | 【操作资料列表】 对投诉单执行操作时上传的资料凭证，包含用户、商户、微信支付客服等角色操作 |
| data.complaint_media_list.media_type | string | true | 【媒体文件业务类型】 媒体文件对应的业务类型<br>可选取值<br><ul><li>`USER_COMPLAINT_IMAGE`:  用户提交投诉时上传的图片凭证</li><li>`OPERATION_IMAGE`:  用户、商户、微信支付客服在协商解决投诉时，上传的图片凭证</li></ul> |
| data.complaint_media_list.media_url | array[string(512)] | true | 【媒体文件请求url】 微信返回的媒体文件请求url，详细调用请参考： [图片请求接口](https://pay.weixin.qq.com/doc/v3/partner/4012467223.md)<br>示例 " [https://api.mch.weixin.qq.com/v3/merchant-service/images/xxxxx"](https://api.mch.weixin.qq.com/v3/merchant-service/images/xxxxx%22) 中 "xxxxx" 代表媒体文件标识 ID(meida\_id) |
| data.user_appy_platform_service_reason | string | false | 【用户申请平台协助原因】 用户此次申请平台协助时选择的申请协助原因（已废弃） |
| data.user_appy_platform_service_reason_description | string | false | 【用户申请平台协助原因描述】 用户此次申请平台协助时填写的具体申请协助原因描述（已废弃） |
| data.normal_message | object | false | 【普通消息内容】 当operate\_type为MERCHANT\_RESPONSE且商户使用即时服务回复接口ResponseComplaintImmediateService发送商户回复时，此字段有值。与发送消息的结构一致 |
| data.normal_message.blocks | array[object] | false | 【消息内容】 消息内容块列表，支持文本、图片、链接、推荐FAQ、按钮和按钮组等多种类型的消息块 |
| data.normal_message.blocks.type | string | false | 【消息块类型】 消息块类型，用于标识当前消息块的内容类型<br>可选取值<br><ul><li>`TEXT`:  文本</li><li>`IMAGE`:  图片</li><li>`LINK`:  链接</li><li>`FAQ_LIST`:  FAQ列表</li><li>`BUTTON`:  按钮</li><li>`BUTTON_GROUP`:  按钮组</li></ul> |
| data.normal_message.blocks.text | object | false | 【文本】 文本消息块，当type为TEXT时使用 |
| data.normal_message.blocks.text.text | string | false | 【文字内容】 文字内容 |
| data.normal_message.blocks.text.color | string | false | 【文本颜色】 文本颜色<br>可选取值<br><ul><li>`DEFAULT`:  默认文本内容颜色</li><li>`SECONDARY`:  次要文本内容颜色</li></ul> |
| data.normal_message.blocks.text.is_bold | boolean | false | 【是否粗体】 是否粗体 |
| data.normal_message.blocks.image | object | false | 【图片】 图片消息块，当type为IMAGE时使用 |
| data.normal_message.blocks.image.media_id | string | false | 【媒体ID】 媒体ID |
| data.normal_message.blocks.image.image_style_type | string | false | 【图片样式类型】 图片样式类型<br>可选取值<br><ul><li>`IMAGE_STYLE_TYPE_NARROW`:  窄图</li><li>`IMAGE_STYLE_TYPE_WIDE`:  宽图</li></ul> |
| data.normal_message.blocks.link | object | false | 【链接】 链接消息块，当type为LINK时使用 |
| data.normal_message.blocks.link.text | string | false | 【链接文案】 链接文案 |
| data.normal_message.blocks.link.action | object | false | 【动作】 动作 |
| data.normal_message.blocks.link.action.action_type | string | false | ActionType 动作类型<br>可选取值<br><ul><li>`ACTION_TYPE_SEND_MESSAGE`:  回复消息，用户点击后会发送消息，此时message\_info必填</li><li>`ACTION_TYPE_JUMP_URL`:  链接，用户点击后跳转链接，此时jump\_url必填</li><li>`ACTION_TYPE_JUMP_MINI_PROGRAM`:  小程序，用户点击后跳转到小程序页面，此时</li></ul> |
| data.normal_message.blocks.link.action.jump_url | string | false | 跳转链接 |
| data.normal_message.blocks.link.action.mini_program_jump_info | object | false | 跳转的小程序 |
| data.normal_message.blocks.link.action.mini_program_jump_info.appid | string | false | 小程序appid |
| data.normal_message.blocks.link.action.mini_program_jump_info.path | string | false | 小程序path |
| data.normal_message.blocks.link.action.message_info | object | false | 回复消息内容 |
| data.normal_message.blocks.link.action.message_info.content | string | true | 回复的消息内容 |
| data.normal_message.blocks.link.action.message_info.custom_data | string | false | 自定义透传字段 |
| data.normal_message.blocks.link.action.action_id | string | false | 动作id |
| data.normal_message.blocks.link.invalid_info | object | false | 【失效配置】 失效配置 |
| data.normal_message.blocks.link.invalid_info.expired_time | string | false | 过期时间，遵循rfc3339标准格式，格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE，yyyy-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日13点29分35秒。 |
| data.normal_message.blocks.link.invalid_info.multi_clickable | boolean | false | 是否可以多次点击 |
| data.normal_message.blocks.faq_list | object | false | 【FAQ列表】 FAQ列表，当type为FAQ\_LIST时使用 |
| data.normal_message.blocks.faq_list.faqs | array[object] | false | 【FAQ列表】 FAQ列表 |
| data.normal_message.blocks.faq_list.faqs.faq_id | string | false | 【faq的id】 faq的id |
| data.normal_message.blocks.faq_list.faqs.faq_title | string | false | 【faq内容】 faq内容 |
| data.normal_message.blocks.faq_list.faqs.action | object | false | 【动作】 动作 |
| data.normal_message.blocks.faq_list.faqs.action.action_type | string | false | ActionType 动作类型<br>可选取值<br><ul><li>`ACTION_TYPE_SEND_MESSAGE`:  回复消息，用户点击后会发送消息，此时message\_info必填</li><li>`ACTION_TYPE_JUMP_URL`:  链接，用户点击后跳转链接，此时jump\_url必填</li><li>`ACTION_TYPE_JUMP_MINI_PROGRAM`:  小程序，用户点击后跳转到小程序页面，此时</li></ul> |
| data.normal_message.blocks.faq_list.faqs.action.jump_url | string | false | 跳转链接 |
| data.normal_message.blocks.faq_list.faqs.action.mini_program_jump_info | object | false | 跳转的小程序 |
| data.normal_message.blocks.faq_list.faqs.action.mini_program_jump_info.appid | string | false | 小程序appid |
| data.normal_message.blocks.faq_list.faqs.action.mini_program_jump_info.path | string | false | 小程序path |
| data.normal_message.blocks.faq_list.faqs.action.message_info | object | false | 回复消息内容 |
| data.normal_message.blocks.faq_list.faqs.action.message_info.content | string | true | 回复的消息内容 |
| data.normal_message.blocks.faq_list.faqs.action.message_info.custom_data | string | false | 自定义透传字段 |
| data.normal_message.blocks.faq_list.faqs.action.action_id | string | false | 动作id |
| data.normal_message.blocks.button | object | false | 【按钮】 按钮消息块，当type为BUTTON时使用 |
| data.normal_message.blocks.button.text | string | false | 【按钮文本】 按钮文本 |
| data.normal_message.blocks.button.action | object | false | 【动作】 动作 |
| data.normal_message.blocks.button.action.action_type | string | false | ActionType 动作类型<br>可选取值<br><ul><li>`ACTION_TYPE_SEND_MESSAGE`:  回复消息，用户点击后会发送消息，此时message\_info必填</li><li>`ACTION_TYPE_JUMP_URL`:  链接，用户点击后跳转链接，此时jump\_url必填</li><li>`ACTION_TYPE_JUMP_MINI_PROGRAM`:  小程序，用户点击后跳转到小程序页面，此时</li></ul> |
| data.normal_message.blocks.button.action.jump_url | string | false | 跳转链接 |
| data.normal_message.blocks.button.action.mini_program_jump_info | object | false | 跳转的小程序 |
| data.normal_message.blocks.button.action.mini_program_jump_info.appid | string | false | 小程序appid |
| data.normal_message.blocks.button.action.mini_program_jump_info.path | string | false | 小程序path |
| data.normal_message.blocks.button.action.message_info | object | false | 回复消息内容 |
| data.normal_message.blocks.button.action.message_info.content | string | true | 回复的消息内容 |
| data.normal_message.blocks.button.action.message_info.custom_data | string | false | 自定义透传字段 |
| data.normal_message.blocks.button.action.action_id | string | false | 动作id |
| data.normal_message.blocks.button.invalid_info | object | false | 【失效配置】 失效配置 |
| data.normal_message.blocks.button.invalid_info.expired_time | string | false | 过期时间，遵循rfc3339标准格式，格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE，yyyy-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日13点29分35秒。 |
| data.normal_message.blocks.button.invalid_info.multi_clickable | boolean | false | 是否可以多次点击 |
| data.normal_message.blocks.button_group | object | false | 【按钮组】 按钮组消息块，当type为BUTTON\_GROUP时使用 |
| data.normal_message.blocks.button_group.buttons | array[object] | false | 【按钮组】 按钮组 |
| data.normal_message.blocks.button_group.buttons.text | string | false | 【按钮文本】 按钮文本 |
| data.normal_message.blocks.button_group.buttons.action | object | false | 【动作】 动作 |
| data.normal_message.blocks.button_group.buttons.action.action_type | string | false | ActionType 动作类型<br>可选取值<br><ul><li>`ACTION_TYPE_SEND_MESSAGE`:  回复消息，用户点击后会发送消息，此时message\_info必填</li><li>`ACTION_TYPE_JUMP_URL`:  链接，用户点击后跳转链接，此时jump\_url必填</li><li>`ACTION_TYPE_JUMP_MINI_PROGRAM`:  小程序，用户点击后跳转到小程序页面，此时</li></ul> |
| data.normal_message.blocks.button_group.buttons.action.jump_url | string | false | 跳转链接 |
| data.normal_message.blocks.button_group.buttons.action.mini_program_jump_info | object | false | 跳转的小程序 |
| data.normal_message.blocks.button_group.buttons.action.mini_program_jump_info.appid | string | false | 小程序appid |
| data.normal_message.blocks.button_group.buttons.action.mini_program_jump_info.path | string | false | 小程序path |
| data.normal_message.blocks.button_group.buttons.action.message_info | object | false | 回复消息内容 |
| data.normal_message.blocks.button_group.buttons.action.message_info.content | string | true | 回复的消息内容 |
| data.normal_message.blocks.button_group.buttons.action.message_info.custom_data | string | false | 自定义透传字段 |
| data.normal_message.blocks.button_group.buttons.action.action_id | string | false | 动作id |
| data.normal_message.blocks.button_group.button_layout | string | false | 【按钮布局方式】 按钮布局方式，默认 LAYOUT\_HORIZONTAL<br>可选取值<br><ul><li>`LAYOUT_UNKNOWN`:</li><li>`LAYOUT_HORIZONTAL`:  水平排列</li><li>`LAYOUT_VERTICAL`:  垂直排列</li></ul> |
| data.normal_message.blocks.button_group.invalid_info | object | false | 【失效配置】 失效配置 |
| data.normal_message.blocks.button_group.invalid_info.expired_time | string | false | 过期时间，遵循rfc3339标准格式，格式为yyyy-MM-DDTHH:mm:ss+TIMEZONE，yyyy-MM-DD表示年月日，T出现在字符串中，表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日13点29分35秒。 |
| data.normal_message.blocks.button_group.invalid_info.multi_clickable | boolean | false | 是否可以多次点击 |
| data.normal_message.sender_identity | string | false | 【发送者身份类别】 发送者身份类别，标识消息是由人工还是机器发送<br>可选取值<br><ul><li>`UNKNOWN`:  未知</li><li>`MANUAL`:  人工</li><li>`MACHINE`:  机器</li></ul> |
| data.normal_message.custom_data | string(4096) | false | 【自定义透传信息】 商户自定义的透传数据，用于传递业务相关信息 |
| data.click_message | object | false | 【用户点击回复消息】 用户点击回复消息，当operate\_type为USER\_CLICK\_RESPONSE时，此字段有值 |
| data.click_message.message_content | string(1024) | false | 【回复的消息内容】 |
| data.click_message.action_id | string(4096) | false | 【自定义透传数据】 动作id |
| data.click_message.clicked_log_id | string(128) | false | 【被点击的操作流水号】 唯一标识本次点击事件所关联的操作或消息的流水号，用于事件追踪和溯源 |
| limit | integer | true | 【分页大小】 设置该次请求返回的最大协商历史条数，范围\[1,300\] |
| offset | integer | true | 【分页开始位置】 设置该次请求返回的最大协商历史条数，范围\[1,300\] |
| total_count | integer | false | 【投诉协商历史总条数】 投诉协商历史总条数，当offset=0时返回 |
## 错误码

以下是本接口返回的错误码列表。详细错误码规则，请参考[微信支付接口规则-错误码和错误提示](https://pay.weixin.qq.com/doc/v3/partner/4012081726.md#%E9%94%99%E8%AF%AF%E7%A0%81%E5%92%8C%E9%94%99%E8%AF%AF%E6%8F%90%E7%A4%BA)

| 状态码 | 错误码 | 描述 | 解决方案 |
| --- | --- | --- | --- |
| 400 | PARAM\_ERROR | 参数错误 | 请根据错误提示正确传入参数 |
| 400 | INVALID\_REQUEST | HTTP 请求不符合微信支付 APIv3 接口规则 | 请参阅 [接口规则](https://pay.weixin.qq.com/doc/v3/merchant/4012081709.md) |
| 401 | SIGN\_ERROR | 验证不通过 | 请参阅 [签名常见问题](https://pay.weixin.qq.com/doc/v3/merchant/4012072670.md) |
| 500 | SYSTEM\_ERROR | 系统异常，请稍后重试 | 请稍后重试 |

请求示例

- [curl 示例](https://pay.weixin.qq.com/doc/v3/partner/4012691802-curl.md)
- [Java 示例](https://pay.weixin.qq.com/doc/v3/partner/4012691802-java.md)
- [Go 示例](https://pay.weixin.qq.com/doc/v3/partner/4012691802-go.md)


应答示例

> 200 OK

```
{
  "data" : [
    {
      "log_id" : "300285320210322170000071077",
      "operator" : "投诉人",
      "operate_time" : "2015-05-20T13:29:35.120+08:00",
      "operate_type" : "USER_CREATE_COMPLAINT",
      "operate_details" : "已与用户电话沟通解决",
      "image_list" : [
        "https://qpic.cn/xxx"
      ],
      "complaint_media_list" : {
        "media_type" : "USER_COMPLAINT_IMAGE",
        "media_url" : [
          "https://api.mch.weixin.qq.com/v3/merchant-service/images/xxxxx"
        ]
      },
      "user_appy_platform_service_reason" : "商家响应不及时",
      "user_appy_platform_service_reason_description" : "一周前就提交咨询了，到现在商家还没理我",
      "normal_message" : {
        "blocks" : [
          {
            "type" : "TEXT",
            "text" : {
              "text" : "example_text",
              "color" : "DEFAULT",
              "is_bold" : false
            },
            "image" : {
              "media_id" : "example_media_id",
              "image_style_type" : "IMAGE_STYLE_TYPE_NARROW"
            },
            "link" : {
              "text" : "example_text",
              "action" : {
                "action_type" : "ACTION_TYPE_SEND_MESSAGE",
                "jump_url" : "example_jump_url",
                "mini_program_jump_info" : {
                  "appid" : "example_appid",
                  "path" : "example_path"
                },
                "message_info" : {
                  "content" : "example_content",
                  "custom_data" : "example_custom_data"
                },
                "action_id" : "example_action_id"
              },
              "invalid_info" : {
                "expired_time" : "example_expired_time",
                "multi_clickable" : false
              }
            },
            "faq_list" : {
              "faqs" : [
                {
                  "faq_id" : "example_faq_id",
                  "faq_title" : "example_faq_title",
                  "action" : {
                    "action_type" : "ACTION_TYPE_SEND_MESSAGE",
                    "jump_url" : "example_jump_url",
                    "mini_program_jump_info" : {
                      "appid" : "example_appid",
                      "path" : "example_path"
                    },
                    "message_info" : {
                      "content" : "example_content",
                      "custom_data" : "example_custom_data"
                    },
                    "action_id" : "example_action_id"
                  }
                }
              ]
            },
            "button" : {
              "text" : "example_text",
              "action" : {
                "action_type" : "ACTION_TYPE_SEND_MESSAGE",
                "jump_url" : "example_jump_url",
                "mini_program_jump_info" : {
                  "appid" : "example_appid",
                  "path" : "example_path"
                },
                "message_info" : {
                  "content" : "example_content",
                  "custom_data" : "example_custom_data"
                },
                "action_id" : "example_action_id"
              },
              "invalid_info" : {
                "expired_time" : "example_expired_time",
                "multi_clickable" : false
              }
            },
            "button_group" : {
              "buttons" : [
                {
                  "text" : "example_text",
                  "action" : {
                    "action_type" : "ACTION_TYPE_SEND_MESSAGE",
                    "jump_url" : "example_jump_url",
                    "mini_program_jump_info" : {
                      "appid" : "example_appid",
                      "path" : "example_path"
                    },
                    "message_info" : {
                      "content" : "example_content",
                      "custom_data" : "example_custom_data"
                    },
                    "action_id" : "example_action_id"
                  }
                }
              ],
              "button_layout" : "LAYOUT_UNKNOWN",
              "invalid_info" : {
                "expired_time" : "example_expired_time",
                "multi_clickable" : false
              }
            }
          }
        ],
        "sender_identity" : "UNKNOWN",
        "custom_data" : "example_custom_data"
      },
      "click_message" : {
        "message_content" : "example_message_content",
        "action_id" : "12345",
        "clicked_log_id" : "example_clicked_log_id"
      }
    }
  ],
  "limit" : 50,
  "offset" : 50,
  "total_count" : 1000
}

```
