支付宝网页支付交互流程 nest 版

自己整理了一份支付宝网页支付的交互流程 , 完全按交互流程响应步骤介绍的代码,效果图。因为平时主要用node开发,所以服务端用的node,框架是 nest。 用最精简的代码实现支付功能
1,流程图
为了让下面的交互流程更清楚点,做了一张,简单粗暴,通俗易懂的流程图
在这里插入图片描述
步骤说明:

流程1:商品下单

说明:这是交互流程最开始的发起点,由用户在浏览器界面最先发起,类似添加到购物车功能,点击添加到购物车后,此时商家系统后台根据商品id,生成一个唯一的交易单号比如:out_trande_no 需要注意的是:此时订单状态,还不是待支付状态

在这里插入图片描述
后端代码:

@Post("add")
  async add(@Body() body) {
   
    if(!body.goodId){
   
      throw new BadRequestException('goodId 不能为空');
    }
    
    try {
   
     const result =  await this.goodService.findById(parseInt(body.goodId));
     if(result && result.info && result.info.id){
   
       let orderInput = {
   
          createUserId        :body.user.id,
          createUserName      :body.user.loginName,
          goodId              :body.goodId,
          goodName            :result.info.name,
          amount              :result.info.sellPrice,
          outTradeNo          :moment().format("YYYYMMDDHHmmsss")+Math.floor(Math.random()*10)
       }
       let result = await this.getOrderService().add({
   orderInput})
       return {
   code: 1000, out_trade_no:orderInput.outTradeNo}
     }else{
   
      return {
   message:'创建订单出现错误', code:455};
     }
    } catch (error) {
   
      return {
   message:error.details, code:error.code};
    } 
}

流程2: 生成商品订单号并存入数据库

说明:入库的步骤,已经在流程1中的代码里了
let result = await this.getOrderService().add({orderInput});

流程3: 订单号返回给pc端

说明:流程1,代码返回的结果,即:out_trande_no

流程4: 触发订单号支付

效果图:
在这里插入图片描述
在这里插入图片描述

说明:此时用户界面点击支付宝结算按钮触发结算付款操作, 结算对象为上面流程的 out_trande_no 当前页面可以弹出支付提示

前端请求代码:


       //弹框确认,等待更新数据信息
         open() {
   
        this.$confirm('支付完成前,请不要关闭此支付验证窗口。', '支付提示', {
   
          confirmButtonText: '支付完成',
          cancelButtonText: '支付遇到问题',
          type: 'warning',
          center: true
        
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值