Browse Source

微信支付扫码支付

huangct 8 years ago
parent
commit
98b61c1b0d

+ 18 - 8
donate-service/src/main/java/com/uas/service/donate/controller/WxpayController.java

@@ -1,6 +1,7 @@
 package com.uas.service.donate.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.github.binarywang.utils.qrcode.QrcodeUtils;
 import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryResult;
@@ -8,6 +9,7 @@ import com.github.binarywang.wxpay.bean.result.WxPayUnifiedOrderResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.util.SignUtils;
+import com.uas.dfs.service.FileClient;
 import com.uas.platform.core.util.HttpUtil;
 import com.uas.service.donate.api.WxPayApi;
 import com.uas.service.donate.config.WxConfig;
@@ -15,7 +17,6 @@ import com.uas.service.donate.model.ProjectRecode;
 import com.uas.service.donate.model.WechatOrder;
 import com.uas.service.donate.service.ProjectRecodeService;
 import com.uas.service.donate.service.WechatOrderService;
-import com.uas.service.donate.util.QrcodeUtils;
 import com.uas.service.donate.util.StringUtils;
 import com.uas.service.donate.util.WxCheckoutUtil;
 import org.apache.commons.io.IOUtils;
@@ -43,6 +44,9 @@ import java.util.Date;
 @RequestMapping("/wxpay")
 public class WxpayController {
 
+    @Autowired
+    private FileClient fileClient;
+
     @Autowired
     protected HttpServletRequest request;
 
@@ -70,17 +74,17 @@ public class WxpayController {
      */
     @ResponseBody
     @RequestMapping(value = "/pcPay", method = RequestMethod.POST)
-    public void pcPay(@RequestParam("jsonStr") String jsonStr, HttpServletRequest request, HttpServletResponse response) throws Exception {
+    public String pcPay(@RequestParam("jsonStr") String jsonStr, HttpServletRequest request, HttpServletResponse response) throws Exception {
         ProjectRecode projectRecode= null;
         try {
             projectRecode = this.createProjectRecode(jsonStr);
         } catch (Exception e) {
             response.getWriter().write(e.getMessage());
-            return;
+            return null;
         }
 
         WxPayUnifiedOrderRequest wxPayUnifiedOrderRequest = createWxPayUnifiedOrderRequest(request, projectRecode, WxPayConstants.TradeType.NATIVE);
-        unifiedOrder(wxPayUnifiedOrderRequest);
+        return unifiedOrder(wxPayUnifiedOrderRequest);
     }
 
     /**
@@ -177,16 +181,22 @@ public class WxpayController {
                 /*H5支付开发步骤:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4*/
                 String mwebUrl = wxPayUnifiedOrderResult.getMwebUrl() + "&redirect_url=" + URLEncoder.encode(redirectUrl,"UTF-8");
                 return mwebUrl;
+            } else if (WxPayConstants.TradeType.NATIVE.equals(wxPayUnifiedOrderRequest.getTradeType())) {
+                //扫码支付
+                //QrcodeUtils.encode(wxPayUnifiedOrderResult.getCodeURL(),response.getOutputStream());
+                byte[] bytes = QrcodeUtils.createQrcode(wxPayUnifiedOrderResult.getCodeURL(), 400, null);
+                String path=fileClient.upload(bytes, bytes.length,"jpg",null);
+                return path;
+            } else if (WxPayConstants.TradeType.JSAPI.equals(wxPayUnifiedOrderRequest.getTradeType())) {
+                //公众号支付
+                return wxPayUnifiedOrderResult.getPrepayId();
             }
-
-            QrcodeUtils.encode(wxPayUnifiedOrderResult.getCodeURL(),response.getOutputStream());
-            return wxPayUnifiedOrderResult.getPrepayId();
             //byte[] arr = wxPayApi.createScanPayQrcodeMode2(wxPayUnifiedOrderResult.getCodeURL(),null,null);
         } catch (WxPayException e) {
             logger.error("微信支付失败!订单号:{},原因:{}", wxPayUnifiedOrderRequest.getOutTradeNo(), e.getMessage());
             e.printStackTrace();
-            return null;
         }
+        return null;
 
     }
 

+ 3 - 2
donate-service/src/main/webapp/resources/js/pay.js

@@ -113,10 +113,11 @@ var wxPay = function (proId, amount) {
             success : function(res){
                 if (res.error == null) {
                     if (isMobile) {
-                        var mwebUrl = res.data;
+                        var mwebUrl = res;
                         window.location.href = mwebUrl;
                     } else {
-                        //document.write(res);
+                        var qrcodeUrl = res;
+                        window.location.href = qrcodeUrl;
                     }
                 } else {
                     alert(res.error);