Skip to content

Commit 41905ca

Browse files
committed
升级sdk版本为2.7.0
1 parent 60e4678 commit 41905ca

File tree

2 files changed

+123
-142
lines changed

2 files changed

+123
-142
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
<plugin.maven-compiler>3.1</plugin.maven-compiler>
1919

2020
<!-- lib versions -->
21-
<weixin-java-tools.version>2.6.0</weixin-java-tools.version>
21+
<weixin-java-tools.version>2.7.0</weixin-java-tools.version>
2222
<junit.version>4.12</junit.version>
2323
<slf4j.version>1.7.21</slf4j.version>
2424
<spring.version>4.2.6.RELEASE</spring.version>

src/main/java/com/github/controller/PaymentController.java

Lines changed: 122 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,21 @@
55
import com.github.binarywang.wxpay.bean.result.WxEntPayResult;
66
import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
77
import com.github.binarywang.wxpay.config.WxPayConfig;
8+
import com.github.binarywang.wxpay.exception.WxPayException;
89
import com.github.binarywang.wxpay.service.WxPayService;
910
import com.github.binarywang.wxpay.util.SignUtils;
10-
import com.github.util.MD5Util;
1111
import com.github.util.ReturnModel;
1212
import com.github.util.Sha1Util;
1313
import com.github.util.XMLUtil;
1414
import com.google.gson.Gson;
1515
import me.chanjar.weixin.common.exception.WxErrorException;
16-
import org.apache.http.HttpEntity;
17-
import org.apache.http.client.methods.CloseableHttpResponse;
18-
import org.apache.http.client.methods.HttpPost;
19-
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
20-
import org.apache.http.entity.StringEntity;
21-
import org.apache.http.impl.client.CloseableHttpClient;
22-
import org.apache.http.impl.client.HttpClients;
23-
import org.apache.http.ssl.SSLContexts;
24-
import org.apache.http.util.EntityUtils;
2516
import org.springframework.beans.factory.annotation.Autowired;
2617
import org.springframework.stereotype.Controller;
2718
import org.springframework.web.bind.annotation.RequestMapping;
2819

29-
import javax.net.ssl.SSLContext;
3020
import javax.servlet.http.HttpServletRequest;
3121
import javax.servlet.http.HttpServletResponse;
32-
import java.io.BufferedReader;
33-
import java.io.File;
34-
import java.io.FileInputStream;
35-
import java.io.InputStreamReader;
36-
import java.security.KeyStore;
37-
import java.util.HashMap;
3822
import java.util.Map;
39-
import java.util.Set;
40-
import java.util.TreeMap;
41-
42-
import static java.nio.charset.StandardCharsets.UTF_8;
4323

4424
/**
4525
* 微信支付Controller
@@ -51,132 +31,133 @@
5131
@RequestMapping(value = "wxPay")
5232
public class PaymentController extends GenericController {
5333

54-
@Autowired
55-
private WxPayConfig payConfig;
56-
@Autowired
57-
private WxPayService payService;
34+
@Autowired
35+
private WxPayConfig payConfig;
36+
@Autowired
37+
private WxPayService payService;
5838

59-
/**
60-
* 用于返回预支付的结果 WxMpPrepayIdResult,一般不需要使用此接口
61-
*
62-
* @param response
63-
* @param request
64-
* @throws WxErrorException
65-
*/
66-
@RequestMapping(value = "getPrepayIdResult")
67-
public void getPrepayId(HttpServletResponse response,
68-
HttpServletRequest request) throws WxErrorException {
69-
WxPayUnifiedOrderRequest payInfo = new WxPayUnifiedOrderRequest();
70-
payInfo.setOpenid(request.getParameter("openid"));
71-
payInfo.setOutTradeNo(request.getParameter("out_trade_no"));
72-
payInfo.setTotalFee(Integer.valueOf(request.getParameter("total_fee")));
73-
payInfo.setBody(request.getParameter("body"));
74-
payInfo.setTradeType(request.getParameter("trade_type"));
75-
payInfo.setSpbillCreateIp(request.getParameter("spbill_create_ip"));
76-
payInfo.setNotifyURL("");
77-
this.logger
78-
.info("PartnerKey is :" + this.payConfig.getMchKey());
79-
WxPayUnifiedOrderResult result = this.payService.unifiedOrder(payInfo);
80-
this.logger.info(new Gson().toJson(result));
81-
renderString(response, result);
82-
}
39+
/**
40+
* 用于返回预支付的结果 WxMpPrepayIdResult,一般不需要使用此接口
41+
*
42+
* @param response
43+
* @param request
44+
* @throws WxErrorException
45+
*/
46+
@RequestMapping(value = "getPrepayIdResult")
47+
public void getPrepayId(HttpServletResponse response,
48+
HttpServletRequest request) throws WxErrorException, WxPayException {
49+
WxPayUnifiedOrderRequest payInfo = WxPayUnifiedOrderRequest.newBuilder()
50+
.openid(request.getParameter("openid"))
51+
.outTradeNo(request.getParameter("out_trade_no"))
52+
.totalFee(Integer.valueOf(request.getParameter("total_fee")))
53+
.body(request.getParameter("body"))
54+
.tradeType(request.getParameter("trade_type"))
55+
.spbillCreateIp(request.getParameter("spbill_create_ip"))
56+
.notifyURL("")
57+
.build();
58+
this.logger
59+
.info("PartnerKey is :" + this.payConfig.getMchKey());
60+
WxPayUnifiedOrderResult result = this.payService.unifiedOrder(payInfo);
61+
this.logger.info(new Gson().toJson(result));
62+
renderString(response, result);
63+
}
8364

