Pārlūkot izejas kodu

微信移动端支付

guomengjiao 5 mēneši atpakaļ
vecāks
revīzija
d9e860fa92

+ 19 - 17
.idea/workspace.xml

@@ -30,11 +30,8 @@
   <component name="ChangeListManager">
     <list default="true" id="fc9366aa-6566-4981-8149-d75e02f8e884" name="默认的" comment="微信移动端支付">
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/WebsiteUserControllerApi.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/bjflapi/src/main/java/com/jeesite/modules/bjflapi/report/WebsiteUserControllerApi.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/dto/WebsiteUserDto.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/dto/WebsiteUserDto.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserService.java" afterDir="false" />
-      <change beforePath="$PROJECT_DIR$/web/src/main/resources/config/application.yml" beforeDir="false" afterPath="$PROJECT_DIR$/web/src/main/resources/config/application.yml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WxPayService.java" beforeDir="false" afterPath="$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WxPayService.java" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -96,7 +93,7 @@
     <property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
     <property name="WebServerToolWindowFactoryState" value="false" />
     <property name="aspect.path.notification.shown" value="true" />
-    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../bogo/bogo-boot-server" />
+    <property name="last_opened_file_path" value="$PROJECT_DIR$/../../maintenance-support/maintenance-support-java" />
     <property name="project.structure.last.edited" value="SDKs" />
     <property name="project.structure.proportion" value="0.15" />
     <property name="project.structure.side.proportion" value="0.25287357" />
@@ -137,7 +134,7 @@
       <visibility group="运行配置" flag="true" />
     </myKeys>
   </component>
-  <component name="RunManager" selected="Spring Boot.Application">
+  <component name="RunManager" selected="Application.DateUtils">
     <configuration name="DateUtils" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
       <option name="MAIN_CLASS_NAME" value="com.jeesite.common.lang.DateUtils" />
       <module name="jeesite-common" />
@@ -460,14 +457,7 @@
       <workItem from="1734579234738" duration="258000" />
       <workItem from="1734579502121" duration="1272000" />
       <workItem from="1734658594781" duration="126472000" />
-      <workItem from="1735184825354" duration="115077000" />
-    </task>
-    <task id="LOCAL-00017" summary="调查报告优化">
-      <created>1687860575924</created>
-      <option name="number" value="00017" />
-      <option name="presentableId" value="LOCAL-00017" />
-      <option name="project" value="LOCAL" />
-      <updated>1687860575924</updated>
+      <workItem from="1735184825354" duration="117045000" />
     </task>
     <task id="LOCAL-00018" summary="调查报告新增配置美元和元">
       <created>1687918520963</created>
@@ -805,7 +795,14 @@
       <option name="project" value="LOCAL" />
       <updated>1735809757705</updated>
     </task>
-    <option name="localTasksCounter" value="66" />
+    <task id="LOCAL-00066" summary="微信移动端支付">
+      <created>1735884233628</created>
+      <option name="number" value="00066" />
+      <option name="presentableId" value="LOCAL-00066" />
+      <option name="project" value="LOCAL" />
+      <updated>1735884233628</updated>
+    </task>
+    <option name="localTasksCounter" value="67" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -892,8 +889,13 @@
       <breakpoints>
         <line-breakpoint enabled="true" type="java-line">
           <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java</url>
-          <line>331</line>
-          <option name="timeStamp" value="69" />
+          <line>316</line>
+          <option name="timeStamp" value="70" />
+        </line-breakpoint>
+        <line-breakpoint enabled="true" type="java-line">
+          <url>file://$PROJECT_DIR$/modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java</url>
+          <line>268</line>
+          <option name="timeStamp" value="74" />
         </line-breakpoint>
       </breakpoints>
     </breakpoint-manager>

+ 6 - 4
modules/report/src/main/java/com/jeesite/modules/report/service/WebsiteUserOrderService.java

@@ -28,6 +28,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -275,12 +277,12 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 					transaction = wxPayH5Service.payQuery(order.getOrderNumber());
 				}
 				if (transaction != null) {
-					if ("SUCCESS".equals(transaction.getTradeState())) {
+					if ("SUCCESS".equals(transaction.getTradeState().name())) {
 						order.setPayStatus(Constants.orderPayStatus.PAY_SUCCESS);
 						order.setPayDate(DateUtils.parseDateISOByFormat(transaction.getSuccessTime()));
 						super.update(order);
 						continue;
-					} else if ("CLOSED".equals(transaction.getTradeState())) {
+					} else if ("CLOSED".equals(transaction.getTradeState().name())) {
 						order.setPayStatus(Constants.orderPayStatus.PAY_ERROR);
 						super.update(order);
 						continue;
@@ -331,8 +333,8 @@ public class WebsiteUserOrderService extends CrudService<WebsiteUserOrderDao, We
 			logger.info("wx wxpayAsyncNotify transaction:{}", JSON.toJSONString(transaction));
 			Transaction.TradeStateEnum tradeState = transaction.getTradeState();
 			if (Transaction.TradeStateEnum.SUCCESS.equals(tradeState)){
-				int amount = transaction.getAmount().getPayerTotal() / 100;
-				return payUpdate(transaction.getOutTradeNo(), String.valueOf(amount), DateUtils.parseDateISOByFormat(transaction.getSuccessTime()));
+				BigDecimal amount = new BigDecimal(transaction.getAmount().getPayerTotal()).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP);
+				return payUpdate(transaction.getOutTradeNo(), amount.toString(), DateUtils.parseDateISOByFormat(transaction.getSuccessTime()));
 			}
 		} catch (Exception e) {
 			logger.error("wxpayAsyncNotify error", e);

+ 3 - 0
modules/report/src/main/java/com/jeesite/modules/report/service/WxPayService.java

@@ -81,10 +81,13 @@ public class WxPayService {
     public Refund refund(WebsiteUserOrder websiteUserOrder) {
         CreateRequest request = new CreateRequest();
         request.setOutTradeNo(websiteUserOrder.getOrderNumber());
+        request.setOutRefundNo(websiteUserOrder.getOrderNumber());
         AmountReq amount = new AmountReq();
         //单位为分
         BigDecimal total = websiteUserOrder.getPayPrice().multiply(new BigDecimal("100"));
+        amount.setRefund(total.longValue());
         amount.setTotal(total.longValue());
+        amount.setCurrency("CNY");
         request.setAmount(amount);
         // 调用接口
         Refund refund = refundService.create(request);