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项目控制台中文乱码