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 {
|
|
}
|
|
/**
|
* 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<JSONObject> 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<String, String> 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<Reassign> 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<OrderCrossCity>()
|
.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<Company>()
|
// .eq("type", 1)
|
// .last("LIMIT 1"));
|
// System.out.println("查询平台账户==============="+company);
|
// 查询平台开户信息
|
// TEnterpriseWithdrawal enterpriseWithdrawal = enterpriseWithdrawalService.selectOne(new EntityWrapper<TEnterpriseWithdrawal>()
|
// .eq("companyId", company.getId())); // 替换为公司id
|
// System.out.println("查询平台开户信息==============="+enterpriseWithdrawal);
|
// 司机开户信息
|
// TODO 司机进件信息
|
// UserWithdrawal driverWith = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
// .eq("phone",driver.getPhone())
|
// .last("LIMIT 1"));
|
// System.out.println("司机进件信息==============="+driverWith);
|
// 查询司机该订单的收入,进行分账
|
// TransactionDetails transactionDetails = transactionDetailsService.selectOne(new EntityWrapper<TransactionDetails>()
|
// .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<String, String> 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<OrderCrossCity>()
|
.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<Company>()
|
// .eq("type", 1)
|
// .last("LIMIT 1"));
|
// System.out.println("公司信息"+company);
|
// // 查询平台开户信息
|
// TEnterpriseWithdrawal enterpriseWithdrawal = enterpriseWithdrawalService.selectOne(new EntityWrapper<TEnterpriseWithdrawal>()
|
// .eq("companyId", company.getId())); // 替换为公司id
|
// // 司机开户信息
|
// // TODO 司机进件信息
|
// UserWithdrawal driverWith = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
// .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);
|
}
|
|
}
|