From da837b5a0e23b47bc1d038547702cab3cecce577 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期六, 26 八月 2023 17:51:59 +0800
Subject: [PATCH] Merge branch 'master' of ssh://120.76.84.145:20202/java/HongRuiTang into master

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java             |    8 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java          |    9 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java          |   21 ++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java                      |    7 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java |   15 ++++
 ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml                                                |    1 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java                    |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java                   |    7 ++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java          |   91 +++++++++++++++++++++--------
 9 files changed, 131 insertions(+), 30 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
index 6d7ebcd..2bbaedf 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/config/WxPayConfiguration.java
@@ -23,7 +23,7 @@
   private WxPayProperties properties;
 
   // 分账特约商户
-  private static String PLATFORM_TY_MAC_ID = "";
+  private static String PLATFORM_TY_MAC_ID = "1650744551";
 
   public static String getPlatformTyMacId() {
     return PLATFORM_TY_MAC_ID;
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
index c477d06..d1b2c7b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/NotifyController.java
@@ -88,13 +88,14 @@
                     || WxPayNotifyEventTypeEnum.REFUND_ABNORMAL.getCode().equals(eventType)
                     || WxPayNotifyEventTypeEnum.REFUND_CLOSED.getCode().equals(eventType)) {
 
-                RefundNotifyResult result = wxService.getEcommerceService().parseRefundNotifyResult(notifyData, signatureHeader);
+                RefundNotifyResult result = this.parseRefundNotifyResult(notifyData, signatureHeader);
                 orderService.orderRefundBack(result);
                 resultType = 2;
                 resultMessage = GSON.toJson(result);
             }
 
         }catch (Exception e){
+            e.printStackTrace();
             log.info("微信支付/退款通知异常:  {}", e.getMessage());
         }
         // 保存支付/退款回调信息
@@ -164,6 +165,24 @@
         }
     }
 
+    private RefundNotifyResult parseRefundNotifyResult(String notifyData, SignatureHeader header) throws WxPayException {
+
+        NotifyResponse response = GSON.fromJson(notifyData, NotifyResponse.class);
+        NotifyResponse.Resource resource = response.getResource();
+        String cipherText = resource.getCiphertext();
+        String associatedData = resource.getAssociatedData();
+        String nonce = resource.getNonce();
+        String apiV3Key = this.wxService.getConfig().getApiV3Key();
+        try {
+            String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key);
+            RefundNotifyResult notifyResult = GSON.fromJson(result, RefundNotifyResult.class);
+            notifyResult.setRawData(response);
+            return notifyResult;
+        } catch (GeneralSecurityException | IOException e) {
+            throw new WxPayException("解析报文异常!", e);
+        }
+    }
+
     private boolean verifyNotifySign(SignatureHeader header, String data) throws WxPayException {
         String beforeSign = String.format("%s\n%s\n%s\n",
                 header.getTimeStamp(),
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
index 93d22e0..9af071b 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/account/OrderPayment.java
@@ -8,6 +8,7 @@
 import com.baomidou.mybatisplus.annotation.TableName;
 import java.io.Serializable;
 
+import com.google.gson.annotations.SerializedName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -59,6 +60,13 @@
      */
     @TableField("order_id")
     private String orderId;
+
+    /**
+     * 微信支付交易号
+     */
+    @TableField("out_trade_no")
+    private String outTradeNo;
+
     /**
      * 支付状态1发起支付2支付成功3支付失败4已关闭
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
index 177536d..3f2ea65 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java
@@ -48,6 +48,13 @@
      */
     @TableField("order_no")
     private String orderNo;
+
+    /**
+     * 微信支付交易号
+     */
+    @TableField("out_trade_no")
+    private String outTradeNo;
+
     /**
      * 订单来源1.商城2.秒杀活动3.线下创建
      */
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
index fbd9709..7a60bf4 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/account/OrderPaymentService.java
@@ -28,7 +28,7 @@
      * @param goodsNames
      * @param prepayId
      */
-    void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId);
+    void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, String outTradeNo, BigDecimal payMoney, Date endTime, String profitSharing, String openid, String goodsNames, String prepayId);
 
     /**
      *
@@ -36,4 +36,11 @@
      * @return
      */
     OrderPayment getByOrderId(String orderId);
