使用云开发环境的云函数实现微信小程序的支付功能

这篇具有很好参考价值的文章主要介绍了使用云开发环境的云函数实现微信小程序的支付功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景:近期在开发一个商城类的微信小程序,因为本人只会使用 C 语言对 nodejs 环境不熟悉,因此在开发微信小程序时选用容易上手的云开发环境开发微信小程序。我想选用云开发环境的小伙伴和我的想法一致,对微信小程序开发相关知识了解很少。我的小程序的主体是个体工商户。

我的小程序在上线后,我才新增支付功能的。

实现微信支付的唯一核心接口:wx.requestPayment  (这个函数的直观表现是在小程序中点击立即购买按钮后在页面中弹出输入支付密码的弹出框)

wx.requestPayment({
  timeStamp: '',
  nonceStr: '',
  package: '',
  signType: 'MD5',
  paySign: '',
  success (res) { },
  fail (res) { }
})

可见:要能成功使用 wx.requestPayment,需要我们有五个参数( timeStamp, nonceStr,package,signType,,paySign)才能正常发起支付。 那我们要在哪里才能获取到这些参数呢?

十分有必要读的文章:

 云函数实现微信支付:微信小程序如何实现支付功能?看官方文档头疼(使用云函数的方式操作)_微信小程序支付-CSDN博客

总述:经过两天的实践,我了解到在云开发环境中获取(生成)到这些参数的方式有 3 种:

1、使用微信官方提供的 cloud.cloudPay.unifiedOrder (统一下单)函数生成支付必需的5个参数,文档:开发者资源 / SDK 文档 / 微信支付 / 统一下单 (qq.com)

2、使用 'wechatpay-node-v3' 开源库的 transactions_jsapi 函数生成支付必需的5个参数;地址:GitHub - littleApeStudio/ape-node-wechatpay-v3: 微信支付node版本的SDK

3、使用 'tenpay' 开源库的 getPayParams 函数生成支付必需的5个参数;地址:GitHub - befinal/node-tenpay: 微信支付 for nodejs

上面的 3 种方式,方式1 最简单直接在云开发环境种复制官方的示例代码即可完成支付能力。

方式 2 和方式 3 是需要引入引入三方依赖,安装依赖是使用npm 而npm必须安装node,关于如何安装node。所以比较麻烦一点。

最开始我当然选用的是方式1。 方式1 详细教程:7~云开发实现微信支付_哔哩哔哩_bilibili  

但是遇到了无法解决的问题。使用方式 1 需要在微信开发者工具中进行绑定和授权。操作时错误如下。

问题1:微信小程序 + 云开发工具中授权商户的时候 报错,Error: Base resp abnormal, 268500896 和 Error: Base resp abnormal,268435483 

小程序云函数支付,微信小程序开发,微信小程序,小程序

原因:总之就是绑定不了,就是此路不通。具体如下图。就是命中新规了。无法使用,你这个情况得自己调用原接口。

小程序云函数支付,微信小程序开发,微信小程序,小程序

该问题的解决方案就是 方式 2 和方式 3。

方式2 的详细教程:关于使用nodejs搭建微信小程序支付接口_nodejs 支付服务器-CSDN博客

方式3 的详细教程:小程序云开发实现微信支付完整代码_node-tenpay-CSDN博客

注意:1、tenpay 库中的 partnerKey (微信支付安全密钥或服务商密钥)指的是商户号的 APIv2 的密钥。

2、wechatpay-node-v3 的两个证书在商户号中进行申请。小程序云函数支付,微信小程序开发,微信小程序,小程序

最终我采用的是方式3 使用 tenpay 库,但是也不顺利。遇到的问题卡了 5 个小时。问题如下:

问题2:mch_id 格式错误问题。

排查方法:打印 pay 云函数中传的每一个变量参数,特别注意的是云函数的打印信息是在云开发控制台中的 log 中查看的。最终该问题莫名消失出现了问题3;

问题3:“签名错误,请检查后再试”。---有效的解决办法重新设置了 APIv2 密钥。

解决办法:前期花费大量时间在一遍又一遍的打印 pay 云函数中的参数然后刷新在云开发控制台中产查看,查看了很多类似问题,但不是在云开发环境产生的,浪费了时间,做了很多无效的工作。情绪很是低落,第二天在微信社区中搜索关键字:tenpay+签名失败 找到了相同的提问微信小程序云开发,使用云函数,tenpay微信支付签名失败,请问是什么情况? | 微信开放社区 (qq.com)。

特别注意:云函数变动后必须上传并部署。

重置了 APIv2 的密钥(在没成功前我还是没有搞清楚 partnerKey (微信支付安全密钥或服务商密钥)指的是 APIv2 还是 APIv3 的密钥)。通过对比该问题:用云开发tenpay的时候出现“签名错误”的问题? | 微信开放社区 (qq.com)

数了下图中的 partnerKey 的位数,重置了 APIv2 的密钥。成功支付。

小程序云函数支付,微信小程序开发,微信小程序,小程序

最终成功调用支付的效果图:

注意在微信小程序开发工具中调起支付的界面如下:

小程序云函数支付,微信小程序开发,微信小程序,小程序

注意在真实手机的小程序中进行支付的效果图如下:

小程序云函数支付,微信小程序开发,微信小程序,小程序

待补充:

