微信小程序接入微信支付流程

简介: 微信小程序接入微信支付流程

一、基本介绍

1、支付场景:点击支付按钮唤起微信支付弹窗,输入正确密码后完成支付。
2、基本流程:点击支付按钮首先生成一个订单,然后在后端调用微信api接口进行统一下单,将接口返回的数据回传到前端拉起支付操作,然后异步通知支付结果。

二、配置信息

1、微信公众平台配置

点击功能 – 微信支付,关联一下注册好的微信商户平台
在这里插入图片描述

1、微信商户平台配置

(1)设置证书和密钥
登录微信商户平台,点击账户中心 – API安全,设置证书和两个密钥(此处两个密钥设置为相同的。
在这里插入图片描述(2)申请JSAPI支付
①点击产品中心 – 我的产品 ,点击申请JSAPI支付。
在这里插入图片描述②填写支付授权目录
开发配置中需要填写支付授权目录(后端服务器域名)
在这里插入图片描述

三、编码实现

1、获取用户的openId

必须要有微信用户的openid才可以唤醒支付功能。openid由微信公众号提供,是对于消费者微信产生的唯一用户身份标识。
获取方法:https://blog.csdn.net/m0_46613429/article/details/125868514

2、获取prepay_id和支付签名验证paySign

商户在小程序中先调用接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易后调起支付。
(1)调用接口生成预支付订单拿到订单id

orderInsert(data).then(res => {
  if (res.data.code === 1) {
     this.getPayInfo(res.data.data.id)
   } else {
     wx.showToast({
       title: res.data.msg,
       icon: 'none'
     })
   }
})

(2)通过订单id调用接口获取用户支付所需参数

getPayInfo(id) {
  unifiedOrder({id}).then(res => {
        if(res.data.code === 1) {
            this.payMoney(res.data.data)
        } else {
      wx.showToast({
         title: res.data.msg,
         icon: "error"
       })
     }
  }
}

(3)通过wx.requestPayment方法调用起支付功能
在这里插入图片描述

payMoney(moneyData) {
    wx.requestPayment({
      timeStamp: moneyData.timeStamp,
      nonceStr: moneyData.nonceStr,
      package: moneyData.packageValue,
      signType: moneyData.signType,
      paySign: moneyData.paySign,
      success(res) {
        
      },
      fail(res) {
        wx.showToast({
          title: "支付失败!",
          icon: "error"
        })
      }
   })
}

四、流程总结

(1)小程序获取微信openId以及订单号传给后台
(2)后台根据openId和订单号进行签名post微信统一下单接口
(3)后台获取微信返回的xml字符串解析二次签名后返回给前端
(4)前端调起微信支付API

相关文章
|
SQL 数据库
达梦(DM) SQL数据及字符串操作
继续讲述DM数据库Sql操作
|
3月前
|
存储 人工智能 数据库
阿里云免费云服务器领取及使用详细攻略
阿里云为个人开发者、学生及小微企业提供免费云服务器等试用资源,涵盖ECS、OSS、数据库及AI服务。完成实名认证的新用户可限时领取,零成本上云建站、学习测试。规则明确,仅限首次使用同类产品,详情见免费试用专区。
993 6
|
3月前
|
弹性计算 人工智能 运维
阿里云轻量应用服务器2核4G价格:峰值200M带宽,50G ESSD云盘,9.9元1个月、199元1年
阿里云2026年推出2核4G、峰值带宽200M的轻量应用服务器,月付9.9元、年付199元,适合不同需求用户。该服务器预置OpenClaw等丰富镜像,支持快速部署AI对话机器人等应用。与云服务器ECS相比,轻量应用服务器具有快速交付、简化运维、成本优化等优势。此外,阿里云还提供99元/年、199元/年的长效特惠ECS,新老用户均可直接购买,且续费同价。用户可根据需求选择不同配置和价格的产品。
|
4月前
|
人工智能 程序员 BI
零基础从0到1学GEO优化第4课(上):构建所处载体(品牌)、行业的双知识库
双知识库 = 载体知识库(品牌)+ 行业知识库,是AI理解你、信任你的“素材池”。载体知识库需包含专业信息、服务内容、用户案例、反馈数据、权威背书(用E-E-A-T原则验证)。 行业知识库需包含行业资料、痛点需求、竞品案例、趋势动态(用结构化数据覆盖全貌)。落地关键:结构化呈现、数据化表达、动态更新,让AI轻松调用你的专业信息。
|
SQL 关系型数据库 MySQL
docker-compose部署mysql8
使用docker-compose容器化部署mysql8
1150 7
解决Flutter报错The named parameter |method ‘xxxx‘ isn‘t defined.
解决Flutter报错The named parameter |method ‘xxxx‘ isn‘t defined.
960 3
|
运维 监控 测试技术
自动化运维工具的设计与实现
【8月更文挑战第31天】在现代软件开发中,自动化运维是提高效率、减少错误的关键。本文将探讨如何设计并实现一个自动化运维工具,通过具体代码示例展示其构建过程。我们将从需求分析入手,逐步深入到工具的设计思路、核心功能实现以及最终的部署与测试。文章旨在为读者提供清晰的自动化运维工具开发指导和实践参考。
|
Java Maven Spring
Spring Boot中的自定义Starter开发
Spring Boot中的自定义Starter开发
|
JavaScript Java 测试技术
基于微信小程序的大学生社团活动管理的设计与实现(源码+lw+部署文档+讲解等)
基于微信小程序的大学生社团活动管理的设计与实现(源码+lw+部署文档+讲解等)
266 0
基于微信小程序的大学生社团活动管理的设计与实现(源码+lw+部署文档+讲解等)
|
JavaScript
vuex如何在actions中传递参数
在Vuex的`actions`中传递参数可以提高其灵活性和复用性。