package cn.jeesoft.mvc.outapi; import javax.servlet.http.HttpServletRequest; import cn.jeesoft.core.util.MD5; import cn.jeesoft.mvc.Config; /** * 通联支付帮助类 * @author king */ public class AllinpayHelper { public static class AllinpayEntity { /** 通联订单号 */ private String paymentOrderId; /** 商户订单号 */ private String orderNo; /** 支付状态 */ private boolean paySuccess; /** 验签状态 */ private boolean verify; public AllinpayEntity() { super(); } public AllinpayEntity(String paymentOrderId, String orderNo, boolean paySuccess, boolean verify) { super(); this.paymentOrderId = paymentOrderId; this.orderNo = orderNo; this.paySuccess = paySuccess; this.verify = verify; } @Override public String toString() { return "AllinpayEntity [paymentOrderId=" + paymentOrderId + ", orderNo=" + orderNo + ", paySuccess=" + paySuccess + ", verify=" + verify + "]"; } public String getPaymentOrderId() { return paymentOrderId; } public void setPaymentOrderId(String paymentOrderId) { this.paymentOrderId = paymentOrderId; } public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public boolean isPaySuccess() { return paySuccess; } public void setPaySuccess(boolean paySuccess) { this.paySuccess = paySuccess; } public boolean isVerify() { return verify; } public void setVerify(boolean verify) { this.verify = verify; } } /** * 获取通联支付通知信息 * @param request HTTP请求 * @return */ public static AllinpayEntity getEntity(HttpServletRequest request) { String merchantId=request.getParameter("merchantId"); String version=request.getParameter("version"); String language=request.getParameter("language"); String signType=request.getParameter("signType"); String payType=request.getParameter("payType"); String issuerId=request.getParameter("issuerId"); String paymentOrderId=request.getParameter("paymentOrderId"); String orderNo=request.getParameter("orderNo"); String orderDatetime=request.getParameter("orderDatetime"); String orderAmount=request.getParameter("orderAmount"); String payDatetime=request.getParameter("payDatetime"); String payAmount=request.getParameter("payAmount"); String ext1=request.getParameter("ext1"); String ext2=request.getParameter("ext2"); String payResult=request.getParameter("payResult"); String errorCode=request.getParameter("errorCode"); String returnDatetime=request.getParameter("returnDatetime"); String signMsg=request.getParameter("signMsg"); AllinpayEntity entity = new AllinpayEntity(); entity.paymentOrderId = paymentOrderId; entity.orderNo = orderNo; // 判断订单状态,为"1"表示支付成功 entity.paySuccess = payResult.equals("1"); // 验签 entity.verify = AllinpayHelper.verify(merchantId, version, signType, payType, paymentOrderId, orderNo, orderDatetime, orderAmount, payDatetime, payAmount, payResult, returnDatetime, signMsg); return entity; } /** * 验证签名 * @param merchantId * @param version * @param signType * @param payType * @param paymentOrderId * @param orderNo * @param orderDatetime * @param orderAmount * @param payDatetime * @param payAmount * @param payResult * @param returnDatetime * @param signMsg * @return ture:验证成功,false:失败 */ public static boolean verify(String merchantId, String version, String signType, String payType, String paymentOrderId, String orderNo, String orderDatetime, String orderAmount, String payDatetime, String payAmount, String payResult, String returnDatetime, String signMsg) { try { StringBuffer buffer = new StringBuffer(); buffer.append("merchantId="+merchantId+"&"); buffer.append("version="+version+"&"); buffer.append("signType="+signType+"&"); buffer.append("payType="+payType+"&"); buffer.append("paymentOrderId="+paymentOrderId+"&"); buffer.append("orderNo="+orderNo+"&"); buffer.append("orderDatetime="+orderDatetime+"&"); buffer.append("orderAmount="+orderAmount+"&"); buffer.append("payDatetime="+payDatetime+"&"); buffer.append("payAmount="+payAmount+"&"); buffer.append("payResult="+payResult+"&"); buffer.append("returnDatetime="+returnDatetime+"&"); buffer.append("key="+Config.ALLINPAY_MD5KEY); return signMsg.equalsIgnoreCase(MD5.md5(buffer.toString())); } catch (Exception e) { } return false; } }