From 4ef94185af0c3f00ae1dc933bb099bde26894df8 Mon Sep 17 00:00:00 2001
From: yeg <1347747024@qq.com>
Date: 星期三, 16 九月 2026 00:51:43 +0800
Subject: [PATCH] feat(merchant): 未完成微信实名与授权前不允许收款
---
talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessServiceTests.java | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessServiceTests.java b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessServiceTests.java
index 5bccb04..03dca15 100644
--- a/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessServiceTests.java
+++ b/talent-card-server/src/test/java/com/talentcard/server/business/merchant/MerchantPaymentReadinessServiceTests.java
@@ -71,6 +71,39 @@
""", merchantId, storeId, "hash-readiness-" + suffix, "readiness-card-" + suffix, shortReference("T", suffix));
bankCardId = jdbc.queryForObject("select max(id) from merchant_bank_card", Long.class);
jdbc.update("update merchant_onboarding_application set initial_bank_card_id=? where id=?", bankCardId, applicationId);
+ confirmWechatCapabilities();
+ }
+
+ /** 微信支付业务开通与实名/授权都有通道证据——收款能力的前置。 */
+ private void confirmWechatCapabilities() {
+ jdbc.update("insert into merchant_onboarding_progress(application_id, stages_json) values (?, '{\"wechat\":\"confirmed\",\"realname\":\"confirmed\"}')", applicationId);
+ }
+
+ /**
+ * 微信实名未完成时不允许收款:只开通微信业务、不做实名,微信侧并没有把收款权限给到商户。
+ * 缺哪一项要说清楚,不能只回一句「暂时无法收款」。
+ */
+ @Test
+ void rejectsANewPaidOrderWhenWechatRealnameIsNotConfirmed() {
+ confirmSnapshot("NORMAL", "0", "1");
+ jdbc.update("update merchant_onboarding_progress set stages_json='{\"wechat\":\"confirmed\",\"realname\":\"missing\"}' where application_id=?", applicationId);
+
+ assertThatThrownBy(() -> readinessService.requireCollectingMerchant(merchantId, storeId))
+ .isInstanceOf(BusinessException.class)
+ .hasMessageContaining("微信实名与授权")
+ .hasMessageContaining("微信收款能力未就绪");
+ }
+
+ /** 没有进度记录时两项都算缺——查不到通道证据就不能认为能收款。 */
+ @Test
+ void rejectsANewPaidOrderWhenThereIsNoCapabilityEvidenceAtAll() {
+ confirmSnapshot("NORMAL", "0", "1");
+ jdbc.update("delete from merchant_onboarding_progress where application_id=?", applicationId);
+
+ assertThatThrownBy(() -> readinessService.requireCollectingMerchant(merchantId, storeId))
+ .isInstanceOf(BusinessException.class)
+ .hasMessageContaining("微信支付业务开通")
+ .hasMessageContaining("微信实名与授权");
}
@Test
--
Gitblit v1.7.1