SpringBoot整合Vue实现微信扫码支付、微信退款功能
直接上代码,在order模块添加依赖
<dependency>
<groupId>com.github.wxpay</groupId>
<artifactId>wxpay-sdk</artifactId>
<version>0.0.3</version>
</dependency>
在配置类添加申请的商家号信息
控制层
@RestController
@RequestMapping("/api/order/weixin")
public class WeixinController {
@Autowired
private WeiXinService weixinPayService;
/**
* 下单 生成二维码
*/
@GetMapping("/createNative/{orderId}")
public R createNative(
@ApiParam(name = "orderId", value = "订单id", required = true)
@PathVariable("orderId") Long orderId) {
Map map = weixinPayService.createNative(orderId);
return R.ok().data(map);
}
}
createNative(orderId) {
return request({
url: `/api/order/weixin/createNative/${orderId}`,
method: get
})
}
显示二维码需要前端安装插件 安装npm install vue-qriously
订单详情页,修改order/show.vue组件
查询订单支付状态,添加定时器方法,每隔3秒去查询一次支付状态,api
queryPayStatus(orderId) {
return request({
url: `/api/order/weixin/queryPayStatus/${orderId}`,
method: get
})
},
支付成功后,更新状态
控制层,查询状态
@ApiOperation(value = "查询支付状态")
@GetMapping("/queryPayStatus/{orderId}")
public Result queryPayStatus(
@ApiParam(name = "orderId", value = "订单id", required = true)
@PathVariable("orderId") Long orderId) {
//调用查询接口
Map<String, String> resultMap = weixinPayService.queryPayStatus(orderId, PaymentTypeEnum.WEIXIN.name());
if (resultMap == null) {//出错
return Result.fail().message("支付出错");
}
if ("SUCCESS".equals(resultMap.get("trade_state"))) {//如果成功
//更改订单状态,处理支付结果
String out_trade_no = resultMap.get("out_trade_no");
paymentInfoService.paySuccess(out_trade_no, PaymentTypeEnum.WEIXIN.getStatus(), resultMap);
return Result.ok().message("支付成功");
}
return Result.ok().message("支付中");
}
退款
weixin.cert=C:\apiclient_cert.p12
weixinservice中
上一篇:
IDEA上Java项目控制台中文乱码
