diff --git a/mallinkCallback/src/main/java/com/iformall/controller/callback/AliPayController.java b/mallinkCallback/src/main/java/com/iformall/controller/callback/AliPayController.java index 80403021e..f4cfac41c 100644 --- a/mallinkCallback/src/main/java/com/iformall/controller/callback/AliPayController.java +++ b/mallinkCallback/src/main/java/com/iformall/controller/callback/AliPayController.java @@ -16,6 +16,8 @@ import com.iformall.service.pay.alipay.AliPayUtil; import com.iformall.service.pay.alipay.api.enums.EnumMemberCardConfig; import com.iformall.service.pay.alipay.api.result.UserAuthData; import com.iformall.utils.AlipayMsgPage; +import com.iformall.utils.Base64Util; + import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -89,7 +91,12 @@ public class AliPayController extends BaseController { } //商家授权给ISV后的回调 if ("alipay_app_auth".equals(source)) { - String tenantId = request.getParameter("state"); + String state = request.getParameter("state"); + if (StringUtils.isBlank(state)) { + writeResponse(response,"Param Error!state is null."); + return; + } + String tenantId = new String(Base64Util.decode(state)); if (StringUtils.isBlank(tenantId)) { writeResponse(response,"Param Error!tenantId is null."); return; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java b/mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java index c4e3ac5c6..d9e7632d8 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/alipay/api/AliPayApi.java @@ -12,6 +12,7 @@ import com.iformall.service.pay.alipay.api.reqEntity.AlipayMemberCardModelReques import com.iformall.service.pay.alipay.api.reqEntity.AlipayMemberCardModelStyle; import com.iformall.utils.DateUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.logging.log4j.util.Base64Util; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; @@ -80,7 +81,20 @@ public class AliPayApi { if (!StringUtils.isBlank(param)) { state = param; } - return "https://b.alipay.com/page/message/tasksDetail?bizData="+URLEncoder.encode("{\"platformCode\":\"O\",\"taskType\":\"INTERFACE_AUTH\",\"agentOpParam\":{\"redirectUri\":"+callback+",\"appTypes\":\"[\"WEBAPP\"]\",\"isvAppId\":"+config.appId+",\"state\":"+state+"}}"); + Map map = new HashMap(); + map.put("platformCode", "0"); + map.put("taskType", "INTERFACE_AUTH"); + + Map agentOpParam = new HashMap(); + agentOpParam.put("redirectUri", callback); + String[] apptypes = new String[]{"MOBILEAPP","WEBAPP","PUBLICAPP","TINYAPP","BASEAPP"}; + agentOpParam.put("appTypes", apptypes); + agentOpParam.put("isvAppId", config.appId); + agentOpParam.put("state", Base64Util.encode(param)); + + map.put("agentOpParam", agentOpParam); + + return "https://b.alipay.com/page/message/tasksDetail?bizData="+URLEncoder.encode(JSON.toJSONString(map), "utf-8"); } /**