MaxPay 支付接口文档
本文档提供了MaxPay支付平台所有接口的详细说明和使用方法,包括代收、代付、订单查询及回调处理等核心功能。
3. 代付接口
POST
https://{请联系客服}/api/transfer/apply
application/json
输入参数
参数名 | 是否可空 | 类型 | 描述 |
---|---|---|---|
amount |
N | number | 金额 |
merchant |
N | string | 商户ID |
bankname |
N | string | 代付银行名称 |
subbankname |
Y | string | 代付支行名称 |
cardno |
N | string | 代付账户 |
cardname |
N | string | 代付账户所有人姓名 |
notifyurl |
N | string | 代付成功回调地址 |
outtransferno |
N | string | 商户代付订单号 |
verifyChannelNo |
Y | string | 验证地址编号 |
remark |
Y | string | 备注 |
sign |
N | string | 签名 |
输入参数示例
JSON 示例
{ "amount": 2000, "merchant": "1904572121431658498", "bankname": "xx银行", "subbankname": "xx支行", "cardno": "1224323423", "cardname": "张三", "notifyurl": "www.xx.com", "outtransferno": "TEST12311221", "verifyChannelNo": "1", "remark": "备注", "sign": "sign1" }
接口返回示例
JSON 返回
{ "code": 0, "results": "success", "uid": "" }
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 TransferExample { public static void main(String[] args) { String merchantId = "1904572121431658498"; String secret = "your_secret_key"; String apiUrl = "https://{请联系客服}/api/transfer/apply"; Mapparams = new HashMap<>(); params.put("amount", "2000"); params.put("merchant", merchantId); params.put("bankname", "xx银行"); params.put("cardno", "1224323423"); params.put("cardname", "张三"); params.put("notifyurl", "https://yourdomain.com/notify"); params.put("outtransferno", "TRANSFER_" + System.currentTimeMillis()); params.put("remark", "测试代付"); // 生成签名 String sign = generateSign(params, secret); params.put("sign", sign); // 发送请求 try { String response = sendPostRequest(apiUrl, params); System.out.println("API响应: " + response); } 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(); } } }