Просмотр исходного кода

[收银台支付][优化]:微信支付查询优化

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
e5211699dd
5 измененных файлов: 60 добавлений и 9 удалений
  1. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java
  2. +1
    -0
      mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java
  4. +44
    -9
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  5. +11
    -0
      mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml

+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxPayOrderMapper.java Просмотреть файл

@@ -12,4 +12,6 @@ public interface WxPayOrderMapper extends CommonMapper<WxPayOrder, Long> {
List<WxPayOrderVo> findListOfPaidOrderByDate(Map dateMap);

List<WxPayOrder> findListForUnPs(WxPayOrder wxPayOrder);

List<WxPayOrder> findExpListForMicroPay(WxPayOrder wxPayOrder);
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/pay/WxPayOrderQ.java Просмотреть файл

@@ -11,6 +11,7 @@ public class WxPayOrderQ {
private String mch_id; // 商户号
private String nonce_str; // 随机字符串
private String sign; // 签名
private String transaction_id; // 微信订单号
private String out_trade_no; // 商户订单号

@Override


+ 2
- 0
mallinkService/src/main/java/com/iformall/pay/WxPayOrderSQ.java Просмотреть файл

@@ -14,6 +14,7 @@ public class WxPayOrderSQ {
private String nonce_str; // 随机字符串
private String sign; // 签名
private String sign_type; // 签名类型
private String transaction_id; // 微信订单号
private String out_trade_no; // 商户订单号

@Override
@@ -26,6 +27,7 @@ public class WxPayOrderSQ {
sb.append(", nonce_str='").append(nonce_str).append('\'');
sb.append(", sign='").append(sign).append('\'');
sb.append(", out_trade_no='").append(out_trade_no).append('\'');
sb.append(", transtion_id='").append(out_trade_no).append('\'');
sb.append('}');
return sb.toString();
}


+ 44
- 9
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Просмотреть файл

@@ -646,7 +646,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
payOrderQ.setAppid(appInfo.getAppId());
payOrderQ.setMch_id(payAccount.getMchId());
payOrderQ.setNonce_str(noncestr);
payOrderQ.setOut_trade_no(record.getPayOrderNo());
if (StringUtils.isNotBlank(record.getTransactionId())) {
payOrderQ.setTransaction_id(record.getTransactionId());
} else {
payOrderQ.setOut_trade_no(record.getPayOrderNo());
}

try {
Map map = BeanUtils.toStringMap(payOrderQ);
@@ -668,7 +672,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
payOrderSQ.setMch_id(payAccount.getMchId());
payOrderSQ.setSub_mch_id(payAccount.getSubMchId());
payOrderSQ.setNonce_str(noncestr);
payOrderSQ.setOut_trade_no(record.getPayOrderNo());
if (StringUtils.isNotBlank(record.getTransactionId())) {
payOrderSQ.setTransaction_id(record.getTransactionId());
} else {
payOrderSQ.setOut_trade_no(record.getPayOrderNo());
}
payOrderSQ.setSign_type("HMAC-SHA256");

try {
@@ -764,14 +772,24 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
return new ResultData(ErrorCode.PAY_ORDER_ERROR, returnMap);
}
} else {
String errMsg = "";
JSONObject errObj = errorMapQuery.getJSONObject(result_code);
if (errObj != null) {
errMsg = errObj.toJSONString();
String errCode = returnMap.get("err_code");
String errCodeDes = returnMap.get("err_code_des");
if (errCode.equalsIgnoreCase("ORDERNOTEXIST")) {
// 支付订单不存在, 订单失败
WxOrder updateOrderForMicroPay = new WxOrder();
updateOrderForMicroPay.setId(order.getId());
updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode());
try {
wxOrderMapper.updateById(updateOrderForMicroPay);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
String errMsg = returnMap.get("return_msg");
if (StringUtils.isNotBlank(errMsg)) {
record.setFailReason(errMsg);
} else {
errMsg = returnMap.get("return_msg");
record.setFailReason(errMsg);
record.setFailReason(errCodeDes);
}
record.setUpdateTime(new Date());
try {
@@ -783,8 +801,25 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
return new ResultData(ErrorCode.PAY_ORDER_ERROR.getCode(), errMsg, returnMap);
}
} else {
String errCode = returnMap.get("err_code");
String errCodeDes = returnMap.get("err_code_des");
if (errCode.equalsIgnoreCase("ORDERNOTEXIST")) {
// 支付订单不存在, 订单失败
WxOrder updateOrderForMicroPay = new WxOrder();
updateOrderForMicroPay.setId(order.getId());
updateOrderForMicroPay.setOrderStatus(EnumOrderStatus.ORDER_STATUS_OVERTIME_CANCEL.getCode());
try {
wxOrderMapper.updateById(updateOrderForMicroPay);
} catch (Exception e) {
logger.error(e.getMessage());
}
}
String errMsg = returnMap.get("return_msg");
record.setFailReason(errMsg);
if (StringUtils.isNotBlank(errMsg)) {
record.setFailReason(errMsg);
} else {
record.setFailReason(errCodeDes);
}
record.setUpdateTime(new Date());
try {
wxPayOrderMapper.updateById(record);


+ 11
- 0
mallinkService/src/main/resources/mapper/WxPayOrderMapper.xml Просмотреть файл

@@ -159,6 +159,17 @@
and tenant_id in (select tenant_id from wx_pay_account where share =1) and tenant_id != '789' and tenant_id != '1000' ;
</select>

<select id="findExpListForMicroPay" parameterType="com.iformall.domain.po.WxPayOrder" resultMap="BaseResultMap">
select
<include refid="allColumns"/>
from wx_pay_order
where 1=1
<if test=" null != tenantId "> and `tenant_id` = #{tenantId} </if>
and order_id in (
select id from wx_order where `tenant_id` = #{tenantId} and type = 1 and order_status = 0
);
</select>

<resultMap id="VBaseResultMap" type="com.iformall.domain.vo.WxPayOrderVo">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/>


Загрузка…
Отмена
Сохранить