import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; import com.alibaba.fastjson.JSON; import com.huifu.bspay.sdk.opps.client.BasePayClient; import com.huifu.bspay.sdk.opps.core.BasePay; import com.huifu.bspay.sdk.opps.core.config.MerConfig; import org.yaml.snakeyaml.Yaml; /** 只读查询探针:把通道回执原样打出来(库里的回执会被关单覆盖,原文只能这样拿)。 */ public class ChannelQuery { public static void main(String[] args) throws Exception { Map root = new Yaml().load(Files.readString(Path.of("talent-card-server/src/main/resources/application.yml"))); Map config = find(root); BasePay.debug = false; BasePay.prodMode = BasePay.MODE_PROD; MerConfig c = new MerConfig(); c.setSysId("" + config.get("system-id")); c.setProductId("" + config.get("product-id")); c.setRsaPrivateKey("" + config.get("private-key")); c.setRsaPublicKey("" + config.get("platform-public-key")); BasePay.initWithMerConfig(c); if (!java.util.Set.of("v2.merchant.basicdata.query", "v2.merchant.busi.config.query", "v2.merchant.busi.realname.query", "v2.merchant.basicdata.status.query").contains(args[0])) throw new IllegalArgumentException("Read only query required"); Map request = JSON.parseObject(args[1], Map.class); System.out.println(JSON.toJSONString(BasePayClient.request(request, args[0], false))); } static Map find(Map root) { if (root.containsKey("system-id") && root.containsKey("private-key")) return root; for (Object v : root.values()) if (v instanceof Map m) { Map r = find(m); if (r != null) return r; } return null; } }