+
+    /**
+     *
+     * @param outTradeNo
+     * @param transactionId
+     */
+    void updatePaySuccess(String outTradeNo, String transactionId);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
index dcc4174..589996f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/account/OrderPaymentServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl.account;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.common.core.utils.uuid.IdUtils;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
@@ -24,7 +25,7 @@
 public class OrderPaymentServiceImpl extends ServiceImpl<OrderPaymentMapper, OrderPayment> implements OrderPaymentService {
 
     @Override
-    public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, BigDecimal payMoney, Date endTime,
+    public void saveOrderPayment(Long userId, Long shopId, String subMchId, String orderId, String outTradeNo, BigDecimal payMoney, Date endTime,
                                  String profitSharing, String openid, String goodsNames, String prepayId) {
         OrderPayment payment = new OrderPayment();
         payment.setPaymentId(IdUtils.simpleUUID());
@@ -34,6 +35,8 @@
         payment.setPayMoney(payMoney);
         payment.setTimeExpire(endTime);
         payment.setSubMchId(subMchId);
+        payment.setOutTradeNo(outTradeNo);
+        payment.setPayStatus(1);
         // 0 否 1、是
         payment.setProfitSharing("Y".equals(profitSharing) ? 1 : 0);
         payment.setUserOpenId(openid);
@@ -53,4 +56,14 @@
                 .last(" limit 1 ");
         return this.getOne(queryWrapper);
     }
+
+    @Override
+    public void updatePaySuccess(String outTradeNo, String transactionId) {
+        LambdaUpdateWrapper<OrderPayment> updateWrapper = Wrappers.lambdaUpdate();
+        updateWrapper.eq(OrderPayment::getOutTradeNo, outTradeNo)
+                .set(OrderPayment::getPayStatus, 2)
+                .set(OrderPayment::getTransactionId, transactionId)
+                .set(OrderPayment::getBackTime, new Date());
+        this.update(updateWrapper);
+    }
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 5d57e7f..ef83ce7 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl.order;
 
 
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -21,6 +22,7 @@
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.CodeFactoryUtil;
 import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.order.config.WxPayConfiguration;
 import com.ruoyi.order.domain.dto.*;
 import com.ruoyi.order.domain.pojo.account.OrderPayment;
 import com.ruoyi.order.domain.pojo.account.OrderRefund;
@@ -52,6 +54,7 @@
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
+import com.ruoyi.system.api.domain.poji.shop.ShopProportionVo;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.service.*;
@@ -63,6 +66,7 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -556,6 +560,7 @@
         BigDecimal orderPayMoney = new BigDecimal("0.00");
         // 创建订单ID和订单号
         String orderId = IdUtils.simpleUUID();
+
         String orderNo = CodeFactoryUtil.getShopOrderNo();
         OrderGoods orderGoods;
         String orderGoodsId;
@@ -753,8 +758,14 @@
         }
 
         if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+            String outTradeNo = IdUtils.simpleUUID();
+
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+
             // 小程序微信下单支付
-            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
                     orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
                     appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
         }
@@ -786,7 +797,7 @@
      * @param userId
      * @param shopId
      * @param goodsName
-     * @param orderNo
+     * @param outTradeNo
      * @param orderId
      * @param payMoney
      * @param openid
@@ -794,7 +805,7 @@
      * @param goodsNameList
      */
     public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
