改造租户

This commit is contained in:
fxh 2025-07-23 16:07:25 +08:00
parent 525ad3d6db
commit 79cb33cf13
2 changed files with 136 additions and 0 deletions

View File

@ -0,0 +1,62 @@
package com.wzj.soopin.order.wechat;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Data
@ConfigurationProperties(prefix = "wechat")
@Component("WechatPayData")
public class WechatPayData {
/** 商户号 */
public static String appId;
public static String secret;
public static String merchantId;
/** 商户API私钥路径 */
public static String privateKeyPath;
/** 商户证书序列号 */
public static String merchantSerialNumber;
/** 商户APIV3密钥 */
public static String apiV3key;
public static String notifyUrl;
public static String miniProgramAppId;
public static String miniProgramSecret;
public void setAppId(String appId) {
WechatPayData.appId = appId;
}
public void setSecret(String secret) {
WechatPayData.secret = secret;
}
public void setMerchantId(String merchantId) {
WechatPayData.merchantId = merchantId;
}
public void setPrivateKeyPath(String privateKeyPath) {
WechatPayData.privateKeyPath = privateKeyPath;
}
public void setMerchantSerialNumber(String merchantSerialNumber) {
WechatPayData.merchantSerialNumber = merchantSerialNumber;
}
public void setApiV3key(String apiV3key) {
WechatPayData.apiV3key = apiV3key;
}
public void setNotifyUrl(String notifyUrl) {
WechatPayData.notifyUrl = notifyUrl;
}
public void setMiniProgramAppId(String miniProgramAppId) {
WechatPayData.miniProgramAppId = miniProgramAppId;
}
public void setMiniProgramSecret(String miniProgramSecret) {
WechatPayData.miniProgramSecret = miniProgramSecret;
}
}

View File

@ -0,0 +1,74 @@
package com.wzj.soopin.order.wechat;
import com.wechat.pay.java.service.payments.jsapi.JsapiService;
import com.wechat.pay.java.service.payments.jsapi.model.Amount;
import com.wechat.pay.java.service.payments.jsapi.model.Payer;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest;
import com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse;
import com.wechat.pay.java.service.refund.RefundService;
import com.wechat.pay.java.service.refund.model.AmountReq;
import com.wechat.pay.java.service.refund.model.CreateRequest;
import com.wechat.pay.java.service.refund.model.Refund;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Service;
@Service
@Slf4j
@ConditionalOnProperty(prefix = "wechat", name = "enabled", havingValue = "true")
public class WechatPayService {
@Autowired
private JsapiService service;
@Autowired
private RefundService refundService;
/**
* jsapi下单
* @param orderNo 订单号
* @param desc 订单描述
* @param totalAmount 总金额单位
* @param openId 用户openid
* @return prepay_id
*/
public String jsapiPay(String orderNo,String desc,Integer totalAmount,String openId, Long memberId,String appId){
PrepayRequest prepayRequest = new PrepayRequest();
prepayRequest.setAppid(appId);
prepayRequest.setMchid(WechatPayData.merchantId);
prepayRequest.setDescription(desc);
prepayRequest.setOutTradeNo(orderNo);
prepayRequest.setAttach(String.valueOf(memberId));
prepayRequest.setNotifyUrl(WechatPayData.notifyUrl);
Amount amount = new Amount();
amount.setTotal(totalAmount);
prepayRequest.setAmount(amount);
Payer payer = new Payer();
payer.setOpenid(openId);
prepayRequest.setPayer(payer);
PrepayResponse response = service.prepay(prepayRequest);
return response.getPrepayId();
}
public Refund refundPay(String refundId,String payId,String notifyUrl,Long refundAmount, Long totalAmount,String reason) {
//请求参数
CreateRequest request = new CreateRequest();
request.setReason(reason);
//设置退款金额 根据自己的实际业务自行填写
AmountReq amountReq = new AmountReq();
amountReq.setRefund(refundAmount);
amountReq.setTotal(totalAmount);
amountReq.setCurrency("CNY");
request.setAmount(amountReq);
//支付成功后回调回来的transactionId 按照实际情况填写
request.setOutTradeNo(payId);
//支付成功后回调回来的transactionId 按照实际情况填写
request.setOutRefundNo(refundId);
//退款成功的回调地址
request.setNotifyUrl(notifyUrl);
//发起请求,申请退款
return refundService.create(request);
}
}