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

聚合支付项目-21

时间:2023-12-31 21:02:16浏览次数:35  
标签:聚合 21 资质 商户 token 支付 import com merchantId

3.4 资质申请

3.4.1 商户服务-资质申请(接口②)

3.4.1.1 接口定义

1、接口描述

1)接收资质申请信息,更新商户信息及审核状态(待审核)

2)返回结果

2、接口定义如下:

在 MerchantService中定义applyMerchant接口

/**
 * 资质申请接口
 * @param merchantId 商户id
 * @param merchantDTO 资质申请的信息
 * @throws BusinessException
 */
void applyMerchant(Long merchantId,MerchantDTO merchantDTO) throws BusinessException;
3.4.1.2 接口实现

实现MerchantServiceImpl 中的applyMerchant方法

/**
  * 资质申请接口
  * @param merchantId  商户id
  * @param merchantDTO 资质申请的信息
  * @throws BusinessException
  */
 @Override
 @Transactional
 public void applyMerchant(Long merchantId, MerchantDTO merchantDTO) throws BusinessException {
     if(merchantId == null || merchantDTO == null){
         throw new BusinessException(CommonErrorCode.E_300009);
     }
     //校验merchantId合法性,查询商户表,如果查询不到记录,认为非法
     Merchant merchant = merchantMapper.selectById(merchantId);
     if(merchant == null){
         throw new BusinessException(CommonErrorCode.E_200002);
     }
     //将dto转成entity
     Merchant entity = MerchantConvert.INSTANCE.dto2entity(merchantDTO);
     //将必要的参数设置到entity
     entity.setId(merchant.getId());
     entity.setMobile(merchant.getMobile());//因为资质申请的时候手机号不让改,还使用数据库中原来的手机号
     entity.setAuditStatus("1");//审核状态1-已申请待审核
     entity.setTenantId(merchant.getTenantId());
     //调用mapper更新商户表
     merchantMapper.updateById(entity);
 }

3.2.4 商户平台应用-资质申请(接口③)

3.2.4.1 接口定义

1、接口描述

1)商户登录惠民支付平台

2)商户上传证件,填写资质信息

3)请求商户平台应用进行资质申请

4)商户平台应用请求商户服务完成资质申请

5)返回结果

2、接口定义如下:

根据原型编写商户资质申请VO:MerchantDetailVO

package com.huiminpay.merchant.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;

/**
 * 资质申请信息
 * @author Administrator
 * @version 1.0
 **/
@ApiModel(value = "MerchantDetailVO", description = "商户资质申请信息")
@Data
public class MerchantDetailVO implements Serializable {

    @ApiModelProperty("企业名称")
    private String merchantName;

    @ApiModelProperty("企业编号")
    private String merchantNo;

    @ApiModelProperty("企业地址")
    private String merchantAddress;

    @ApiModelProperty("行业类型")
    private String merchantType;

    @ApiModelProperty("营业执照")
    private String businessLicensesImg;

    @ApiModelProperty("法人身份证正面")
    private String idCardFrontImg;

    @ApiModelProperty("法人身份证反面")
    private String idCardAfterImg;

    @ApiModelProperty("联系人")
    private String username;

    @ApiModelProperty("联系人地址")
    private String contactsAddress;

}

在MerchantController中定义saveMerchant

@ApiOperation("资质申请")
 @PostMapping("/my/merchants/save")
 @ApiImplicitParams({
     @ApiImplicitParam(name = "merchantInfo", value = "商户认证资料", required = true, dataType = "MerchantDetailVO", paramType = "body")
 })
 public void saveMerchant(@RequestBody  MerchantDetailVO merchantInfo){
 
 }
3.2.4.2 获取商户身份

1、商户登录临时方案

因前期未实现登录功能,故目前手动指定的商户ID生成Token(用户登录后的身份令牌),将Token配置在前端, 前端拥有了token则说明该商户Id对应的商户登录成功。

商户登录及身份解析流程如下:

1)前端携带token访问商户平台应用。

2)商户平台应用解析token取出商户id

