【Node.js】实现微信小程序在线支付功能

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

实战项目名称:微信小程序实现在线支付功能
- 文章结尾附上微信小程序码,扫码登录后即可体验!!


一、实战步骤

1. 前期准备

注意:对接微信支付功能,必须得先有微信支付的商户号,不然你是测试不了微信支付功能的。

  • 原因:
  1. 微信官网不提供微信支付的测试账号
  2. 微信支付一切都以商户号为基础,没有商户号一切等于0

需要用到的资料和账号

  • AppID(小程序ID),AppSecret(小程序密钥)
  • 商户号(mchid)
  • 微信支付证书源文件,微信支付API证书序列号
  • 商户号APIv3秘钥,用于微信支付成功后回调

2. 添加wechatpay-node-v3和fs插件

  • 添加插件示例
// 添加插件示例
yarn add wechatpay-node-v3 fs
//或者
npm install wechatpay-node-v3 fs
  • 使用代码示例
// 使用插件示例
import WxPay from 'wechatpay-node-v3'
import fs from 'fs'  //读取

 async startPay(){
  const pay = new WxPay({
            appid: config.app.appid,      //换成你的小程序appid
            mchid: config.wxpay.mchid,    //换成商户号mchid
            publicKey: fs.readFileSync('./apiclient_cert.pem'), // 微信支付证书公钥
            privateKey: fs.readFileSync('./apiclient_key.pem'), // 微信支付证书秘钥
  });
 }

3. 预设微信下单的数据

注意: 微信支付成功的回调notify_url地址千万别写错,关于更多的回调通知,请点击访问该地址了解更多。

记得一定要检查APIv3秘钥有设定,不然就算你写一万行代码支付通知API也不起作用!!!

代码如下(示例):

const params = {
            description: name, // 订单描述
            out_trade_no: order_id, // 订单号,一般每次发起支付都要不一样,可使用随机数生成
            notify_url: 'https://cccccccc/notify_url', //支付成功后,微信会向该地址发起请求
            amount: {
                total: total, // 支付金额,单位为分
            },
            attach:`[{"amount":"${amount}"},{"remark":"${remark}" },{"product_id":"${product_id}"}]`,   //一些自定义的数据
            payer: {
                openid: openid, // 微信小程序用户的openid,一般需要前端发送过来
            },
            scene_info: {
                payer_client_ip: 'ip', // 支付者ip,这个不用写也没有问题
            },
        };

4. 将上一步骤的下单信息返回给前端

利用插件的transactions_jsapi方法进行处理

代码如下(示例):

 const result = await pay.transactions_jsapi(params);

5. 小程序前端接收数据 并发起支付

  • 订阅功能的实现在我的另一篇文章中,可以点击去看看如何实现,订阅消息通知。

代码如下(示例):

// this.message就是后端返回的数据,下面是示例的数据结构 

//{
//	appId: '******',
//    timeStamp: '******',
//    nonceStr: '******',
//    package: '******',
//    signType: 'RSA',
//    paySign: '******'
//}

wx.requestPayment({
					timeStamp: this.message.timeStamp,
					nonceStr: this.message.nonceStr,
					package: this.message.package,
					signType: this.message.signType,
					paySign: this.message.paySign,
					success(res) {
						uni.showToast({
							title: '支付成功'
						})
						that.close()
						// 支付成功后,可以添加一个订阅功能
						uni.requestSubscribeMessage({
							// 模板id:可以在微信公众平台 -> 功能 -> 订阅信息进行选择
							tmplIds: ['1FcVK9Vp86j7l8_mlLTepX4A6hwhRvW2uDDRr1tP5Io'],
							success: res => {
								console.log(res)
							},
							fail: e => {
								console.log(e)
							}
						})
					},
					fail(res) {
						uni.showToast({
							title: '支付失败',
							icon:'error'
						})
					}
				})

到了这一步,基本的微信支付功能就已经实现,下一期再讲解解密微信支付回调结果文章来源地址https://www.toymoban.com/news/detail-489010.html


二、完整源码

import fs from 'fs'
import WxPay from 'wechatpay-node-v3'

async startPay(_, { openid,name,total,amount,remark,product_id }) {
        const pay = new WxPay({
            appid: config.app.appid,
            mchid: config.wxpay.mchid,
            publicKey: fs.readFileSync('./apiclient_cert.pem'), // 公钥
            privateKey: fs.readFileSync('./apiclient_key.pem'), // 秘钥
        });
        // console.log(pay)

        // console.log(order_id)
        // let openid = 'xxxxx'; 可以自定义一个测试
        const params = {
            description: name, // 订单描述
            out_trade_no: order_id, // 订单号,一般每次发起支付都要不一样,可使用随机数生成
            notify_url: 'https://xxxxxxxx/notify_url',
            amount: {
                total: total, // 支付金额,单位为分
            },
            attach:`[{"amount":"${amount}"},{"remark":"${remark}" },{"product_id":"${product_id}"}]`,
            payer: {
                openid: openid, // 微信小程序用户的openid,一般需要前端发送过来
            },
            scene_info: {
                payer_client_ip: 'ip', // 支付者ip,这个不用写也没有问题
            },
        };
        // console.log(params)
        const result = await pay.transactions_jsapi(params);
        // console.log(result)
        //将数据返回给前端
      return result
    },