-                                 String goodsName, String orderNo,
+                                 String goodsName, String outTradeNo,
                                  String orderId, BigDecimal payMoney,
                                  String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
         try {
@@ -815,15 +826,16 @@
             String description = goodsName + "-商品购买";
 
             request.setDescription(description);
-            request.setOutTradeNo(orderNo);
+            request.setOutTradeNo(outTradeNo);
             request.setNotifyUrl(config.getNotifyUrl());
             // 结算信息
             PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
-            if(orderFrom==2){
+            // TODO 分账处理
+            //if(orderFrom==2){
                 settleInfo.setProfitSharing(true);
-            }else{
-                settleInfo.setProfitSharing(false);
-            }
+            //}else{
+            //    settleInfo.setProfitSharing(false);
+           // }
             settleInfo.setSubsidyAmount(BigDecimal.ZERO);
             request.setSettleInfo(settleInfo);
 
@@ -866,9 +878,10 @@
             paymentMessageService.savePaymentMessage("1", orderId, payRequestJson, payResponseJson);
 
             // 保存支付订单统一下单支付记录
-            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, payMoney,
+            orderPaymentService.saveOrderPayment(userId, shopId, subMchId, orderId, outTradeNo, payMoney,
                     appPlaceOrderVo.getEndTime(), "Y", openid,
                     Joiner.on(";").join(goodsNameList), result.getPackageValue());
+
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
@@ -1144,6 +1157,13 @@
 
 
         if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+
+            String outTradeNo = IdUtils.simpleUUID();
+
+            // 保存订单 交易流水
+            order.setOutTradeNo(outTradeNo);
+            this.saveOrUpdate(order);
+
             // 小程序微信下单支付
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
                     orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
@@ -1533,10 +1553,11 @@
         merVerifyOrderVo.setUserName(member.getRealName());
         merVerifyOrderVo.setUserMobile(member.getMobile());
         merVerifyOrderVo.setCloseFlag(order.getCloseFlag());
-        //
-        if (order.getOrderFrom() == 2) {
-            // profitsSharingService.applyProfitSharing();
-        }
+        // TODO  活动才分账
+        //if (order.getOrderFrom() == 2) {
+            // 活动才分账
+            submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
+        //}
 
         //创建支付记录
         if(merVerifyOrderDto.getRelPayMoney().compareTo(BigDecimal.ZERO)>0){
@@ -1548,12 +1569,11 @@
             payRecord.setPayType(merVerifyOrderDto.getPayType());
             payRecordService.save(payRecord);
         }
-        //submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOrderMoney());
 
         return merVerifyOrderVo;
     }
 
-    /*private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
+    private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney) {
         String sendMessage = "";
         String resultMessage = "";
         try {
@@ -1567,16 +1587,17 @@
             R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
             String subMchId = resultMch.getData();
             if (!StringUtils.isEmpty(subMchId)) {
-
+                WxPayConfig config = wxService.getConfig();
 
                 R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                 ShopProportionVo shopProportion = resultShopProportion.getData();
                 if (null != shopProportion) {
                     ProfitSharingRequest request = new ProfitSharingRequest();
+                    request.setAppid(config.getAppId());
                     request.setSubMchid(subMchId);
                     request.setTransactionId(transactionId);
-                    request.setOutOrderNo(orderNo);
-                    List<Receiver> receiverList = new ArrayList<>();
+                    request.setOutOrderNo(IdUtils.simpleUUID());
+                    List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
 
                     String description = "订单:" + orderNo + " 平台抽取佣金";
                     BigDecimal proportionPercent = shopProportion.getProportionPercent();
@@ -1593,7 +1614,7 @@
                     log.info("订单分账:{} 分账金额: {}", orderNo, amount);
                     if (amount > 0) {
                         // 分账创建
-                        Receiver receiver = new Receiver();
+                        ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver();
                         receiver.setType("MERCHANT_ID");
                         receiver.setReceiverAccount(platformTyMacId);
                         receiver.setAmount(amount);
@@ -1628,7 +1649,7 @@
 
         // 保存分账信息
         paymentMessageService.savePaymentMessage("4", orderId, sendMessage, resultMessage);
-    }*/
+    }
 
     /**
      * @param merVerifyCouponDto
@@ -3917,10 +3938,11 @@
     @Override
     @Transactional
     public void payBack(PartnerTransactionsResult transaction) {
+
         // Order order = this.getById(orderId);
-        // 更新订单状态 订单编号,就是 微信outTradeNo
-        String orderNo = transaction.getOutTradeNo();
-        Order order = this.getByOrderNo(orderNo);
+        // 更新订单状态 outTradeNo
+        String outTradeNo = transaction.getOutTradeNo();
+        Order order = this.getByOutTradeNo(outTradeNo);
         String orderId = order.getOrderId();
         order.setOrderStatus(2);
         order.setPayTime(new Date());
@@ -4042,8 +4064,9 @@
             request.setTransactionId(transaction.getTransactionId());
             profitsSharingService.applyProfitSharing(request);*/
         }
