java对接支付宝(四)-即时到账无秘退款
2018-01-25 16:35
357 查看
写在前面:看懂单笔交易关闭,首先得看完即时到账支付文章
F:查询失败
p:处理中
* @param payWayCode
* @param httpServletRequest
* @param httpServletResponse
* @throws Exception
*/
@RequestMapping("/refundNotify/{payWayCode}")
public void refundNotify(@PathVariable("payWayCode")String payWayCode , HttpServletRequest httpServletRequest , HttpServletResponse httpServletResponse) throws Exception {
String encoding ="";
Map<String , String> notifyMap = new HashMap<String , String >();
Map<String, String[]> requestParams = httpServletRequest.getParameterMap();
notifyMap = this.parseNotifyMsg(requestParams);
String str = "fail";
// 签名
if(AlipayNotify.verify(resultMap) {
logger.debug("支付宝签名成功返回结果:" + resultMap);
// 异步通知业务操作
// 回馈信息
str = "success";
}else {
logger.debug("签名失败返回结果:" + notifyMap);
}
httpServletResponse.getWriter().print(str);
}
吊袜带
1、即时到账退款接口
Controller层代码/** * @Description: 支付宝退款 * @author lc * @param orderNo 订单号 * @param refundAmount 退款金额 * @param refundReason 退款原因 * @return */ @RequestMapping("/alipayTradeRefund") public void alipayTradeRefund() { try { String orderNo = getString_UrlDecode_UTF8("orderNo"); String refundAmount = getString_UrlDecode_UTF8("refundAmount"); String refundReason = getString_UrlDecode_UTF8("refundReason"); String mId = getString_UrlDecode_UTF8("mId"); String refundType = getString_UrlDecode_UTF8("refundType"); String channel = getString_UrlDecode_UTF8("channel"); String source = getString_UrlDecode_UTF8("source"); orderNo = "1510795680802"; refundAmount = "0.1"; refundReason = "协商退款"; mId = "1"; String timestamp = DateUtil.format(new Date()); // 把请求参数打包成数组 Map<String, String> sParaTemp = new HashMap<String, String>(); sParaTemp.put("service", "refund_fastpay_by_platform_nopwd"); // sParaTemp.put("out_trade_no", orderNo); sParaTemp.put("partner", AlipayConfigUtil.partner); sParaTemp.put("_input_charset", AlipayConfigUtil.input_charset); sParaTemp.put("notify_url", AlipayConfigUtil.refund_notify_url);// 异步通知地址 sParaTemp.put("dback_notify_url", AlipayConfigUtil.dback_notify_url);// 充值通知地址 sParaTemp.put("refund_date", timestamp);//退款请求时间 sParaTemp.put("refund_reason", refundReason);//退款原因 // sParaTemp.put("trade_no", trade_no); //退款批次号:回调的时候根据此字段修改退款申请的状态 sParaTemp.put("batch_no",DateUtil.currentTime()); sParaTemp.put("batch_num", "1");//退款总笔数 // 支付宝交易号 ^金额 ^协商退款 String detail_data = "2018012521001004290271183144" + "^" + refundAmount + "^" + refundReason; sParaTemp.put("detail_data", detail_data);//单笔数据集 // 建立请求 String sHtmlText = AlipaySubmit.buildRequest("", "", sParaTemp); System.out.println(sHtmlText); } catch (Exception e) { logger.error("alipayTradeRefund:支付宝退款异常!" + e.getMessage()); e.printStackTrace(); } }
2、退款返回参数说明
T:查询成功F:查询失败
p:处理中
3、异步通知
/** pc支付宝和微信退款异步通知* @param payWayCode
* @param httpServletRequest
* @param httpServletResponse
* @throws Exception
*/
@RequestMapping("/refundNotify/{payWayCode}")
public void refundNotify(@PathVariable("payWayCode")String payWayCode , HttpServletRequest httpServletRequest , HttpServletResponse httpServletResponse) throws Exception {
String encoding ="";
Map<String , String> notifyMap = new HashMap<String , String >();
Map<String, String[]> requestParams = httpServletRequest.getParameterMap();
notifyMap = this.parseNotifyMsg(requestParams);
String str = "fail";
// 签名
if(AlipayNotify.verify(resultMap) {
logger.debug("支付宝签名成功返回结果:" + resultMap);
// 异步通知业务操作
// 回馈信息
str = "success";
}else {
logger.debug("签名失败返回结果:" + notifyMap);
}
httpServletResponse.getWriter().print(str);
}
/** * @Description: 解析支付宝发来的请求 * @author lc * @param requestParams * @param */ public static Map<String , String> parseNotifyMsg(Map<String, String[]> requestParams){ Map<String,String> params = new HashMap<String,String>(); for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) { String name = (String) iter.next(); String[] values = requestParams.get(name); String valueStr = ""; for (int i = 0; i < values.length; i++) { valueStr = (i == values.length - 1) ? valueStr + values[i]: valueStr + values[i] + ","; } params.put(name, valueStr); } return params; }注意:太懒了,没有写请求jsp,直接在请求地址写Controller层地址查询了。
吊袜带
相关文章推荐
- java对接支付宝(一)-即时到账支付
- java 支付宝 第三方即时到账支付 接口
- 支付宝第三方接口对接(JAVA语言)
- 微信退款和支付宝退款接口调用(java版)
- java 支付宝 第三方即时到账支付 接口(代码)
- java 支付宝 第三方即时到账支付 接口
- java 微信与支付宝退款接口开发总结
- 微信退款和支付宝退款接口调用(java版)
- 支付宝:即时到账接口对接
- 支付宝接口 - 即时到账交易接口 对接 整理 1
- [支付宝]即时到账接口对接总结
- java 支付宝 第三方即时到账支付 接口
- java对接支付宝(二)-单笔交易查询
- 支付宝接口 - 即时到账交易接口 对接 整理 1
- java 支付宝 第三方即时到账支付 接口
- 支付宝接口 - 即时到账交易接口 对接 整理 2
- 接入支付宝即时到账接口-java
- 微信退款和支付宝退款接口调用(java版)
- 支付宝接口 - 即时到账交易接口 对接 整理 2
- java 支付宝 第三方即时到账支付 接口