1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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<String, Object> 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;
    }
}