上个小节我们写好了用于创建支付订单的持久层和业务层代码,这节课咱们就要把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。