Przeglądaj źródła

支付宝pcPay,wapPay

huangct 8 lat temu
rodzic
commit
9bb96b2a54

+ 82 - 51
donate-service/src/main/java/com/uas/service/donate/controller/AlipayController.java

@@ -5,11 +5,11 @@ import com.alipay.api.AlipayApiException;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.AlipayClient;
 import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.DefaultAlipayClient;
 import com.alipay.api.domain.AlipayTradeAppPayModel;
 import com.alipay.api.domain.AlipayTradeAppPayModel;
-import com.alipay.api.domain.AlipayTradePagePayModel;
 import com.alipay.api.domain.AlipayTradeWapPayModel;
 import com.alipay.api.domain.AlipayTradeWapPayModel;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.internal.util.AlipaySignature;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.request.AlipaySystemOauthTokenRequest;
 import com.alipay.api.request.AlipayTradeAppPayRequest;
 import com.alipay.api.request.AlipayTradeAppPayRequest;
+import com.alipay.api.request.AlipayTradePagePayRequest;
 import com.alipay.api.request.AlipayUserInfoShareRequest;
 import com.alipay.api.request.AlipayUserInfoShareRequest;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
 import com.alipay.api.response.AlipaySystemOauthTokenResponse;
 import com.alipay.api.response.AlipayTradeAppPayResponse;
 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.AlipayOrderService;
 import com.uas.service.donate.service.AlipayUserService;
 import com.uas.service.donate.service.AlipayUserService;
 import com.uas.service.donate.service.ProjectRecodeService;
 import com.uas.service.donate.service.ProjectRecodeService;
-import com.uas.service.donate.util.NumberGenerator;
 import com.uas.service.donate.util.StringUtils;
 import com.uas.service.donate.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
@@ -76,31 +75,32 @@ public class AlipayController {
      * 手机 wap支付
      * 手机 wap支付
      */
      */
     @ResponseBody
     @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 {
         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();
             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);
             model.setPassbackParams(passbackParams);
-            String outTradeNo = NumberGenerator.generateId();
-            model.setOutTradeNo(outTradeNo);
+            model.setOutTradeNo(projectRecode.getId().toString());
             model.setProductCode("QUICK_WAP_PAY");
             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) {
         } catch (Exception e) {
+            response.getWriter().write(e.getMessage());
             e.printStackTrace();
             e.printStackTrace();
         }
         }
     }
     }
@@ -109,30 +109,60 @@ public class AlipayController {
      * PC支付
      * PC支付
      */
      */
     @ResponseBody
     @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 {
         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) {
         } 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();
             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
     @ResponseBody
     @RequestMapping(value = "/appPay", method = RequestMethod.GET)
     @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 {
         try {
-            newProjectRecode = projectRecodeService.join(projectRecode);
+            newProjectRecode = this.createProjectRecode(jsonStr);
         } catch (Exception e) {
         } 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
         //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
@@ -463,4 +487,11 @@ public class AlipayController {
         }
         }
         alipayOrderService.save(alipayOrder);
         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;
+    }
 }
 }

+ 15 - 0
donate-service/src/main/java/com/uas/service/donate/model/ProjectRecode.java

@@ -62,6 +62,13 @@ public class ProjectRecode {
     @Column(name = "pr_org_name")
     @Column(name = "pr_org_name")
     private String orgName;
     private String orgName;
 
 
+    /**
+     * 捐款方式
+     * @return
+     */
+    @Column(name = "pr_way")
+    private String way;
+
     /**
     /**
      * 支付状态(1:待支付,2:已支付,3:异常情况)
      * 支付状态(1:待支付,2:已支付,3:异常情况)
      * @return
      * @return
@@ -140,6 +147,14 @@ public class ProjectRecode {
         this.orgName = orgName;
         this.orgName = orgName;
     }
     }
 
 
+    public String getWay() {
+        return way;
+    }
+
+    public void setWay(String way) {
+        this.way = way;
+    }
+
     public short getStatus() {
     public short getStatus() {
         return status;
         return status;
     }
     }