xiongzhu 3 년 전
부모
커밋
5b00a59a17

+ 7 - 0
src/main/java/com/izouma/nineth/dto/PayQuery.java

@@ -2,6 +2,7 @@ package com.izouma.nineth.dto;
 
 import com.izouma.nineth.enums.PayStatus;
 import lombok.AllArgsConstructor;
+import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -12,6 +13,7 @@ import java.time.LocalDateTime;
 @Data
 @AllArgsConstructor
 @NoArgsConstructor
+@Builder
 public class PayQuery {
     private boolean       exist;
     private String        msg;
@@ -20,4 +22,9 @@ public class PayQuery {
     private LocalDateTime createTime;
     private LocalDateTime payTime;
     private String        transactionId;
+    private String        channel;
+
+    public PayQuery(String channel) {
+        this.channel = channel;
+    }
 }

+ 7 - 1
src/main/java/com/izouma/nineth/service/HMPayService.java

@@ -155,12 +155,14 @@ public class HMPayService {
     }
 
     public JSONObject query(String orderId) {
+        orderId = paddingOrderId(orderId);
         Map<String, String> bizContent = new HashMap<>();
         bizContent.put("out_order_no", orderId);
         return requestApi("trade.query", bizContent);
     }
 
     public JSONObject refund(String orderId, BigDecimal amount) {
+        orderId = paddingOrderId(orderId);
         Map<String, String> bizContent = new HashMap<>();
         bizContent.put("out_order_no", paddingOrderId(orderId));
         bizContent.put("refund_amount", amount.stripTrailingZeros().toPlainString());
@@ -170,10 +172,14 @@ public class HMPayService {
 
     public PayQuery payQuery(String orderId) {
         JSONObject res = query(orderId);
-        PayQuery query = new PayQuery();
+        PayQuery query = new PayQuery(Constants.PayChannel.HM);
         if ("200".equals(res.getString("code"))) {
             query.setExist(true);
             String sub_code = res.getJSONObject("data").getString("sub_code");
+            if ("ILLEGAL_ORDER".equals(sub_code)) {
+                query.setExist(false);
+                return query;
+            }
             query.setAmount(new BigDecimal(res.getString("total_amount")));
             query.setTransactionId(res.getString("plat_trx_no"));
             switch (sub_code) {

+ 6 - 3
src/main/java/com/izouma/nineth/service/MintOrderService.java

@@ -653,15 +653,18 @@ public class MintOrderService {
                 try {
                     switch (payMethod) {
                         case HMPAY:
-                            orderPayService.refund(order.getId().toString(), order.getGasPrice(), Constants.PayChannel.HM);
+                            orderPayService.refund(order.getId().toString(), order.getTransactionId(),
+                                    order.getGasPrice(), Constants.PayChannel.HM);
                             log.info("退款成功");
                             break;
                         case SANDPAY:
-                            orderPayService.refund(order.getId().toString(), order.getGasPrice(), Constants.PayChannel.SAND);
+                            orderPayService.refund(order.getId().toString(), order.getTransactionId(),
+                                    order.getGasPrice(), Constants.PayChannel.SAND);
                             log.info("退款成功");
                             break;
                         case PAYEASE:
-                            orderPayService.refund(order.getTransactionId(), order.getGasPrice(), Constants.PayChannel.PE);
+                            orderPayService.refund(order.getTransactionId(), order.getTransactionId(),
+                                    order.getGasPrice(), Constants.PayChannel.PE);
                     }
                 } catch (Exception e) {
                     log.error("铸造订单退款失败 {} ", order.getId(), e);

+ 13 - 47
src/main/java/com/izouma/nineth/service/OrderPayService.java

@@ -26,8 +26,10 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Stream;
 
 @Service
 @Slf4j
@@ -319,76 +321,40 @@ public class OrderPayService {
                 order.getUserId().toString(), bindCardId, Constants.OrderNotifyType.RECHARGE);
     }
 
-    public JSONObject refund(String orderId, BigDecimal amount, String channel) {
+    public JSONObject refund(String orderId, String transactionId, BigDecimal amount, String channel) {
         switch (channel) {
             case Constants.PayChannel.SAND: {
                 JSONObject res = sandPayService.refund(orderId, amount);
                 if (!"000000".equals(res.getJSONObject("head").getString("respCode"))) {
                     throw new BusinessException("退款失败");
                 }
-                break;
+                return res;
             }
             case Constants.PayChannel.HM: {
                 JSONObject res = hmPayService.refund(orderId, amount);
                 if (!"REFUND_SUCCESS".equals(res.getString("sub_code"))) {
                     throw new BusinessException("退款失败");
                 }
-                break;
+                return res;
             }
             case Constants.PayChannel.PE: {
-                JSONObject res = payEaseService.refund(orderId, amount);
+                JSONObject res = payEaseService.refund(orderId, transactionId, amount);
                 String status = res.getString("status");
                 if (!"SUCCESS".equals(status)) {
                     String error = res.getString("error");
                     throw new BusinessException("退款失败:" + error);
                 }
-                break;
+                return res;
             }
         }
         throw new BusinessException("退款失败");
     }
 
-    public Object query(String orderId, String channel) {
-        PayQuery query = new PayQuery();
-        switch (channel) {
-            case Constants.PayChannel.SAND: {
-                JSONObject res = sandPayService.query(orderId);
-                String respCode = res.getJSONObject("head").getString("respCode");
-                query.setAmount(new BigDecimal(res.getJSONObject("body").getString("totalAmount"))
-                        .divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
-                if ("000000".equals(respCode)) {
-                    query.setExist(true);
-                    JSONObject body = res.getJSONObject("body");
-                    query.setMsg(res.getJSONObject("body").getString("orderMsg") + " "
-                            + res.getJSONObject("body").getString("oriRespMsg"));
-                    if (StringUtils.isNotEmpty(body.getString("payTime"))) {
-                        query.setPayTime(LocalDateTime.parse(body.getString("payTime"), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
-                    }
-                    switch (res.getJSONObject("body").getString("orderStatus")) {
-                        case "00":
-                            query.setStatus(PayStatus.SUCCESS);
-                            break;
-                        case "01":
-                            query.setStatus(PayStatus.PENDING);
-                            break;
-                        case "02":
-                            query.setStatus(PayStatus.FAIL);
-                            break;
-                        case "03":
-                            query.setStatus(PayStatus.CANCEL);
-                            break;
-                        case "04":
-                            query.setStatus(PayStatus.REFUNDED);
-                            break;
-                        case "05":
-                            query.setStatus(PayStatus.REFUNDING);
-                            break;
-                    }
-                } else {
-                    query.setMsg(res.getJSONObject("head").getString("respMsg"));
-                }
-            }
-        }
-        return null;
+    public PayQuery query(String orderId) {
+        return Stream.of(sandPayService.payQuery(orderId),
+                        hmPayService.payQuery(orderId),
+                        payEaseService.payQuery(orderId))
+                .filter(q -> q != null && q.isExist())
+                .findFirst().orElse(PayQuery.builder().exist(false).build());
     }
 }

+ 8 - 6
src/main/java/com/izouma/nineth/service/PayEaseService.java

@@ -8,7 +8,6 @@ import com.izouma.nineth.dto.BindCardRequest;
 import com.izouma.nineth.dto.PayQuery;
 import com.izouma.nineth.enums.PayStatus;
 import com.izouma.nineth.exception.BusinessException;
-import com.izouma.nineth.utils.BankUtils;
 import com.izouma.nineth.utils.SnowflakeIdWorker;
 import com.upay.sdk.CipherWrapper;
 import com.upay.sdk.ConfigurationUtils;
@@ -25,7 +24,6 @@ import com.upay.sdk.onlinepay.builder.QueryBuilder;
 import com.upay.sdk.onlinepay.builder.RefundBuilder;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -213,12 +211,12 @@ public class PayEaseService {
         }
     }
 
-    public com.alibaba.fastjson.JSONObject refund(String serial, BigDecimal amount) {
+    public com.alibaba.fastjson.JSONObject refund(String orderId, String transactionId, BigDecimal amount) {
         RefundBuilder builder = new RefundBuilder(payEaseProperties.getMerchantId());
-        builder.setRequestId(snowflakeIdWorker.nextId() + "")
+        builder.setRequestId(orderId)
                 .setAmount(amount.multiply(new BigDecimal("100")).setScale(0, RoundingMode.FLOOR)
                         .stripTrailingZeros().toPlainString())
-                .setOrderId(serial).setNotifyUrl(payEaseProperties.getNotifyUrl());
+                .setOrderId(transactionId).setNotifyUrl(payEaseProperties.getNotifyUrl());
         JSONObject response = request(ConfigurationUtils.getOnlinePayRefundUrl(), builder.bothEncryptBuild());
         return com.alibaba.fastjson.JSON.parseObject(response.toJSONString());
     }
@@ -239,7 +237,7 @@ public class PayEaseService {
 
     public PayQuery payQuery(String orderId) {
         com.alibaba.fastjson.JSONObject res = query(orderId);
-        PayQuery query = new PayQuery();
+        PayQuery query = new PayQuery(Constants.PayChannel.PE);
         String status = res.getString("status");
         if ("ERROR".equals(status)) {
             String error = res.getString("error");
@@ -264,6 +262,10 @@ public class PayEaseService {
                     query.setStatus(PayStatus.CANCEL);
                     break;
             }
+            com.alibaba.fastjson.JSONObject res1 = refundQuery(orderId);
+            if ("SUCCESS".equals(res1.getString("status"))) {
+                query.setStatus(PayStatus.REFUNDED);
+            }
         }
         return query;
     }

+ 10 - 7
src/main/java/com/izouma/nineth/service/SandPayService.java

@@ -237,6 +237,7 @@ public class SandPayService {
     }
 
     public JSONObject query(String orderId) {
+        orderId = paddingOrderId(orderId);
         JSONObject header = new JSONObject();
         header.put("version", "1.0");                     //版本号
         header.put("method", "sandpay.trade.query");      //接口名称:订单查询
@@ -254,6 +255,7 @@ public class SandPayService {
     }
 
     public JSONObject refund(String orderId, BigDecimal amount) {
+        orderId = paddingOrderId(orderId);
         JSONObject header = new JSONObject();
         header.put("version", "1.0");                           //版本号
         header.put("method", "sandpay.trade.refund");           //接口名称:退货
@@ -267,7 +269,7 @@ public class SandPayService {
         body.put("orderCode", snowflakeIdWorker.nextId());        //商户订单号
         body.put("oriOrderCode", paddingOrderId(orderId));        //原交易订单号
         body.put("refundAmount", convertAmount(amount));          //退货金额
-        body.put("refundReason", "退款");                      //退货原因
+        body.put("refundReason", "退款");                         //退货原因
         body.put("notifyUrl", sandPayProperties.getNotifyUrl());  //异步通知地址
         body.put("extend", "");
 
@@ -494,19 +496,20 @@ public class SandPayService {
 
     public PayQuery payQuery(String orderId) {
         JSONObject res = query(orderId);
-        PayQuery query = new PayQuery();
+        PayQuery query = new PayQuery(Constants.PayChannel.SAND);
         String respCode = res.getJSONObject("head").getString("respCode");
-        query.setAmount(new BigDecimal(res.getJSONObject("body").getString("totalAmount"))
-                .divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+
         if ("000000".equals(respCode)) {
             query.setExist(true);
             JSONObject body = res.getJSONObject("body");
-            query.setMsg(res.getJSONObject("body").getString("orderMsg") + " "
-                    + res.getJSONObject("body").getString("oriRespMsg"));
+            query.setMsg(body.getString("orderMsg") + " " + body.getString("oriRespMsg"));
+            query.setAmount(new BigDecimal(body.getString("totalAmount"))
+                    .divide(new BigDecimal(100), 2, RoundingMode.HALF_UP));
+            query.setTransactionId(body.getString("payOrderCode"));
             if (StringUtils.isNotEmpty(body.getString("payTime"))) {
                 query.setPayTime(LocalDateTime.parse(body.getString("payTime"), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
             }
-            switch (res.getJSONObject("body").getString("orderStatus")) {
+            switch (body.getString("orderStatus")) {
                 case "00":
                     query.setStatus(PayStatus.SUCCESS);
                     break;

+ 31 - 40
src/main/java/com/izouma/nineth/web/PayChannelMgmtController.java

@@ -1,15 +1,17 @@
 package com.izouma.nineth.web;
 
 import com.alibaba.fastjson.JSON;
+import com.izouma.nineth.config.Constants;
+import com.izouma.nineth.dto.PayQuery;
+import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.service.HMPayService;
+import com.izouma.nineth.service.OrderPayService;
+import com.izouma.nineth.service.PayEaseService;
 import com.izouma.nineth.service.SandPayService;
 import com.izouma.nineth.utils.SnowflakeIdWorker;
 import lombok.AllArgsConstructor;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
@@ -21,20 +23,30 @@ public class PayChannelMgmtController {
     private final SandPayService    sandPayService;
     private final HMPayService      hmPayService;
     private final SnowflakeIdWorker snowflakeIdWorker;
+    private final PayEaseService    payEaseService;
+    private final OrderPayService   orderPayService;
 
-    @GetMapping(value = "/pay")
+    @PostMapping(value = "/pay")
     @PreAuthorize("hasRole('ADMIN')")
-    public String pay(@RequestParam String channel) {
+    public Object pay(@RequestParam String channel, @RequestParam String orderId, String userId, String bindCardId,
+                      BigDecimal amount) {
+        if (amount == null) {
+            amount = new BigDecimal("0.01");
+        }
         switch (channel) {
-            case "sandPay":
-                return sandPayService.pay(snowflakeIdWorker.nextId() + "", "话费充值",
-                        new BigDecimal("0.01"), LocalDateTime.now().plusMinutes(3), "test");
-            case "hmPay":
-                return hmPayService.requestAlipay(snowflakeIdWorker.nextId() + "",
-                        new BigDecimal("0.01"), "话费充值",
+            case "sandQuick":
+                return sandPayService.payQuick(orderId, "测试", amount,
+                        LocalDateTime.now().plusMinutes(3), "test", "https://www.baidu.com");
+            case Constants.PayChannel.SAND:
+                return sandPayService.pay(orderId, "测试", amount,
+                        LocalDateTime.now().plusMinutes(3), "test");
+            case Constants.PayChannel.HM:
+                return hmPayService.requestAlipay(orderId, amount, "测试",
                         HMPayService.getTimeout(180), "test", "https://www.baidu.com");
+            case Constants.PayChannel.PE:
+                return payEaseService.pay("测试", orderId, amount, userId, bindCardId, "test");
         }
-        return null;
+        throw new BusinessException("不支持此渠道");
     }
 
     @GetMapping(value = "/transfer")
@@ -43,38 +55,17 @@ public class PayChannelMgmtController {
         return JSON.toJSONString(sandPayService.transfer(snowflakeIdWorker.nextId() + "", name, bank, amount), true);
     }
 
-    @GetMapping(value = "/refund")
+    @PostMapping(value = "/refund")
     @PreAuthorize("hasRole('ADMIN')")
-    public String refund(@RequestParam String channel, @RequestParam String orderId, @RequestParam BigDecimal amount) {
-        switch (channel) {
-            case "sandPay":
-                if (orderId.length() < 12) {
-                    for (int i = orderId.length(); i < 12; i++) {
-                        orderId = "0" + orderId;
-                    }
-                }
-                return JSON.toJSONString(sandPayService.refund(orderId, amount), true);
-            case "hmPay":
-                if (orderId.length() < 12) {
-                    for (int i = orderId.length(); i < 12; i++) {
-                        orderId = "0" + orderId;
-                    }
-                }
-                return JSON.toJSONString(hmPayService.refund(orderId, amount), true);
-        }
-        return null;
+    public Object refund(@RequestParam String channel, @RequestParam String orderId, String transactionId,
+                         @RequestParam BigDecimal amount) {
+        return orderPayService.refund(orderId, transactionId, amount, channel);
     }
 
     @GetMapping(value = "/query")
     @PreAuthorize("hasRole('ADMIN')")
-    public String query(@RequestParam String channel, @RequestParam String id) {
-        switch (channel) {
-            case "sandPay":
-                return JSON.toJSONString(sandPayService.query(id), true);
-            case "hmPay":
-                return JSON.toJSONString(hmPayService.query(id), true);
-        }
-        return null;
+    public PayQuery query(@RequestParam String orderId) {
+        return orderPayService.query(orderId);
     }
 
     @GetMapping("/queryTransfer")

+ 9 - 1
src/main/vue/src/router.js

@@ -739,7 +739,15 @@ const router = new Router({
                     meta: {
                        title: 'pricelist',
                     },
-               }
+               },
+               {
+                   path: '/payMgmt',
+                   name: 'PayMgmt',
+                   component: () => import(/* webpackChunkName: "payMgmt" */ '@/views/PayMgmt.vue'),
+                   meta: {
+                      title: '支付管理',
+                   },
+              }
                 /**INSERT_LOCATION**/
             ]
         },

+ 227 - 0
src/main/vue/src/views/PayMgmt.vue

@@ -0,0 +1,227 @@
+<template>
+    <div class="edit-view" v-loading="loading">
+        <page-title>
+            <!-- <el-button @click="onDelete" :disabled="saving" type="danger" v-if="formData.id"> 删除 </el-button>
+            <el-button @click="onSave" :loading="saving" type="primary">保存</el-button> -->
+        </page-title>
+        <div class="edit-view__content-wrapper">
+            <div class="edit-view__content-section" @keyup.enter="query">
+                <h4 style="margin-top: 0">订单查询</h4>
+                <el-input v-model="orderId" placeholder="输入订单号" style="width: 350px">
+                    <el-button slot="append" icon="el-icon-search" @click="query"></el-button>
+                </el-input>
+
+                <div v-if="info && info.exist" class="detail">
+                    <div class="items">
+                        <div class="row">
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">支付渠道</div>
+                                    <div class="value">{{ payChannel[info.channel] }}</div>
+                                </div>
+                            </div>
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">金额</div>
+                                    <div class="value">{{ info.amount }}</div>
+                                </div>
+                            </div>
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">状态</div>
+                                    <div class="value">{{ payStatus[info.status] }}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row">
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">交易ID</div>
+                                    <div class="value">{{ info.transactionId }}</div>
+                                </div>
+                            </div>
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">支付时间</div>
+                                    <div class="value">{{ info.payTime }}</div>
+                                </div>
+                            </div>
+                            <div class="item-wrapper">
+                                <div class="item">
+                                    <div class="label">备注</div>
+                                    <div class="value">{{ info.msg }}</div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="row"></div>
+                        <div class="item-wrapper"></div>
+                    </div>
+                    <el-button @click="refund" style="margin-top: 20px" type="warning">申请退款</el-button>
+                </div>
+                <div v-if="info && !info.exist" class="detail" style="font-size: 14px">订单不存在</div>
+            </div>
+            <div class="edit-view__content-section">
+                <h4 style="margin-top: 0">测试支付</h4>
+                <el-select v-model="testPay.channel" class="test-pay-form-item">
+                    <el-option v-for="(item, key) in payChannel" :label="item" :value="key" :key="key"></el-option>
+                </el-select>
+                <el-input v-model="testPay.orderId" placeholder="订单ID" class="test-pay-form-item"></el-input>
+                <el-input
+                    v-model="testPay.bindCardId"
+                    class="test-pay-form-item"
+                    placeholder="绑卡ID"
+                    v-if="testPay.channel === 'payEase'"
+                ></el-input>
+                <el-button @click="pay" class="test-pay-form-item" type="primary" plain :loading="testPayLoading">
+                    发起支付
+                </el-button>
+                <el-input
+                    placeholder="验证码"
+                    class="test-pay-form-item"
+                    style="width: 100px"
+                    v-if="testPay.channel === 'payEase'"
+                ></el-input>
+                <el-button class="test-pay-form-item" type="primary" plain v-if="testPay.channel === 'payEase'">
+                    确认支付
+                </el-button>
+            </div>
+        </div>
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            orderId: '978601560772706304',
+            info: null,
+            loading: false,
+            payStatus: {
+                SUCCESS: '支付成功',
+                PENDING: '等待支付',
+                FAIL: '支付失败',
+                CANCEL: '已取消',
+                REFUNDED: '已退款',
+                REFUNDING: '退款中'
+            },
+            payChannel: {
+                sandQuick: '衫德快捷',
+                sandPay: '衫德',
+                hmPay: '河马',
+                payEase: '首信易'
+            },
+            testPay: {
+                channel: '',
+                orderId: 'TEST' + new Date().getTime()
+            },
+            testPayLoading: false,
+            payRes: null
+        };
+    },
+    methods: {
+        query() {
+            if (!this.orderId) {
+                this.$$message.error('请输入订单号');
+                return;
+            }
+            this.info = null;
+            this.loading = true;
+            this.$http
+                .get('/payChannelMgmt/query', { orderId: this.orderId })
+                .then(res => {
+                    this.info = res;
+                    this.loading = false;
+                })
+                .catch(e => {
+                    this.loading = false;
+                    this.$message.error(e.error || '查询失败');
+                });
+        },
+        refund() {
+            this.$confirm('是否申请退款' + this.info.amount + '元', '确认退款', { type: 'warning' })
+                .then(res => {
+                    this.loading = true;
+                    return this.$http.post('/payChannelMgmt/refund', {
+                        orderId: this.orderId,
+                        transactionId: this.info.transactionId,
+                        amount: this.info.amount,
+                        channel: this.info.channel
+                    });
+                })
+                .then(res => {
+                    this.loading = false;
+                    this.$message.success('退款成功');
+                    this.query();
+                })
+                .catch(e => {
+                    this.loading = false;
+                    if (e !== 'cancel') {
+                        this.$message.error(e.error);
+                    }
+                });
+        },
+        pay() {
+            if (!this.testPay.channel) {
+                this.$message.error('请先选择支付渠道');
+                return;
+            }
+            this.testPayLoading = true;
+            this.$http
+                .post('/payChannelMgmt/pay', this.testPay)
+                .then(res => {
+                    this.testPayLoading = false;
+                    this.payRes = JSON.stringify(payRes, null, 4);
+                })
+                .catch(e => {
+                    this.testPayLoading = false;
+                    this.$message.error(e.error);
+                });
+        },
+        confirmPay() {}
+    }
+};
+</script>
+<style lang="less" scoped>
+.items {
+    font-size: 14px;
+    color: @text1;
+    margin-top: 20px;
+    border-top: 1px solid @border1;
+    border-left: 1px solid @border1;
+    font-size: 0;
+    .row {
+        .flex();
+    }
+    .item-wrapper {
+        display: inline-block;
+        flex-basis: 0;
+        flex-grow: 1;
+        .item {
+            .flex();
+            border-right: 1px solid @border1;
+            border-bottom: 1px solid @border1;
+            .label {
+                width: 80px;
+                line-height: 40px;
+                padding: 0 10px;
+                background: @bg;
+                font-size: 14px;
+            }
+            .value {
+                flex-grow: 1;
+                flex-basis: 0;
+                line-height: 40px;
+                padding: 0 10px;
+                font-size: 14px;
+                .ellipsisLn(1);
+            }
+        }
+    }
+}
+.test-pay-form-item {
+    margin-right: 20px;
+    margin-bottom: 20px;
+    &.el-input {
+        width: 300px;
+    }
+}
+</style>

+ 17 - 17
src/test/java/com/izouma/nineth/PayEaseTest.java

@@ -39,15 +39,15 @@ public class PayEaseTest {
     @Test
     public void bindCard() {
         //商户会员id
-        String merchantUserId = "9850";
+        String merchantUserId = "1";
         //	银⾏卡号
-        String bankCardNumber = "6217001370031997059";
+        String bankCardNumber = "6222024301070380165";
         //预留⼿机号
-        String phoneNumber = "13365135976";
+        String phoneNumber = "15077886171";
         //	持卡⼈姓名
-        String name = "潘惠";
+        String name = "熊竹";
         //	身份证号
-        String idCardNum = "321081199602086329";
+        String idCardNum = "321002199408304614";
 
 
         BindCardBuilder builder = new BindCardBuilder(merchantId);
@@ -67,8 +67,8 @@ public class PayEaseTest {
 
     @Test
     public void bindCardConfirm() {
-        String bindCardId = "20220519093153711994335360860160";
-        String kaptchaCode = "366263";
+        String bindCardId = "20220524516958713695754308698112";
+        String kaptchaCode = "959522";
         String merchantUserId = "1";
 
         BindCardConfirmBuilder builder = new BindCardConfirmBuilder(merchantId);
@@ -120,9 +120,9 @@ public class PayEaseTest {
         String remark = "111";
 
         //商户会员Id
-        String merchantUserId = "134613";
+        String merchantUserId = "1";
         //绑卡Id
-        String bindCardId = "20220519032566712013088098238464";
+        String bindCardId = "20220524516958713695754308698112";
         //超时时间
         String timeout = "3";
 
@@ -156,9 +156,9 @@ public class PayEaseTest {
 
     @Test
     public void payConfirm() {
-        String requestId = "12345677";
-        String paymentOrderId = "4c4e5a40e54c48838cea6ab935fae917";
-        String kaptchaCode = "413237";
+        String requestId = "978683558270861312";
+        String paymentOrderId = "f03fc9a74ac3450292cdfc18f6723b9c";
+        String kaptchaCode = "478513";
         ReceiptPaymentBuilder builder = new ReceiptPaymentBuilder(merchantId);
         builder.setRequestId(requestId)
                 .setPaymentOrderId(paymentOrderId)
@@ -169,11 +169,11 @@ public class PayEaseTest {
 
     @Test
     public void refund() {
-        String orderId = "62c73acc920146d5987d31587f78cb05";
-        String amount = "6767";
+        String orderId = "7f159751086347cbb728e7fd0de8ad1c";
+        String amount = "1";
         String notifyUrl = "https://www.raex.vip/payease/notify/order";
         RefundBuilder builder = new RefundBuilder(merchantId);
-        builder.setRequestId(new SnowflakeIdWorker(0, 0).nextId() + "")
+        builder.setRequestId("978601560772706304")
                 .setAmount(amount)
                 .setOrderId(orderId)
                 .setNotifyUrl(notifyUrl);
@@ -182,7 +182,7 @@ public class PayEaseTest {
 
     @Test
     public void query() {
-        String requestId = "978055464774275072";
+        String requestId = "978601560772706304";
         QueryBuilder builder = new QueryBuilder(merchantId);
         builder.setRequestId(requestId);
         JSONObject response = request(ConfigurationUtils.getOnlinePayQueryUrl(), builder.bothEncryptBuild());
@@ -190,7 +190,7 @@ public class PayEaseTest {
 
     @Test
     public void queryRefund() {
-        String requestId = "978055464774275072";
+        String requestId = "978601560772706304";
         RefundBuilder builder = new RefundBuilder(merchantId);
         builder.setRequestId(requestId);
         JSONObject response = request(ConfigurationUtils.getOnlinePayRefundQueryUrl(), builder.bothEncryptBuild());

+ 6 - 6
src/test/java/com/izouma/nineth/service/MintOrderServiceTest.java

@@ -122,13 +122,13 @@ class MintOrderServiceTest extends ApplicationTests {
                         try {
                             switch (payMethod) {
                                 case HMPAY:
-                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getGasPrice(), "hmPay");
+                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "hmPay");
                                     break;
                                 case SANDPAY:
-                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getGasPrice(), "sandPay");
+                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "sandPay");
                                     break;
                                 case PAYEASE:
-                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getGasPrice(), "payEase");
+                                    orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "payEase");
                                     break;
                             }
                         } catch (Exception e) {
@@ -184,13 +184,13 @@ class MintOrderServiceTest extends ApplicationTests {
                 try {
                     switch (payMethod) {
                         case HMPAY:
-                            orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getGasPrice(), "hmPay");
+                            orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "hmPay");
                             break;
                         case SANDPAY:
-                            orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getGasPrice(), "sandPay");
+                            orderPayService.refund(userErrOrder.getId().toString(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "sandPay");
                             break;
                         case PAYEASE:
-                            orderPayService.refund(userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "payEase");
+                            orderPayService.refund(userErrOrder.getTransactionId(), userErrOrder.getTransactionId(), userErrOrder.getGasPrice(), "payEase");
                             break;
                     }
                 } catch (Exception e) {