springboot+vue前后端分离项目-项目搭建14-支付宝付款

1. 进入支付宝开放平台https://open.alipay.com/,选择网页应用开发,一路设置下一步创建完成,创建后生成、设置密钥,控制台可以看到创建的应用和沙箱环境

 

 

2. 使用natapp创建公网访问地址,详见:https://www.cnblogs.com/xiexieyc/p/18312638

3. 配置SDK,找到依赖,放到自己项目的pom.xml中,刷新maven下载依赖,不报红

 4. 配置支付宝接入的相关配置:

appId:支付宝开放平台沙箱环境里有

appPrivateKey:私钥,测试环境支付宝开放平台沙箱环境里有,正式环境用应用创建时生成的

alipayPublicKey:支付宝公钥,测试环境支付宝开放平台沙箱环境里有 ,正式环境用应用里生成的

notifyUrl:natapp生成的公网地址+alipay/notify(后台访问的路径)

 5. 项目启动时加载配置,配置放到支付宝sdk的Factory里,其中gatewayHost取得是沙箱环境 支付宝网关地址中的一段

 6. 创建AliPayController,一个是用于支付时生成支付页面,另一个是支付成功后接收支付宝的状态通知,使用上一步加载配置的支付宝sdk的Factory

Factory.Payment.Page()这个调用方法在官网sdk概述中有使用说明

 AliPayController里引用了一个dto,AlipayGoods,用于支付宝生成支付页面时提交商品信息

  AliPayController里引用了一个mapper,BookorderMapper,用于接收到付款成功的通知后更新数据库支付状态

7. 创建订单数据库表、实体类、订单Controller,订单页面(一开始订单名称都用order,报错sql语法错误,改成bookorder后解决,怀疑是order名称是关键字,总之不要用order命名)

<template>
  <div style="width: 100%; padding: 10px">
    <!--    搜索区-->
    <div style="margin: 10px 0">
      <el-input v-model="search" placeholder="请输入订单编号" style="width: 20%" clearable></el-input>
      <el-button type="primary" style="margin-left: 10px" @click="load">查询</el-button>
    </div>
    <el-table :data="tableData" border stripe>
      <el-table-column prop="id" label="ID"
                       sortable
      />
      <el-table-column prop="orderName" label="订单名称" />
      <el-table-column prop="orderNo" label="订单编号" />
      <el-table-column prop="totalAmount" label="订单总价" />
      <el-table-column prop="payAmount" label="实付款" />
      <el-table-column prop="youhui" label="优惠" />
      <el-table-column prop="yunfei" label="运费" />
      <el-table-column prop="createTime" label="创建时间" />
      <el-table-column prop="payTime" label="付款时间" />
      <el-table-column prop="buyer" label="购买人" />
      <el-table-column prop="state" label="支付状态" />
      <div class="demo-image__preview">
      </div>
      <el-table-column fixed="right" label="操作" min-width="120">
        <template #default="scope">
          <el-popconfirm title="确认删除吗?" @confirm="handleDelete(scope.row.id)">
            <template #reference>
              <el-button link type="primary" size="small">删除</el-button>
            </template>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>
    <div style="margin: 10px 0">
      <el-pagination
          v-model:current-page="currentPage"
          v-model:page-size="pageSize"
          :page-sizes="[10, 20, 50, 100]"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
      />
    </div>
  </div>
</template>

<script>
import request from "@/utils/request";

export default {
  name: 'Order',
  components: {

  },
  data() {
    return {
      search: '',
      currentPage: 1,
      pageSize: 10,
      total: 0,
      tableData: []
    }
  },
  created() {
    console.log("==================11111111")
    this.load()
  },
  methods: {
    load() {
      console.log("==================222222222")
      request.get("/bookorder", {
        params:{
          pageNum: this.currentPage,
          pageSize: this.pageSize,
          search: this.search
        }
      }).then(res=>{
        console.log(res)
        this.tableData = res.data.records
        this.total = res.data.total
      })
    },
    handleDelete(id) {
      request.delete("/bookorder/" + id).then(res => {
        if(res.code === '0'){
          this.$message({
            type: "success",
            message: "删除成功"
          })
        }else {
          this.$message({
            type: "error",
            message: "res.msg"
          })
        }
        this.load()      //删除后刷新表格数据
      })
    },
    handleSizeChange() {     //改变当前每页个数触发
      this.load()
    },
    handleCurrentChange() {  //改变当前页码触发
      this.load()
    }
  }
}

</script>

 Book.vue里增加购买按钮

 8.购买后请求BookorderController,存储订单,生成支付页面的请求url返回,再新开页面访问url,支付后接收支付成功的通知

 9.测试,先下载沙箱版app,登录账号密码在沙箱应用里,

 点击购买

 新弹出扫描支付页面

 用沙箱版app扫码付款后显示成功

 页面查看订单状态已经更新

 10. 优化支付状态显示

 

posted @ 2024-07-21 08:40  少年阿川  阅读(359)  评论(0)    收藏  举报