import java.security.MessageDigest; import java.util.*; import java.net.http.*; import java.net.URI; /** * 彩虹易支付 Java SDK 示例 * 文档: https://xxkkfz.cn/apidoc.html */ public class EpaySubmit { public static String md5(String input) throws Exception { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] digest = md.digest(input.getBytes("UTF-8")); StringBuilder sb = new StringBuilder(); for (byte b : digest) sb.append(String.format("%02x", b)); return sb.toString(); } public static String submit(Map params, String key) throws Exception { // 排序并签名 TreeMap sorted = new TreeMap<>(params); StringBuilder sb = new StringBuilder(); for (Map.Entry e : sorted.entrySet()) { if (!e.getKey().equals("sign") && !e.getValue().isEmpty()) { sb.append(e.getKey()).append("=").append(e.getValue()).append("&"); } } String signStr = sb.toString().replaceAll("&$", ""); params.put("sign", md5(signStr + key)); params.put("sign_type", "MD5"); // 请求 HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://xxkkfz.cn/api/submit.php")) .header("Content-Type", "application/x-www-form-urlencoded") .POST(HttpRequest.BodyPublishers.ofString(buildForm(params))) .build(); return client.send(request, HttpResponse.BodyHandlers.ofString()).body(); } public static void main(String[] args) throws Exception { Map p = new HashMap<>(); p.put("pid", "1001"); p.put("type", "alipay"); p.put("out_trade_no", "ORDER" + System.currentTimeMillis()); p.put("notify_url", "https://你的域名/notify"); p.put("return_url", "https://你的域名/return"); p.put("name", "测试商品"); p.put("money", "0.01"); System.out.println(submit(p, "你的商户密钥")); } }