修复余额支付接口but
This commit is contained in:
@@ -2,10 +2,7 @@ package com.gxwebsoft.common.core.utils;
|
|||||||
|
|
||||||
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpRequest;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.gxwebsoft.common.system.entity.MerchantAccount;
|
import com.gxwebsoft.common.system.entity.*;
|
||||||
import com.gxwebsoft.common.system.entity.Payment;
|
|
||||||
import com.gxwebsoft.common.system.entity.User;
|
|
||||||
import com.gxwebsoft.common.system.entity.UserRole;
|
|
||||||
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
|
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
@@ -27,15 +24,37 @@ public class RequestUtil {
|
|||||||
ACCESS_TOKEN = token;
|
ACCESS_TOKEN = token;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 微信支付通知
|
|
||||||
public String pushWxPayNotify(Transaction transaction, Payment payment){
|
// 余额支付通知
|
||||||
|
public void pushBalancePayNotify(Transaction transaction, Payment payment) {
|
||||||
|
System.out.println("payment = " + payment);
|
||||||
|
System.out.println("transaction = " + transaction);
|
||||||
// 设置租户ID
|
// 设置租户ID
|
||||||
setTenantId(payment.getTenantId().toString());
|
setTenantId(payment.getTenantId().toString());
|
||||||
// 推送支付通知地址
|
// 推送支付通知地址
|
||||||
String path = payment.getNotifyUrl();
|
String path = payment.getNotifyUrl();
|
||||||
try {
|
try {
|
||||||
// 链式构建请求
|
// 链式构建请求
|
||||||
return HttpRequest.post(path)
|
HttpRequest.post(path)
|
||||||
|
.header("Tenantid", TENANT_ID)
|
||||||
|
.body(JSONUtil.toJSONString(transaction))//表单内容
|
||||||
|
.timeout(20000)//超时,毫秒
|
||||||
|
.execute().body();
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 微信支付通知
|
||||||
|
public void pushWxPayNotify(Transaction transaction, Payment payment) {
|
||||||
|
// 设置租户ID
|
||||||
|
setTenantId(payment.getTenantId().toString());
|
||||||
|
// 推送支付通知地址
|
||||||
|
String path = payment.getNotifyUrl();
|
||||||
|
try {
|
||||||
|
// 链式构建请求
|
||||||
|
HttpRequest.post(path)
|
||||||
.header("Tenantid", TENANT_ID)
|
.header("Tenantid", TENANT_ID)
|
||||||
.body(JSONUtil.toJSONString(transaction))//表单内容
|
.body(JSONUtil.toJSONString(transaction))//表单内容
|
||||||
.timeout(20000)//超时,毫秒
|
.timeout(20000)//超时,毫秒
|
||||||
@@ -44,7 +63,6 @@ public class RequestUtil {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
return "支付失败";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getMerchantAccountByPhone(String phone) {
|
public User getMerchantAccountByPhone(String phone) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.gxwebsoft.common.core.exception.BusinessException;
|
import com.gxwebsoft.common.core.exception.BusinessException;
|
||||||
import com.gxwebsoft.common.core.utils.RedisUtil;
|
import com.gxwebsoft.common.core.utils.RedisUtil;
|
||||||
|
import com.gxwebsoft.common.core.utils.RequestUtil;
|
||||||
import com.gxwebsoft.common.core.web.BaseController;
|
import com.gxwebsoft.common.core.web.BaseController;
|
||||||
import com.gxwebsoft.common.system.entity.*;
|
import com.gxwebsoft.common.system.entity.*;
|
||||||
import com.gxwebsoft.common.system.service.PaymentService;
|
import com.gxwebsoft.common.system.service.PaymentService;
|
||||||
@@ -16,6 +17,9 @@ import com.gxwebsoft.common.core.web.BatchParam;
|
|||||||
import com.gxwebsoft.common.core.annotation.OperationLog;
|
import com.gxwebsoft.common.core.annotation.OperationLog;
|
||||||
import com.gxwebsoft.common.system.service.UserBalanceLogService;
|
import com.gxwebsoft.common.system.service.UserBalanceLogService;
|
||||||
import com.gxwebsoft.common.system.service.UserService;
|
import com.gxwebsoft.common.system.service.UserService;
|
||||||
|
import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
|
||||||
|
import com.wechat.pay.java.service.partnerpayments.model.TransactionAmount;
|
||||||
|
import com.wechat.pay.java.service.payments.jsapi.model.Amount;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
@@ -25,6 +29,7 @@ import org.springframework.web.bind.annotation.*;
|
|||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN;
|
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN;
|
||||||
@@ -48,6 +53,8 @@ public class PaymentController extends BaseController {
|
|||||||
private UserBalanceLogService userBalanceLogService;
|
private UserBalanceLogService userBalanceLogService;
|
||||||
@Resource
|
@Resource
|
||||||
private RedisUtil redisUtil;
|
private RedisUtil redisUtil;
|
||||||
|
@Resource
|
||||||
|
private RequestUtil requestUtil;
|
||||||
|
|
||||||
@ApiOperation("余额支付接口")
|
@ApiOperation("余额支付接口")
|
||||||
@PostMapping("/balancePay")
|
@PostMapping("/balancePay")
|
||||||
@@ -75,11 +82,29 @@ public class PaymentController extends BaseController {
|
|||||||
BigDecimal balance = buyer.getBalance().add(order.getPayPrice());
|
BigDecimal balance = buyer.getBalance().add(order.getPayPrice());
|
||||||
userBalanceLog.setBalance(balance);
|
userBalanceLog.setBalance(balance);
|
||||||
userBalanceLog.setComments(order.getMerchantName());
|
userBalanceLog.setComments(order.getMerchantName());
|
||||||
|
userBalanceLog.setTransactionId(UUID.randomUUID().toString());
|
||||||
userBalanceLog.setOrderNo(order.getOrderNo());
|
userBalanceLog.setOrderNo(order.getOrderNo());
|
||||||
final boolean save = userBalanceLogService.save(userBalanceLog);
|
final boolean save = userBalanceLogService.save(userBalanceLog);
|
||||||
System.out.println("save = " + save);
|
System.out.println("save = " + save);
|
||||||
|
|
||||||
|
// 推送微信官方支付结果(携带租户ID的POST请求)
|
||||||
|
final Transaction transaction = new Transaction();
|
||||||
|
transaction.setOutTradeNo(order.getOrderNo());
|
||||||
|
transaction.setTransactionId(order.getOrderNo());
|
||||||
|
final TransactionAmount amount = new TransactionAmount();
|
||||||
|
// 计算金额
|
||||||
|
// BigDecimal decimal = order.getTotalPrice();
|
||||||
|
// final BigDecimal multiply = decimal.multiply(new BigDecimal(100));
|
||||||
|
// // 将 BigDecimal 转换为 Integer
|
||||||
|
// Integer money = multiply.intValue();
|
||||||
|
amount.setTotal(order.getPayPrice().intValue());
|
||||||
|
amount.setCurrency("CNY");
|
||||||
|
transaction.setAmount(amount);
|
||||||
|
// 获取支付配置信息用于解密
|
||||||
|
String key = "Payment:0:".concat(order.getTenantId().toString());
|
||||||
|
System.out.println("key = " + key);
|
||||||
|
final Payment payment = redisUtil.get(key, Payment.class);
|
||||||
|
requestUtil.pushBalancePayNotify(transaction, payment);
|
||||||
|
|
||||||
return success("支付成功",order.getOrderNo());
|
return success("支付成功",order.getOrderNo());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.gxwebsoft.common.system.controller;
|
package com.gxwebsoft.common.system.controller;
|
||||||
|
|
||||||
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.IdUtil;
|
||||||
|
import com.gxwebsoft.common.core.utils.CommonUtil;
|
||||||
import com.gxwebsoft.common.core.web.ApiResult;
|
import com.gxwebsoft.common.core.web.ApiResult;
|
||||||
import com.gxwebsoft.common.core.web.BaseController;
|
import com.gxwebsoft.common.core.web.BaseController;
|
||||||
import com.gxwebsoft.common.core.web.BatchParam;
|
import com.gxwebsoft.common.core.web.BatchParam;
|
||||||
@@ -22,6 +23,7 @@ import javax.annotation.Resource;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN;
|
import static com.gxwebsoft.common.core.constants.BalanceConstants.BALANCE_ADMIN;
|
||||||
|
|
||||||
@@ -54,6 +56,7 @@ public class RechargeOrderController extends BaseController {
|
|||||||
userService.updateById(user);
|
userService.updateById(user);
|
||||||
// 保存充值记录
|
// 保存充值记录
|
||||||
rechargeOrder.setOrderNo(Long.toString(IdUtil.getSnowflakeNextId()));
|
rechargeOrder.setOrderNo(Long.toString(IdUtil.getSnowflakeNextId()));
|
||||||
|
rechargeOrder.setTradeId(Integer.valueOf(CommonUtil.createOrderNo()));
|
||||||
rechargeOrder.setBalance(balance);
|
rechargeOrder.setBalance(balance);
|
||||||
if (rechargeOrderService.save(rechargeOrder)) {
|
if (rechargeOrderService.save(rechargeOrder)) {
|
||||||
// 记录余额明细
|
// 记录余额明细
|
||||||
@@ -62,6 +65,7 @@ public class RechargeOrderController extends BaseController {
|
|||||||
userBalanceLog.setScene(BALANCE_ADMIN);
|
userBalanceLog.setScene(BALANCE_ADMIN);
|
||||||
userBalanceLog.setMoney(rechargeOrder.getPayPrice());
|
userBalanceLog.setMoney(rechargeOrder.getPayPrice());
|
||||||
userBalanceLog.setBalance(balance);
|
userBalanceLog.setBalance(balance);
|
||||||
|
userBalanceLog.setTransactionId(UUID.randomUUID().toString());
|
||||||
userBalanceLog.setComments("操作人:" + getLoginUser().getNickname());
|
userBalanceLog.setComments("操作人:" + getLoginUser().getNickname());
|
||||||
userBalanceLog.setRemark(rechargeOrder.getComments());
|
userBalanceLog.setRemark(rechargeOrder.getComments());
|
||||||
userBalanceLog.setMerchantCode(rechargeOrder.getMerchantCode());
|
userBalanceLog.setMerchantCode(rechargeOrder.getMerchantCode());
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ public class UserBalanceLog implements Serializable {
|
|||||||
@ApiModelProperty(value = "订单编号")
|
@ApiModelProperty(value = "订单编号")
|
||||||
private String orderNo;
|
private String orderNo;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "支付流水号")
|
||||||
|
private String transactionId;
|
||||||
|
|
||||||
@ApiModelProperty(value = "管理员备注")
|
@ApiModelProperty(value = "管理员备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user