|
@@ -201,44 +201,47 @@ public class AlipayServiceImpl extends PayService implements OrderPayService {
|
|
|
HashMap<String, String> result = new HashMap<>();
|
|
|
String body = response.getBody();
|
|
|
result.put("fromData", body);
|
|
|
- //安卓与ios系统时才单独获取app支付地址
|
|
|
- if (product.getDeviceSystem().contains(OsEnum.SYSTEM_ANDROID.getOs()) || product.getDeviceSystem().contains(OsEnum.SYSTEM_IOS.getOs())) {
|
|
|
- Pattern pattern = Pattern.compile("action=\"(.*)\">", Pattern.CASE_INSENSITIVE);
|
|
|
- Matcher matcher = pattern.matcher(body);
|
|
|
- if (matcher.find()) {
|
|
|
- String url = matcher.group();
|
|
|
- url = url.substring(8, url.length() - 2);
|
|
|
- System.out.println(url);
|
|
|
- Pattern param = Pattern.compile("value=\"(.*)\">", Pattern.CASE_INSENSITIVE);
|
|
|
- Matcher paraMatcher = param.matcher(body);
|
|
|
- if (paraMatcher.find()) {
|
|
|
- String paramData = paraMatcher.group();
|
|
|
- paramData = paramData.substring(7, paramData.length() - 2);
|
|
|
- paramData = paramData.replace(""", "\"");
|
|
|
- String mobileClientUrl = HttpUtil.postDataUrl(url, "biz_content=" + paramData, null);
|
|
|
- System.out.println(mobileClientUrl);
|
|
|
- String alipayContentBody = HttpUtil.postData(mobileClientUrl, "");
|
|
|
- Pattern mobileClientParam = Pattern.compile("\\{\"queryResultUrl\".*?\"}", Pattern.CASE_INSENSITIVE);
|
|
|
- Matcher mobileClientMatcher = mobileClientParam.matcher(alipayContentBody);
|
|
|
- System.out.println(mobileClientMatcher);
|
|
|
- String deeplink_android = "alipays://platformapi/startApp?appId=20000125&orderSuffix=";
|
|
|
- String deeplink_ios = "alipay://alipayclient/?";
|
|
|
- if (mobileClientMatcher.find()) {
|
|
|
- //示例:{"queryResultUrl":"/h5/h5RoutePayResultQuery.json?h5_route_token=GZ00rxXoidjHj2airAK8nhYz70MUBsmobilecashierGZ00","invokeAlipayData":{"dataString":"h5_route_token=\"GZ00rxXoidjHj2airAK8nhYz70MUBsmobilecashierGZ00\"&is_h5_route=\"true\""}
|
|
|
- String pageData = mobileClientMatcher.group() + "}";
|
|
|
- JSONObject jsonObject = JSONObject.parseObject(pageData);
|
|
|
- Object invokeAlipayData = jsonObject.get("invokeAlipayData");
|
|
|
- String dataString = JSONObject.parseObject(invokeAlipayData.toString()).get("dataString").toString();
|
|
|
- deeplink_android += URLEncoder.encode(dataString, "utf-8");
|
|
|
- deeplink_ios += URLEncoder.encode(pageData, "utf-8");
|
|
|
- if (product.getDeviceSystem().contains(OsEnum.SYSTEM_ANDROID.getOs())) {
|
|
|
- result.put("appLink", deeplink_android);
|
|
|
- } else {
|
|
|
- result.put("appLink", deeplink_ios);
|
|
|
+ try {
|
|
|
+ //安卓与ios系统时才单独获取app支付地址
|
|
|
+ if (product.getDeviceSystem().contains(OsEnum.SYSTEM_ANDROID.getOs()) || product.getDeviceSystem().contains(OsEnum.SYSTEM_IOS.getOs())) {
|
|
|
+ Pattern pattern = Pattern.compile("action=\"(.*)\">", Pattern.CASE_INSENSITIVE);
|
|
|
+ Matcher matcher = pattern.matcher(body);
|
|
|
+ if (matcher.find()) {
|
|
|
+ String url = matcher.group();
|
|
|
+ url = url.substring(8, url.length() - 2);
|
|
|
+ Pattern param = Pattern.compile("value=\"(.*)\">", Pattern.CASE_INSENSITIVE);
|
|
|
+ Matcher paraMatcher = param.matcher(body);
|
|
|
+ if (paraMatcher.find()) {
|
|
|
+ String paramData = paraMatcher.group();
|
|
|
+ paramData = paramData.substring(7, paramData.length() - 2);
|
|
|
+ paramData = paramData.replace(""", "\"");
|
|
|
+ String mobileClientUrl = HttpUtil.postDataUrl(url, "biz_content=" + paramData, null);
|
|
|
+ System.out.println(mobileClientUrl);
|
|
|
+ String alipayContentBody = HttpUtil.postData(mobileClientUrl, "");
|
|
|
+ Pattern mobileClientParam = Pattern.compile("\\{\"queryResultUrl\".*?\"}", Pattern.CASE_INSENSITIVE);
|
|
|
+ Matcher mobileClientMatcher = mobileClientParam.matcher(alipayContentBody);
|
|
|
+ System.out.println(mobileClientMatcher);
|
|
|
+ String deeplink_android = "alipays://platformapi/startApp?appId=20000125&orderSuffix=";
|
|
|
+ String deeplink_ios = "alipay://alipayclient/?";
|
|
|
+ if (mobileClientMatcher.find()) {
|
|
|
+ //示例:{"queryResultUrl":"/h5/h5RoutePayResultQuery.json?h5_route_token=GZ00rxXoidjHj2airAK8nhYz70MUBsmobilecashierGZ00","invokeAlipayData":{"dataString":"h5_route_token=\"GZ00rxXoidjHj2airAK8nhYz70MUBsmobilecashierGZ00\"&is_h5_route=\"true\""}
|
|
|
+ String pageData = mobileClientMatcher.group() + "}";
|
|
|
+ JSONObject jsonObject = JSONObject.parseObject(pageData);
|
|
|
+ Object invokeAlipayData = jsonObject.get("invokeAlipayData");
|
|
|
+ String dataString = JSONObject.parseObject(invokeAlipayData.toString()).get("dataString").toString();
|
|
|
+ deeplink_android += URLEncoder.encode(dataString, "utf-8");
|
|
|
+ deeplink_ios += URLEncoder.encode(pageData, "utf-8");
|
|
|
+ if (product.getDeviceSystem().contains(OsEnum.SYSTEM_ANDROID.getOs())) {
|
|
|
+ result.put("appLink", deeplink_android);
|
|
|
+ } else {
|
|
|
+ result.put("appLink", deeplink_ios);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ logger.error("获取支付包app支付时发生异常,已通过from表单形式调起支付 fromData:{}, e:{}", body, e);
|
|
|
}
|
|
|
return ResultMap.ok(product.getPayDevice(), result);
|
|
|
}
|