Browse Source

fix:“优化汇付微信下单接口"

soobin 8 tháng trước cách đây
mục cha
commit
b07aacf705

+ 1 - 1
src/main/java/com/szwl/mapper/WechatPayInfoMapper.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * </p>
  *
  * @author wuhs
- * @since 2024-07-18
+ * @since 2024-12-11
  */
 public interface WechatPayInfoMapper extends BaseMapper<WechatPayInfo> {
 

+ 3 - 1
src/main/java/com/szwl/mapper/xml/WechatPayInfoMapper.xml

@@ -5,15 +5,17 @@
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.szwl.model.entity.WechatPayInfo">
         <id column="sn" property="sn" />
+        <result column="app_id" property="appId" />
         <result column="time_stamp" property="timeStamp" />
         <result column="nonce_str" property="nonceStr" />
         <result column="package_value" property="packageValue" />
         <result column="pay_sign" property="paySign" />
+        <result column="hf_seq_id" property="hfSeqId" />
     </resultMap>
 
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        sn, time_stamp, nonce_str, package_value, pay_sign
+        sn, app_id, time_stamp, nonce_str, package_value, pay_sign, hf_seq_id
     </sql>
 
 </mapper>

+ 5 - 1
src/main/java/com/szwl/model/entity/WechatPayInfo.java

@@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
  * </p>
  *
  * @author wuhs
- * @since 2024-07-18
+ * @since 2024-12-11
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -27,6 +27,8 @@ public class WechatPayInfo implements Serializable {
     @TableId(value = "sn", type = IdType.ASSIGN_ID)
     private String sn;
 
+    private String appId;
+
     private String timeStamp;
 
     private String nonceStr;
@@ -35,5 +37,7 @@ public class WechatPayInfo implements Serializable {
 
     private String paySign;
 
+    private String hfSeqId;
+
 
 }

+ 1 - 1
src/main/java/com/szwl/service/WechatPayInfoService.java

@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * </p>
  *
  * @author wuhs
- * @since 2024-07-18
+ * @since 2024-12-11
  */
 public interface WechatPayInfoService extends IService<WechatPayInfo> {
 

+ 24 - 10
src/main/java/com/szwl/service/impl/THuifuMchServiceImpl.java

@@ -362,16 +362,30 @@ public class THuifuMchServiceImpl extends ServiceImpl<THuifuMchMapper, THuifuMch
         // 拿到返回参数
         JSONObject result = JSONObject.parseObject(success);
         JSONObject data = result.getJSONObject("data");
-//        String payInfo = data.getString("pay_info");
-//        JSONObject payInfoJson = JSONObject.parseObject(payInfo);
-//        // 获取timeStamp的值
-//        String timeStamp = payInfoJson.getString("timeStamp");
-//        // 获取nonceStr的值
-//        String nonceStr = payInfoJson.getString("nonceStr");
-//        // 获取package的值
-//        String packageValue = payInfoJson.getString("package");
-//        // 获取paySign的值
-//        String paySign = payInfoJson.getString("paySign");
+        String hfSeqId = data.getString("hf_seq_id");
+        String payInfo = data.getString("pay_info");
+        JSONObject payInfoJson = JSONObject.parseObject(payInfo);
+        // 获取timeStamp的值
+        String appId = payInfoJson.getString("appId");
+        // 获取timeStamp的值
+        String timeStamp = payInfoJson.getString("timeStamp");
+        // 获取nonceStr的值
+        String nonceStr = payInfoJson.getString("nonceStr");
+        // 获取package的值
+        String packageValue = payInfoJson.getString("package");
+        // 获取paySign的值
+        String paySign = payInfoJson.getString("paySign");
+
+        // 保存到数据库
+        WechatPayInfo wechatPayInfo = new WechatPayInfo();
+        wechatPayInfo.setSn(sn);
+        wechatPayInfo.setHfSeqId(hfSeqId);
+        wechatPayInfo.setAppId(appId);
+        wechatPayInfo.setTimeStamp(timeStamp);
+        wechatPayInfo.setNonceStr(nonceStr);
+        wechatPayInfo.setPackageValue(packageValue);
+        wechatPayInfo.setPaySign(paySign);
+        wechatPayInfoService.save(wechatPayInfo);
 
         return data;
     }

+ 24 - 4
src/main/java/com/szwl/service/impl/TOrderServiceImpl.java

@@ -107,6 +107,9 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
     TJoinpayMchService joinpayMchService;
 
     @Autowired
+    WechatPayInfoService wechatPayInfoService;
+
+    @Autowired
     private TOrderDetailsService orderDetailsService;
 
     @Override
@@ -1392,10 +1395,27 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         wrapper.eq(TOrder::getStatus, 0);
         TOrder order = orderService.getOne(wrapper);
         JSONObject reslut = new JSONObject();
-        try {
-            reslut = huifuMchService.payWechat(order, openid);
-        } catch (Exception e) {
-            e.printStackTrace();
+        if (order != null) {
+            // 先查是否已下单
+            WechatPayInfo wechatPayInfo = wechatPayInfoService.getById(sn);
+            if (wechatPayInfo != null) {
+                JSONObject payInfoJson = new JSONObject();
+                payInfoJson.put("appId", wechatPayInfo.getAppId());
+                payInfoJson.put("timeStamp", wechatPayInfo.getTimeStamp());
+                payInfoJson.put("nonceStr", wechatPayInfo.getNonceStr());
+                payInfoJson.put("package", wechatPayInfo.getPackageValue());
+                payInfoJson.put("signType", "RSA");
+                payInfoJson.put("paySign", wechatPayInfo.getPaySign());
+                reslut.put("pay_info", payInfoJson.toString());
+                reslut.put("hf_seq_id", wechatPayInfo.getHfSeqId());
+                reslut.put("resp_code", "00000100");
+                return reslut;
+            }
+            try {
+                reslut = huifuMchService.payWechat(order, openid);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
         }
         return reslut;
     }

+ 1 - 1
src/main/java/com/szwl/service/impl/WechatPayInfoServiceImpl.java

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
  * </p>
  *
  * @author wuhs
- * @since 2024-07-18
+ * @since 2024-12-11
  */
 @Service
 public class WechatPayInfoServiceImpl extends ServiceImpl<WechatPayInfoMapper, WechatPayInfo> implements WechatPayInfoService {