目录

字段说明

前置工作

获取openid

微信支付

报错问题


uniapp 开发小程序需要实现微信支付功能,下面对相关业务进行说明。

字段说明

AppID:小程序的身份证,微信客户端用来确认你的小程序的身份

AppSecret:小程序秘钥

openid:一个用户对于一个小程序的标识(用户唯一标识),用来确认用户的唯一身份

UnionID:用户在微信开放平台帐号下的唯一标识(小程序绑定开放平台帐号才会有)

session_key:会话秘钥(如果微信API返回加密数据,解密就要用到session_key)

前置工作

要实现支付功能需要做一些前置工作,如果未完成则微信支付不可用

1,申请微信支付商户号

需要公司来申请,在微信商户平台中。

2,绑定已有商户号并开通微信支付

由小程序管理员开通,在微信公众平台中。

商户与小程序之间的关系

一个商户可以关联多个小程序,一个小程序也可以绑定多个商户。

对应日常开发,在多商户的情况,每一个商户号在后台都会进行配置,存入数据库,支付时根据当前不同的账户决定使用那一个商户号,这一块需要后台对每一个AppId和商户号做关联,支付时才能确认具体使用那个商户号。(这一块需要后台处理相关逻辑)

配置完成如图:

获取openid

小程序支付必须携带openid,一般openid可以后台获取返给前端,因为考虑安全必须要这么做,如果你需要前端获取openid,如下:

ps:实际上前台是不能获取openid的,一个是考虑安全性因素,还有就是小程序需要添加安全域名,而微信的接口不能放在安全域名中,如下:

当然如果只是前台调试,那么是没有问题的。

1,调用wx.login 接口,获取code

2,根据code,appid,appsecert获取openid

这里默认你已经申请了小程序appid,如果未申请,请看这里,已经申请可以登录微信公众平台查看自己的appid,appsecret,在公众平台,开发管理,开发设置中。

前台获取如下:

