package com.talentcard.server.business.payment.huifu;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import java.util.Map;
|
|
import org.junit.jupiter.api.Test;
|
|
/**
|
* 进件请求里的「上级商户」组装规则。
|
*
|
* <p>背景:平台用自己的汇付号签名调接口。如果进件时不把新商户挂到平台名下
|
* ({@code head_office_flag=0} + {@code head_huifu_id}),商户就归属到渠道商名下,
|
* 平台随后对它的**一切**操作都会返回 {@code 20002 数据权限认证失败**——实测
|
* {@code v2.merchant.busi.open}(业务开通)和 {@code v2.merchant.busi.config}(微信小程序
|
* 支付配置)两个接口、带不带 {@code product_id} 都一样。结果就是进件通过了,但微信支付
|
* 永远配不上,商户只能自己去汇付控台点——这正是进件功能要消灭的事情。
|
*
|
* <p>所以这两个字段的有无必须被钉住。
|
*/
|
class HuifuOnboardingParentMerchantTests {
|
|
@Test
|
void anOnboardingWithoutAParentStaysAnOrdinaryMerchant() {
|
Map<String, Object> request = new java.util.LinkedHashMap<>();
|
|
HuifuParentMerchant.apply(request, "");
|
|
assertThat(request).doesNotContainKeys("head_office_flag", "head_huifu_id");
|
}
|
|
@Test
|
void aBlankParentIsTreatedAsNoParent() {
|
Map<String, Object> request = new java.util.LinkedHashMap<>();
|
|
HuifuParentMerchant.apply(request, " ");
|
|
assertThat(request).doesNotContainKeys("head_office_flag", "head_huifu_id");
|
}
|
|
@Test
|
void aParentTurnsTheMerchantIntoItsDirectSubMerchant() {
|
Map<String, Object> request = new java.util.LinkedHashMap<>();
|
|
HuifuParentMerchant.apply(request, "6666000226048687");
|
|
// 0 = 下级商户;上级商户号必填,平台之后才有权为它配置微信支付与业务开通。
|
assertThat(request).containsEntry("head_office_flag", "0");
|
assertThat(request).containsEntry("head_huifu_id", "6666000226048687");
|
}
|
}
|