快捷搜索: 王者荣耀 脱发

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中

经验分享 程序员 微信小程序 职场和发展