3 商户资质申请
3.1 需求分析
3.1.1 系统交互流程
交互流程如下:
- 前端上传证件照片,请求商户平台应用。
- 商户平台应用请求阿里云上传图片。
- 上传成功返回图片标识给前端。
- 前端携带证件图片标识和资质申请信息提交到商户平台应用。
- 请求商户服务保存资质申请。
- 保存成功返回给前端。
商户资质申请界面如下:
3.1.2 资质信息存储
商户资质 信息存储在商户表,上传的资质证件照片存储Url绝对路径。关于资质 申请状态 说明如下 :
1、提交资质申请,审核状态 为1(已申请待审核)
2、资质审核后,审核状态 为2(审核通过 )或3(审核不通过 )。
3.2 阿里云
商户上传证件照片要与阿里云对接,参考“阿里云使用指南.pdf”完成对接。
3.3 上传证件
3.3.1 商户平台应用-证件上传(接口①)
3.3.1.1 接口定义
1、接口描述
1)前端携带证件信息请求商户平台应用
2)商户平台应用请求阿里云服务上传证件图片
3)阿里云返回图片地址给前端
2、接口定义如下:
定义FileService负责文件上传至阿里云:
package com.huiminpay.merchant.service;
import com.huiminpay.common.domain.BusinessException;
public interface FileService {
/**
* 上传文件
* @param bytes 文件字节数组
* @param fileName 文件名
* @return 文件访问路径(绝对的url)
* @throws BusinessException
*/
public String upload(byte[] bytes,String fileName) throws BusinessException;
}
在MerchantController定义upload负责接收前端上传证件的请求。
//上传证件照
@ApiOperation("上传证件照")
@PostMapping("/upload")
public String upload(@ApiParam(value = "证件照",required = true) @RequestParam("file") MultipartFile multipartFile) throws IOException {
String fileName = System.currentTimeMillis() + "";
String originalFilename = multipartFile.getOriginalFilename();
String ext = originalFilename.substring(originalFilename.indexOf("."));
try {
PutObjectRequest putObjectRequest = new PutObjectRequest(OosAC.BUCKET, fileName + ext, multipartFile.getInputStream());
oss.putObject(putObjectRequest);
} catch (IOException e) {
e.printStackTrace();
}
return OosAC.DOMAIN + "/" + fileName + ext;
}
3.3.1.2 接口实现
使用提供的阿里云工具类完成图片上传到阿里云
1、在huiminpay-common工程引入
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.1.0</version>
</dependency>
2、在nacos或者bootstrap.yml配置阿里云上传参数:
oss:
aliyun:
endpoint: oss-cn-beijing.aliyuncs.com
accessKeyId: LTAI********uyw6P5Yj #填写自己的keyId
accessKeySecret: j55Jo*******wgWPrazJ
bucket: huimin1
domain: https://huimin1.oss-cn-beijing.aliyuncs.com/
3、 配置OSS上传客户端:
package com.huiminpay.merchant.conf;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
@Configuration
public class Config {
@Value("${oss.aliyun.endpoint}")
private String endpoint;
@Value("${oss.aliyun.accessKeyId}")
private String accessKeyId;
@Value("${oss.aliyun.accessKeySecret}")
private String accessKeySecret;
/**
* 阿里云OSS
* @return
*/
@Bean
public OSS oss(){
return new OSSClientBuilder().build(endpoint,accessKeyId,accessKeySecret);
}
}
3、MerchantController
@Autowired
OSS oss;
@Value("${oss.aliyun.bucket}")
private String bucket;
@Value("${oss.aliyun.domain}")
private String domain;
//上传证件照
@ApiOperation("上传证件照")
@PostMapping("/upload")
public String upload(@ApiParam(value = "证件照",required = true)
@RequestParam("file") MultipartFile multipartFile)
throws BusinessException {
String fileName = System.currentTimeMillis() + ""; //文件名,当前系统时间戳
String originalFilename = multipartFile.getOriginalFilename(); // 上传文件原文件名
String ext = originalFilename.substring(originalFilename.indexOf(".")); // 截取获取扩展名
try {
PutObjectRequest putObjectRequest =
new PutObjectRequest(bucket, fileName + ext, multipartFile.getInputStream());
oss.putObject(putObjectRequest);
} catch (IOException e) {
e.printStackTrace();
throw new BusinessException(CommonErrorCode.E_100106);
}
return domain + fileName + ext;
}
3.3.1.3 接口测试
2、上传成功,可以在阿里云OSS控制台查看,也可以直接访问图片地址
标签:聚合,String,商户,oss,阿里,aliyun,支付,20,上传 From: https://blog.51cto.com/u_16228353/9040303