聚合支付项目-20
  DS5Q6Ie4ExGM 2023年12月30日 14 0

3 商户资质申请

3.1 需求分析

3.1.1 系统交互流程

交互流程如下:

  1. 前端上传证件照片,请求商户平台应用。
  2. 商户平台应用请求阿里云上传图片。
  3. 上传成功返回图片标识给前端。
  4. 前端携带证件图片标识和资质申请信息提交到商户平台应用。
  5. 请求商户服务保存资质申请。
  6. 保存成功返回给前端。

商户资质申请界面如下:

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控制台查看,也可以直接访问图片地址


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月30日 0

暂无评论

推荐阅读
DS5Q6Ie4ExGM
作者其他文章 更多

2023-11-02

2023-11-02

2023-11-02