今日目标
✔ 支付功能。
支付-支付页面-基础布局
目的:配置路由和支付页面基础布局。
- 新建文件
src/views/member/pay/index.vue
。
1 | <script name="XtxPayPage" setup lang="ts"></script> |
src/router/index.ts
。
1 | { |
订单跳转页
本节目标:订单跳转并传递订单 id 参数。
页面跳转思考
router.push()
和router.replace()
的区别是什么?push 追加,后退能回到前页面
replace 替换,后退不能回到前页面
提交订单后跳转到 支付详情页,是通过
push
合适,还是用replace
更合适呢,为什么?-
replace
更合适,下单后商品信息已经没有了,后退回去无意义。
-
跳转时传递订单
id
1 | const submitCheckout = async () => { |
支付数据渲染
任务目标:
渲染真实支付数据
- 提供数据类型。
1 | export interface OrderPayInfo { |
- 发送请求获取支付数据。
1 | <script name="XtxPayPage" setup lang="ts"> |
- 渲染支付信息。
1 | <!-- 付款信息 --> |
倒计时渲染
- 开启倒计时。
1 | const showTime = ref(0) |
- 安装 dayjs。
1 | yarn add dayjs |
- 提供方法(注意:vue3 没有过滤器)。
1 | const formatTime = (time: number) => { |
- 渲染。
1 | <p> |
- 倒计时为 0,重新跳转到购物车页面。
1 | // 将初始值, 同步给showTime |
支付-支付流程
目的:知道小兔鲜支付流程。
总结:
PC 前台点击支付按钮,新开标签页打开后台提供的支付链接带上订单 ID 还有回跳地址。
后台服务发起支付,等待支付结果,修改订单状态,回跳 PC 前台结果页。
PC 前台在结果页获取回跳 URL 参数订单 ID 查询支付状态,展示支付结果。
1 | # 支付地址回调地址(可变) |
支付-等待支付
目的:支付打开新页,当前页打开提示框。
- 在
utils/request.ts
中导出基础路径。
1 | export const baseURL = 'https://apipc-xiaotuxian-front.itheima.net/' |
- 拼接支付链接。
1 | const redirectUrl = encodeURIComponent('http://www.corho.com:8080/#/pay/callback') |
- 增加跳转链接。
1 | <a class="btn alipay" :href="payUrl"></a> |
支付结果展示
任务目标:
对支付完的结果进行展示
实现步骤
准备一个基础页面。
根据地址订单 ID 查询订单状态进行展示,或者是地址栏支付结果。
代码落地
- 准备结果页面
src/views/pay/callback.vue
。
1 | <script setup lang="ts"> |
- 配置路由。
1 | { |
- 根据地址订单 ID 查询订单状态进行展示。
1 | <script setup lang="ts"> |