|
@@ -1,18 +1,25 @@
|
|
|
package com.zskk.controller;
|
|
|
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
|
|
|
import com.jfinal.core.Controller;
|
|
|
import com.jfinal.core.NotAction;
|
|
|
import com.jfinal.kit.HttpKit;
|
|
|
import com.jfinal.kit.StrKit;
|
|
|
+import com.jfinal.weixin.sdk.api.ApiConfigKit;
|
|
|
import com.jfinal.weixin.sdk.api.PaymentApi;
|
|
|
+import com.jfinal.weixin.sdk.api.SnsAccessToken;
|
|
|
import com.jfinal.weixin.sdk.api.PaymentApi.TradeType;
|
|
|
import com.jfinal.weixin.sdk.kit.IpKit;
|
|
|
import com.jfinal.weixin.sdk.kit.PaymentKit;
|
|
|
import com.jfinal.weixin.sdk.utils.HttpUtils;
|
|
|
import com.jfinal.weixin.sdk.utils.JsonUtils;
|
|
|
+import com.zskk.service.ServiceFactory;
|
|
|
+import com.zskk.service.WeixinService;
|
|
|
|
|
|
public class WeixinPayController extends Controller {
|
|
|
|
|
@@ -29,8 +36,23 @@ public class WeixinPayController extends Controller {
|
|
|
String origin = this.getRequest().getHeader("Origin");
|
|
|
this.getResponse().setHeader("Access-Control-Allow-Origin", origin);
|
|
|
this.getResponse().setHeader("Access-Control-Allow-Credentials", Boolean.TRUE.toString());
|
|
|
+ String asString = this.getPara("out_trade_no");
|
|
|
+ String bbString = this.getPara("appId");
|
|
|
+
|
|
|
+ WeixinService wService = ServiceFactory.getService(WeixinService.class);
|
|
|
+ String codeString = "";
|
|
|
+ ApiConfigKit.setThreadLocalAppId(bbString);
|
|
|
+ try {
|
|
|
+ String url = wService.getCodeUrl(ApiConfigKit.getApiConfig().getAppId(), getRequest().getRequestURL().toString() + "?appId=" + ApiConfigKit.getApiConfig().getAppId());
|
|
|
+ codeString = getParamByUrl(url, "code");
|
|
|
+ } catch (UnsupportedEncodingException e) {
|
|
|
+ // TODO Auto-generated catch block
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ SnsAccessToken snsAccessToken = wService.getWebAccessToken(ApiConfigKit.getApiConfig().getAppId(), ApiConfigKit.getApiConfig().getAppSecret(), codeString);
|
|
|
+
|
|
|
// openId,采用 网页授权获取 access_token API:SnsAccessTokenApi获取
|
|
|
- String openId = "oEhm60uDHXDbTcQZOuQt612ds-Pc";
|
|
|
+ String openId = snsAccessToken.getOpenid();
|
|
|
|
|
|
// 统一下单文档地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1
|
|
|
|
|
@@ -38,7 +60,7 @@ public class WeixinPayController extends Controller {
|
|
|
params.put("appid", appid);
|
|
|
params.put("mch_id", partner);
|
|
|
params.put("body", "远程诊断收费测试");
|
|
|
- params.put("out_trade_no", "977773682111");
|
|
|
+ params.put("out_trade_no", asString);
|
|
|
params.put("total_fee", "1");
|
|
|
|
|
|
String ip = IpKit.getRealIp(getRequest());
|
|
@@ -458,4 +480,19 @@ public class WeixinPayController extends Controller {
|
|
|
// 微信那边的开发建议用a标签打开该链接
|
|
|
setAttr("url", url);
|
|
|
}
|
|
|
+
|
|
|
+ public String getParamByUrl(String url, String name) {
|
|
|
+ url += "&";
|
|
|
+ String pattern = "(\\?|&){1}#{0,1}" + name + "=[a-zA-Z0-9]*(&{1})";
|
|
|
+
|
|
|
+ Pattern r = Pattern.compile(pattern);
|
|
|
+
|
|
|
+ Matcher m = r.matcher(url);
|
|
|
+ if (m.find( )) {
|
|
|
+// System.out.println(m.group(0));
|
|
|
+ return m.group(0).split("=")[1].replace("&", "");
|
|
|
+ } else {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|