|
|
@@ -93,7 +93,7 @@ public class WxpayController {
|
|
|
}
|
|
|
|
|
|
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = createWxPayUnifiedOrderRequest(request, projectRecode, WxPayConstants.TradeType.NATIVE);
|
|
|
- Map map = unifiedOrder(wxPayUnifiedOrderRequest);
|
|
|
+ Map map = unifiedOrder(wxPayUnifiedOrderRequest, null);
|
|
|
if ("FAIL".equals(map.get("status"))) {
|
|
|
modelMap.put("error", map.get("message"));
|
|
|
} else {
|
|
|
@@ -101,7 +101,6 @@ public class WxpayController {
|
|
|
modelMap.put("outTradeNo", projectRecode.getId());
|
|
|
}
|
|
|
|
|
|
-
|
|
|
return modelMap;
|
|
|
}
|
|
|
|
|
|
@@ -157,7 +156,7 @@ public class WxpayController {
|
|
|
wxPayUnifiedOrderRequest.setSubOpenid(openId);//否是 trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。
|
|
|
}
|
|
|
|
|
|
- Map map = unifiedOrder(wxPayUnifiedOrderRequest);
|
|
|
+ Map map = unifiedOrder(wxPayUnifiedOrderRequest, null);
|
|
|
|
|
|
if ("FAIL".equals(map.get("status"))) {
|
|
|
modelMap.put("error", map.get("message"));
|
|
|
@@ -201,7 +200,7 @@ public class WxpayController {
|
|
|
*/
|
|
|
@ResponseBody
|
|
|
@RequestMapping(value = "/wapPay", method = RequestMethod.POST)
|
|
|
- public ModelMap wapPay(@RequestParam("jsonStr") String jsonStr, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
|
|
+ public ModelMap wapPay(@RequestParam("jsonStr") String jsonStr, @RequestParam("currentUrl") String currentUrl, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
|
|
ModelMap modelMap = new ModelMap();
|
|
|
ProjectRecode projectRecode= null;
|
|
|
try {
|
|
|
@@ -213,7 +212,7 @@ public class WxpayController {
|
|
|
}
|
|
|
|
|
|
WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = createWxPayUnifiedOrderRequest(request, projectRecode, WxPayConstants.TradeType.MWEB);
|
|
|
- Map map = unifiedOrder(wxPayUnifiedOrderRequest);
|
|
|
+ Map map = unifiedOrder(wxPayUnifiedOrderRequest, currentUrl);
|
|
|
if ("FAIL".equals(map.get("status"))) {
|
|
|
modelMap.put("error", map.get("message"));
|
|
|
} else {
|
|
|
@@ -225,7 +224,11 @@ public class WxpayController {
|
|
|
|
|
|
|
|
|
//通过统一下单接口发起请求,获得prepay_id(预支付交易会话标识),这个标示是微信提交支付的关键数据
|
|
|
- public Map unifiedOrder(WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest) throws Exception {
|
|
|
+ public Map unifiedOrder(WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest, String currentUrl) throws Exception {
|
|
|
+ //TODO 服务商模式 线程安全 synchronized
|
|
|
+// wxPayApi.getConfig().setSubAppId("wxbc1f8607137d3b8a");
|
|
|
+// wxPayApi.getConfig().setSubMchId("huangchengtianusoftchina1234567
|
|
|
+
|
|
|
Map map = new HashMap();
|
|
|
WxPayUnifiedOrderResult wxPayUnifiedOrderResult = null;
|
|
|
try {
|
|
|
@@ -234,8 +237,14 @@ public class WxpayController {
|
|
|
//map.put("status", "SUCCESS");
|
|
|
if (WxPayConstants.TradeType.MWEB.equals(wxPayUnifiedOrderRequest.getTradeType())) {
|
|
|
/*H5支付开发步骤:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4*/
|
|
|
- String mwebUrl = wxPayUnifiedOrderResult.getMwebUrl() + "&redirect_url=" + URLEncoder.encode("http://lj.ubtob.com/project#/donationsOver/" + wxPayUnifiedOrderRequest.getOutTradeNo(),"UTF-8");
|
|
|
- //String mwebUrl = wxPayUnifiedOrderResult.getMwebUrl();
|
|
|
+ //String mwebUrl = wxPayUnifiedOrderResult.getMwebUrl() + "&redirect_url=" + URLEncoder.encode("http://lj.ubtob.com/project#/donationsOver/" + wxPayUnifiedOrderRequest.getOutTradeNo(),"UTF-8");
|
|
|
+ String mwebUrl = null;
|
|
|
+ if (currentUrl != null) {
|
|
|
+ logger.error("当前用户所在页面url:{}", currentUrl);
|
|
|
+ mwebUrl = wxPayUnifiedOrderResult.getMwebUrl() + "&redirect_url=" + URLEncoder.encode(currentUrl + "/" + wxPayUnifiedOrderRequest.getOutTradeNo(),"UTF-8");;
|
|
|
+ } else {
|
|
|
+ mwebUrl = wxPayUnifiedOrderResult.getMwebUrl();
|
|
|
+ }
|
|
|
map.put("mwebUrl", mwebUrl);
|
|
|
} else if (WxPayConstants.TradeType.NATIVE.equals(wxPayUnifiedOrderRequest.getTradeType())) {
|
|
|
//扫码支付
|