84-
/**
85-
* 返回前台H5调用JS支付所需要的参数,公众号支付调用此接口
86-
*
87-
* @param response
88-
* @param request
89-
*/
90-
@RequestMapping(value = "getJSSDKPayInfo")
91-
public void getJSSDKPayInfo(HttpServletResponse response,
92-
HttpServletRequest request) {
93-
ReturnModel returnModel = new ReturnModel();
94-
WxPayUnifiedOrderRequest prepayInfo = new WxPayUnifiedOrderRequest();
95-
prepayInfo.setOpenid(request.getParameter("openid"));
96-
prepayInfo.setOutTradeNo(request.getParameter("out_trade_no"));
97-
prepayInfo.setTotalFee(Integer.valueOf(request.getParameter("total_fee")));
98-
prepayInfo.setBody(request.getParameter("body"));
99-
prepayInfo.setTradeType(request.getParameter("trade_type"));
100-
prepayInfo.setSpbillCreateIp(request.getParameter("spbill_create_ip"));
101-
//TODO(user) 填写通知回调地址
102-
prepayInfo.setNotifyURL("");
65+
/**
66+
* 返回前台H5调用JS支付所需要的参数,公众号支付调用此接口
67+
*
68+
* @param response
69+
* @param request
70+
*/
71+
@RequestMapping(value = "getJSSDKPayInfo")
72+
public void getJSSDKPayInfo(HttpServletResponse response,
73+
HttpServletRequest request) {
74+
ReturnModel returnModel = new ReturnModel();
75+
WxPayUnifiedOrderRequest prepayInfo = WxPayUnifiedOrderRequest.newBuilder()
76+
.openid(request.getParameter("openid"))
77+
.outTradeNo(request.getParameter("out_trade_no"))
78+
.totalFee(Integer.valueOf(request.getParameter("total_fee")))
79+
.body(request.getParameter("body"))
80+
.tradeType(request.getParameter("trade_type"))
81+
.spbillCreateIp(request.getParameter("spbill_create_ip"))
82+
.notifyURL("")//TODO(user) 填写通知回调地址
83+
.build();
10384

104-
try {
105-
Map<String, String> payInfo = this.payService.getPayInfo(prepayInfo);
106-
returnModel.setResult(true);
107-
returnModel.setDatum(payInfo);
108-
renderString(response, returnModel);
109-
} catch (WxErrorException e) {
110-
returnModel.setResult(false);
111-
returnModel.setReason(e.getError().toString());
112-
renderString(response, returnModel);
113-
this.logger.error(e.getError().toString());
114-
}
115-
}
85+
try {
86+
Map<String, String> payInfo = this.payService.getPayInfo(prepayInfo);
87+
returnModel.setResult(true);
88+
returnModel.setDatum(payInfo);
89+
renderString(response, returnModel);
90+
} catch (WxPayException e) {
91+
returnModel.setResult(false);
92+
returnModel.setReason(e.getErrCodeDes());
93+
renderString(response, returnModel);
94+
this.logger.error(e.getErrCodeDes());
95+
}
96+
}
11697

