MPS 回执配置详情请参考 配置回执地址。
公共方法
private String extractRequestBody(HttpServletRequest request,String channel) {
StringBuilder builder = new StringBuilder();
BufferedReader reader = null;
try {
reader = request.getReader();
char[] charBuffer = new char[128];
int bytesRead;
while ((bytesRead = reader.read(charBuffer)) != -1) {
builder.append(charBuffer, 0, bytesRead);
}
} catch (IOException e) {
LoggerUtil.error(LOGGER, e, "["+channel+"]extractParameterFromRequest error!");
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
LoggerUtil.error(LOGGER, e, "["+channel+"]extractParameterFromRequest close reader error!");
}
}
}
return builder.toString();
}
public static Map<String, String> extractParameterFromRequest(HttpServletRequest request) {
Map<String, String> paramsMap = new HashMap<String, String>();
Map<String, String[]> parameterMap = request.getParameterMap();
Iterator var3 = parameterMap.entrySet().iterator();
while(var3.hasNext()) {
Map.Entry<String, String[]> paramEntry = (Map.Entry)var3.next();
String[] value = (String[])paramEntry.getValue();
if (value.length > 0) {
paramsMap.put(paramEntry.getKey(), value[0]);
}
}
return paramsMap;
}
public static void outData(HttpServletResponse httpServletResponse, String resJsonString) {
PrintWriter writer = null;
try {
httpServletResponse.setContentType("application/json");
httpServletResponse.setCharacterEncoding("utf-8");
writer = httpServletResponse.getWriter();
writer.print(resJsonString);
writer.flush();
} catch (Exception e) {
LoggerUtil.error(LOGGER, e, "outData error");
} finally {
if (writer != null) {
writer.close();
}
}
}
private Result createResult(PushResultEnum resultEnum) {
Result bindResult = new Result();
bindResult.setReturnCode(resultEnum.getCode());
bindResult.setReturnReason(resultEnum.getReason());
return bindResult;
}
华为
@ResponseBody
@RequestMapping(value = "/hms", produces = "application/json")
public JSONObject hmsCallback(HttpServletRequest httpServletRequest) {
String requestBody = extractRequestBody(httpServletRequest,"hms");
LoggerUtil.info(LOGGER,"hmsCallback content: {}", requestBody);
......
JSONObject data = new JSONObject();
data.put("code", "0");
data.put("message", "success");
return data;
}
入参样例
{
"statuses": [{
"clientId": "103961659",
"biTag": "0#5#1.1#console_1730792931023&b89351344a8e1f3b",
"requestId": "173079293285270303027401",
"appid": "103961659",
"status": 0,
"timestamp": 1730792933696,
"token": "IQAAAACy0f7tAABvr6XzidO61rECNx-l-eog1VNUSyZcIo-lPc9ehqnEfIyuIsxxx"
}]
}
荣耀
@ResponseBody
@RequestMapping(value = "/honor", produces = "application/json")
public JSONObject honorCallback(HttpServletRequest httpServletRequest) {
String requestBody = extractRequestBody(httpServletRequest,"honor");
LoggerUtil.info(LOGGER,"honorCallback content: {}", requestBody);
......
JSONObject data = new JSONObject();
data.put("code", "0");
data.put("message", "success");
return data;
}
入参样例
{
"statuses": [{
"appid": "104420205",
"biTag": "0#9#1.1#console_1730794397675&61db03efcf7fc862",
"requestId": "104420205-4fe376129032981e38b60cf15ea77154",
"status": 40000002,
"timestamp": 1730794400089,
"token": "BAEAAAAAB.jlTbS5YDOdhYQKfqri56O6iN7CbY5xxx"
}]
}
鸿蒙
@ResponseBody
@RequestMapping(value = "/harmonyos", produces = "application/json")
public JSONObject harmonyosCallback(HttpServletRequest httpServletRequest) {
String requestBody = extractRequestBody(httpServletRequest,"harmonyos");
LoggerUtil.info(LOGGER,"harmonyosCallback content: {}", requestBody);
......
JSONObject data = new JSONObject();
data.put("code", "0");
data.put("message", "success");
return data;
}
入参样例
{
"statuses": [{
"biTag": "0#11#null#console_1730776169529&6e8afeebfc8a45a0",
"requestId": "173077617124367218031101",
"appPackageName": "com.alipay.demo",
"deliveryStatus": {
"result": 5,
"timestamp": 1730776171647
},
"pushType": 0,
"token": "MAMzLgIkEUIGTtUAstOIywAAAGQAAAAAAAHmQeccAFJF5u8WsIrXbQOuxxxxxx"
}]
}
小米
@RequestMapping(value = "/miui", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public void miuiCallback(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
Map<String, String> parameterMap = extractParameterFromRequest(httpServletRequest);
LoggerUtil.info(LOGGER, "miuiCallback content: {}", parameterMap);
......
outData(httpServletResponse, PushResultEnum.SUCCESS.getReason());
}
入参样例
{
"data": {
"smm67747730775367865gS": {
"param": "0#4#1.1#console_1730775366036&671135c53a89dde2",
"barStatus": "Enable",
"type": 1,
"targets": "oUU0LhUv9qgw2HEtgtWmxEqX9ldkWesBHQxxx",
"timestamp": 1730775368258
}
}
}
OPPO
@ResponseBody
@RequestMapping(value = "/oppo", produces = "application/json")
public Result oppoCallback(HttpServletRequest httpServletRequest) {
String requestBody = extractRequestBody(httpServletRequest,"oppo");
LoggerUtil.info(LOGGER,"oppoCallback content: {}", requestBody);
......
return createResult(PushResultEnum.SUCCESS);
}
入参样例
[{
"appId": "30186722",
"eventTime": "1730776852465",
"eventType": "push_arrive",
"messageId": "30186722-1-1-67298eb8f8686b014e6d1a83",
"param": "0#7#1.1#console_1730776758644&282216e3998ff0d0",
"registrationIds": "OPPO_CN_5e33c42e910xxx"
}]
vivo
@ResponseBody
@RequestMapping(value = "/vivo", produces = "application/json")
public Result vivoCallback(HttpServletRequest httpServletRequest) {
String requestBody = extractRequestBody(httpServletRequest,"vivo");
LoggerUtil.info(LOGGER,"vivoCallback content: {}", requestBody);
......
return createResult(PushResultEnum.SUCCESS);
}
入参样例
{
"1303318675076815015": {
"param": "0#8#1.1#console_1730776984809&8903e8823304c0bf",
"targets": "v2-CRi5wSCKrfIr7yWs_BKTpim6RbPAnEMVah6xxx",
"ackTime": 1730776986789,
"ackType": "0"
}
}
该文章对您有帮助吗?