Browse Source

feat 0 支付工程

devlop
yang_shj 4 years ago
parent
commit
13b7e7a4e0
  1. 7
      payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java
  2. 6
      payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java
  3. 11
      payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java
  4. 2
      payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java
  5. 5
      payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java
  6. 96
      payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java
  7. 5
      payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java
  8. 2
      payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java
  9. 26
      payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java
  10. 30
      payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java
  11. 78
      payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java
  12. 40
      payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java
  13. 9
      payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml
  14. 7
      payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml

7
payment-base-app/src/main/java/com/base/springcloud/bo/RefundBO.java

@ -1,6 +1,7 @@
package com.base.springcloud.bo; package com.base.springcloud.bo;
import com.base.springcloud.base.MchConfigEntity; import com.base.springcloud.base.MchConfigEntity;
import com.base.springcloud.entity.Order;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
@ -9,12 +10,18 @@ import java.math.BigDecimal;
@Data @Data
public class RefundBO extends MchConfigEntity implements Serializable { public class RefundBO extends MchConfigEntity implements Serializable {
// 创建人
private String createId;
// 退款单据编号 // 退款单据编号
private String billId; private String billId;
// 原订单编号 // 原订单编号
private String origOrderNo; private String origOrderNo;
// 原订单
private Order order;
// 退款订单号 // 退款订单号
private String refundNo; private String refundNo;

6
payment-base-app/src/main/java/com/base/springcloud/constant/ErrorConstant.java

@ -17,7 +17,11 @@ public enum ErrorConstant {
USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"), USER_DEPART_RELATION_NEED("RBS00012","请用户先关联部门信息!"),
SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"), SAVE_PAY_DEPART_CONFIG_FAIL("RBS00013","添加部门商户支付配置信息失败!"),
SALE_BILL__INVALID("RBS00014","无有效销售单据!"), SALE_BILL__INVALID("RBS00014","无有效销售单据!"),
MERCHANT_PAY_CERT_READ_FAIL("RBS00015","支付证书读取失败!"); MERCHANT_PAY_CERT_READ_FAIL("RBS00015","支付证书读取失败!"),
PAY_ORDER_NOT_FOUND("RBS00016","无有效支付订单!"),
ORDER_STATE_NOT_SUPPORT_REFUND("RBS00017","订单状态不支持退款!"),
REGISTER_REFUND_FAIL("RBS00018","退款订单登记失败!"),
SYNC_WEC_REFUND_STATE_FAIL("RBS00019","同步微信退款状态失败!");
private String code; private String code;
private String message; private String message;

11
payment-base-app/src/main/java/com/base/springcloud/constant/PaymentConstant.java

@ -5,15 +5,24 @@ public interface PaymentConstant {
String TOKEN_PREFIX = "prefix_user_token_"; // TOKEN前缀 String TOKEN_PREFIX = "prefix_user_token_"; // TOKEN前缀
String WAIT = "W"; // 等待付款 String WAIT = "W"; // 等待付款
String SUCCESS = "S"; // 支付完成
String WX_SUCCESS = "SUCCESS"; // 微信支付成功状态 String WX_SUCCESS = "SUCCESS"; // 微信支付成功状态
String NATIVE = "Native"; // Native支付 String NATIVE = "Native"; // Native支付
String H5 = "H5"; // H5支付 String H5 = "H5"; // H5支付
String JSAPI = "Jsapi"; // JSAPI支付 String JSAPI = "Jsapi"; // JSAPI支付
String ORDER_LOCK_PREFIX = "ORDER_KEY:"; // 订单锁前缀
Integer REFUND_WAIT = 0; // 等待退款
Integer REFUND_SUCCESS = 1; // 完成退款
Integer REFUND_PART = 2; // 部分退款
Integer START_REFUND_COUNT = 1; // 退款起始次数
Integer END_REFUND_COUNT = 6; // 退款结束次数
String ORDER_LOCK_PREFIX = "ORDER_KEY:"; // 订单锁前缀
String DEFAULT_MCH_ID = "1537100771"; // 默认商户ID String DEFAULT_MCH_ID = "1537100771"; // 默认商户ID
// 微信订单查询请求地址
String WX_ORDER_QUERY_URL = "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/"; String WX_ORDER_QUERY_URL = "https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/";

2
payment-base-app/src/main/java/com/base/springcloud/dao/OrderMapper.java

@ -24,4 +24,6 @@ public interface OrderMapper {
List<Order> queryOrder(Date date); List<Order> queryOrder(Date date);
int updateOrderSuccess(String orderNo); int updateOrderSuccess(String orderNo);
Order origOrderInfo(String orderNo);
} }

5
payment-base-app/src/main/java/com/base/springcloud/dao/RefundMapper.java

@ -1,7 +1,10 @@
package com.base.springcloud.dao; package com.base.springcloud.dao;
import com.base.springcloud.bo.RefundBO;
import com.base.springcloud.entity.Refund; import com.base.springcloud.entity.Refund;
import org.springframework.stereotype.Repository;
@Repository
public interface RefundMapper { public interface RefundMapper {
int deleteByPrimaryKey(String id); int deleteByPrimaryKey(String id);
@ -14,4 +17,6 @@ public interface RefundMapper {
int updateByPrimaryKeySelective(Refund record); int updateByPrimaryKeySelective(Refund record);
int updateByPrimaryKey(Refund record); int updateByPrimaryKey(Refund record);
int updateRefundSuccess(Refund refund);
} }

96
payment-base-app/src/main/java/com/base/springcloud/entity/Refund.java

@ -1,7 +1,10 @@
package com.base.springcloud.entity; package com.base.springcloud.entity;
import lombok.Data;
import java.util.Date; import java.util.Date;
@Data
public class Refund { public class Refund {
private String id; private String id;
@ -21,95 +24,8 @@ public class Refund {
private String reason; private String reason;
private Byte refundState; // 0 - 退款未完成 1 - 退款完成 2 - 退款部分完成
private Integer refundState;
private Byte refundRetryCount;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getRefundOrderNo() {
return refundOrderNo;
}
public void setRefundOrderNo(String refundOrderNo) {
this.refundOrderNo = refundOrderNo;
}
public Date getRefundTime() {
return refundTime;
}
public void setRefundTime(Date refundTime) {
this.refundTime = refundTime;
}
public String getCreateId() {
return createId;
}
public void setCreateId(String createId) {
this.createId = createId;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getOrigOrderNo() {
return origOrderNo;
}
public void setOrigOrderNo(String origOrderNo) {
this.origOrderNo = origOrderNo;
}
public Date getOrigOrderTime() {
return origOrderTime;
}
public void setOrigOrderTime(Date origOrderTime) {
this.origOrderTime = origOrderTime;
}
public String getSourceBillId() {
return sourceBillId;
}
public void setSourceBillId(String sourceBillId) {
this.sourceBillId = sourceBillId;
}
public String getReason() {
return reason;
}
public void setReason(String reason) {
this.reason = reason;
}
public Byte getRefundState() {
return refundState;
}
public void setRefundState(Byte refundState) {
this.refundState = refundState;
}
public Byte getRefundRetryCount() {
return refundRetryCount;
}
public void setRefundRetryCount(Byte refundRetryCount) { private Integer refundRetryCount;
this.refundRetryCount = refundRetryCount;
}
} }

5
payment-base-app/src/main/java/com/base/springcloud/service/OrderService.java

@ -1,8 +1,10 @@
package com.base.springcloud.service; package com.base.springcloud.service;
import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.bo.RefundBO;
import com.base.springcloud.entity.Order; import com.base.springcloud.entity.Order;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -16,4 +18,7 @@ public interface OrderService {
// 同步订单状态 // 同步订单状态
void updateOrderSuccess(String orderNo); void updateOrderSuccess(String orderNo);
// 查询原支付订单
void origOrderCheck(RefundBO refundBO);
} }

2
payment-base-app/src/main/java/com/base/springcloud/service/WecPaymentService.java

@ -16,7 +16,7 @@ public interface WecPaymentService {
* 微信APIv3退款 * 微信APIv3退款
* @param refundBO * @param refundBO
*/ */
void wecRefund(RefundBO refundBO); Boolean wecRefund(RefundBO refundBO);
/** /**
* 微信付款码支付 * 微信付款码支付

26
payment-base-app/src/main/java/com/base/springcloud/service/imp/MerchantServiceImp.java

@ -217,30 +217,4 @@ public class MerchantServiceImp implements MerchantService {
} }
return null; return null;
} }
/*public static void main(String[] args) throws Exception {
MyConfig config = new MyConfig();
WXPay wxPay = new WXPay(config);
Map<String, String> data = new HashMap();
//公众账号ID (微信分配的公众账号ID(企业号corpid即为此appId))
data.put("appid", "wxa91984b310053c3d");
//商户号 (微信支付分配的商户号)
data.put("mch_id", "1610494969");
data.put("device_info", "sb0001");
//商品描述 (商品简单描述,该字段须严格按照规范传递) 店名-销售商品类目 例 小张南山店-超市
data.put("body", "Image形象店-深圳腾大-QQ公仔");
//商户系统内部订单号,要求32个字符内,只能是数字、大小写字母_-|*且在同一个商户号下唯一
data.put("out_trade_no", DateUtil.getDateString(25));
//订单总金额,单位为分,只能为整数
data.put("total_fee", "1");
data.put("auth_code", "135080797699902868");
data.put("spbill_create_ip", "8.8.8.8");
//付款码 (扫码支付付款码,设备读取用户微信中的条码或者二维码信息(注:用户付款码条形码规则:18位纯数字,以10、11、12、13、14、15开头))
data.put("sign", WXPayUtil.generateSignature(data,"yDXt3Jczcs2dSKvwUxGkYYfHzCe8SXtY"));
Map<String, String> responseMap = wxPay.microPay(data);
//判断是否成功
System.out.println("微信返回响应:" + responseMap.toString());
}*/
} }

30
payment-base-app/src/main/java/com/base/springcloud/service/imp/OrderServiceImp.java

@ -2,6 +2,7 @@ package com.base.springcloud.service.imp;
import com.base.springcloud.aspect.annotation.BusinessException; import com.base.springcloud.aspect.annotation.BusinessException;
import com.base.springcloud.bo.OrderBO; import com.base.springcloud.bo.OrderBO;
import com.base.springcloud.bo.RefundBO;
import com.base.springcloud.constant.ErrorConstant; import com.base.springcloud.constant.ErrorConstant;
import com.base.springcloud.constant.PaymentConstant; import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.dao.OrderMapper; import com.base.springcloud.dao.OrderMapper;
@ -25,6 +26,11 @@ public class OrderServiceImp implements OrderService {
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
/**
* 登记订单
* @param orderBO
*/
@Override @Override
public void registerOrder(OrderBO orderBO) { public void registerOrder(OrderBO orderBO) {
BigDecimal amount = orderBO.getAmount(); BigDecimal amount = orderBO.getAmount();
@ -49,6 +55,11 @@ public class OrderServiceImp implements OrderService {
orderBO.setOrder(order); orderBO.setOrder(order);
} }
/**
* 查询订单
* @param date
* @return
*/
@Override @Override
public List<OrderBO> queryOrder(Date date) { public List<OrderBO> queryOrder(Date date) {
List<Order> orderList = orderMapper.queryOrder(date); List<Order> orderList = orderMapper.queryOrder(date);
@ -65,10 +76,29 @@ public class OrderServiceImp implements OrderService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
} }
/**
* 同步订单状态
* @param orderNo
*/
@Override @Override
public void updateOrderSuccess(String orderNo) { public void updateOrderSuccess(String orderNo) {
int count = orderMapper.updateOrderSuccess(orderNo); int count = orderMapper.updateOrderSuccess(orderNo);
if(count > 0) return; if(count > 0) return;
// TODO 抛出业务异常 // TODO 抛出业务异常
} }
/**
* 查询原支付订单
* @param refundBO
* @return
*/
@Override
public void origOrderCheck(RefundBO refundBO) {
Order order = orderMapper.origOrderInfo(refundBO.getOrigOrderNo());
if (!Optional.ofNullable(order).isPresent())
throw new BusinessException(ErrorConstant.PAY_ORDER_NOT_FOUND);
if(!PaymentConstant.SUCCESS.equals(order.getOrderState()))
throw new BusinessException(ErrorConstant.ORDER_STATE_NOT_SUPPORT_REFUND);
refundBO.setOrder(order);
}
} }

78
payment-base-app/src/main/java/com/base/springcloud/service/imp/RefundServiceImp.java

@ -1,14 +1,92 @@
package com.base.springcloud.service.imp; package com.base.springcloud.service.imp;
import com.base.springcloud.aspect.annotation.BusinessException;
import com.base.springcloud.bo.RefundBO; import com.base.springcloud.bo.RefundBO;
import com.base.springcloud.constant.ErrorConstant;
import com.base.springcloud.constant.PaymentConstant;
import com.base.springcloud.dao.RefundMapper;
import com.base.springcloud.entity.Order;
import com.base.springcloud.entity.Refund;
import com.base.springcloud.service.OrderService;
import com.base.springcloud.service.RefundService; import com.base.springcloud.service.RefundService;
import com.base.springcloud.service.WecPaymentService;
import com.base.springcloud.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.UUID;
@Service @Service
public class RefundServiceImp implements RefundService { public class RefundServiceImp implements RefundService {
@Autowired
private OrderService orderService;
@Autowired
private WecPaymentService wecPaymentService;
@Autowired
private RefundMapper refundMapper;
/**
* 退款
* @param refundBO
*/
@Override @Override
public void refund(RefundBO refundBO) { public void refund(RefundBO refundBO) {
// RBS-退款金额获取
// 退款限制检查
// 查询原支付订单
orderService.origOrderCheck(refundBO);
// 登记退款信息
registerRfund(refundBO);
// 发送微信退款
Boolean refundResult = wecPaymentService.wecRefund(refundBO);
// 同步退款信息
if(refundResult)
updateRefundSuccess(refundBO);
// RBS-业务逻辑处理
} }
/**
* 登记退款
* @param refundBO
*/
private void registerRfund(RefundBO refundBO) {
Refund refund = new Refund();
refund.setId(UUID.randomUUID().toString().replace("-", ""));
refund.setCreateId(refundBO.getCreateId());
refund.setCreateTime(new Date());
refund.setReason(refundBO.getReason());
refund.setRefundOrderNo(DateUtil.getDateString(25));
refund.setRefundTime(new Date());
refund.setRefundState(PaymentConstant.REFUND_WAIT);
refund.setRefundRetryCount(PaymentConstant.START_REFUND_COUNT);
Order order = refundBO.getOrder();
refund.setOrigOrderNo(order.getOrderNo());
refund.setOrigOrderTime(order.getCreateTime());
// FIXME 原销售单据id
// refund.setSourceBillId();
int count = refundMapper.insert(refund);
if(count < 1)
throw new BusinessException(ErrorConstant.REGISTER_REFUND_FAIL);
refundBO.setRefundNo(refund.getRefundOrderNo());
}
/**
* 同步退款状态
* @param refundBO
*/
private void updateRefundSuccess(RefundBO refundBO) {
Refund refund = new Refund();
refund.setRefundOrderNo(refundBO.getRefundNo());
refund.setRefundState(PaymentConstant.REFUND_SUCCESS);
int count = refundMapper.updateRefundSuccess(refund);
if(count < 1)
throw new BusinessException(ErrorConstant.SYNC_WEC_REFUND_STATE_FAIL);
}
} }

40
payment-base-app/src/main/java/com/base/springcloud/service/imp/WecPaymentServiceImp.java

@ -59,7 +59,7 @@ public class WecPaymentServiceImp implements WecPaymentService {
* @param refundBO * @param refundBO
*/ */
@Override @Override
public void wecRefund(RefundBO refundBO) { public Boolean wecRefund(RefundBO refundBO) {
WxpayRefundVo wxpayRefundVo = new WxpayRefundVo(); WxpayRefundVo wxpayRefundVo = new WxpayRefundVo();
wxpayRefundVo.setTransaction_id(refundBO.getOrigOrderNo()); wxpayRefundVo.setTransaction_id(refundBO.getOrigOrderNo());
wxpayRefundVo.setReason(refundBO.getReason()); wxpayRefundVo.setReason(refundBO.getReason());
@ -70,6 +70,7 @@ public class WecPaymentServiceImp implements WecPaymentService {
wxpayRefundVo.setOut_refund_no(refundBO.getRefundNo()); wxpayRefundVo.setOut_refund_no(refundBO.getRefundNo());
wxpayRefundVo.setAmount(wxRefundAmountVo); wxpayRefundVo.setAmount(wxRefundAmountVo);
String refundRsp = WxpayUtils.refund(wxpayRefundVo,refundBO.getMchId(),refundBO.getMchPrivateKey(),refundBO.getCertificate(),refundBO.getSerialNo()); String refundRsp = WxpayUtils.refund(wxpayRefundVo,refundBO.getMchId(),refundBO.getMchPrivateKey(),refundBO.getCertificate(),refundBO.getSerialNo());
return true;
} }
/** /**
@ -93,41 +94,4 @@ public class WecPaymentServiceImp implements WecPaymentService {
logger.info("order_result_url : {}",url); logger.info("order_result_url : {}",url);
return WxpayUtils.queryWxOrder(url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo()); return WxpayUtils.queryWxOrder(url,orderBO.getMchId(),orderBO.getMchPrivateKey(),orderBO.getCertificate(),orderBO.getSerialNo());
} }
/*public static void main(String[] args) {
OrderBO orderBO = new OrderBO();
orderBO.setAppId("wxe61ee6c21345d74d");
orderBO.setMchId("1537100771");
orderBO.setMchPrivateKey("MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDU7qXRin2MGdDGPQLgMCMlAWccseGXDz99Ulu0KL3u7QBH0eJZoxDpHGqE/sMtQnDUD446Khi3AZgd2xwWOoshkleSOkNd20+tVaq91vw/lJEF4kv4DbFFNLObs1kBqGYZi4HUrbyRH1UqFujImJXDvSOKd53SPjEPs6rRFDwXAQaEQEftwQVvv6ycHc7symgYL486KCVZLm2yfsMA0fu/MiSTIeZCMR1OEx+YK61K4Rzv6rdE8Yf6o2Rwl0xWqcrm2C2RFLgGqmrYmxscgI6ufEEdbWO0YkqFQndcVhT8vooTYdwShrB5rp7TDs3G3qQMzqQpfi2J/gWsWT1S4ZnLAgMBAAECggEAUavLfCijaQZJ1o92N+kewcXc99uejGMz1eyt8dciqq7KycFOEVWDWfYlQSe6UvTF9ACXa+XTnvYEk4cEKd6AmPrZjeO9DRXeZLyUBcac8AIa8efPfbA6yzGgplrPC9y8dJXW0W1mAz/CWad51972qqI0LJsetJJYHQ6ruRAK0ENH7LUAHAzrSbD96y+YuXB6n2x7GQZF1e8PCzVdpNEsDfEwNBB19CyLpCIW3JQMZvVcWUv+8MJwdzvNprwkDKeMC0F/p7R+ErZL1z1pfi9aMV2DzQ25qKW758juTTnGf6z+tTND+cQoeMh1GxqK3CuUpz1Y7lUctF2jyP/6EPctWQKBgQD5m4ZaiW+ucQ1hEkxW4T9TPugyHxvNBtOQvs3F5kin2QVeIkY9ssGHmTx5I5r63sDQylSQRildaIX6EAxYzoy5AHtAKiltiB3ppLdQxX7adoSWNORZ/pjd/sNKTAZtqd0IBNtjuI3y/BxYrqii7cUC/aWv+gxHFUjoyG01aU8mHwKBgQDaYqwrm0gRmpKlhigoXRYGEo24kJHsGjXnpxy9Klq3S7A9zAfEF4WqfuAM3vXbUm8RrDU045N4kyakwfJNewVSzkL9N0vcGHqoB5DNWSrS6qmIZgUAuU55iRXR16Kluv0k3pF1Ar4gtJuDHpEvjlqV8J4Z0bWNrOkXZ5sjIAje1QKBgGJDX7j0sgqyZtn4IiVxt0RGV5KjvIYSUeeBtfBan++z9/D+/Tf8z0Nah/wIkFKCrtWDUZcah95F77hp6PJtHekWz26LKpP8Kgp41dHubeoDDl8zo1HqcLO0P51YII+7d1BY2SWA2iD2LxKab7j0ccKjqD6G6Z5yOqmpfZSxSH9xAoGAPqSVPIDzYFFVhXOBK2rgOWezDWEy6mXuVn/CJ6Txlqh4apGPHLmelvSD8k02eu4ffBNIw94P3ENhj1su1PjX4xPVdWsaMI05Cd/5sl3EgfHcJYsWHkoJb6VaA/J17lI/8QaC9OyPezQzc54eCWUtKNt3jnJwQK57wkHu51l2Ee0CgYBuqDJjYcw1xHYtA+hH/tTrU1t8arwdeoz0QN+Cj1DgGW6zY0WRyIcnl4M1v51bIyrluqpN4e0Dh2VVV0r1LAIlhvAzsz3alCIJzVTVaJXKAGwN9vMxRbnCdg1h+QzAeZ+VC1zLNzHKUPYsGEnH5Hig5mml1pZz4b6LSNDFG6VBqw==");
orderBO.setCertificate("MIID8DCCAtigAwIBAgIUbAm85GX1um+ESCWizOGXEoH6gnowDQYJKoZIhvcNAQELBQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsTFFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3QgQ0EwHhcNMjExMTE2MDczNDUzWhcNMjYxMTE1MDczNDUzWjCBgTETMBEGA1UEAwwKMTUzNzEwMDc3MTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMS0wKwYDVQQLDCTlm5vlt53nm5vlkozmnLrmorDorr7lpIfmnInpmZDlhazlj7gxCzAJBgNVBAYMAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANTupdGKfYwZ0MY9AuAwIyUBZxyx4ZcPP31SW7Qove7tAEfR4lmjEOkcaoT+wy1CcNQPjjoqGLcBmB3bHBY6iyGSV5I6Q13bT61Vqr3W/D+UkQXiS/gNsUU0s5uzWQGoZhmLgdStvJEfVSoW6MiYlcO9I4p3ndI+MQ+zqtEUPBcBBoRAR+3BBW+/rJwdzuzKaBgvjzooJVkubbJ+wwDR+78yJJMh5kIxHU4TH5grrUrhHO/qt0Txh/qjZHCXTFapyubYLZEUuAaqatibGxyAjq58QR1tY7RiSoVCd1xWFPy+ihNh3BKGsHmuntMOzcbepAzOpCl+LYn+BaxZPVLhmcsCAwEAAaOBgTB/MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgTwMGUGA1UdHwReMFwwWqBYoFaGVGh0dHA6Ly9ldmNhLml0cnVzLmNvbS5jbi9wdWJsaWMvaXRydXNjcmw/Q0E9MUJENDIyMEU1MERCQzA0QjA2QUQzOTc1NDk4NDZDMDFDM0U4RUJEMjANBgkqhkiG9w0BAQsFAAOCAQEArtZJ2FICGrykPJziJxPjTaaA/nn//tXI6rUW9aSHe6atLWgduUDlBQjn8pckAeReuXF6J1D9u45iQY8fc5Mb5BAQsg4qC1zxoRINBNL5HVEf+9uolfJI2urw3cfwbAdrymMDUWc0xFZWgo5z3KFXso8ERb73j/5utbIqZ+C7MtesHs1Em5FRSZgX86wy9zDcbIMtw2LeHymQ3MV8C6cASwlBIJ/UptDieuHRr0FoUxkmtSN1POQRhhYVT2gaHpNOVHmrK6Tbd6nblQ70GdLH7kdb9LPr4kS0GXPz+Gvk8y15PKI02MFcNqJCuLJTpFlAf4gTwWule2Z5/1WlOF1+sA==");
orderBO.setSerialNo("6C09BCE465F5BA6F844825A2CCE1971281FA827A");
Order order1 = new Order();
order1.setGoodName("形象大公仔");
order1.setOrderNo("20220304112022");
order1.setOrderAmount(new BigDecimal(1));
orderBO.setOrder(order1);
Order order = Optional.ofNullable(orderBO).map(o->orderBO.getOrder()).orElse(null);
if(order == null) {
// TODO 抛出业务异常
}
WxpayTradeVo wxpayTradeVo = new WxpayTradeVo();
wxpayTradeVo.setAppid(orderBO.getAppId());
wxpayTradeVo.setMchid(orderBO.getMchId());
wxpayTradeVo.setDescription(order.getGoodName());
wxpayTradeVo.setOut_trade_no(order.getOrderNo());
// FIXME 待定为商户系统||RBS系统回调接收
wxpayTradeVo.setNotify_url("https://www.weixin.qq.com/wxpay/pay.php");
WxpayTradeVo.WxTradeAmountVo wxTradeAmountVo = new WxpayTradeVo.WxTradeAmountVo();
wxTradeAmountVo.setTotal(order.getOrderAmount());
wxpayTradeVo.setAmount(wxTradeAmountVo);
JSONObject objectNode = WxpayUtils.getWxpay(
wxpayTradeVo,
PaymentConstant.NATIVE,
orderBO.getMchPrivateKey(),
orderBO.getCertificate(),
orderBO.getSerialNo());
System.out.println("Native支付订单 :{} " + order.getOrderNo() + " 接收响应数据 :{} "+ objectNode.toString());
System.out.println(objectNode.toString());
}*/
} }

9
payment-base-app/src/main/resources/com/base/payment/mapper/OrderMapper.xml

@ -175,4 +175,13 @@
set order_state = 'S' set order_state = 'S'
where order_no = #{orderNo,jdbcType=VARCHAR} where order_no = #{orderNo,jdbcType=VARCHAR}
</update> </update>
<select id="origOrderInfo" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from pay_order
<where>
order_no = #{orderNo,jdbcType=VARCHAR}
</where>
</select>
</mapper> </mapper>

7
payment-base-app/src/main/resources/com/base/payment/mapper/RefundMapper.xml

@ -161,4 +161,11 @@
refund_retry_count = #{refundRetryCount,jdbcType=INTEGER} refund_retry_count = #{refundRetryCount,jdbcType=INTEGER}
where id = #{id,jdbcType=VARCHAR} where id = #{id,jdbcType=VARCHAR}
</update> </update>
<update id="updateRefundSuccess" parameterType="com.base.springcloud.entity.Refund">
update pay_refund
set refund_state = #{refundState,jdbcType=INTEGER}
<where>
refund_order_no = #{refundOrderNo,jdbcType=VARCHAR}
</where>
</update>
</mapper> </mapper>
Loading…
Cancel
Save