2、生成token

拷贝“资料”-->"代码"下的 TokenTemp.java 到商户平台应用的test下。

代码如下:

package com.huiminpay.merchant.test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huiminpay.common.util.EncryptUtil;
import com.huiminpay.merchant.api.MerchantService;
import com.huiminpay.merchant.api.dto.MerchantDTO;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class TokenTemp {

    @Autowired
    MerchantService merchantService;

    //生成token,指定商户id
    @Test
    public void createTestToken() {
        Long merchantId = 1211232081483444226L;//填写用于测试的商户id
        MerchantDTO merchantDTO = merchantService.queryMerchantById(merchantId);
        JSONObject token = new JSONObject();
        token.put("mobile", merchantDTO.getMobile());
        token.put("user_name", merchantDTO.getUsername());
        token.put("merchantId", merchantId);

        String jwt_token = "Bearer " + EncryptUtil.encodeBase64(JSON.toJSONString(token).getBytes());
        System.out.println(jwt_token);
    }
}

向merchantId中设置商户id,运行此测试方法。(运行测试之前停止商户平台应用服务)

3、暂时使用工具类从请求中获取Token并解析

从“资料”--》“代码”文件夹拷贝“util(模拟token)”目录下的SecurityUtil及相关类到商户平台应用工程的util包下

3.2.4.3 资质申请实现

1)编写对象转换类

package com.huiminpay.merchant.convert;

import com.huiminpay.merchant.api.dto.MerchantDTO;
import com.huiminpay.merchant.vo.MerchantDetailVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;

/**
 * 将商户资质申请vo和dto进行转换
 * Created by Administrator.
 */
@Mapper
public interface MerchantDetailConvert {
    MerchantDetailConvert INSTANCE = Mappers.getMapper(MerchantDetailConvert.class);
    //将dto转成vo
    MerchantDetailVO dto2vo(MerchantDTO merchantDTO);
    //将vo转成dto
    MerchantDTO vo2dto(MerchantDetailVO merchantDetailVO);
}

2)编写MerchantController中的saveMerchant方法

前端携带Token请求此方法,在此方法中需要解析token获取当前商户的Id。

@ApiOperation("资质申请")
@PostMapping("/my/merchants/save")
@ApiImplicitParams({
    @ApiImplicitParam(name = "merchantInfo", value = "商户认证资料", required = true, dataType = "MerchantDetailVO", paramType = "body")
})
public void saveMerchant(@RequestBody MerchantDetailVO merchantInfo){
    //解析token,取出当前登录商户的id
    Long merchantId = SecurityUtil.getMerchantId();

    //Long merchantId,MerchantDTO merchantDTO
    MerchantDTO merchantDTO = MerchantDetailConvert.INSTANCE.vo2dto(merchantInfo);
    merchantService.applyMerchant(merchantId,merchantDTO);
}
3.2.4.4 接口测试

1、生成token

运行 createTestToken 测试方法生成临时token。

在Header中添加 :key:authorization value:token

例子如下 :

注意:token内容前边固定添加 “Bearer ” (后边一个空格 )

2、上传证件,获取证件标识

参考证件上传测试。

3、资质申请

请求数据:

{ 
 "merchantName": "学生餐厅", 
 "merchantNo": "1376438579462737921", 
 "merchantType": "餐饮", 
 "merchantAddress": "郑州梧桐创业大厦", 
 "contactsAddress": "郑州梧桐街", 
 "businessLicensesImg": "https://xwh0330.oss-cn-beijing.aliyuncs.com/1617086663126.jpg", 
 "idCardAfterImg": "https://xwh0330.oss-cn-beijing.aliyuncs.com/1617086663126.jpg", 
 "idCardFrontImg": "https://xwh0330.oss-cn-beijing.aliyuncs.com/1617086663126.jpg", 
 "username":"张先生" 
}

标签:聚合,21,资质,商户,token,支付,import,com,merchantId
From: https://blog.51cto.com/u_16228353/9050148

