springboot整合JSAPI进行微信支付的流程

2

springboot整合JSAPI进行微信支付的流程

SpringBoot整合JSAPI进行微信支付流程

一、前言微信支付是中国最大的第三方支付平台之一,提供多种支付方式和接口。通过整合微信支付的JSAPI(JavaScript API),我们可以在Web应用中实现微信支付功能。下面是SpringBoot整合JSAPI进行微信支付的详细流程。

二、准备工作1. 创建SpringBoot项目首先,我们需要创建一个新的SpringBoot项目,选择Web和Spring Boot DevTools依赖项。

2. 添加微信支付相关依赖在pom.xml文件中添加以下依赖:

```xml

com.github.wxpay

wxpay-sdk

1.0.0

```

3. 配置微信支付相关信息在application.properties文件中配置微信支付相关信息:

```propertieswx.appid=你的appidwx.mch_id=你的mch_idwx.key=你的key```

三、创建微信支付订单1. 创建订单接口首先,我们需要创建一个订单接口,用于生成微信支付订单。

```java@RestController@RequestMapping("/api")

public class OrderController {

@PostMapping("/createOrder")

public Result createOrder(@RequestBody CreateOrderRequest request) {

//生成订单号 String orderId = UUID.randomUUID().toString();

// 创建订单信息 Order order = new Order(orderId, request.getGoodsName(), request.getPrice());

//保存订单信息 orderService.saveOrder(order);

return Result.success(orderId);

}

}

```

2. 创建订单请求体创建一个CreateOrderRequest类,用于封装订单相关信息:

```javapublic class CreateOrderRequest {

private String goodsName;

private BigDecimal price;

// getter和setter方法}

```

四、微信支付JSAPI流程1. 获取预付单接口在创建订单接口中,获取预付单接口:

```java@PostMapping("/getPrepayId")

public Result getPrepayId(@RequestParam String orderId) {

// 根据订单号获取预付单信息 PrepayId prepayId = orderService.getPrepayId(orderId);

return Result.success(prepayId);

}

```

2. 获取预付单信息在getPrepayId接口中,根据订单号获取预付单信息:

```javapublic class OrderService {

public PrepayId getPrepayId(String orderId) {

// 根据订单号获取预付单信息 PrepayId prepayId = wxPayService.getPrepayId(orderId);

return prepayId;

}

}

```

3. 获取预付单接口在OrderService类中,获取预付单接口:

```javapublic class WxPayService {

public PrepayId getPrepayId(String orderId) {

// 根据订单号获取预付单信息 String appId = "你的appid";

String mchId = "你的mch_id";

String key = "你的key";

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

params.put("appid", appId);

params.put("mch_id", mchId);

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

params.put("body", "测试");

params.put("out_trade_no", orderId);

params.put("total_fee",1);

// 组装签名 String sign = WxPayUtil.generateSignature(params, key);

// 组装请求体 Map requestMap = new HashMap<>();

requestMap.put("appid", appId);

requestMap.put("mch_id", mchId);

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

requestMap.put("body", "测试");

requestMap.put("out_trade_no", orderId);

requestMap.put("total_fee",1);

requestMap.put("sign", sign);

// 发起请求 String url = " String response = HttpUtil.post(url, requestMap);

// 解析响应结果 PrepayId prepayId = WxPayUtil.parsePrepayId(response);

return prepayId;

}

}

```

4. 支付接口在OrderService类中,支付接口:

```javapublic class OrderService {

public void pay(String orderId) {

// 根据订单号获取预付单信息 PrepayId prepayId = wxPayService.getPrepayId(orderId);

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

params.put("appid", "你的appid");

params.put("mch_id", "你的mch_id");

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

params.put("package", "prepay_id=" + prepayId.getPrepayId());

params.put("sign_type", "HMAC-SHA256");

// 组装签名 String sign = WxPayUtil.generateSignature(params, "你的key");

// 组装请求体 Map requestMap = new HashMap<>();

requestMap.put("appid", "你的appid");

requestMap.put("mch_id", "你的mch_id");

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

requestMap.put("package", "prepay_id=" + prepayId.getPrepayId());

requestMap.put("sign_type", "HMAC-SHA256");

requestMap.put("sign", sign);

// 发起请求 String url = " String response = HttpUtil.post(url, requestMap);

// 解析响应结果 PayResult payResult = WxPayUtil.parsePayResult(response);

if (payResult.getReturnCode().equals("SUCCESS")) {

// 支付成功 System.out.println("支付成功");

} else {

// 支付失败 System.out.println("支付失败");

}

}

}

```

五、支付结果校验1. 创建支付结果接口在OrderService类中,创建支付结果接口:

```javapublic class OrderService {

public void checkPayResult(String orderId) {

// 根据订单号获取预付单信息 PrepayId prepayId = wxPayService.getPrepayId(orderId);

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

params.put("appid", "你的appid");

params.put("mch_id", "你的mch_id");

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

params.put("transaction_id", prepayId.getTransactionId());

// 组装签名 String sign = WxPayUtil.generateSignature(params, "你的key");

// 组装请求体 Map requestMap = new HashMap<>();

requestMap.put("appid", "你的appid");

requestMap.put("mch_id", "你的mch_id");

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

requestMap.put("transaction_id", prepayId.getTransactionId());

requestMap.put("sign_type", "HMAC-SHA256");

requestMap.put("sign", sign);

// 发起请求 String url = " String response = HttpUtil.post(url, requestMap);

// 解析响应结果 PayResult payResult = WxPayUtil.parsePayResult(response);

if (payResult.getReturnCode().equals("SUCCESS")) {

// 支付成功 System.out.println("支付成功");

} else {

// 支付失败 System.out.println("支付失败");

}

}

}

```

六、总结通过上述步骤,我们可以实现SpringBoot整合JSAPI进行微信支付的流程。首先,需要创建一个订单接口,然后获取预付单接口,最后根据订单号获取预付单信息并发起请求。支付结果校验时,可以使用支付结果接口来检查支付是否成功。

以上是对SpringBoot整合JSAPI进行微信支付的流程的详细描述。

支付springboot微信java

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

上一篇 php + h5 微信支付,h5调用微信支付并提交数据

下一篇 微信小程序开发-微信支付功能【WxMaService 获取openid,WxPayService建微信订单,接收微信支付异步通知回...