MaxPay 支付接口文档

本文档提供了MaxPay支付平台所有接口的详细说明和使用方法,包括代收、代付、订单查询及回调处理等核心功能。

2. 代收订单查询接口

POST
https://{请联系客服}/api/pay/query
application/json

输入参数

参数名 是否可空 类型 描述
merchant N string 商户id
outtradeno N string 商户订单号
sign N string 签名

输入参数示例

JSON 示例
{
  "outtradeno": "9c4bd61ff72a46159f2af820",
  "merchant": "1904572121431658498",
  "sign": "ea0a2cfa0964ac25eed4c5216c6f81cd"
}

接口返回示例

JSON 返回
{
  "code": 0,
  "results": {
    "tradeno": "12312321312312312",
    "outtradeno": "9c4bd61ff72a46159f2af820",
    "amount": 1000,
    "ramount": 999.99,
    "endtime": "2023-12-12 23:12:32",
    "status": "1",
    "remark": "备注",
    "sign": "sign1"
  },
  "uid": ""
}

返回参数

参数名 类型 描述
tradeno string 订单号
outtradeno string 商户订单号
amount number 订单金额
ramount number 实际收款金额
endtime string 支付时间
status string 订单状态
0: 未支付
1: 已支付
2: 超时
4: 撤销
5: 未认领
remark string 备注
sign string 签名

Java 示例

Java 示例代码
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.*;
import com.google.gson.*;
//代收订单查询
public class QueryExample   {
    public static void main(String[] args) {

        String merchantId = "1904572121431658498";
        String secret = "your_secret_key";
        String apiUrl = "https://{请联系客服}/api/pay/query";
        String orderId = "MAXPAY224662930033";

        Map params = new HashMap<>();
        params.put("merchant", merchantId);
        params.put("outtradeno", orderId);

        // 生成签名
        String sign = generateSign(params, secret);
        params.put("sign", sign);

        // 发送请求
        try {
            String response = sendPostRequest(apiUrl, params);
            System.out.println("API响应: " + response);

            // 解析响应
            JsonObject json = JsonParser.parseString(response).getAsJsonObject();
            if (json.get("code").getAsInt() == 0) {
                JsonObject results = json.getAsJsonObject("results");
                String status = results.get("status").getAsString();
                System.out.println("订单状态: " + status);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static String generateSign(Map params, String secret) {
        // 过滤空值参数并去除空格
        Map filteredParams = new TreeMap<>();
        for (Map.Entry entry : params.entrySet()) {
            if (entry.getValue() != null && !entry.getValue().trim().isEmpty()) {
                filteredParams.put(entry.getKey(), entry.getValue().trim());
            }
        }

        // 构建参数字符串
        StringBuilder paramBuilder = new StringBuilder();
        for (Map.Entry entry : filteredParams.entrySet()) {
            if (paramBuilder.length() > 0) {
                paramBuilder.append("&");
            }
            String encodedValue = URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8).toLowerCase();
            paramBuilder.append(entry.getKey()).append("=").append(encodedValue);
        }

        // 追加secret
        String paramString = paramBuilder.toString();
        String strToHash = paramString + "&secret=" + secret;

        // 生成MD5签名
        return md5(strToHash);
    }

    private static String md5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8));
            StringBuilder hexString = new StringBuilder();
            for (byte b : hash) {
                String hex = Integer.toHexString(0xff & b);
                if (hex.length() == 1) hexString.append("0");
                hexString.append(hex);
            }
            return hexString.toString();
        } catch (Exception e) {
            throw new RuntimeException("MD5计算失败", e);
        }
    }

    private static String sendPostRequest(String url, Map params) throws Exception {
        HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
        conn.setDoOutput(true);

        // 将参数转换为JSON字符串
        String jsonInputString = new Gson().toJson(params);

        // 发送请求
        try (OutputStream os = conn.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        // 读取响应
        try (BufferedReader br = new BufferedReader(
            new InputStreamReader(conn.getInputStream(), "utf-8"))) {
            StringBuilder response = new StringBuilder();
            String responseLine;
            while ((responseLine = br.readLine()) != null) {
                response.append(responseLine.trim());
            }
            return response.toString();
        }
    }
}