Java - 微信支付

9

Java - 微信支付

微信支付 Java 实现详细描述

1. 官方文档首先,我们需要了解微信支付官方文档的内容。以下是部分参考内容:

* 介绍: 微信支付是一种基于微信平台的在线支付方式,支持多种支付渠道,如银行卡、微信钱包等。

* 场景: 商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再在APP里面调起支付。

2. 参数说明以下是部分参数说明:

* appid: 微信开放平台为商户分配的appid* mch_id: 商户号* nonce_str: 随机字符串,防止重复请求* body: 商品描述* notify_url: 回调地址* trade_type:交易类型(JSAPI、NATIVE、APP)

* prepay_id: 预支付交易会话标识3. 微信统一工具类以下是微信统一工具类的实现:

```javapackage com.maiji.pay.wx;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.URL;

import java.util.HashMap;

import java.util.Map;

import org.json.JSONObject;

public class WxPayUtil {

private static final String APPID = "your_appid";

private static final String MCH_ID = "your_mch_id";

public static Map getPrepayId(String body, String notifyUrl, String tradeType) throws Exception {

//生成随机字符串 String nonceStr = createNoncestr();

// 组装参数 Map params = new HashMap<>();

params.put("appid", APPID);

params.put("mch_id", MCH_ID);

params.put("nonce_str", nonceStr);

params.put("body", body);

params.put("notify_url", notifyUrl);

params.put("trade_type", tradeType);

// 组装xml String xml = WxPayUtil.buildXml(params);

// 发起请求 String response = sendPost(xml, " // 解析xml Map result = parseXml(response);

return result;

}

private static String createNoncestr() {

return UUID.randomUUID().toString();

}

private static String buildXml(Map params) throws Exception {

StringBuilder xml = new StringBuilder();

for (Map.Entry entry : params.entrySet()) {

xml.append("<").append(entry.getKey()).append(">").append(entry.getValue()).append("");

}

return xml.toString();

}

private static String sendPost(String xml, String url) throws Exception {

URL postUrl = new URL(url);

HttpURLConnection connection = (HttpURLConnection) postUrl.openConnection();

connection.setRequestMethod("POST");

connection.setDoOutput(true);

try (BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {

StringBuilder response = new StringBuilder();

String line;

while ((line = reader.readLine()) != null) {

response.append(line);

}

return response.toString();

} finally {

connection.disconnect();

}

}

private static Map parseXml(String xml) throws Exception {

JSONObject jsonObject = new JSONObject(xml);

Map result = new HashMap<>();

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

result.put(key, jsonObject.get(key));

}

return result;

}

}

```

4. 使用示例以下是使用示例:

```javapublic class Main {

public static void main(String[] args) throws Exception {

String body = "测试商品";

String notifyUrl = " String tradeType = "JSAPI";

Map result = WxPayUtil.getPrepayId(body, notifyUrl, tradeType);

System.out.println(result);

}

}

```

5. 注意事项以下是注意事项:

* appid: 微信开放平台为商户分配的appid* mch_id: 商户号* nonce_str: 随机字符串,防止重复请求* body: 商品描述* notify_url: 回调地址* trade_type:交易类型(JSAPI、NATIVE、APP)

* prepay_id: 预支付交易会话标识以上是微信支付 Java 实现的详细描述。

支付java

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

上一篇 微信小程序提交审核用户隐私协议模板

下一篇 SSO、OAuth2、JWT、CAS、OpenID、LDAP、淘宝微信登录一网打尽