解决方案 »
- 救命。。。SSH框架struts2默认theme成default了
- 求解 我想通过java Map 修改Bean里的c的存储数据怎么做呢 代码如下
- Tomcat6.0配置到MyEclipse 10启动错误,但单独启动tomcat是正常的。
- apache mina 与 C++ 远程通讯问题
- 关于业务逻辑的try catch的问题
- 新手求助,jsp的问题
- 思想家们请发言: Java 基础都学差不多了,但是感觉现在没啥进步了。
- 写了个简单CMP Entity Bean,在运行是报错,请帮忙
- xml文件上传问题!
- 请教:如何正确的配置apache+tomcat??
- 求助大神,javaweb问题
- 关于java.lang.IllegalStateException报错
这个是退款请求的生成,他会跳到支付宝自己的退款页面,
public static void reFund(PrintWriter out, String refund_date, String batch_no, String detail_data) {
String notify_url = "http://127.0.0.1:8080/order/notify_url";
String seller_email = "[email protected]";
String batch_num = "1";
//把请求参数打包成数组
Map<String, String> sParaTemp = new HashMap<>();
sParaTemp.put("service", "refund_fastpay_by_platform_pwd");
sParaTemp.put("partner", AlipayConfig.partner);
sParaTemp.put("_input_charset", AlipayConfig.input_charset);
sParaTemp.put("notify_url", notify_url);
sParaTemp.put("seller_email", seller_email);
sParaTemp.put("refund_date", refund_date);
sParaTemp.put("batch_no", batch_no);
sParaTemp.put("batch_num", batch_num);
sParaTemp.put("detail_data", detail_data);
//建立请求
String sHtmlText = RefundSubmit.buildRequest(sParaTemp, "get", "确认");
out.println(sHtmlText);
}完了以后,本应该会返回notify_url的,代码如下: public static String notify_url(HttpServletRequest request) {
//即时到账退款返回
String result = "";
Map<String, String> params = new HashMap<>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
try {
//乱码解决
valueStr = new String(valueStr.getBytes("ISO-8859-1"), "gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
params.put(name, valueStr);
}
//获取支付宝的通知返回参数
String batch_no = "";
String success_num = "";
String result_details = "";
try {
batch_no = new String(request.getParameter("batch_no").getBytes("ISO-8859-1"), "UTF-8");
success_num = new String(request.getParameter("success_num").getBytes("ISO-8859-1"), "UTF-8");
result_details = new String(request.getParameter("result_details").getBytes("UTF-8"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (AlipayNotify.verify(params)) {//验证成功
result = "success";
} else {//验证失败
result = "fail";
}
return result;
},但是没有做任何返回验证,直接就退款了,管理员操作完退款后页面如下:,到此,钱已经退回去了,但是没有进入notify_url方法。
@RequestMapping(value = "notify_url", method = RequestMethod.GET)
public void notify_url(HttpServletRequest request) {
String result = AlipayHandle.notify_url(request);
if ("success".equals(result)) {
System.out.println("================111111111111111================");
}
}在支付流程的时候就能正常返回验证,但是退款就不行,不知道怎么滴,大神求解决