微信公众号支付详细过程

1

微信公众号支付详细过程

微信公众号支付详细过程

背景

公司的公众号有个保险项目需要用到微信支付,官网Java文档写的并不是很详细。个人根据网上一些demo总结出来的微信支付功能,中间遇到过几个坑,后续会详细讲解。

一.转换MD5格式类

首先,我们需要一个用于转换MD5格式的类,这个类将帮助我们生成签名用的字符串。

```javapublic class MD5Util {

public static String getMD5(String str) {

try {

MessageDigest md = MessageDigest.getInstance("MD5");

byte[] bytes = md.digest(str.getBytes());

StringBuilder sb = new StringBuilder();

for (byte b : bytes) {

sb.append(Integer.toHexString(0xff & b));

}

return sb.toString();

} catch (NoSuchAlgorithmException e) {

throw new RuntimeException(e);

}

}

}

```

二.微信支付接口类

下面是用于调用微信支付接口的类,这个类将帮助我们生成签名用的字符串和进行支付请求。

```javapublic class WeChatPayUtil {

private static final String APPID = "你的APPID";

private static final String MCHID = "你的MCHID";

private static final String KEY = "你的KEY";

public static String getSign(String data) {

return MD5Util.getMD5(APPID + KEY + data);

}

public static void pay(String openid, String amount, String body) throws Exception {

//生成签名用的字符串 String sign = getSign(openid + amount + body);

// 构造支付请求的JSON数据 JSONObject json = new JSONObject();

json.put("appid", APPID);

json.put("mch_id", MCHID);

json.put("nonce_str", UUID.randomUUID().toString());

json.put("body", body);

json.put("amount", amount);

json.put("spbill_create_ip", "127.0.0.1");

json.put("notify_url", " json.put("trade_type", "JSAPI");

json.put("openid", openid);

json.put("sign", sign);

// 进行支付请求 String url = " URL obj = new URL(url);

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

connection.setRequestMethod("POST");

connection.setDoOutput(true);

connection.setRequestProperty("Content-Type", "application/json; charset=UTF-8");

// 将JSON数据写入请求体 OutputStream os = connection.getOutputStream();

os.write(json.toString().getBytes());

os.close();

// 获取支付结果 int code = connection.getResponseCode();

if (code ==200) {

String result = connection.getInputStream().toString();

System.out.println(result);

} else {

throw new Exception("支付失败");

}

}

}

```

三.使用微信支付接口类

最后,我们可以在我们的业务逻辑中使用微信支付接口类来进行支付请求。

```javapublic class BusinessLogic {

public void doBusiness() throws Exception {

// 获取用户的openid String openid = getUserOpenid();

// 获取支付金额和描述 String amount = getAmount();

String body = getBody();

// 进行支付请求 WeChatPayUtil.pay(openid, amount, body);

}

}

```

注意

* 在使用微信支付接口类时,请确保你已经正确配置了APPID、MCHID和KEY。

* 在进行支付请求时,请确保你已经正确构造了签名用的字符串和JSON数据。

* 如果你遇到任何问题,请参考微信官方文档或联系微信支持团队。

以上就是使用微信公众号支付的详细过程。希望这个教程能够帮助你成功地进行微信支付。

支付公众号微信支付微信公众号支付

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

上一篇 公众号,小程序微信支付基于PHP后端,附完整流程【小白教程,大神绕道,附支付错误解决办法】

下一篇 微信支付对账单查询获取