|
|
@@ -5,11 +5,11 @@ import com.alipay.api.AlipayApiException;
|
|
|
import com.alipay.api.AlipayClient;
|
|
|
import com.alipay.api.DefaultAlipayClient;
|
|
|
import com.alipay.api.domain.AlipayTradeAppPayModel;
|
|
|
-import com.alipay.api.domain.AlipayTradePagePayModel;
|
|
|
import com.alipay.api.domain.AlipayTradeWapPayModel;
|
|
|
import com.alipay.api.internal.util.AlipaySignature;
|
|
|
import com.alipay.api.request.AlipaySystemOauthTokenRequest;
|
|
|
import com.alipay.api.request.AlipayTradeAppPayRequest;
|
|
|
+import com.alipay.api.request.AlipayTradePagePayRequest;
|
|
|
import com.alipay.api.request.AlipayUserInfoShareRequest;
|
|
|
import com.alipay.api.response.AlipaySystemOauthTokenResponse;
|
|
|
import com.alipay.api.response.AlipayTradeAppPayResponse;
|
|
|
@@ -25,7 +25,6 @@ import com.uas.service.donate.model.ProjectRecode;
|
|
|
import com.uas.service.donate.service.AlipayOrderService;
|
|
|
import com.uas.service.donate.service.AlipayUserService;
|
|
|
import com.uas.service.donate.service.ProjectRecodeService;
|
|
|
-import com.uas.service.donate.util.NumberGenerator;
|
|
|
import com.uas.service.donate.util.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -76,31 +75,32 @@ public class AlipayController {
|
|
|
* 手机 wap支付
|
|
|
*/
|
|
|
@ResponseBody
|
|
|
- @RequestMapping("/wapPay")
|
|
|
- public void wapPay() {
|
|
|
+ @RequestMapping(value = "/wapPay", method = RequestMethod.GET)
|
|
|
+ public void wapPay(@RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
+ ProjectRecode projectRecode= null;
|
|
|
try {
|
|
|
- String timeoutExpress = "30m";
|
|
|
- //String sellerId = "2088102171369624";
|
|
|
- String body = "移动端网页支付";
|
|
|
- String subject = "Wap支付测试";
|
|
|
- String totalAmount = "0.01";
|
|
|
- String passbackParams = URLEncoder.encode("1","UTF-8");//回传参数 附加消息 参数必须进行UrlEncode之后才可以发送给支付宝
|
|
|
- String returnUrl = AlipayConfig.RETURN_URL;
|
|
|
- String notifyUrl = AlipayConfig.NOTIFY_URL;
|
|
|
+ projectRecode = this.createProjectRecode(jsonStr);
|
|
|
+ } catch (Exception e) {
|
|
|
+ response.getWriter().write(e.getMessage());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ String passbackParams = URLEncoder.encode("1",AlipayConfig.CHARSET);//回传参数 附加消息 参数必须进行UrlEncode之后才可以发送给支付宝
|
|
|
|
|
|
AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
|
|
|
- model.setTimeoutExpress(timeoutExpress);//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
|
|
- //model.setSellerId(sellerId);
|
|
|
- model.setBody(body);
|
|
|
- model.setSubject(subject);
|
|
|
- model.setTotalAmount(totalAmount);
|
|
|
+ model.setTimeoutExpress("30m");//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
|
|
+ //model.setSellerId("2088102171369624");
|
|
|
+ model.setBody("移动端网页支付");
|
|
|
+ model.setSubject(projectRecode.getProjectName());
|
|
|
+ model.setTotalAmount(projectRecode.getAmount().toString());
|
|
|
model.setPassbackParams(passbackParams);
|
|
|
- String outTradeNo = NumberGenerator.generateId();
|
|
|
- model.setOutTradeNo(outTradeNo);
|
|
|
+ model.setOutTradeNo(projectRecode.getId().toString());
|
|
|
model.setProductCode("QUICK_WAP_PAY");
|
|
|
|
|
|
- AlipayApi.wapPay(response,model,alipayClient,notifyUrl,returnUrl);
|
|
|
+ AlipayApi.wapPay(response, model, alipayClient, AlipayConfig.NOTIFY_URL, AlipayConfig.RETURN_URL);
|
|
|
} catch (Exception e) {
|
|
|
+ response.getWriter().write(e.getMessage());
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
@@ -109,30 +109,60 @@ public class AlipayController {
|
|
|
* PC支付
|
|
|
*/
|
|
|
@ResponseBody
|
|
|
- @RequestMapping("/pcPay")
|
|
|
- public void pcPay(HttpServletRequest request, HttpServletResponse response){
|
|
|
+ @RequestMapping(value = "/pcPay", method = RequestMethod.GET)
|
|
|
+ public void pcPay(@RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
+ ProjectRecode projectRecode= null;
|
|
|
try {
|
|
|
- String totalAmount = "0.01";
|
|
|
- String outTradeNo = NumberGenerator.generateId();
|
|
|
-
|
|
|
- String returnUrl = AlipayConfig.RETURN_URL;
|
|
|
- String notifyUrl = AlipayConfig.NOTIFY_URL;
|
|
|
- AlipayTradePagePayModel model = new AlipayTradePagePayModel();
|
|
|
-
|
|
|
-
|
|
|
- model.setTimeoutExpress("5m");//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
|
|
- //model.setSellerId("2088102171369624");
|
|
|
- model.setOutTradeNo(outTradeNo);
|
|
|
- model.setProductCode("FAST_INSTANT_TRADE_PAY");
|
|
|
- model.setTotalAmount(totalAmount);
|
|
|
- model.setSubject("PC支付测试");
|
|
|
- model.setBody("PC支付测试body");
|
|
|
- model.setPassbackParams(URLEncoder.encode("附加消息", "UTF-8"));
|
|
|
-
|
|
|
- AlipayApi.tradePage(response,model,alipayClient,notifyUrl,returnUrl);
|
|
|
+ projectRecode = this.createProjectRecode(jsonStr);
|
|
|
} catch (Exception e) {
|
|
|
+ response.getWriter().write(e.getMessage());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();//创建API对应的request
|
|
|
+ alipayRequest.setReturnUrl(AlipayConfig.RETURN_URL);
|
|
|
+ alipayRequest.setNotifyUrl(AlipayConfig.NOTIFY_URL);//在公共参数中设置回跳和通知地址
|
|
|
+ alipayRequest.setBizContent("{" +
|
|
|
+ " \"out_trade_no\":" + projectRecode.getId().toString() + "," +
|
|
|
+ " \"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
|
|
|
+ " \"total_amount\":" + projectRecode.getAmount().toString() + "," +
|
|
|
+ " \"subject\":" + "不晓得填什么" + "," +
|
|
|
+ " \"body\":" + projectRecode.getProjectName() + "," +
|
|
|
+ " \"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
|
|
|
+ " }");//填充业务参数
|
|
|
+ String form="";
|
|
|
+ try {
|
|
|
+ form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
|
|
|
+ } catch (AlipayApiException e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
|
|
|
+ response.getWriter().write(form);//直接将完整的表单html输出到页面
|
|
|
+ response.getWriter().flush();
|
|
|
+ response.getWriter().close();
|
|
|
+
|
|
|
+// try {
|
|
|
+// String totalAmount = "0.01";
|
|
|
+// String outTradeNo = NumberGenerator.generateId();
|
|
|
+//
|
|
|
+// String returnUrl = AlipayConfig.RETURN_URL;
|
|
|
+// String notifyUrl = AlipayConfig.NOTIFY_URL;
|
|
|
+// AlipayTradePagePayModel model = new AlipayTradePagePayModel();
|
|
|
+//
|
|
|
+//
|
|
|
+// model.setTimeoutExpress("5m");//该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。该参数数值不接受小数点, 如 1.5h,可转换为 90m。
|
|
|
+// //model.setSellerId("2088102171369624");
|
|
|
+// model.setOutTradeNo(outTradeNo);
|
|
|
+// model.setProductCode("FAST_INSTANT_TRADE_PAY");
|
|
|
+// model.setTotalAmount(totalAmount);
|
|
|
+// model.setSubject("PC支付测试");
|
|
|
+// model.setBody("PC支付测试body");
|
|
|
+// model.setPassbackParams(URLEncoder.encode("附加消息", "UTF-8"));
|
|
|
+//
|
|
|
+// AlipayApi.tradePage(response,model,alipayClient,notifyUrl,returnUrl);
|
|
|
+// } catch (Exception e) {
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
|
|
|
}
|
|
|
|
|
|
@@ -141,19 +171,13 @@ public class AlipayController {
|
|
|
*/
|
|
|
@ResponseBody
|
|
|
@RequestMapping(value = "/appPay", method = RequestMethod.GET)
|
|
|
- public void appPay(@RequestParam String jsonStr , HttpServletRequest request, HttpServletResponse response){
|
|
|
- ProjectRecode projectRecode= JSONObject.parseObject(jsonStr,ProjectRecode.class);
|
|
|
- projectRecode.setTime(new Date());
|
|
|
- ProjectRecode newProjectRecode = null;
|
|
|
+ public void appPay(@RequestParam String jsonStr, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
|
|
+ ProjectRecode newProjectRecode= null;
|
|
|
try {
|
|
|
- newProjectRecode = projectRecodeService.join(projectRecode);
|
|
|
+ newProjectRecode = this.createProjectRecode(jsonStr);
|
|
|
} catch (Exception e) {
|
|
|
- try {
|
|
|
- response.getWriter().write(e.getMessage());
|
|
|
- return;
|
|
|
- } catch (IOException e1) {
|
|
|
- e1.printStackTrace();
|
|
|
- }
|
|
|
+ response.getWriter().write(e.getMessage());
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
|
|
|
@@ -463,4 +487,11 @@ public class AlipayController {
|
|
|
}
|
|
|
alipayOrderService.save(alipayOrder);
|
|
|
}
|
|
|
+
|
|
|
+ private ProjectRecode createProjectRecode(String jsonStr) throws Exception {
|
|
|
+ ProjectRecode projectRecode= JSONObject.parseObject(jsonStr,ProjectRecode.class);
|
|
|
+ projectRecode.setTime(new Date());
|
|
|
+ ProjectRecode newProjectRecode = projectRecodeService.join(projectRecode);
|
|
|
+ return newProjectRecode;
|
|
|
+ }
|
|
|
}
|