FPF   付鹏篚的笔记
  • 主页
  • 归档
  • 分类
  • 标签
  • 关于

付鹏篚

  • 主页
  • 归档
  • 分类
  • 标签
  • 关于
Quiet主题
  • Uniapp

微信小程序支付

付鹏篚
Uniapp

2024-04-18 20:00:00

文章目录
  1. 一、微信小程序支付
  2. 总结

image-20250228161900970

一、微信小程序支付

  1. 通过wx.login()获取code、调用后端接口获取openid;
wx.login({
  success (res) {
    if (res.code) {
      //发起网络请求获取openid,一般是访问后端封装好的接口,也可以通过访问微信官方接口获取
      uni.request({
         url: '后端接口地址,获取openid',
         method: 'GET',
         success(res) {
           //获取openid:用户真实唯一id进行保存
           console.log(res.data.openid)
        }
      })
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})
  1. 调用后端接口创建订单,获取orderId;
uni.request({
  url: '后端接口地址,获取订单id',
  method: 'POST',
  data: { 传入接口需要的参数,如商品金额,商品个数等 },
  success(res) {
    console.log(res.data.orderId)
  }
})
  1. 调用后端接口获取支付核心参数,预支付;
uni.request({
  url: '后端接口地址,获取支付核心数据',
  method: 'POST',
  data: { 传入接口需要的参数,如订单ID,openId等 },
  success(res) {
    console.log(res.data)
    //接口会返回以下核心参数
    //timeStamp 时间戳
    //nonceStr  随机字符串
    //package   统一下单接口返回的 prepay_id 参数值
    //signType  签名算法
    //paySign   签名
  }
})
  1. 通过支付核心参数调用wx.requestPayment()发起支付;
//调用微信官方支付接口弹出付款界面,输入密码扣款
wx.requestPayment({
   timeStamp,  //时间戳
   nonceStr,   //随机字符串
   package,    //prepay_id
   signType,   //签名算法MD5
   paySign,    //签名
   success (res) {
     if (res.errMsg == "requestPayment:ok"){
        console.log('支付成功', res)
     }else{
        console.log('支付失败')
     }
   },
   fail (res) { 
     console.log('支付失败', res)
   }
})

总结

  1. 登录:调用uni.login/wx.login调用微信接口,获取code,调用后端后台获取openid;

  2. 订单:调用后端接口获取订单ID,再调用后端接口传入openid、商品id、商品单价、商品数量等参数获取预支付的重要参数(时间戳timeStamp,随机字符串nonceStr,预支付id package,签名算法signType,签名paySign)

  3. 支付:调用uni/wx.requestPayment微信支付方法,传递5个重要参数,获取支付结果(成功或失败)

    可以参考 官网文档

上一篇

Vue集成腾讯地图API高效接入与交互实战指南

下一篇

pinyin-pro

©2025 By 付鹏篚. 主题:Quiet
Quiet主题