全部开发者教程

企业级在线办公系统

上个小节我们写好了用于创建支付订单的持久层和业务层代码,这节课咱们就要把Web层代码实现了,然后用Swagger测试Web方法,看看能不能创建支付订单。

一、添加依赖

因为微信支付的工具类,要用到org.apache.http.client包中的各种类,而且Apache官方库里面已经把这个包给去掉了,所以我们只好借助于引入腾讯云COS云存储的库,这里面有我们需要的client包。反正不久之后我们也要用到腾讯云存储,所以提前引入库文件也说得通。

<dependency>
    <groupId>com.qcloud</groupId>
    <artifactId>cos_api</artifactId>
    <version>5.6.38</version>
</dependency>
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.2.2</version>
</dependency>

二、编写Web层代码

创建CreateNativeAmectPayOrderForm类,封装Ajax提交的数据。

@Data
@Schema(description = "创建Native支付罚款订单表单")
public class CreateNativeAmectPayOrderForm {
    @NotNull(message = "amectId不能为空")
    @Min(value = 1, message = "amectId不能小于1")
    @Schema(description = "罚款单ID")
    private Integer amectId;
}

AmectController.java类中,定义Web方法。

public class AmectController {
    ……
    @PostMapping("/createNativeAmectPayOrder")
    @Operation(summary = "创建Native支付罚款订单")
    @SaCheckLogin
    public R createNativeAmectPayOrder(@Valid @RequestBody CreateNativeAmectPayOrderForm form) {
        int userId = StpUtil.getLoginIdAsInt();
        int amectId = form.getAmectId();
        HashMap param = new HashMap() {{
            put("amectId", amectId);
            put("userId", userId);
        }};
        String qrCodeBase64 = amectService.createNativeAmectPayOrder(param);
        return R.ok().put("qrCodeBase64", qrCodeBase64);
    }
}

三、执行Swagger测试

挑选跟你自己有关的罚款单,然后把罚款金额改成1分钱,记住这个罚款单的ID,我们到Swagger上面测试Web方法。如果返回的是Base64编码的字符串,说明二维码成功生成了。我们去tb_amect数据表,查看该条罚款记录的prepay_id字段,如果有值,这就是支付订单的ID。