1、提现(企业付款到微信零钱的功能)和充值功能。

在提现时遇到 NO_AUTH 错误,经检查是未开通企业付款到微信零钱的功能。经检查

小程序云函数支付,微信小程序开发,微信小程序,小程序

                                                                                                                                       2024/3/28 晚

------------------------------------------------------------分隔线--------------------------------------------------------------

必用的网站:

1、微信支付 - 中国领先的第三方支付平台 | 微信支付提供安全快捷的支付方式 (qq.com)

有价值的文档:

1、云函数的认识和理解:小程序云开发也能优雅实现微信支付 | 微信开放社区 (qq.com)文章来源地址https://www.toymoban.com/news/detail-856642.html

到了这里,关于使用云开发环境的云函数实现微信小程序的支付功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [微信小程序] 认识微信小程序及开发环境搭建

      微信公众平台首页 https://mp.weixin.qq.com   微信公众平台测试帐号系统 https://open.weixin.qq.com/connect/qrconnect?appid=wx39c379788eb1286ascope=snsapi_loginredirect_uri=http%3A%2F%2Fmp.weixin.qq.com%2Fdebug%2Fcgi-bin%2Fsandbox%3Ft%3Dsandbox%2Flogin   1、微信公众平台提供的帐号模式   2、各类型帐号的应用场景 餐厅

    2024年02月08日
    浏览(38)
  • 基于微信小程序的云上考场系统小程序

    1 绪论 1 1.1 研究背景 1 1.2 设计原则 1 1.3 论文组织结构 2 2 关键技术简介 3 2.1 微信小程序 3 2.2微信Web开发者工具 3 2.3微信小程序API接口 3 2.4 WXML 、WXS、JS小程序编写语言 4 2.5 MYSQL数据库 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 经济可行性 5 3.1.3操作可行性 5 3.1.4法

    2024年01月24日
    浏览(31)
  • springboot使用 WxJava 实现 微信小程序(uniapp开发)的登陆功能

    前端使用uniapp来开发微信小程序 后端springboot中使用WxJava来做服务端( WxJava是微信服务端开发 的Java SDK ) 该图来源于微信小程序官方文档 根据uniapp的官网直接通过它提供的第三方 登陆api直接使用,代码如下 直接根据WxJava的官方demo (1) yml配置 (2)两个配置文件 (3)contro

    2024年02月15日
    浏览(35)
  • 微信小程序区分开发环境、测试环境和正式环境

    问题: 本地存储和获取当前用户的userCode,但是测试和线上版本的本地存储是互通的,调用的域名不互通,测试环境和线上环境数据不一样,所以会报错线上查询不到当前用户或者测试版本查询不到没有当前用户。 解决方法: 微信提供了wx.getAccountInfoSync()这样一个API。Objec

    2024年02月11日
    浏览(41)
  • 微信小程序使用uni-app开发小程序及部分功能实现详解心得

    目录 一、uni-app 1、简介 2、开发工具 3、新建 uni-app项目 4、把项目运行到微信开发者工具 二、实现tabBar效果 1、创建tabBar页面 2、配置tabBar 1、创建分包目录 2、在 pages.json 文件中配置 3、创建分包页面 四、公用方法封装 五、搜索功能 1、搜索组件 2、搜索建议实现 3、本地存储

    2024年02月11日
    浏览(45)
  • 微信小程序 连接云数据库(不使用云函数)进行 登录、注册、查询(包括模糊查询)快速实现 亲测可用

    当连接MySQL的时候总是出现各种各样的小问题,可以选用微信小程序自带的云数据库 注:测试号不能建立云数据库 按图中步骤来 第4步中,有两种添加方式 第一种 第二种 注意: 如果你是粘贴复制的,他会报错 非数字字符\\\"无法使用外部字符串表示法位于第1行 。这时,在第

    2023年04月20日
    浏览(46)
  • 微信小程序获取环境变量,对生产、测试、开发环境做区分

    前不久偶然发现微信里有一个变量叫做  __wxConfig ,解决了这个问题,但是微信真的坑,你甚至在官方搜不到这个变量 = =,今天和大家分享一下 经过测试得到 envVersion 的具体键值有: develop(开发版)trial(体验版)release(正式版)   获取开发状态,判断获取请求url

    2024年02月12日
    浏览(25)
  • 微信小程序共享云开发环境的代码配置

    小程序2022年进行了云开发付费调整,以前一个小程序对应一个云开发环境的奢侈用法不再适合普通开发者,微信小程序提供了云开发共享功能,方便在不同的小程序中共用一个付费环境。 笔者更新时间:2023-05-05,文内API随时可能变动,请以链接对应的小程序官方文档为准

    2024年02月09日
    浏览(36)
  • 微信小程序网悦新闻开发--云函数以及云数据开发(七),详细学习指南

    微信小程序网悦新闻开发–我的模块开发(五) 微信小程序网悦新闻开发–自定义组件开发(六) 微信小程序网悦新闻开发–云函数以及云数据开发(七) 云函数 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。 小

    2024年04月25日
    浏览(30)
  • 《微信小程序》在wxml中使用函数

    在wxml中使用函数有两种方法 方法一:在wxml中直接添加模块,就可以在wxml中直接引用,举个例子 方法二:新建wxs文件,在文件中写入函数,举个例子

    2024年02月16日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包