zhs 3 rokov pred
rodič
commit
beef466e1c

+ 9 - 3
src/main/java/com/travel/controller/PersonalController.java

@@ -56,6 +56,7 @@ public class PersonalController {
                 map.put("errMsg", "认证失败");
                 return map;
             }
+            user.setPhone(DesEncry.encrypt(user.getPhone()));
             //查询用户
             List<User> list = loginService.getUser(user);
             //如果手机号不存在则新增
@@ -104,6 +105,7 @@ public class PersonalController {
         Map<String, Object> map = new HashMap<>();
         int type = 0;
         try {
+            user.setPhone(DesEncry.encrypt(user.getPhone()));
             int count = loginService.checkTele(user);
             if(count == 0) {
                 type = 1;
@@ -114,12 +116,10 @@ public class PersonalController {
                 switch (type) {
                     case 1 :
                         user.setCaptcha(getNonce_str());
-//                        user.setPhone(DesEncry.encrypt(user.getPhone()));
                         loginService.addUser(user);
                         break;
                     case 4 :
                         user.setCaptcha(getNonce_str());
-//                        user.setPhone(DesEncry.encrypt(user.getPhone()));
                         loginService.updateCaptcha(user);
                         break;
                 }
@@ -171,6 +171,7 @@ public class PersonalController {
         response.setHeader("Access-Control-Allow-Origin", "*");
         Map<String, Object> map = new HashMap<>();
         try {
+            user.setPhone(DesEncry.encrypt(user.getPhone()));
             int count = loginService.checkCaptcha(user);//校验验证码是否正确
             if(count > 0){
                 User user1 = loginService.checkUser(user); //验证是否第一次登录
@@ -240,7 +241,7 @@ public class PersonalController {
             request.setSysVersion("2017-05-25");
             request.setSysAction("SendSms");
             request.putQueryParameter("RegionId", "cn-hangzhou");
-            request.putQueryParameter("PhoneNumbers", user.getRemake() + user.getPhone());//手机号
+            request.putQueryParameter("PhoneNumbers", user.getRemake() + phone);//手机号
             request.putQueryParameter("SignName", "途丫");
             switch (type) {
                 case 1 :
@@ -389,4 +390,9 @@ public class PersonalController {
         }
         return letter + id;
     }
+
+    public static void main(String[] args) {
+        String phone = DesEncry.encrypt("13361316801");
+        System.out.println(phone);
+    }
 }

+ 69 - 0
src/main/java/com/travel/controller/ZfbAppPayController.java

@@ -0,0 +1,69 @@
+package com.travel.controller;
+
+import com.alipay.api.AlipayClient;
+import com.alipay.api.CertAlipayRequest;
+import com.alipay.api.DefaultAlipayClient;
+import com.alipay.api.request.AlipayTradeAppPayRequest;
+import com.alipay.api.response.AlipayTradeAppPayResponse;
+import com.travel.zfb.ZfbPayUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 支付宝app支付
+ */
+@RestController
+@RequestMapping("appPay")
+public class ZfbAppPayController extends ZfbPayUtils {
+
+    /**
+     * 支付宝PC支付
+     * @param price 金额
+     * @return 返回结果
+     * @throws Exception 异常抛出
+     */
+    @RequestMapping("/toPay")
+    @ResponseBody
+    public Map<String, Object> toPay(String price, String attach) throws Exception {
+        Map<String, Object> map = new HashMap<>();
+        //获得初始化的alipayConfig参数 //证书模式
+        CertAlipayRequest alipayConfig  = new CertAlipayRequest();
+        alipayConfig.setPrivateKey(MERCHANTPRIVATEKEY);//应用秘钥
+        alipayConfig.setServerUrl(GATEWAYURL);
+        alipayConfig.setAppId(APPID);
+        alipayConfig.setCharset(CHARSET);
+        alipayConfig.setSignType(SIGNTYPE);
+        alipayConfig.setEncryptor("");
+        alipayConfig.setFormat("json");
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
+        //获得初始化的AlipayClient
+        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+        //设置请求参数
+        String out_trade_no = ZfbPayController.getOrderNo();//订单号
+        String timeout = "30m";
+        String content = "{\"out_trade_no\":\""+ out_trade_no +"\","
+                + "\"total_amount\":\""+ price +"\","
+                + "\"subject\":\"途丫-"+ out_trade_no +"\","
+                + "\"timeout_express\":\""+ timeout +"\","
+                + "\"body\":\""+ attach +"\","
+                + "\"product_code\":\"QUICK_MSECURITY_PAY\"}";
+        AlipayTradeAppPayRequest alipayRequest = new AlipayTradeAppPayRequest();
+        alipayRequest.setNotifyUrl(NOTIFYURL);
+        alipayRequest.setBizContent(content);
+        //传入参数获取结果
+        AlipayTradeAppPayResponse response = alipayClient.sdkExecute(alipayRequest);
+        if(response.isSuccess()){
+            map.put("data", "调用成功");
+            map.put("msg", "200");
+        } else {
+            map.put("errMsg", "调用成功");
+            map.put("msg", "500");
+        }
+        return map;
+    }
+}

+ 73 - 1
src/main/java/com/travel/controller/ZfbCashController.java

@@ -10,13 +10,14 @@ import com.alipay.api.request.AlipayFundTransUniTransferRequest;
 import com.alipay.api.response.AlipayFundTransUniTransferResponse;
 import com.travel.model.CaSh;
 import com.travel.model.Supplier;
+import com.travel.model.User;
 import com.travel.model.WxWithdrawal;
+import com.travel.service.LoginService;
 import com.travel.service.ZFBPayService;
 import com.travel.util.ParsingToken;
 import com.travel.util.SnowflakeUtil;
 import com.travel.zfb.ZfbPayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.ClassUtils;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -35,6 +36,8 @@ public class ZfbCashController extends ZfbPayUtils {
 
     @Autowired
     private ZFBPayService zfbPayService;
+    @Autowired
+    private LoginService loginService;
     //雪花算法
     private SnowflakeUtil snowflakeUtil = new SnowflakeUtil(1, 1, 1);
 
@@ -106,6 +109,75 @@ public class ZfbCashController extends ZfbPayUtils {
         }
     }
 
+    /**
+     * 支付宝提现个人用户
+     * @param caSh 参数
+     * @param request 参数
+     * @return 返回结果
+     * @throws Exception 异常
+     */
+    @RequestMapping("cashUser")
+    @ResponseBody
+    public String cashUser(CaSh caSh, HttpServletRequest request) throws AlipayApiException {
+        //获取token
+        Map<String, Object> userMap = ParsingToken.tokenParsing(request);
+        //获取用户余额
+        User user = new User().setCode((String)userMap.get("code"));
+        User user1 = loginService.getUserVal(user);
+        if(null != user1){
+            if(Double.parseDouble(caSh.getMoney()) > Double.parseDouble(user1.getBalanceOf())){
+                return "提现余额不足";
+            }
+        } else {
+            return "未找到该用户";
+        }
+        CertAlipayRequest alipayConfig  = new CertAlipayRequest();
+        alipayConfig.setPrivateKey(MERCHANTPRIVATEKEY);
+        alipayConfig.setServerUrl(GATEWAYURL);
+        alipayConfig.setAppId(APPID);
+        alipayConfig.setCharset(CHARSET);
+        alipayConfig.setSignType(SIGNTYPE);
+        alipayConfig.setEncryptor("");
+        alipayConfig.setFormat("json");
+        alipayConfig.setCertPath("C:\\java\\csr\\appCertPublicKey_2021003148600027.crt");
+        alipayConfig.setAlipayPublicCertPath("C:\\java\\csr\\alipayCertPublicKey_RSA2.crt");
+        alipayConfig.setRootCertPath("C:\\java\\csr\\alipayRootCert.crt");
+        //获得初始化的AlipayClient
+        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
+        //设置请求参数
+        String out_trade_no = getOrderNo();//订单号
+        String uuid = snowflakeUtil.nextId() + "";//不重复编号
+        AlipayFundTransUniTransferRequest requestVal = new AlipayFundTransUniTransferRequest();
+        AlipayFundTransUniTransferModel model = new AlipayFundTransUniTransferModel();
+        model.setOutBizNo(out_trade_no);//提现编号
+        model.setRemark("用户" + user1.getName() + "提现" + caSh.getMoney() + "元");//备注
+        model.setBusinessParams("{\"payer_show_name_use_alias\":\"true\"}");//是否展示付款方别名
+        model.setBizScene("DIRECT_TRANSFER");//业务场景。单笔无密转账固定为 DIRECT_TRANSFER。
+        Participant payeeInfo = new Participant();//收款方信息
+        payeeInfo.setIdentity(caSh.getIdentity());//收款账号
+        payeeInfo.setIdentityType("ALIPAY_LOGON_ID");//收款类型 ALIPAY_LOGON_ID支付宝登录账号 ALIPAY_USER_ID 支付宝会员ID
+        payeeInfo.setName(caSh.getName());//真实姓名
+        model.setPayeeInfo(payeeInfo);
+        model.setTransAmount(caSh.getMoney());//提现金额
+        model.setProductCode("TRANS_ACCOUNT_NO_PWD");//销售产品码。单笔无密转账固定为 TRANS_ACCOUNT_NO_PWD
+        model.setOrderTitle("用户" + user1.getName() + "提现" + caSh.getMoney() + "元");//转账业务的标题,用于在支付宝用户的账单里显示。
+        requestVal.setBizModel(model);
+        AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(requestVal);
+        System.out.println(response.getBody());
+        if (response.isSuccess()) {
+            WxWithdrawal wxWithdrawal = new WxWithdrawal()
+                    .setUuid(uuid)
+                    .setAmount(caSh.getMoney())
+                    .setOutTradeNo(out_trade_no)
+                    .setCode(user1.getCode());
+            zfbPayService.zfbCash(wxWithdrawal);//存入提现记录
+            zfbPayService.minusBalanceOf(wxWithdrawal);//余额 - 提现额度
+            return "提现成功";
+        } else {
+            return "提现失败请联系途丫管理员";
+        }
+    }
+
     /**
      * 生成订单号
      * @return 返回结果

+ 2 - 3
src/main/java/com/travel/controller/ZfbPayController.java

@@ -68,8 +68,7 @@ public class ZfbPayController extends ZfbPayUtils {
         String out_trade_no = getOrderNo();//订单号
         String timeout = "30m";
         String content = "{\"out_trade_no\":\""+ out_trade_no +"\","
-                + "\"total_amount\":\""+ price +"\","
-                + "\"subject\":\"途丫-"+ out_trade_no +"\","
+                + "\"total_amount\":\""+ price +"\","                + "\"subject\":\"途丫-"+ out_trade_no +"\","
                 + "\"timeout_express\":\""+ timeout +"\","
                 + "\"body\":\""+ attach +"\","
                 + "\"qr_pay_mode\":\"2\","
@@ -315,7 +314,7 @@ public class ZfbPayController extends ZfbPayUtils {
      * 生成订单号
      * @return
      */
-    public String getOrderNo() {
+    public static String getOrderNo() {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String newDate = sdf.format(new Date());
         String result = "";

+ 4 - 0
src/main/java/com/travel/model/User.java

@@ -98,5 +98,9 @@ public class User implements Serializable {
      * 关注
      */
     private String focus;
+    /**
+     * 余额
+     */
+    private String balanceOf;
 
 }