Springboot整合微信支付
Springboot整合微信支付
业务流程:
一、生成微信支付二维码
获取以下内容:
2、引入依赖
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
3、定义接口
4、业务实现
二、查询当前支付状态
1、定义接口
//查询订单支付状态
//参数:订单号,根据订单查询支付状态
@GetMapping("/getOrderStatus/{orderNo}")
public R getOrderStatus(@PathVariable String orderNo) {
//查询是否存在当前订单
Map<String,String> map = payLogService.queryPayStatus(orderNo);
if (map == null) {
return R.error().message("支付出错了");
}
//存在当前订单,判断当前支付状态
//通过map获取订单状态
/**
* trade_state:
* 支付成功:SUCCESS
* 未支付:NATIVE
*/
System.out.println(map.get("trade_state"));
if (map.get("trade_state").equals("SUCCESS")) {
//支付成功
//添加记录到支付表,更新订单表订单状态
payLogService.updateOrderStatus(map);
return R.ok().message("支付成功......");
}
return R.ok().code(25000).message("支付中");
}
}
2、业务实现
//添加支付记录和更新订单状态
@Override
public void updateOrderStatus(Map<String, String> map) {
//从map中获取订单号
String orderNo = map.get("out_trade_no");
//根据订单号查询出订单信息
TOrder order = orderService.getOne(new QueryWrapper<TOrder>().lambda().eq(TOrder::getOrderNo, orderNo));
//更新订单状态
if (order.getStatus() == 1) {
//已经支付
return;
} else {
order.setStatus(1);
orderService.updateById(order);
}
//向支付表中添加支付记录
TPayLog payLog = new TPayLog();
payLog.setOrderNo(orderNo); //订单号
payLog.setPayTime(new Date()); //订单完成时间
payLog.setPayType(1);//支付类型
payLog.setTotalFee(order.getTotalFee());//总金额(分)
payLog.setTradeState(map.get("trade_state"));//支付状态
payLog.setTransactionId(map.get("transaction_id")); //流水号
payLog.setAttr(JSONObject.toJSONString(map)); //其他值
baseMapper.insert(payLog);
}
}