三、在线体验

  • 扫下方微信小程序码即可体验,支付后相关源码也是会正常发送到你留言的邮箱的。
    【Node.js】实现微信小程序在线支付功能

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

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

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

相关文章

  • Spring Boot 整合支付宝实现在线支付方案(沙箱环境)

    TIP:对于许多个人开发者而言,实现支付宝支付功能在以往往往意味着需要跨越复杂的商业流程。这涉及到拥有自己的网站及其备案,以及提交营业执照等一系列文档。但现在,支付宝开放平台带来了突破性的便利——通过沙箱环境,个人仅需拥有支付宝账号,就能够测试并

    2024年01月16日
    浏览(36)
  • 帝国CMS商城系统实现在线支付后发送订单邮件提醒功能

    本文实例讲述了帝国CMS商城系统实现在线支付后发送订单邮件提醒功能。分享给大家供大家参考,具体如下: 帝国CMS是个强大的内容管理系统,其商城的功能也很强大,当用户下单,支付后我们怎么知道有用户下单了呢?因为我们不能时时刻刻都在网站后台,不断的刷新页面去看

    2023年04月24日
    浏览(35)
  • 在线支付线上支付是什么?其应用范围

    百里支付 1途径  在线支付是一种通过第三方提供的与银行之间的支付接口进行支付的方式,这种方式的好处在于可以直接把资金从用户的银行卡中转账到网站帐户中,汇款马上到帐,不需要人工确认。与到银行转账[包括通过网上个人银行转账或者到银行柜台办理现金转账

    2024年02月11日
    浏览(27)
  • 银联在线支付、第三方快捷支付三种快捷支付模式有何区别?

    银联在线支付是中国银联联合各家商业银行共同打造的银行卡转接清算平台,涵盖四种支付方式:认证支付、快捷支付、储值卡支付和网银支付,无需开通网银; 代扣是用户通过线上或线下柜台方式签署“用户-授权商户-银行”的三方协议,在协议期内,授权商户可以直接从

    2024年02月11日
    浏览(34)
  • 在线支付安全-业务安全测试实操(35)

    目前网络在线消费和支付,已遍布人们生活的衣食住行等冬个方面,比如网上商城在线购物、水电燃气在线缴费、手机话费在线充值等。由于在线消费和支付过程中涉及真金白银,一旦存在漏洞,将会带来重大的经济损失。  某快餐连锁店官网订单金额篡改 篡改订单金额的流

    2024年02月13日
    浏览(24)
  • 高防CDN如何保护电商平台的在线支付系统安全

    高防CDN如何保护电商平台的在线支付系统安全?随着移动互联网的快速发展,越来越多的用户选择在手机上进行购物和支付。这种形式的便利性和灵活性推动了电商平台的发展,但同时也给电商平台的安全带来了新的挑战。尤其是在线支付系统,由于其涉及用户的金融信息,

    2024年02月07日
    浏览(35)
  • 小程序微信支付发起订单node.js版

    自己闲来无事想试试node.js如何写后端开发,就测试了一下这个微信支付功能,首先,我们想要实现微信支付要有appid,mchid商户号,这些提前需要准备的必要参数我就不多说了,看文档就可APP下单 - App支付 | 微信支付商户文档中心 (qq.com) 下面直接上代码 //我们前端通过调用

    2024年01月22日
    浏览(31)
  • 基于Node.js的校园盲盒微信小程序的设计与实现

    💗博主介绍:✌全网粉丝10W+,CSDN全栈领域优质创作者,博客之星、掘金/华为云/阿里云等平台优质作者。 👇🏻 精彩专栏 推荐订阅👇🏻 计算机毕业设计精品项目案例-200套 🌟 文末获取源码+数据库+文档 🌟 感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编

    2024年01月23日
    浏览(40)
  • 基于协同过滤算法的电影推荐系统(亮点:智能推荐、协同过滤算法、在线支付、视频观看)

    💗 博主介绍 :✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅 👇🏻 2023-2024年最值得选的微信小程序毕业设

    2024年02月08日
    浏览(50)
  • Node.js运动记录分享微信小程序:健康减肥打卡系统设计与实现

    本文介绍了基于Node.js的运动记录分享微信小程序,专注于健康减肥打卡功能。系统通过微信小程序平台帮助用户记录运动数据、分享成果,并通过打卡机制激励用户坚持健康减肥。从需求分析到系统设计、实现和关键技术,系统功能模块设计到技术实现与优化,系统安全性保障等方面进行了详细探讨。

    2024年02月20日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包