做服务端接收奇门的请求
在天猫的开放平台,做接口的时候…有些是需要天猫奇门回传回数据…所以做个例子…保存
如:qimen.alibaba.dchain.aoxiang.sign.seller.notify
就是我们做服务端接收奇门的请求:
配置路由
写服务端
package net.shopxx.controller.intf;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.taobao.api.internal.util.WebUtils;
import net.sf.json.JSONObject;
import net.shopxx.util.LogUtils;
import net.shopxx.util.TaobaoSignUtil;
import net.shopxx.util.XMLTool;
@Controller("intftb")
@RequestMapping("/intf/tb")
public class intftb {
@RequestMapping(value = "/notify", produces = MediaType.TEXT_XML_VALUE)
public @ResponseBody String notify(@RequestBody String xmlData) {
String result = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + "<response>\n" + " <success>false</success>\n"
+ " <errorCode>sign-check-failure</errorCode>\n" + " <errorMsg>Illegal request</errorMsg>\n"
+ "</response>";
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
String ctype = request.getContentType();
String charset = WebUtils.getResponseCharset(ctype);
try {
Map<String, String> queryMap = TaobaoSignUtil.getQueryMap(request, charset);
String localSign = TaobaoSignUtil.signTopRequest(queryMap, xmlData, "签名秘钥",
"md5");
System.out.println("回传验签:" + localSign);
String sign = request.getParameter("sign") == null ? "" : request.getParameter("sign");
System.out.println("远程sign:" + sign);
String reqcontent = JSONObject.fromObject(queryMap).toString();
System.out.println("回传:" + reqcontent);
System.out.println("回传主体:" + xmlData);
result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<response>\n"
+ " <success>success</success>\n" + " <errorCode>0</errorCode>\n"
+ " <errorMsg>成功</errorMsg>\n" + " <retry>false</retry>\n" + "</response>";
JSONObject reqcontentJson = JSONObject.fromObject(reqcontent);
String msg = XMLTool.xml2JSON(xmlData);
System.out.println("回馈:msg:"+msg);
System.out.println("API:method:"+reqcontentJson.optString("method"));
if (msg != null && !"".equals(msg)) {
}
return result;
} catch (Exception e) {
LogUtils.writeIntfErrorLog("验签异常", e);
}
return result;
}
}