wx.login({success: res => {console.log(res.code,'code=====');const appid = 'wx5c*********c7ea0'; // 微信小程序appid const secret = 'a5fd***************ea80c6866dc0'; // 微信小程序secret //调用request请求api转换登录凭证 wx.request({url: 'https://api.weixin.qq.com/sns/jscode2session?appid='+appid+'&secret='+secret+'&grant_type=authorization_code&js_code=' + res.code,header: {'content-type': 'application/json'},success: function (result) {if(result.statusCode === 200) {console.log(result.data.openid,'openid=======');uni.setStorageSync('openid', result.data.openid);uni.setStorageSync('session_key', result.data.session_key);}}}) }
})

如果不清楚openid获取的业务逻辑,请看小程序登录。

如果对小程序支付的整体交互逻辑不清楚的,推荐查看小程序支付。

划重点:openid可由后台获取,前台只需要提供 wx.login 接口获取的 code 即可,剩下工作由后端完成,并在登录接口中返回 openid,前端存储 openid,以便后期使用。

附获取openid时前后台微信服务交互逻辑图:开发者服务器代表后端

微信支付

说明一点,小程序支付的 trade_type 为JSAPI,后端需要关注。

首先你应该调用业务侧接口,即后端接口,获取调用微信支付API所需参数。

调用后端接口这里不做说明,根据具体的业务场景情况不同,获取到支付参数后就可以调用微信小程序的 requestPayment API 调起微信支付,因为开发使用的 uniapp,可以使用 uni.requestPayment API,如下:

// saveReserve 为业务接口
saveReserve(params).then(data => {const { errno, errmsg, res } = data;// res为调起微信支付所需参数if(errno === '0') {// 调起微信支付uni.requestPayment({provider: 'wxpay', // 服务提提供商timeStamp: res.weChatPayData.timestamp, // 时间戳nonceStr: res.weChatPayData.noncestr, // 随机字符串package: res.weChatPayData.package,signType: res.weChatPayData.signtype, // 签名算法paySign: res.weChatPayData.sign, // 签名success: function (res) {console.log('支付成功',res);// 业务逻辑。。。},fail: function (err) {console.log('支付失败',err);}});        }}).catch(err => {console.log(err);})

相关支付API文档请看uniapp支付。

到此微信小程序支付功能完成。

报错问题

1,支付场景非法

--后台需要在创建预支付接口时将trade_type修改为JSAPI模式

2,支付验证签名失败

--需要后台检查生成签名时填写的appid是否正确,一个是小程序appid一个是应用的appid,确保没填错

3,调用支付JSAPI缺少参数:total_fee

--可能是参数有误,注意package参数格式为:"prepay_id=wx20161......"

uniapp小程序微信支付功能相关推荐

  1. 小程序微信支付功能开发

    关于小程序内唤起微信支付功能,不同人有不同的思路,有嵌套H5页面的,也有跳转第三方链接网站的,也有放收钱码等图片的. 今天讲一下微信原生的微信支付功能基础版块,支付页面和支付逻辑. 先上个效果图: 页 ...

  2. 小程序 php wecahtpay,【PHP】laravel 实现微信小程序微信支付功能

    准备工作 准备来laravel框架,下载好 overtrue/laravel-wechat 第三方插件composerrequireovertrue/wechat:~4.0-vvv PHP代码 调用支 ...

  3. 小程序微信支付功能逻辑

    官方的思维图在下看不懂,自己整理一份以备后用. 1.打开Pay付款页面 2.用订单号,查看订单信息前端展示. 3.点击付款按钮,提交订单ID到后台,创建微信预支付交易订单,用JSAPI下单 4.返回创 ...

  4. PHP完成微信小程序在线支付功能

    微信支付现在用到的地方越来越多,从公众号支付,扫码支付一直到现在的小程序支付等等六种快捷支付方式,公司要求开发小程序商城,就只能我上手处理接口支付问题了,使用最常规的第三方模式,第三方帮特约商户申请商 ...

  5. 调用支付jsapi缺少参数appid_服务商模式下的小程序微信支付

    最近,要做一个小程序商城的项目,需要在小程序中用到分账功能,也就是顾客购买商品支付的钱要给各个店铺,这就需要用到服务商模式. 在谈服务商模式下小程序微信支付之前,我们先要有一个服务商的商户号,这个商户 ...

  6. 小程序微信支付开发流程记录

    我所在公司需要开发一款商城小程序,里面需要用到微信支付,我负责里面的下单功能,从小程序端到后台的支付流程都是我自己开发的,由于我们组没有人有开发微信支付的经验,只有我有开发过JSAPI的微信支付的经验 ...

  7. 微信小程序收款手续费_小程序微信支付收款流程

    大家都知道,小程序具备微信支付功能,但是,很多商家还不知道具体的收款流程是什么?用户在小程序下单支付的款项究竟到了哪里?或者找第三方公司开发担心资金安全问题? 今天给大家详细的讲解一下: 在实现微信小 ...

  8. 微信小程序 微信支付代码实现流程

    微信小程序 微信支付是一个很简单的流程  微信开发文档 地址:wx.requestPayment(Object object) | 微信开放文档 微信公众平台申请支付功能 百度一大堆例举代码 官方文档 ...

  9. 微信小程序支付返回签名错误_java 微信小程序微信支付统一下订单及数字签名错误问题(后端)...

    今天来分享一下之前做微信小程序微信支付遇到的一些坑,博主这里是微信小程序支付功能,因此选择的微信支付方式是JSAPI支付方式(温馨提示左下角有音乐哦). 首先我们肯定是要在小程序后台绑定一个商户号的, ...

最新文章

  1. matlab平滑曲线_说说地震波的那些事儿(二)——地震影响曲线
  2. 用@.xxx.cn可实现短域名xxx.cn跳转
  3. Python学习笔记之基本数据结构方法
  4. python【蓝桥杯vip练习题库】PREV-52小数第n位(模拟)
  5. C#回顾 - 3.NET的IO:字节流
  6. 如何在电脑网页下载准考证
  7. 关于无线温度监测系统
  8. lammps自带命令create_atoms实现水分子建模
  9. python爬虫基本概述
  10. 光学系统建模之Light Tools安装关键点、教程指引
  11. 矩阵对角化(Diagonalizing a Matrix)
  12. 依赖背包dp NOIP2006 vijos 1313 金明的预算方案
  13. 2023.02.09 草图大师厨房效果图1skp素材效果图
  14. Flutter 开发中最实用的 Dart 语法知识
  15. js原生写图片轮播和切换
  16. 使用Vscode调试vue代码
  17. 使用Spring JPA中Page、Pageable接口和Sort类完成分页排序
  18. 语法解析及Antlr
  19. AWS攻略——Peering连接VPC
  20. 华硕z97不识别m2固态_华硕主板Z97-A无法识别intel M.2 NVME固态硬盘的解决方法

热门文章

  1. POJO、PO、BO、DTO、VO的含义以及应用场景
  2. wetool个人版_wetoo群发wetool与企业-购买
  3. 三屯河水库库容查询及进库流量计算程序
  4. 悉尼大学计算机科学本科学费多少,2020年悉尼大学开设了哪些IT专业?学费是多少?入学要求有哪些?...
  5. SS00026.algorithm——|ArithmeticMachine.v26|——|Machine:项目实战.v03|市场机会点|
  6. Python爬取Instagram数据Python将图片转化为文字
  7. python3小项目——爬取智联招聘信息(二)
  8. webapi json返回值null替换为空字符串
  9. python学习爬虫之删除无用字符以及空白替换等()
  10. 【转】91个排名:中国知名个人站长及发家史