mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-10-13 21:30:25 +00:00
fix: 修复分账配置更新不生效问题, 修复wxjava配置使用base64无法解析问题, 修复微信分账同步有空指针问题
This commit is contained in:
@@ -30,8 +30,10 @@ import org.dromara.daxpay.service.entity.allocation.transaction.AllocOrder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -126,7 +128,7 @@ public class WeChatPayAllocationV2Service {
|
||||
}
|
||||
var detailMap = details.stream()
|
||||
.collect(Collectors.toMap(AllocDetail::getReceiverAccount, Function.identity(), CollectorsFunction::retainLatest));
|
||||
var royaltyDetailList = result.getReceivers();
|
||||
var royaltyDetailList = Optional.ofNullable( result.getReceivers()).orElse(new ArrayList<>(0));
|
||||
for (var receiver : royaltyDetailList) {
|
||||
var detail = detailMap.get(receiver.getAccount());
|
||||
if (Objects.nonNull(detail)) {
|
||||
|
@@ -28,8 +28,10 @@ import org.dromara.daxpay.service.entity.allocation.transaction.AllocOrder;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -124,7 +126,7 @@ public class WeChatPayAllocationV3Service {
|
||||
}
|
||||
var detailMap = details.stream()
|
||||
.collect(Collectors.toMap(AllocDetail::getReceiverAccount, Function.identity(), CollectorsFunction::retainLatest));
|
||||
var royaltyDetailList = result.getReceivers();
|
||||
var royaltyDetailList = Optional.ofNullable(result.getReceivers()).orElse(new ArrayList<>(0));
|
||||
for (var receiver : royaltyDetailList) {
|
||||
var detail = detailMap.get(receiver.getAccount());
|
||||
if (Objects.nonNull(detail)) {
|
||||
|
@@ -2,6 +2,7 @@ package org.dromara.daxpay.channel.wechat.service.config;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.bean.copier.CopyOptions;
|
||||
import cn.hutool.core.codec.Base64;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.github.binarywang.wxpay.config.WxPayConfig;
|
||||
import com.github.binarywang.wxpay.service.WxPayService;
|
||||
@@ -146,10 +147,11 @@ public class WechatPayConfigService {
|
||||
payConfig.setAppId(wechatPayConfig.getWxAppId());
|
||||
payConfig.setMchKey(wechatPayConfig.getApiKeyV2());
|
||||
payConfig.setApiV3Key(wechatPayConfig.getApiKeyV3());
|
||||
payConfig.setPrivateKeyString(wechatPayConfig.getPrivateKey());
|
||||
payConfig.setPrivateCertString(wechatPayConfig.getPrivateCert());
|
||||
// 注意不要使用base64的方式进行配置, 因为wxjava 是直接读取文本并不会进行解码
|
||||
payConfig.setPrivateKeyContent(Base64.decode(wechatPayConfig.getPrivateKey()));
|
||||
payConfig.setPrivateCertContent(Base64.decode(wechatPayConfig.getPrivateCert()));
|
||||
payConfig.setCertSerialNo(wechatPayConfig.getCertSerialNo());
|
||||
payConfig.setKeyString(wechatPayConfig.getP12());
|
||||
payConfig.setKeyContent(Base64.decode(wechatPayConfig.getP12()));
|
||||
WxPayService wxPayService = new WxPayServiceImpl();
|
||||
wxPayService.setConfig(payConfig);
|
||||
return wxPayService;
|
||||
|
@@ -191,32 +191,32 @@ public class WechatPayV3Service {
|
||||
*/
|
||||
private void barCodePay(PayOrder payOrder, String authCode, WechatPayConfig config, PayResultBo payResult) {
|
||||
WxPayService wxPayService = wechatPayConfigService.wxJavaSdk(config);
|
||||
WxPayCodepayRequest request = new WxPayCodepayRequest();
|
||||
request.setDescription(payOrder.getTitle());
|
||||
request.setOutTradeNo(payOrder.getOrderNo());
|
||||
// 金额
|
||||
var amount = new WxPayCodepayRequest.Amount();
|
||||
amount.setTotal(PayUtil.convertCentAmount(payOrder.getAmount()));
|
||||
request.setAmount(amount);
|
||||
WxPayCodepayRequest request = new WxPayCodepayRequest();
|
||||
request.setDescription(payOrder.getTitle());
|
||||
request.setOutTradeNo(payOrder.getOrderNo());
|
||||
// 金额
|
||||
var amount = new WxPayCodepayRequest.Amount();
|
||||
amount.setTotal(PayUtil.convertCentAmount(payOrder.getAmount()));
|
||||
request.setAmount(amount);
|
||||
|
||||
// 场景信息
|
||||
var sceneInfo = new WxPayCodepayRequest.SceneInfo();
|
||||
var storeInfo = new WxPayCodepayRequest.StoreInfo();
|
||||
storeInfo.setOutId("1");
|
||||
sceneInfo.setStoreInfo(storeInfo);
|
||||
request.setSceneInfo(sceneInfo);
|
||||
// 场景信息
|
||||
var sceneInfo = new WxPayCodepayRequest.SceneInfo();
|
||||
var storeInfo = new WxPayCodepayRequest.StoreInfo();
|
||||
storeInfo.setOutId("1");
|
||||
sceneInfo.setStoreInfo(storeInfo);
|
||||
request.setSceneInfo(sceneInfo);
|
||||
|
||||
// 条码参数
|
||||
var payer = new WxPayCodepayRequest.Payer();
|
||||
payer.setAuthCode(authCode);
|
||||
request.setPayer(payer);
|
||||
// 条码参数
|
||||
var payer = new WxPayCodepayRequest.Payer();
|
||||
payer.setAuthCode(authCode);
|
||||
request.setPayer(payer);
|
||||
|
||||
// 分账参数
|
||||
if (payOrder.getAllocation()){
|
||||
var settleInfo = new WxPayCodepayRequest.SettleInfo();
|
||||
settleInfo.setProfitSharing(true);
|
||||
request.setSettleInfo(settleInfo);
|
||||
}
|
||||
// 分账参数
|
||||
if (payOrder.getAllocation()){
|
||||
var settleInfo = new WxPayCodepayRequest.SettleInfo();
|
||||
settleInfo.setProfitSharing(true);
|
||||
request.setSettleInfo(settleInfo);
|
||||
}
|
||||
try {
|
||||
// 发送请求
|
||||
var result = wxPayService.codepay(request);
|
||||
|
Reference in New Issue
Block a user