Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)

22

Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)

Java 微信支付接口详细描述

一. 准备工作在开始使用微信支付接口之前,我们需要准备一些必要的工作:

1. APP绑定微信商户平台

* 在微信商户平台中创建一个新的商户账号。

* 绑定你的APP,获取商户ID(mchID)。

2. 获取证书

* 商户后台下载证书文件(.pem或.cer格式)。

3. 导入微信支付SDK

* 在项目中添加微信支付SDK依赖。

4. 配置API密钥

* 在微信商户平台中创建一个新的API密钥。

二. 统一下单接口统一下单接口用于生成预付款订单

1. 请求参数| 参数名称 | 类型 | 必填 | 描述 |

| --- | --- | --- | --- |

| appid | String | 是 | APPID |

| mch_id | String | 是 | 商户ID |

| nonce_str | String | 是 | 随机字符串 |

| body | String | 是 | 商品描述 |

| detail | String | 否 | 商品详情 |

| out_trade_no | String | 是 | 商户订单号 |

| total_fee | Integer | 是 | 总金额(分) |

2. 请求示例```javaString appid = "your_app_id";

String mch_id = "your_mch_id";

String nonce_str = UUID.randomUUID().toString();

String body = "测试商品";

String detail = "";

String out_trade_no = "your_out_trade_no";

int total_fee =100;

Map params = new HashMap<>();

params.put("appid", appid);

params.put("mch_id", mch_id);

params.put("nonce_str", nonce_str);

params.put("body", body);

params.put("detail", detail);

params.put("out_trade_no", out_trade_no);

params.put("total_fee", String.valueOf(total_fee));

//生成签名String sign = getSign(params);

// 组装请求参数Map requestParams = new HashMap<>();

requestParams.put("appid", appid);

requestParams.put("mch_id", mch_id);

requestParams.put("nonce_str", nonce_str);

requestParams.put("sign", sign);

requestParams.put("body", body);

requestParams.put("detail", detail);

requestParams.put("out_trade_no", out_trade_no);

requestParams.put("total_fee", String.valueOf(total_fee));

// 发起请求String url = " connection = (HttpURLConnection) new URL(url).openConnection();

connection.setRequestMethod("POST");

connection.setDoOutput(true);

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.writeBytes(getUrlParams(requestParams));

out.flush();

out.close();

// 获取响应结果int responseCode = connection.getResponseCode();

String result = "";

if (responseCode ==200) {

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String inputLine;

while ((inputLine = in.readLine()) != null) {

result += inputLine;

}

in.close();

} else {

System.out.println("请求失败,状态码:" + responseCode);

}

// 解析响应结果Map resultMap = parseResult(result);

System.out.println("统一下单接口返回结果:");

for (String key : resultMap.keySet()) {

System.out.println(key + ":" + resultMap.get(key));

}

```

三. 异步回调接口异步回调接口用于处理支付结果

1. 请求参数| 参数名称 | 类型 | 必填 | 描述 |

| --- | --- | --- | --- |

| appid | String | 是 | APPID |

| mch_id | String | 是 | 商户ID |

| notify_url | String | 是 | 回调地址 |

2. 请求示例```javaString appid = "your_app_id";

String mch_id = "your_mch_id";

String notify_url = " String> params = new HashMap<>();

params.put("appid", appid);

params.put("mch_id", mch_id);

params.put("notify_url", notify_url);

//生成签名String sign = getSign(params);

// 组装请求参数Map requestParams = new HashMap<>();

requestParams.put("appid", appid);

requestParams.put("mch_id", mch_id);

requestParams.put("sign", sign);

requestParams.put("notify_url", notify_url);

// 发起请求String url = " connection = (HttpURLConnection) new URL(url).openConnection();

connection.setRequestMethod("POST");

connection.setDoOutput(true);

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.writeBytes(getUrlParams(requestParams));

out.flush();

out.close();

// 获取响应结果int responseCode = connection.getResponseCode();

String result = "";

if (responseCode ==200) {

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String inputLine;

while ((inputLine = in.readLine()) != null) {

result += inputLine;

}

in.close();

} else {

System.out.println("请求失败,状态码:" + responseCode);

}

// 解析响应结果Map resultMap = parseResult(result);

System.out.println("异步回调接口返回结果:");

for (String key : resultMap.keySet()) {

System.out.println(key + ":" + resultMap.get(key));

}

```

四. 订单退款接口订单退款接口用于退还用户的支付金额

1. 请求参数| 参数名称 | 类型 | 必填 | 描述 |

| --- | --- | --- | --- |

| appid | String | 是 | APPID |

| mch_id | String | 是 | 商户ID |

| out_trade_no | String | 是 | 商户订单号 |

| refund_fee | Integer | 是 |退款金额(分) |

2. 请求示例```javaString appid = "your_app_id";

String mch_id = "your_mch_id";

String out_trade_no = "your_out_trade_no";

int refund_fee =100;

Map params = new HashMap<>();

params.put("appid", appid);

params.put("mch_id", mch_id);

params.put("out_trade_no", out_trade_no);

params.put("refund_fee", String.valueOf(refund_fee));

//生成签名String sign = getSign(params);

// 组装请求参数Map requestParams = new HashMap<>();

requestParams.put("appid", appid);

requestParams.put("mch_id", mch_id);

requestParams.put("sign", sign);

requestParams.put("out_trade_no", out_trade_no);

requestParams.put("refund_fee", String.valueOf(refund_fee));

// 发起请求String url = " connection = (HttpURLConnection) new URL(url).openConnection();

connection.setRequestMethod("POST");

connection.setDoOutput(true);

DataOutputStream out = new DataOutputStream(connection.getOutputStream());

out.writeBytes(getUrlParams(requestParams));

out.flush();

out.close();

// 获取响应结果int responseCode = connection.getResponseCode();

String result = "";

if (responseCode ==200) {

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));

String inputLine;

while ((inputLine = in.readLine()) != null) {

result += inputLine;

}

in.close();

} else {

System.out.println("请求失败,状态码:" + responseCode);

}

// 解析响应结果Map resultMap = parseResult(result);

System.out.println("订单退款接口返回结果:");

for (String key : resultMap.keySet()) {

System.out.println(key + ":" + resultMap.get(key));

}

```

五. 取消订单接口取消订单接口用于取消用户的支付订单

1. 请求参数| 参数名称 | 类型 | 必填 | 描述 |

| --- | --- | --- | --- |

| appid | String | 是 | APPID |

| mch_id | String | 是 | 商户ID |

| out_trade_no | String | 是 | 商户订单号 |

2. 请求示例```javaString appid = "your_app_id";

String mch_id = "your_mch_id";

String out_trade_no = "your_out_trade_no";

Map params = new HashMap<>();

params.put("appid", appid);

params.put("mch_id", mch_id);

params.put("out_trade_no", out_trade_no);

//生成签名String sign = getSign(params);

// 组装请求参数Map requestParams = new HashMap<>();

requestParams.put("appid", appid);

requestParams.put("mch_id", mch_id);

requestParams.put("sign", sign);

requestParams.put("out_trade_no", out_trade_no);

// 发起请求String url = " connection = (HttpURLConnection

支付微信支付java

版权声明:除非特别标注,否则均为网络文章,侵权请联系站长删除。

上一篇 小程序微信支付问题

下一篇 Spring Boot中的微信支付(小程序)