首页 > 其他分享 >聚合支付项目-20

聚合支付项目-20

时间:2023-12-30 11:32:17浏览次数:29  
标签:聚合 String 商户 oss 阿里 aliyun 支付 20 上传

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


标签:聚合,String,商户,oss,阿里,aliyun,支付,20,上传
From: https://blog.51cto.com/u_16228353/9040303

相关文章

  • 来自泰山运维的2023年终总结
    2023就要过完了,大家都在写年终总结,我也盘点下自己:全年研发目标基本完成,个人也前进了一丢丢。在此,感谢所有帮助过我的朋友们。1、年初目标1.公司研发任务能够保质、保量的完成。2.提升mysql技能,从小白到白又白。3.全面掌握k8s。4.身体健康、多赚钱。2、部门研发任务回......
  • VictoriaMetrics的指标流聚合能力应用
    原文出自:https://blog.mickeyzzc.tech/posts/opentelemetry/stream-metrics-one/ 社区VM对指标流聚合能力分析与问题一、VictoriaMetrics开源项目的原生能力VictoriaMetrics项目中的流聚合能力是从1.86版本开始整合到vmagent的,具体可参考: https://github.com/VictoriaMetrics/Vic......
  • 每日导数20
    简单构造,考察眼睛x^2-a\lnx+(1-a)x+1$\((1)\)讨论函数的单调性\((2)\)当\(a=1\)时,证明:\(f(x)\leqx(e^x-1)+\dfrac{1}{2}x^2-2\lnx\)解\((1)\)\(f^{\prime}(x)=x-\dfrac{a}{x}+1-a=\dfrac{x^2+(1-a)x-a}{x}=\dfrac{(x-a)(x+1)}{x}=0\)得\(x_1=-1,x_2=a\)当\(a=......
  • 20231213-sdfz多校集训-DS
    非lxl的DS不会线性代数,只能来写DS了。20231226-没有逻辑,直接放例题。P1527矩阵乘法-整体二分P1527[国家集训队]矩阵乘法给你一个\(n\timesn\)的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第\(k\)小数。\(1\leqn\leq500\),\(1\leqq\leq6\times......
  • 2023-2024-1 20231414 《计算机基础与程序设计》第十四周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1-计算机基础与程序设计)这个作业的目标<写上具体方面>自学教......
  • 2023-12-30
    2023-12-30尝试了一下实现中间件,运行那块的函数是请教chatGPT[1]得到的,自己之前想的一团乱麻,结果如此简洁。//最小中间件实现//存储所有中间件letmiddlewares:middlewares[]=[]typehandel=typeofhandel//对于纯函数而言,参数就是他的上下文typemiddlewares......
  • 【专题】2023年中国消费者洞察白皮书报告PDF合集分享(附原数据表)
    全文链接:https://tecdat.cn/?p=33375原文出处:拓端数据部落公众号在疫情后的时代,中国的消费市场正在逐步复苏。政策和社会共同努力,全面提振消费者的信心。与此同时,供给侧正在采用新的内容营销模式,品牌、电商直播和信息平台注重科普专业知识,将品质和创新作为核心竞争力。居民消费......
  • 2023-2024元旦联欢会小记
    Day-2gg说放假,终于能确定回来了。Day-1开始摆烂,但是还是在学习淀粉质。怎么说看了付姐的朋友圈,看到大家在包饺子,又错过一个活动怎么说。gg说开茶话会。高一同学:茶话会?不,是鸿门宴。真的是晚会!唱了首《稻香》。感觉回到了高一在班里一起唱歌。晚会在情侣合体的时候达到了......
  • 【2023.12.29】修复服务器小记录,重装Proxmox
    半年没碰服务器了,没想到还是挂了,卡在BIOS过不去NUC因为没有主板电池,所以还特地找了下怎么重置,没想到是拔出主板上的黄色保护器,使两个针脚空接和我想象中的不太一样,照理来说应该是针脚对接,才能重置才对因为这样子的话,这个黄色保护套就不能随意丢弃了,感觉这个主板的设计有问题折......
  • 洛谷 P5311 [Ynoi2011] 成都七中
    洛谷传送门转化一下题意,变成求\(x\)在只经过编号\(\in[l,r]\)的点,能走到多少种颜色。考虑建出点分树。一个结论是原树上的一个连通块,一定存在一个点,使得它在点分树上的子树完全包含这个连通块的所有点。证明考虑点分治的过程,一个连通块如果没被其中一个点剖开就一定在同一......