117-
/**
118-
* 微信通知支付结果的回调地址,notify_url
119-
*
120-
* @param request
121-
* @param response
122-
*/
123-
@RequestMapping(value = "getJSSDKCallbackData")
124-
public void getJSSDKCallbackData(HttpServletRequest request,
125-
HttpServletResponse response) {
126-
try {
127-
synchronized (this) {
128-
Map<String, String> kvm = XMLUtil.parseRequestXmlToMap(request);
129-
if (SignUtils.checkSign(kvm, this.payConfig.getMchKey())) {
130-
if (kvm.get("result_code").equals("SUCCESS")) {
131-
//TODO(user) 微信服务器通知此回调接口支付成功后,通知给业务系统做处理
132-
logger.info("out_trade_no: " + kvm.get("out_trade_no") + " pay SUCCESS!");
133-
response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[ok]]></return_msg></xml>");
134-
} else {
135-
this.logger.error("out_trade_no: "
136-
+ kvm.get("out_trade_no") + " result_code is FAIL");
137-
response.getWriter().write(
138-
"<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[result_code is FAIL]]></return_msg></xml>");
139-
}
140-
} else {
141-
response.getWriter().write(
142-
"<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[check signature FAIL]]></return_msg></xml>");
143-
this.logger.error("out_trade_no: " + kvm.get("out_trade_no")
144-
+ " check signature FAIL");
145-
}
146-
}
147-
} catch (Exception e) {
148-
e.printStackTrace();
149-
}
150-
}
98+
/**
99+
* 微信通知支付结果的回调地址,notify_url
100+
*
101+
* @param request
102+
* @param response
103+
*/
104+
@RequestMapping(value = "getJSSDKCallbackData")
105+
public void getJSSDKCallbackData(HttpServletRequest request,
106+
HttpServletResponse response) {
107+
try {
108+
synchronized (this) {
109+
Map<String, String> kvm = XMLUtil.parseRequestXmlToMap(request);
110+
if (SignUtils.checkSign(kvm, this.payConfig.getMchKey())) {
111+
if (kvm.get("result_code").equals("SUCCESS")) {
112+
//TODO(user) 微信服务器通知此回调接口支付成功后,通知给业务系统做处理
113+
logger.info("out_trade_no: " + kvm.get("out_trade_no") + " pay SUCCESS!");
114+
response.getWriter().write("<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[ok]]></return_msg></xml>");
115+
} else {
116+
this.logger.error("out_trade_no: "
117+
+ kvm.get("out_trade_no") + " result_code is FAIL");
118+
response.getWriter().write(
119+
"<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[result_code is FAIL]]></return_msg></xml>");
120+
}
121+
} else {
122+
response.getWriter().write(
123+
"<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[check signature FAIL]]></return_msg></xml>");
124+
this.logger.error("out_trade_no: " + kvm.get("out_trade_no")
125+
+ " check signature FAIL");
126+
}
127+
}
128+
} catch (Exception e) {
129+
e.printStackTrace();
130+
}
131+
}
151132

152-
@RequestMapping(value = "entPay")
153-
public void payToIndividual(HttpServletResponse response,
154-
HttpServletRequest request) {
155-
WxEntPayRequest wxEntPayRequest = new WxEntPayRequest();
156-
wxEntPayRequest.setAppid(payConfig.getAppId());
157-
wxEntPayRequest.setMchId(payConfig.getMchId());
158-
wxEntPayRequest.setNonceStr(Sha1Util.getNonceStr());
159-
wxEntPayRequest.setPartnerTradeNo(request.getParameter("partner_trade_no"));
160-
wxEntPayRequest.setOpenid(request.getParameter("openid"));
161-
wxEntPayRequest.setCheckName("NO_CHECK");
162-
wxEntPayRequest.setAmount(Integer.valueOf(request.getParameter("amount")));
163-
wxEntPayRequest.setDescription(request.getParameter("desc"));
164-
wxEntPayRequest.setSpbillCreateIp(request.getParameter("spbill_create_ip"));
133+
@RequestMapping(value = "entPay")
134+
public void payToIndividual(HttpServletResponse response,
135+
HttpServletRequest request) {
136+
WxEntPayRequest wxEntPayRequest = new WxEntPayRequest();
137+
wxEntPayRequest.setAppid(payConfig.getAppId());
138+
wxEntPayRequest.setMchId(payConfig.getMchId());
139+
wxEntPayRequest.setNonceStr(Sha1Util.getNonceStr());
140+
wxEntPayRequest.setPartnerTradeNo(request.getParameter("partner_trade_no"));
141+
wxEntPayRequest.setOpenid(request.getParameter("openid"));
142+
wxEntPayRequest.setCheckName("NO_CHECK");
143+
wxEntPayRequest.setAmount(Integer.valueOf(request.getParameter("amount")));
144+
wxEntPayRequest.setDescription(request.getParameter("desc"));
145+
wxEntPayRequest.setSpbillCreateIp(request.getParameter("spbill_create_ip"));
165146

166-
try {
167-
WxEntPayResult wxEntPayResult = payService.entPay(wxEntPayRequest);
168-
if ("SUCCESS".equals(wxEntPayResult.getResultCode().toUpperCase())
169-
&& "SUCCESS"
170-
.equals(wxEntPayResult.getReturnCode().toUpperCase())) {
171-
this.logger.info("企业对个人付款成功!\n付款信息:\n" + wxEntPayResult.toString());
172-
} else {
173-
this.logger.error("err_code: " + wxEntPayResult.getErrCode()
174-
+ " err_code_des: " + wxEntPayResult.getErrCodeDes());
175-
}
176-
} catch (Exception e) {
177-
e.printStackTrace();
178-
}
179-
}
147+
try {
148+
WxEntPayResult wxEntPayResult = payService.entPay(wxEntPayRequest);
149+
if ("SUCCESS".equals(wxEntPayResult.getResultCode().toUpperCase())
150+
&& "SUCCESS"
151+
.equals(wxEntPayResult.getReturnCode().toUpperCase())) {
152+
this.logger.info("企业对个人付款成功!\n付款信息:\n" + wxEntPayResult.toString());
153+
} else {
154+
this.logger.error("err_code: " + wxEntPayResult.getErrCode()
155+
+ " err_code_des: " + wxEntPayResult.getErrCodeDes());
156+
}
157+
} catch (Exception e) {
158+
e.printStackTrace();
159+
}
160+
}
180161

181162
}
182163

0 commit comments

Comments
 (0)