微信支付之关闭订单
应用场景
以下情况需要调用关单接口:商户订单支付失败需要生成新单号重新发起支付,要对原订单号调用关单,避免重复支付;系统下单后,用户支付超时,系统退出不再受理,避免用户继续,请调用关单接口。
官方文档:http://pay.weixin.qq.com/wiki/doc/api/index.php?chapter=9_3
参考代码如下:
package com.wingo.action.config;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import com.wingo.util.CommonUtil;
import com.wingo.util.ConfigUtil;
import com.wingo.util.PayCommonUtil;
import com.wingo.util.XMLUtil;
/**
*
* @author 李欣桦
* @date 2015-1-6下午5:13:47
*
* 关闭订单接口
*/
public class CloseOrderAction {
public static void main(String[]args) throws Exception {
SortedMap<Object,Object> parameters =new TreeMap<Object,Object>();
parameters.put("appid",ConfigUtil.APPID);
parameters.put("mch_id",ConfigUtil.MCH_ID);
parameters.put("out_trade_no","1832484260");//商户订单号,要唯一
parameters.put("nonce_str",PayCommonUtil.CreateNoncestr());
String sign =PayCommonUtil.createSign("utf-8", parameters);
parameters.put("sign", sign);
String reuqestXml =PayCommonUtil.getRequestXml(parameters);
String result=CommonUtil.httpsRequest(ConfigUtil.CHECK_ORDER_URL, "POST",reuqestXml);
System.out.println(result);
Map<String, String> map =XMLUtil.doXMLParse(result);
String returnCode =map.get("return_code");
String resultCode =map.get("result_code");
if(returnCode.equalsIgnoreCase("SUCCESS")&&resultCode.equalsIgnoreCase("SUCCESS")){
//TODO 关闭订单成功的操作
System.out.println("订单关闭成功");
}else {
//TODO 关闭订单失败的操作
}
}
}