package com.stylefeng.guns.modular.account.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.account.service.ITEnterpriseWithdrawalService; import com.stylefeng.guns.modular.account.service.UserWithdrawalService; import com.stylefeng.guns.modular.account.unionpay.*; import com.stylefeng.guns.modular.cloudPayment.example.*; import com.stylefeng.guns.modular.cloudPayment.req.AllocationReq; import com.stylefeng.guns.modular.cloudPayment.req.BalanceAcctReq; import com.stylefeng.guns.modular.cloudPayment.req.DepositReq; import com.stylefeng.guns.modular.cloudPayment.req.WithdrawalReq; import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.enums.PaymentTypeEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.unionpay.upyzt.exception.UpyztException; import com.unionpay.upyzt.resp.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.time.DateFormatUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; /** * @program: openPlatform * @description: 下单 */ @Api(tags = "下单") @Slf4j @RestController @RequestMapping("") public class AppOrderController { static String appId = "10037e6f66f2d0f901672aa27d690006"; // 10037e6f6823b20801682b6a5e5a0006 static String appKey = "47ace12ae3b348fe93ab46cee97c6fde"; private final UserWithdrawalService userWithdrawalService; private final ICompanyService companyService; private final QrCodeConfiguration qrCodeConfiguration; private final IOrderCrossCityService orderCrossCityService; private final IDriverService driverService; private final ITEnterpriseWithdrawalService enterpriseWithdrawalService; private final ITransactionDetailsService transactionDetailsService; private final IReassignService reassignService; private final IPaymentRecordService paymentRecordService; @Autowired public AppOrderController(UserWithdrawalService userWithdrawalService, ICompanyService companyService, QrCodeConfiguration qrCodeConfiguration, IOrderCrossCityService orderCrossCityService, IDriverService driverService, ITEnterpriseWithdrawalService enterpriseWithdrawalService, ITransactionDetailsService transactionDetailsService, IReassignService reassignService, IPaymentRecordService paymentRecordService) { this.userWithdrawalService = userWithdrawalService; this.companyService = companyService; this.qrCodeConfiguration = qrCodeConfiguration; this.orderCrossCityService = orderCrossCityService; this.driverService = driverService; this.enterpriseWithdrawalService = enterpriseWithdrawalService; this.transactionDetailsService = transactionDetailsService; this.reassignService = reassignService; this.paymentRecordService = paymentRecordService; } public static void main(String[] args) throws Exception { Double s = Double.valueOf(String.valueOf("3")); Double lavePrice =198816.00; System.out.println(s.compareTo(lavePrice) > 0); } /** * app下单 * * @throws Exception */ @ResponseBody @RequestMapping(value = "/api/placeOrder/appPay", method = RequestMethod.POST) @ApiOperation(value = "司机下单", tags = {"司机端-司机下单"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), @ApiImplicitParam(value = "支付方式 1=微信,2=支付宝,4=云闪付", name = "type", required = true, dataType = "Integer"), }) public ResultUtil placeAnOrder(BigDecimal amount, Integer type,Integer orderType) throws Exception { JSONObject json = new JSONObject(); json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); // 报文请求时间 json.put("merOrderId", Util.getMerOrderId(qrCodeConfiguration.getMsgSrcId())); // 商户订单号 json.put("mid", qrCodeConfiguration.getMid()); // 商户号 json.put("tid", qrCodeConfiguration.getTid()); // 终端号 json.put("instMid", qrCodeConfiguration.getInstMid()); // 业务类型 json.put("totalAmount", amount.multiply(new BigDecimal("100")).intValue()); // 支付总金额 json.put("orderDesc", "APP下单"); // 订单描述 json.put("srcReserve", type); // 预留字段 json.put("subAppId", "wxasdasdasdasdads"); json.put("notifyUrl", "http://123.56.89.63:8080/driver/api/placeOrder/notifyUrl"); json.put("tradeType", "APP"); // 交易类型,微信必传 // json.put("divisionFlag", true); // 分账标记 // json.put("platformAmount", 0); // 平台商户分账金额 // ArrayList subOrders = new ArrayList<>(); // JSONObject jsonObject = new JSONObject(); // jsonObject.put("mid", "988460101800201"); // jsonObject.put("totalAmount", 1); // subOrders.add(jsonObject); // json.put("subOrders", subOrders); System.err.println("请求报文json:\n" + json); String url; if(1 == type){ // url = "https://test-api-open.chinaums.com/v1/netpay/wx/app-pre-order";// 测试 url = "https://api-mop.chinaums.com/v1/netpay/wx/app-pre-order"; }else if (2 == type){ // url = "https://test-api-open.chinaums.com/v1/netpay/trade/precreate";// 测试 url = "https://api-mop.chinaums.com/v1/netpay/trade/precreate"; }else { // url = "https://test-api-open.chinaums.com/v1/netpay/uac/app-order";// 测试 url = "https://api-mop.chinaums.com/v1/netpay/uac/app-order"; } //OPEN-BODY-SIG 方式 String result = GetOpenBodySig.sendOpenBodySig(qrCodeConfiguration.getAppId(),qrCodeConfiguration.getAppKey(),url, json.toString()); System.err.println("响应报文json:\n" + result); JSONObject jsonObject = JSONObject.parseObject(result); Object appPayRequest = jsonObject.get("appPayRequest"); System.out.println(appPayRequest); return ResultUtil.success(appPayRequest); } /** * * @throws Exception */ @ResponseBody @RequestMapping(value = "/api/placeOrder/qrCode", method = RequestMethod.POST) @ApiOperation(value = "二维码支付", tags = {"司机端-二维码支付"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), }) public ResultUtil getQrcode(Integer id) throws Exception { // 跨城出行订单查询 OrderCrossCity orderCrossCity = orderCrossCityService.selectById(id); if(Objects.isNull(orderCrossCity)){ return ResultUtil.error("该订单不存在!"); } // 云闪付订单号 String merOrderId = Util.getMerOrderId(qrCodeConfiguration.getMsgSrcId()); orderCrossCity.setBillNo(merOrderId+"0"); orderCrossCityService.updateById(orderCrossCity); paymentRecordService.saveData(1, orderCrossCity.getDriverId(), 2, orderCrossCity.getId(), 3, 5, orderCrossCity.getOrderMoney(), "", 1);//添加预支付数据 JSONObject json = new JSONObject(); json.put("requestTimestamp", DateFormatUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss")); // 报文请求时间 json.put("srcReserve", id+"-"+3); // 请求系统预留字段,订单类型 json.put("mid", qrCodeConfiguration.getMid()); // 商户号 json.put("tid", qrCodeConfiguration.getTid()); // 终端号 json.put("instMid", qrCodeConfiguration.getInstMid()); // 业务类型 json.put("billNo", merOrderId); // 商户订单号 //json.put("preauthTransaction", true); //json.put("expireTime", "2120-10-30 10:00:00"); //json.put("billDate", DateFormatUtils.format(new Date(), "yyyy-MM-dd")); // 账单日期 json.put("returnUrl", "https://zhentonggongsi.com:443/driver/api/placeOrder/notifyUrlOne"); // 回调地址 json.put("notifyUrl", "https://zhentonggongsi.com:443/driver/api/placeOrder/notifyUrlOne"); // 回调地址 // json.put("returnUrl", "http://vwpmxwbhv59i.guyubao.com/api/placeOrder/notifyUrlOne"); // 回调地址 // json.put("notifyUrl", "http://vwpmxwbhv59i.guyubao.com/api/placeOrder/notifyUrlOne"); // 回调地址 json.put("billDesc", "跨城出行"); // 账单描述 BigDecimal bigDecimal = BigDecimal.valueOf(orderCrossCity.getOrderMoney()); // BigDecimal bigDecimal = BigDecimal.ONE; json.put("totalAmount", new BigDecimal(100).multiply(bigDecimal)); // 支付总金额 // json.put("totalAmount", bigDecimal); // 支付总金额 // json.put("totalAmount", 3); // 支付总金额 //json.put("limitCreditCard", true); // json.put("certNo", "NDIwMTExMTk3ODEyMTE1Njkz"); // json.put("name", "6ZmI5L+K5beN"); // json.put("fixBuyer", "T"); // json.put("certType", "IDENTITY_CARD"); // json.put("msgId", "字段返回测试msgId"); // json.put("memberId", "字段返回测试memberId"); // json.put("counterNo", "字段返回测试counterNo"); /* 分账部分 */ // json.put("divisionFlag", true); // 分账标记 // json.put("platformAmount", 30000); // 平台商户分账金额 // ArrayList subOrders = new ArrayList<>(); // JSONObject jsonObject = new JSONObject(); // jsonObject.put("mid", "988460101800201"); // jsonObject.put("totalAmount", 7000); // subOrders.add(jsonObject); // json.put("subOrders", subOrders); System.out.println("请求报文json:\n" + json.toString()); // String url = "https://test-api-open.chinaums.com/v1/netpay/bills/get-qrcode"; String url = "https://api-mop.chinaums.com/v1/netpay/bills/get-qrcode"; //OPEN-BODY-SIG 方式 String result = GetOpenBodySig.sendOpenBodySig(qrCodeConfiguration.getAppId(),qrCodeConfiguration.getAppKey(),url, json.toString()); System.out.println("响应报文json:\n" + result); return ResultUtil.success(JSONObject.parseObject(result)); } /** * 支付回调 * * @throws Exception */ @PostMapping(value = "/api/placeOrder/notifyUrl") @Transactional(isolation = Isolation.READ_UNCOMMITTED,rollbackFor = Exception.class,propagation = Propagation.REQUIRED) public void notifyUrl(HttpServletRequest request,HttpServletResponse response) throws Exception { // 接收参数 Map params = NotifyDemo.getRequestParams(request); System.err.println("params:" + params); String sign = params.get("sign");// 签名 System.err.println("============================"+sign); String billStatus = params.get("status");// 状态 // String billPayment = params.get("billPayment");// 账单支付信息 // String merOrderId = params.get("merOrderId"); // 商户订单号 String targetOrderId = params.get("targetOrderId"); // 流水号 Integer totalAmount = Integer.valueOf(params.get("totalAmount")); // 总金额 Integer buyerPayAmount = Integer.valueOf(params.get("buyerPayAmount")); // 支付金额 Integer couponAmount = Integer.valueOf(params.get("couponAmount"));// 优惠金额 String srcReserve = params.get("srcReverse");// 预留字段 System.out.println("预留字段"+srcReserve); // 验签 //对通知内容生成sign String strSign = NotifyDemo.makeSign256Hex(qrCodeConfiguration.getMd5key(), params); System.err.println("==============================="+strSign); //判断签名是否相等 if (sign.equals(strSign)) { System.out.println("签名相等"); if("TRADE_SUCCESS".equals(billStatus)){ System.out.println("回调状态成功"); String[] split = srcReserve.split("-"); Integer orderType = Integer.valueOf(split[1]); Integer type = Integer.valueOf(split[2]); // orderCrossCity.setState(8);// 待评价 // orderCrossCity.setPayMoney(buyerPayAmount.doubleValue()); // orderCrossCity.setPayType(3);// 二维码支付 // orderCrossCity.setPayTime(new Date());// 支付时间 // orderCrossCityService.updateById(orderCrossCity); // // BigDecimal b1 = new BigDecimal(Double.toString(driver.getBalance())); // BigDecimal b2 = new BigDecimal(Double.toString(buyerPayAmount)); // driver.setBalance(b1.add(b2).doubleValue()); // driverService.updateById(driver); // Driver driver = null; if(orderType == 1){ System.out.println("改派订单"); String orderId = split[0]; System.out.println("=========================="+orderId); String[] s = orderId.split("_"); if(Integer.parseInt(s[1]) == 3) {//跨城订单 System.out.println("跨城订单"); String[] split1 = s[0].split(","); List reassigns = reassignService.selectBatchIds(Arrays.asList(split1)); if(Objects.nonNull(reassigns.get(0).getState()) && 2 == reassigns.get(0).getState() ){ System.out.println("该订单已支付"); return; } reassigns.get(0).setBillNo(targetOrderId); reassignService.updateById(reassigns.get(0)); // driver = driverService.selectById(reassigns.get(0).getOriginalDriverId()); }else { System.out.println("其他订单"); Reassign reassign = reassignService.selectById(s[0]); if(Objects.nonNull(reassign.getState()) && 2 == reassign.getState() ){ System.out.println("该订单已支付"); return; } reassign.setBillNo(targetOrderId); reassignService.updateById(reassign); // driver = driverService.selectById(reassign.getOriginalDriverId()); } reassignService.payReassign(orderId,targetOrderId,4); System.out.println("改派订单结束"); } if(orderType == 3){ System.out.println("跨城订单"); Integer orderId = Integer.valueOf(split[0]); // 更新商户系统的订单 OrderCrossCity orderCrossCity = orderCrossCityService.selectOne(new EntityWrapper() .eq("id", orderId)); if(Objects.isNull(orderCrossCity)){ System.out.println("该订单不存在!"); return; } orderCrossCity.setBillNo(targetOrderId); orderCrossCityService.updateById(orderCrossCity); if(orderCrossCity.getState() != 7){ System.out.println("该订单状态不为待支付状态!"); return; } // driver = driverService.selectById(orderCrossCity.getDriverId()); orderCrossCityService.payOrderCrossCityCallback(orderCrossCity.getId(), targetOrderId, 4); System.out.println("跨城订单结束"); } // if(Objects.isNull(driver)){ // throw new RuntimeException("该订单司机查询失败"); // } // 调用支付充值接口,将金额充值到平台账户 // 查询平台账户 // Company company = companyService.selectOne(new EntityWrapper() // .eq("type", 1) // .last("LIMIT 1")); // System.out.println("查询平台账户==============="+company); // 查询平台开户信息 // TEnterpriseWithdrawal enterpriseWithdrawal = enterpriseWithdrawalService.selectOne(new EntityWrapper() // .eq("companyId", company.getId())); // 替换为公司id // System.out.println("查询平台开户信息==============="+enterpriseWithdrawal); // 司机开户信息 // TODO 司机进件信息 // UserWithdrawal driverWith = userWithdrawalService.selectOne(new EntityWrapper() // .eq("phone",driver.getPhone()) // .last("LIMIT 1")); // System.out.println("司机进件信息==============="+driverWith); // 查询司机该订单的收入,进行分账 // TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper() // .eq("state", 1) // .eq("type", 1) // .eq("userType", 2) // .eq("userId", driver.getId()) // .eq("orderId", orderCrossCity.getId()) // .last("LIMIT 1")); // if(Objects.isNull(transactionDetails) || Objects.isNull(transactionDetails.getMoney())){ // throw new RuntimeException("司机订单收入为空!"); // } // DepositReq depositReq = new DepositReq(); // depositReq.setOutOrderNo(ToolUtil.getRandomString(32)); // depositReq.setTotalAmount(totalAmount); // 总金额 // depositReq.setAmount(buyerPayAmount); // 支付金额 // depositReq.setDiscountAmount(couponAmount); // 优惠金额 // depositReq.setBalanceAcctId(enterpriseWithdrawal.getBalanceAcctId()); // depositReq.setDepositType("1"); // depositReq.setPaymentType(PaymentTypeEnum.CUP_APP.getCode()); // depositReq.setPaymentTradeNo(targetOrderId); // 系统交易流水号 // depositReq.setPaymentSucceededAt(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date())); // System.out.println("创建支付充值对象==============="+depositReq); try { // DepositResp depositResp = DepositExample.create(depositReq); // System.out.println("支付充值成功============="+depositResp); // log.info("支付充值成功:{}",depositResp); // 对司机进行分账 // AllocationReq allocationReq = new AllocationReq(); // allocationReq.setOutOrderNo(targetOrderId); // allocationReq.setPayBalanceAcctId(driverWith.getBalanceAcctId()); // 发送方 // allocationReq.setRecvBalanceAcctId(enterpriseWithdrawal.getBalanceAcctId()); // 接收方 //// BigDecimal multiply = new BigDecimal(100).multiply(BigDecimal.valueOf(buyerPayAmount)); // allocationReq.setAmount(buyerPayAmount); // 金额 // allocationReq.setPassword(Base64Util.decode(enterpriseWithdrawal.getTransactionAuthorizationCode())); // 密码 // allocationReq.setOrderNo(targetOrderId); // allocationReq.setOrderAmount(Long.valueOf(totalAmount)); // if(orderType == 1){ // allocationReq.setProductName("订单改派"); // } // if(orderType == 3){ // allocationReq.setProductName("跨城出行"); // } // allocationReq.setProductCount(1); // AllocationResp allocationResp = AllocationExample.create(allocationReq); // System.err.println("司机分账信息:"+allocationResp); } catch (Exception e) { e.printStackTrace(); log.error("支付充值失败:{}",e.getMessage()); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("FAILED"); } } // 收到通知后记得返回SUCCESS System.out.println("验签通过"); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("SUCCESS"); } else { log.error("验签未通过!"); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("FAILED"); } //跳转支付完成页面 // return "/WEB-INF/views/jsp/payResult.jsp"; } @PostMapping(value = "/api/placeOrder/notifyUrlOne") @Transactional(isolation = Isolation.READ_UNCOMMITTED,rollbackFor = Exception.class,propagation = Propagation.REQUIRED) public void notifyUrlOne(HttpServletRequest request, HttpServletResponse response) throws Exception{ System.out.println("二维码支付回调"); // 接收参数 Map params = NotifyDemo.getRequestParams(request); System.err.println("params:" + params); String sign = params.get("sign");// 签名 System.err.println("============"+sign); String billStatus = params.get("billStatus");// 状态 String billPayment = params.get("billPayment");// 账单支付信息 String merOrderId = params.get("merOrderId"); // 商户订单号 String targetOrderId = params.get("targetOrderId"); // 流水号 String srcReserve = params.get("srcReserve");// 预留字段 JSONObject jsonObject = JSONObject.parseObject(billPayment); Integer totalAmount = jsonObject.getInteger("totalAmount"); // 总金额 Integer buyerCashPayAmt = jsonObject.getInteger("buyerCashPayAmt"); // 支付金额 Integer couponAmount = jsonObject.getInteger("couponAmount");// 优惠金额 // 验签 //对通知内容生成sign String strSign = NotifyDemo.makeSign256Hex(qrCodeConfiguration.getMd5key(), params); System.err.println("==========="+strSign); //判断签名是否相等 // if (sign.equals(strSign)) { if("PAID".equals(billStatus)){ System.out.println("预留字段"+srcReserve); String[] split = srcReserve.split("-"); Integer orderId = Integer.valueOf(split[0]); // 更新商户系统的订单 OrderCrossCity orderCrossCity = orderCrossCityService.selectOne(new EntityWrapper() .eq("id", orderId)); if(Objects.isNull(orderCrossCity)){ System.out.println("该订单不存在!"); return; } orderCrossCity.setBillNo(targetOrderId); orderCrossCityService.updateById(orderCrossCity); if(orderCrossCity.getState() != 7){ System.out.println("该订单状态不为待支付状态!"); return; } // orderCrossCity.setState(8);// 待评价 // orderCrossCity.setPayMoney(buyerPayAmount.doubleValue()); // orderCrossCity.setPayType(3);// 二维码支付 // orderCrossCity.setPayTime(new Date());// 支付时间 // orderCrossCityService.updateById(orderCrossCity); // // 修改司机余额 // Driver driver = driverService.selectById(orderCrossCity.getDriverId()); // BigDecimal b1 = new BigDecimal(Double.toString(driver.getBalance())); // BigDecimal b2 = new BigDecimal(Double.toString(buyerPayAmount)); // driver.setBalance(b1.add(b2).doubleValue()); // driverService.updateById(driver); try { System.out.println("跨城二维码支付回调开始"); orderCrossCityService.payOrderCrossCityCallback(orderCrossCity.getId(), targetOrderId, 5); System.out.println("跨城二维码支付回调结束"); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } // 调用支付充值接口,将金额充值到平台账户 // 查询平台账户 // Company company = companyService.selectOne(new EntityWrapper() // .eq("type", 1) // .last("LIMIT 1")); // System.out.println("公司信息"+company); // // 查询平台开户信息 // TEnterpriseWithdrawal enterpriseWithdrawal = enterpriseWithdrawalService.selectOne(new EntityWrapper() // .eq("companyId", company.getId())); // 替换为公司id // // 司机开户信息 // // TODO 司机进件信息 // UserWithdrawal driverWith = userWithdrawalService.selectOne(new EntityWrapper() // .eq("phone",driver.getPhone()) // .last("LIMIT 1")); // DepositReq depositReq = new DepositReq(); // depositReq.setOutOrderNo(ToolUtil.getRandomString(32)); // depositReq.setTotalAmount(totalAmount); // 总金额 // depositReq.setAmount(buyerPayAmount); // 支付金额 // depositReq.setDiscountAmount(couponAmount); // 优惠金额 // depositReq.setBalanceAcctId(enterpriseWithdrawal.getBalanceAcctId()); // depositReq.setDepositType("1"); // depositReq.setPaymentType(PaymentTypeEnum.CUP_APP.getCode()); // depositReq.setPaymentTradeNo(targetOrderId); // 系统交易流水号 // depositReq.setPaymentSucceededAt(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date())); try { // DepositResp depositResp = DepositExample.create(depositReq); // System.err.println(depositResp); // log.info("支付充值成功:{}",depositResp); // 对司机进行分账 // AllocationReq allocationReq = new AllocationReq(); // allocationReq.setPayBalanceAcctId(enterpriseWithdrawal.getBalanceAcctId()); // 发送方 // allocationReq.setRecvBalanceAcctId(driverWith.getBalanceAcctId()); // 接收方 // BigDecimal multiply = new BigDecimal(100).multiply(BigDecimal.valueOf(transactionDetails.getMoney())); // allocationReq.setAmount(multiply.intValue()); // 金额 // allocationReq.setPassword(Base64Util.decode(enterpriseWithdrawal.getTransactionAuthorizationCode())); // 密码 // allocationReq.setOrderNo(merOrderId); // allocationReq.setOrderAmount(Long.valueOf(totalAmount)); // allocationReq.setProductName("跨城出行"); // allocationReq.setProductCount(1); // AllocationResp allocationResp = AllocationExample.create(allocationReq); // System.err.println("司机分账信息:"+allocationResp); } catch (Exception e) { e.printStackTrace(); log.error("支付充值失败:{}",e.getMessage()); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("FAILED"); } // } // 收到通知后记得返回SUCCESS System.out.println("验签通过"); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("SUCCESS"); } else { log.error("二维码回调失败!"); PrintWriter writer = response.getWriter(); response.setStatus(200); writer.write("FAILED"); } //跳转支付完成页面 // return "/WEB-INF/views/jsp/payResult.jsp"; } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/appPayRecharge", method = RequestMethod.POST) // @ApiOperation(value = "支付充值", tags = {"支付充值"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public static void app(){ DepositReq depositReq = new DepositReq(); depositReq.setOutOrderNo(ToolUtil.getRandomString(32)); //- depositReq.setAmount(60000); // 支付金额 depositReq.setBalanceAcctId("2008429872055963229"); depositReq.setDepositType("1"); depositReq.setPaymentType(PaymentTypeEnum.CUP_APP.getCode()); //- depositReq.setPaymentTradeNo("88890525-135"); depositReq.setPaymentSucceededAt(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date())); //- depositReq.setOrderNo("88890525-135"); depositReq.setOrderAmount(1L); depositReq.setProductName("充值金额"); depositReq.setProductCount(1); depositReq.setNotifyUrl("http://zhentonggongsi.com:8010/api/placeOrder/notifyUrlOne"); DepositResp depositResp = null; try { depositResp = DepositExample.create(depositReq); } catch (UpyztException e) { log.error(e.getMessage()); e.printStackTrace(); } System.err.println(depositResp); log.info("支付充值成功:{}",depositResp); } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/queryApp", method = RequestMethod.POST) // @ApiOperation(value = "支付充值查询", tags = {"支付充值查询"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public void queryApp(){ DepositResp balanceAcctResp = null; try { balanceAcctResp = DepositExample.retrieveById("2008429872055963229"); System.err.println(balanceAcctResp); } catch (UpyztException e) { log.error("电子账簿查询失败:{}",e.getMessage()); e.printStackTrace(); } log.info("电子账簿查询完成=========:{}",balanceAcctResp); } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/fenZhang", method = RequestMethod.POST) // @ApiOperation(value = "分账", tags = {"分账"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public void fenZhang(){ log.info("平台分账到司机电子账簿========="); AllocationReq allocationReq = userWithdrawalService.createAllocationReq("2007942595542621717", "2007942320163036794", 1,"123456"); allocationReq.setOrderNo("202304041039329889826910"); allocationReq.setPassword("123456"); allocationReq.setOrderAmount(1L); allocationReq.setProductName("测试退货5(1111)"); allocationReq.setProductCount(1); AllocationResp allocationResp = null; try { allocationResp = AllocationExample.create(allocationReq); } catch (UpyztException e) { log.error("平台分账到司机电子账簿失败:{}",e.getMessage()); e.printStackTrace(); } log.info("平台分账到司机电子账簿完成=========:{}",allocationResp); } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/dianZi", method = RequestMethod.POST) // @ApiOperation(value = "电子账簿查询", tags = {"电子账簿查询"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public void dianZi(){ BalanceAcctListResp balanceAcctListResp = null; try { BalanceAcctReq balanceAcctReq = new BalanceAcctReq(); balanceAcctReq.setMchId("1008427961477222943"); balanceAcctListResp = BalanceAcctExample.retrieveByUserId(balanceAcctReq); System.err.println(balanceAcctListResp); } catch (UpyztException e) { log.error("电子账簿查询失败:{}",e.getMessage()); e.printStackTrace(); } log.info("电子账簿查询完成=========:{}",balanceAcctListResp); } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/tiXian", method = RequestMethod.POST) // @ApiOperation(value = "提现", tags = {"提现"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public void tiXian(){ WithdrawalResp balanceAcctResp = null; try { /*params.put("out_order_no", withdrawalReq.getOutOrderNo()); params.put("amount", withdrawalReq.getAmount()); params.put("balance_acct_id", withdrawalReq.getBalanceAcctId()); params.put("bank_acct_no", Upyzt.encryptField(withdrawalReq.getBankAcctNo())); params.put("password", Upyzt.encryptField(withdrawalReq.getPassword()));*/ WithdrawalReq withdrawalReq = new WithdrawalReq(); withdrawalReq.setOutOrderNo(ToolUtil.getRandomString(32)); withdrawalReq.setAmount(1); withdrawalReq.setBalanceAcctId("2007942320163036794"); withdrawalReq.setBankAcctNo("149245719387"); withdrawalReq.setPassword("123456"); balanceAcctResp = WithdrawalExample.create(withdrawalReq); System.err.println(balanceAcctResp); } catch (UpyztException e) { System.err.println("提现失败:{}"+e.getMessage()); e.printStackTrace(); } log.info("提现完成=========:{}",balanceAcctResp); } // @ResponseBody // @RequestMapping(value = "/api/placeOrder/tiXianQuery", method = RequestMethod.POST) // @ApiOperation(value = "提现查询", tags = {"提现查询"}, notes = "") // @ApiImplicitParams({ // @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") // }) public void tiXianQuery(){ WithdrawalResp balanceAcctResp = null; try { balanceAcctResp = WithdrawalExample.retrieveById("3708203534784717899"); System.err.println(balanceAcctResp); } catch (UpyztException e) { System.err.println("提现失败:{}"+e.getMessage()); e.printStackTrace(); } log.info("提现完成=========:{}",balanceAcctResp); } }