接入指南
业务流程
业务流程图

投诉状态流转图

获取投诉详情
通过订阅消息通知获取

接收投诉通知
第一步:订阅消息
第二步:验签
第三步:反馈消息接收结果
success
表示消息获取成功,支付宝就会停止发送异步通知。如果返回 fail
或其它值,表示消息获取失败,支付宝会根据 投递重试策略 重新发送消息到应用网关地址。success
,验签失败返回 fail
并重新接收异步通知进行处理。响应值 | 描述 | 是否重试 |
---|---|---|
fail | 消息获取失败 | 重试 |
success | 消息获取成功 | 不重试 |
第四步:查看投诉通知详情
complain_event_id
(投诉单号)等消息内容。ISV_GATEWAY_URL?charset=GBK&biz_content=
{
"complain_event_id":"2020092300102000000001459758"
}
&msg_method=alipay.merchant.tradecomplain.changed&utc_timestamp=1516797622752&version=1.1&sign_type=RSA2¬ify_id=d275fec564e62af6bedbcee73f3f05fi5x&app_id=2013121700999429&sign=I+Y/lvqYUEEc10EPdpntRhFIQ==
查询投诉详情
complain_event_id
(投诉单号),调用 alipay.merchant.tradecomplain.query(查询单条交易投诉详情接口)查询该笔投诉单的最新详情。请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantTradecomplainApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantTradecomplainApiQuery {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantTradecomplainApi api = new AlipayMerchantTradecomplainApi();
String complainEventId = "2020092300102000000001459758";
try {
AlipayMerchantTradecomplainQueryResponseModel response = api.query(complainEventId);
} catch (ApiException e) {
AlipayMerchantTradecomplainQueryDefaultResponse errorObject = (AlipayMerchantTradecomplainQueryDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
响应示例
{
"code":"unknow-error",
"message":"系统繁忙"
}
批量查询获取
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantTradecomplainApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantTradecomplainApiBatchquery {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantTradecomplainApi api = new AlipayMerchantTradecomplainApi();
AlipayMerchantTradecomplainBatchqueryModel data = new AlipayMerchantTradecomplainBatchqueryModel();
data.setBeginTime("\"2020-02-14 14:23:12\"");
data.setPageSize(10);
List<TargetInfo> targetInfos = new ArrayList<TargetInfo>();
TargetInfo targetInfos0 = new TargetInfo();
targetInfos0.setTargetId("2018001307627807");
targetInfos0.setTargetType("APPID");
targetInfos.add(targetInfos0);
data.setTargetInfos(targetInfos);
data.setPageNum(1);
data.setEndTime("\"2020-02-14 14:23:12\"");
data.setStatus("MERCHANT_PROCESSING");
try {
AlipayMerchantTradecomplainBatchqueryResponseModel response = api.batchquery(data);
} catch (ApiException e) {
AlipayMerchantTradecomplainBatchqueryDefaultResponse errorObject = (AlipayMerchantTradecomplainBatchqueryDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
重要入参说明
**注意:**begin_time 和 end_time 时间跨度最大一年。
反馈投诉处理结果
上传图片信息
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantImageApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantImageApiUpload {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantImageApi api = new AlipayMerchantImageApi();
AlipayMerchantImageUploadModel data = new AlipayMerchantImageUploadModel();
data.setImageType("jpg");
File imageContent = new File("文件路径");
try {
AlipayMerchantImageUploadResponseModel response = api.upload(data, imageContent);
} catch (ApiException e) {
AlipayMerchantImageUploadDefaultResponse errorObject = (AlipayMerchantImageUploadDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
重要入参说明
响应示例
{
"code":"unknow-error",
"message":"系统繁忙"
}
重要响应说明
处理交易投诉
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantTradecomplainFeedbackApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantTradecomplainFeedbackApiSubmit {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantTradecomplainFeedbackApi api = new AlipayMerchantTradecomplainFeedbackApi();
AlipayMerchantTradecomplainFeedbackSubmitModel data = new AlipayMerchantTradecomplainFeedbackSubmitModel();
data.setFeedbackCode("02");
data.setFeedbackContent("钱已退款给您,请查收");
data.setComplainEventId("2020092300102000000001459758");
data.setFeedbackImages("wAe1XmjGS8mBSV0FFklAUgAAACMAAQED,A*C5jFT7v7SIMAAAAAAAAAAAAADpp1AQ");
data.setOperator("王芳");
try {
Object response = api.submit(data);
} catch (ApiException e) {
AlipayMerchantTradecomplainFeedbackSubmitDefaultResponse errorObject = (AlipayMerchantTradecomplainFeedbackSubmitDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
重要入参说明
00
:使用体验保障金退款(目前 API 方式暂不支持此类目反馈)02
:通过其他方式退款03
:已发货04
:其他05
:已完成售后服务06
:非我方责任范围**说明:**如果需要使用原交易退款,请使用支付产品中的退款接口。
商家留言回复
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantTradecomplainReplyApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantTradecomplainReplyApiSubmit {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantTradecomplainReplyApi api = new AlipayMerchantTradecomplainReplyApi();
AlipayMerchantTradecomplainReplySubmitModel data = new AlipayMerchantTradecomplainReplySubmitModel();
data.setReplyImages("ySYHS5CtTCmag14Wk8jeNAAAACMAAQEW,ySYHS5CtTCmag14Wk8jeNAAAACMAAQAX");
data.setComplainEventId("2022032200102000000001459758");
data.setReplyContent("你好,已发货,快递单号:*****");
try {
Object response = api.submit(data);
} catch (ApiException e) {
AlipayMerchantTradecomplainReplySubmitDefaultResponse errorObject = (AlipayMerchantTradecomplainReplySubmitDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}
重要入参说明
商家补充凭证
请求示例
package com.java.sdk.demo;
import com.alipay.v3.ApiException;
import com.alipay.v3.ApiClient;
import com.alipay.v3.util.model.AlipayConfig;
import com.alipay.v3.Configuration;
import com.alipay.v3.api.AlipayMerchantTradecomplainSupplementApi;
import com.alipay.v3.model.*;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AlipayMerchantTradecomplainSupplementApiSubmit {
public static void main(String[] args) throws ApiException {
ApiClient defaultClient = Configuration.getDefaultApiClient();
// 初始化alipay参数(全局设置一次)
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com");
alipayConfig.setAppId("<-- 请填写您的AppId,例如:2019091767145019 -->");
alipayConfig.setPrivateKey("<-- 请填写您的应用私钥,例如:MIIEvQIBADANB ... ... -->");
alipayConfig.setAlipayPublicKey("<-- 请填写您的支付宝公钥,例如:MIIBIjANBg... -->");
defaultClient.setAlipayConfig(alipayConfig);
AlipayMerchantTradecomplainSupplementApi api = new AlipayMerchantTradecomplainSupplementApi();
AlipayMerchantTradecomplainSupplementSubmitModel data = new AlipayMerchantTradecomplainSupplementSubmitModel();
data.setSupplementContent("已发货,快递单号详见截图");
data.setSupplementImages("ySYHS5CtTCmag14Wk8jeNAAAACMAAQEW,ySYHS5CtTCmag14Wk8jeNAAAACMAAQAX");
data.setComplainEventId("2020092300102000000001459758");
try {
Object response = api.submit(data);
} catch (ApiException e) {
AlipayMerchantTradecomplainSupplementSubmitDefaultResponse errorObject = (AlipayMerchantTradecomplainSupplementSubmitDefaultResponse) e.getErrorObject();
System.out.println("调用失败:" + errorObject);
}
}
}