相关文章

  • 2023-2024 20231421《计算机基础与程序设计》第十四周学习总结
    作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14作业目标:自学《c语言程序设计》第十三章作业正文:教材学习内容总结《c语言程序设计》文件操作是C语言中常用的一种数据输入与输出方式,它可以实现数据的持久化存储和读取。文件操作涉及到以下几个方面:文件的概......
  • CF121E Lucky Array
    题意给定一个序列,维护下列操作。区间加区间查询数中只包含\(4,7\)数的个数。所有数前后不超过\(1e4\)。Sol块块版。\(1e4\),发现满足条件的数的个数只有\(30\)个。对于每个块开一个桶,记录每种数有多少个。查询时暴力枚举\(30\)个数,暴力判断即可。修改是平凡的......
  • 面试官:做过支付资产?那先聊聊热点账户吧
    背景当前形势不佳,在这种情况下。小猫更是雪上加霜,他被裁了。投了个把月简历,终于约到一个面试。面试官翻了一下简历:“看你简历上写了支付和账户相关项目,那能否聊一下热点账户问题你们是咋处理的吧”。小猫懵逼了一会,“额?什么是热点账户?我们好像模型里面就一个资产账户,然后充值的......
  • 3.《图解支付系统设计与实现》之业务ID生成规范
    这是《图解支付系统设计与实现》系统文章中的第(3)篇。本章主要讲清楚支付系统中为什么要有业务ID,各子域的业务ID为什么要统一规范,以及最佳实践。1.什么是业务ID数据库一般都会设计一个自增ID做为主键,同时还会设计一个能唯一标识一笔业务的ID,这就是所谓的业务ID(也称业务键)。比如收单......
  • 每日导数21
    伯努利不等式应用已知函数\(f(x)=(1+x)^m-mx-1,x>-1,m>0\)且\(m\neq1\)\((1)\)讨论\(f(x)\)单调性\((2)\)若\(\forallx\in\left(0,\dfrac{\pi}{2}\right)\cup\left(\dfrac{\pi}{2},\pi\right),a\sinx<(1+\cos^2x)^{\sinx}\)求\(a\)取值范围.\((3)......
  • 21.精准测试体系
    什么是精准测试 百度百科:精准测试是一套计算机测试辅助分析系统。精准测试的核心组件包含的软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统,这些功能完整的构成了精准测试技术体系。阿里......
  • 面试官:做过支付资产?那先聊聊热点账户吧
    背景当前形势不佳,在这种情况下。小猫更是雪上加霜,他被裁了。投了个把月简历,终于约到一个面试。面试官翻了一下简历:“看你简历上写了支付和账户相关项目,那能否聊一下热点账户问题你们是咋处理的吧”。小猫懵逼了一会,“额?什么是热点账户?我们好像模型里面就一个资产账户,然后充值的......
  • 《图解支付系统设计与实现》之基本概念与设计概要
    这是《图解支付系统设计与实现》系列文章的第一篇。本系列文章是偏实战的,本章内容讲清楚支付系统是什么,主要解决什么问题,部分核心流程,以及一些后面会频繁使用到的术语。至于支付起源,在线支付发展历程等知识,感兴趣的同学可以参考网络上其它文章或书籍。欢迎转载转发,转载请注明出处。......
  • 《图解支付系统设计与实现》之详解收单结算拒付
    这是《图解支付系统设计与实现》系统文章中的第(2)篇。本章主要讲清楚支付系统中收单结算涉及的基本概念,产品架构、系统架构,以及一些核心的流程和相关领域模型、状态机设计,并顺便讲讲和收单结算非常紧密的拒付。收单结算是支付系统最重要的子域之一,行业内经常把有牌照的支付平台称为......
  • 聚合支付项目-20
    3商户资质申请3.1需求分析3.1.1系统交互流程交互流程如下:前端上传证件照片,请求商户平台应用。商户平台应用请求阿里云上传图片。上传成功返回图片标识给前端。前端携带证件图片标识和资质申请信息提交到商户平台应用。请求商户服务保存资质申请。保存成功返回给前端。商户资......