小程序支付流程

  • 小程序支付流程

  • 点击结算

     

  •  

     payall(){     //点击结算事件
        if(this.data.totalnum==0){  // 如果 没有商品 return
          wx.showToast({
            icon:'none',
            title: '你还没有添加物品',
          })
          return
        }
        if(!this.data.address.userName){  // 如果没有收货人名子(即收货人的信息就行) 也返回
          wx.showToast({
            title: '你还没有选择地址',
            icon:'none',
          })
          return
        }
        wx.navigateTo({    // 只有满足以上两个页面才可以跳转 支付页面
          url: '/pages/pay/pay',
        })
      },

     

  • 点击支付

  •  

  • 
    async pay(){    //点击支付   请求接口是异步  要想同步化 可以用 async  await
        try{
          const token = wx.getStorageSync('token')   // 先获取本地 tooken 
          if(!token){  // 如果没有获取到
            wx.navigateTo({
              url: '/pages/auth/auth',  // 跳转授权页面 获取tooken
            })
            return
          }
          const order_price=this.data.totalPrice;
          const consignee_addr=this.data.address.all
          const cart = this.data.cart
          let goods =[]
          cart.forEach(x=>{
            goods.push({
              goods_id:x.goods_id,
              goods_number:x.num,
              goods_price:x.goods_price
    
            })
          }
          )
          const orderParams = { order_price, consignee_addr, goods };
          // 4 准备发送请求 创建订单 获取订单编号
          const { order_number } = await request({ url: "/my/orders/create", method: "POST", data: orderParams });
          // 5 发起 预支付接口
          const { pay } = await request({ url: "/my/orders/req_unifiedorder", method: "POST", data: { order_number } });
          // 6 发起微信支付 
          await requestPayment(pay);
          // 7 查询后台 订单状态
          const res = await request({ url: "/my/orders/chkOrder", method: "POST", data: { order_number } });
          await showToast({ title: "支付成功" });
          // 8 手动删除缓存中 已经支付了的商品
          let newCart=wx.getStorageSync("cart");
          newCart=newCart.filter(v=>!v.checked);
          wx.setStorageSync("cart", newCart);
            
          // 8 支付成功了 跳转到订单页面
          wx.navigateTo({
            url: '/pages/order/index'
          });
        }catch (err){
          await wx.showToast({
            title: '支付失败',
          })
          console.log(err);
        }
      },

 auth页面

  • auth.js 

import { request } from "../../request/index.js";  // 引入封装好的 request 
import { login } from "../../utils/asyncWx.js";  // 引入封装好的 login

Page({
  // 获取用户信息
  async handleGetUserInfo(e) {
    try {
      
    // 1 获取用户信息
    const { encryptedData, rawData, iv, signature } = e.detail;
    // 2 获取小程序登录成功后的code
    const { code } = await login();
    const loginParams={ encryptedData, rawData, iv, signature ,code};
    //  3 发送请求 获取用户的token
    const {token}=await request({url:"/users/wxlogin",data:loginParams,method:"post"});
    // 4 把token存入缓存中 同时跳转回上一个页面
    wx.setStorageSync("token", token);
    wx.navigateBack({
      delta: 1
    });
  
    } catch (error) {
      console.log(error);
    }
  }
})

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值