Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
bb70c6051a
4 changed files with 22 additions and 14 deletions
  1. 3
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentchannelorder/entity/PaymentChannelOrder.java
  2. 14
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java
  3. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/processor/IChannelPayService.java
  4. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/processor/wechat/WeChatPayProcessor.java

3
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/paymentchannelorder/entity/PaymentChannelOrder.java

@ -22,6 +22,9 @@ public class PaymentChannelOrder extends Entity<PaymentChannelOrder> {
@ApiModelProperty("付款方式")
private PaymentMethodEnum paymentMethod;
@ApiModelProperty("openId")
private String openId;
@ApiModelProperty("应用ID")
private Long appId;

14
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/PaymentChannelOrderApplicationService.java

@ -7,6 +7,9 @@ import com.qniao.dam.domain.aggregate.paymentchannelorder.entity.PaymentChannelO
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder;
import com.qniao.dam.domain.aggregate.paymentorder.repository.PaymentOrderRepository;
import com.qniao.dam.query.useropenid.UserOpenIdQueryService;
import com.qniao.dau.application.UecServerApplicationService;
import com.qniao.dau.application.request.GetWechatSessionDto;
import com.qniao.dau.application.response.WeChatAppletUserSessionVo;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -16,22 +19,27 @@ import java.util.Map;
@Service
public class PaymentChannelOrderApplicationService {
@Resource
private UserOpenIdQueryService userOpenIdQueryService;
@Resource
private PaymentOrderRepository paymentOrderRepository;
@Resource
private PaymentChannelOrderAggregate paymentChannelOrderAggregate;
@Resource
private UecServerApplicationService uecServerApplicationService;
/**
* todo 旧的付款单失效处理
*/
public Map<String, String> prePay(PaymentChannelOrder paymentChannelOrder, Long userId, List<ThirdPartyField> fieldList, Long appFrom) {
// 获取账号
String jsCode = ThirdPartyField.findFiledValueByKey(ThirdPartyField.JS_CODE, fieldList);
GetWechatSessionDto sessionDto = new GetWechatSessionDto(jsCode, appFrom);
WeChatAppletUserSessionVo sessionVo = uecServerApplicationService.getWechatSession(sessionDto);
PaymentOrder paymentOrder = paymentOrderRepository.load(paymentChannelOrder.getTxnOrderId());
paymentChannelOrder.setOpenId(sessionVo.getOpenid());
paymentChannelOrder.setAmount(paymentOrder.getUnpaidAmount());
paymentChannelOrder.setComment("订单交易");
paymentChannelOrderAggregate.create(paymentChannelOrder);
IChannelPayService channelPayService = IChannelPayService.getService(paymentChannelOrder.getPaymentMethod());
return channelPayService.prepay(paymentChannelOrder, fieldList, appFrom);
return channelPayService.prepay(paymentChannelOrder, sessionVo.getPlatformAppId(), sessionVo.getOpenid());
}
}

3
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/processor/IChannelPayService.java

@ -4,6 +4,7 @@ import com.qniao.dam.api.command.paymentchannelorder.user.request.ThirdPartyFiel
import com.qniao.dam.application.service.paymentchannelorder.processor.wechat.WeChatPayProcessor;
import com.qniao.dam.domain.aggregate.paymentchannelorder.entity.PaymentChannelOrder;
import com.qniao.dam.domian.aggregate.paymentorder.constant.PaymentMethodEnum;
import com.qniao.dau.application.response.WeChatAppletUserSessionVo;
import com.qniao.framework.exception.BizException;
import com.qniao.framework.utils.SpringContextUtil;
@ -22,5 +23,5 @@ public abstract class IChannelPayService {
}
}
public abstract Map<String, String> prepay(PaymentChannelOrder paymentChannelOrder, List<ThirdPartyField> fieldList, Long appFrom);
public abstract Map<String, String> prepay(PaymentChannelOrder paymentChannelOrder, String platformAppId, String openId);
}

16
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/paymentchannelorder/processor/wechat/WeChatPayProcessor.java

@ -39,18 +39,14 @@ public class WeChatPayProcessor extends IChannelPayService {
@Override
public Map<String, String> prepay(PaymentChannelOrder paymentChannelOrder,
List<ThirdPartyField> fieldList,
Long appFrom) {
// 获取账号
String jsCode = ThirdPartyField.findFiledValueByKey(ThirdPartyField.JS_CODE, fieldList);
GetWechatSessionDto sessionDto = new GetWechatSessionDto(jsCode, appFrom);
WeChatAppletUserSessionVo sessionVo = uecServerApplicationService.getWechatSession(sessionDto);
String platformAppId,
String openId) {
try {
Map<String, Object> reqParams = new HashMap<>();
reqParams.put("mchid", mchId);
reqParams.put("out_trade_no", paymentChannelOrder.getId().toString());
reqParams.put("appid", sessionVo.getPlatformAppId());
reqParams.put("appid", platformAppId);
reqParams.put("description", paymentChannelOrder.getComment());
reqParams.put("notify_url", notifyUrl);
reqParams.put("amount", new HashMap<String, Object>() {
@ -61,7 +57,7 @@ public class WeChatPayProcessor extends IChannelPayService {
});
reqParams.put("payer", new HashMap<String, Object>() {
{
put("openid", sessionVo.getOpenid());
put("openid", openId);
}
});
JSONObject result = wxPayV3Util.doPostWeiXinV3(WXPayV3Util.api_v3_placeAnOrder_url, JSONUtil.toJsonStr(reqParams));
@ -75,14 +71,14 @@ public class WeChatPayProcessor extends IChannelPayService {
long timestamp = System.currentTimeMillis() / 1000;
String sign;
try {
sign = wxPayV3Util.sign(sessionVo.getPlatformAppId(), timestamp, nonceStr, "prepay_id=" + prepayId);
sign = wxPayV3Util.sign(platformAppId, timestamp, nonceStr, "prepay_id=" + prepayId);
} catch (Exception e) {
log.error(" sign fail AppV3PayStrategyImpl {}", e.getMessage(), e);
throw new BizException("生成签名错误:" + e.getMessage());
}
log.info("sign____________________" + sign);
Map<String, String> returnMap = new HashMap<>();
returnMap.put("appId", sessionVo.getPlatformAppId());
returnMap.put("appId", platformAppId);
returnMap.put("nonceStr", nonceStr);
returnMap.put("timeStamp", String.valueOf(timestamp));
returnMap.put("packages", "prepay_id=" + prepayId);

Loading…
Cancel
Save