-        //生成支付记录
-        OrderPayment orderPayment = new OrderPayment();
+        //修改支付记录生成支付记录
+        orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
+
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);
@@ -4057,6 +4080,14 @@
     public Order getByOrderNo(String orderNo) {
         LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
         queryWrapper.eq(Order::getOrderNo, orderNo)
+                .last(" limit 1 ");
+        return this.getOne(queryWrapper);
+    }
+
+    @Override
+    public Order getByOutTradeNo(String outTradeNo) {
+        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.eq(Order::getOutTradeNo, outTradeNo)
                 .last(" limit 1 ");
         return this.getOne(queryWrapper);
     }
@@ -4214,9 +4245,11 @@
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
         }
 
+        log.info("用户取消订单退款, 检查退款");
         // 用户取消订单退款
         BigDecimal onlinePayMoney = order.getOnlinePayMoney();
         if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
+            log.info("订单支付金额大于0,可发起退款");
             // 订单支付金额大于0,可发起退款
             orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
         }
@@ -4235,6 +4268,9 @@
             if (null == orderPayment) {
                 return;
             }
+
+            log.info("调用微信退款---发起退款");
+
             String subMchId = orderPayment.getSubMchId();
             WxPayConfig config = wxService.getConfig();
 
@@ -4245,7 +4281,8 @@
             request.setOutRefundNo(outRefundNo);
             request.setReason("用户取消订单");
             // 订单金额
-            int total = payMoney.multiply(new BigDecimal(100)).intValue();
+            int total = orderPayment.getPayMoney().multiply(new BigDecimal(100)).intValue();
+
             RefundsRequest.Amount amount = RefundsRequest.Amount.builder().refund(total).total(total).currency("CNY").build();
             request.setAmount(amount);
             request.setNotifyUrl(config.getNotifyUrl());
@@ -4261,6 +4298,8 @@
             // 返回参数
             String refundResponseJson = gson.toJson(result);
 
+            log.info("调用微信退款返回参数---{}", refundResponseJson);
+
             // 保存支付订单统一下单日志
             paymentMessageService.savePaymentMessage("3", orderId, refundRequestJson, refundResponseJson);
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 2ba4f39..273d3e9 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -557,4 +557,11 @@
      * @return
      */
     Order getByOrderNo(String orderNo);
+
+    /**
+     *
+     * @param outTradeNo
+     * @return
+     */
+    Order getByOutTradeNo(String outTradeNo);
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
index 05d7cf8..d954cea 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/bootstrap.yml
@@ -39,6 +39,7 @@
     appId: wxb7f0ea286fc4e535
     mchId: 1631381314
     mchKey: J8v9JDHKJYDHW9bdk30o2bdjy6z9mn1A
+    platformTyMacId: 1650744551
     subAppId: #服务商模式下的子商户公众账号ID
     subMchId: #服务商模式下的子商户号
     keyPath: /home/cert/apiclient_cert.p12

--
Gitblit v1.7.1