最新有些人来问我微信支付这块后台代码,有些人说网上的代码很多坑,在这里我把我一直用的一套代码贴出来,让网友们不再在微信支付后台这里踩坑。
首先微信申请账号、账号配置这些就不写了,百度上有很多,基本上按着步骤来都是正确的,这里只贴相关代码。
1.Controller代码
String sign = null;
Double totalAmount = Double.parseDouble(request.getParameter("totalPrice"));
try {
sign = WeiXinPayUtil.weiXinPay(PayCommonUtil.getRemoteHost(request), HttpUtil.isoToUTF(request.getParameter("description")), totalAmount, request.getParameter("orderNum"), ConstantUtil.notify_url);
} catch (Exception e) {
}
其中getRemoteHost是获取ip地址,代码如下:
public static String getRemoteHost(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;
}
iosToUTF()是转码:
public static String isoToUTF(String string) throws Exception {
if (isNull(string)) {
return "";
} else {
return new String(string.getBytes("ISO-8859-1"), "UTF-8");
}
}
相关工具代码下载地址: