话费充值系统基于NodeJS+MongoDB 有微信支付、微信通知

【Node.js 微信公众号实战】4.Node.js 微信消息管理 文章目录:         1.Node.js 接入微信公众平台开发         2.Node.js access_token的获取、存储及更新         3.Node.js 自定义微信菜单         4.Node.js 微信消息管理 一、写在前面的话   当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请... 阅读详情

效果预览

  • 小程序端 (体验可以搜小程序: 丘宇海外助手)
  • 管理端

项目功能简介

✨项目主要对接第三方接口充值海外手机话费业务

✨ 基于 vue3+js+antd+nodejs+express.js+uniapp+mongodb 搭建

  • 管理端
  1. 基于角色权限管理
  2. 登录、首页统计信息
  3. 访客记录、操作记录、用户信息
  4. 订单管理(话费和流量)、充值日志管理、各国家套餐管理
  5. 广告管理、公告通知、客服内容配置
  6. 会员卡、优惠券管理和配置
  7. 下单、支付、黑名单、退款、协议、第三方API、小程序、公众号等配置
  8. 小程序页面自定义装饰配置
  9. 主题更换、全局搜索等等
  • 小程序端
  1. 用户无感登录
  2. 话费、流量充值
  3. 微信支付、订单退款、微信订阅通知
  4. 开通会员、领取优惠券
  5. 个人信息修改
  6. 订单信息查询等等

基于角色权限设计

项目中我采用的权限设计方案属于基于角色的访问控制(Role-Based Access Control,RBAC)。RBAC 是一种常见且广泛使用的权限管理模型,它通过将用户分配到不同的角色,然后将角色与特定的权限关联,来实现对系统资源的访问控制。

基于RBAC 模型的权限设计方案有四个部分:

  1. 角色(Roles) : 角色是一组用户,这些用户在系统中具有相似的权限需求。每个角色都会被分配一组权限,然后用户被分配到角色而不是直接分配权限。
  2. 权限(Permissions) : 权限定义了用户可以执行的操作或访问的资源。每个角色都会被授予一组权限,这些权限定义了该角色所能执行的操作。
  3. 用户(Users) : 用户是系统的最终操作者。每个用户都会被分配一个或多个角色(项目中没有使用多角色),这些角色决定了他们在系统中的权限。
  4. 前端路由匹配 : 前端根据用户的角色和权限信息,动态生成菜单和路由。这意味着当用户登录系统时,前端会根据用户的角色查询其对应的权限,然后根据权限配置来渲染出适当的菜单和页面。

在 RBAC 模型中,角色充当了用户和权限之间的中介,简化了权限管理和维护。

image.png
权限基本关系是:当用户登录后再查询出角色信息,然后关联出角色对应的权限信息

  • 前端权限设计

原理:根据权限表数据和路由元信息进行匹配,然后筛选出对应的菜单

  • 后端权限设计

原理:是对每个请求进行权限验证 每个请求前端都会携带token,基于这个信息来进行验证用户的权限

其中会经过两轮的验证:token验证 和 接口权限验证 以确保数据的安全性

详细可查看我的这篇文章 【项目总结】关于权限系统前后端的设计方案

微信支付 v3支付接口

使用的是全新的微信支付 APIv3,优点是 - 使用JSON作为数据交互的格式,不再使用XML

小程序支付逻辑全流程图解:
image.png

详细可查看我的这篇文章 Nodejs实现微信小程序支付功能前后端全流程实践 全新的微信支付 APIv3

其中最为复杂和容易出错的在 后端生成支付参数 这一步

后端生成支付参数

后端生成支付参数响应给前端小程序进行拉起支付

/**
 * 微信支付v3 付款签名生成支付参数
 * @param {string} prepay_id 预支付交易会话标识
 */
exports.createPaySign =async function (prepay_id) {
    let timeStamp = (Math.floor(new Date().getTime() / 1000)).toString();
    let nonceStr = generateNonceStr(32);
    const ac = await getThirdKeys()
    let signStr = `${ac.appid}\n${timeStamp}\n${nonceStr}\nprepay_id=${prepay_id}\n`;
    let cert = fs.readFileSync(`./pems/files/${ac.pem}`, "utf-8");
    let sign = crypto.createSign("RSA-SHA256");
    sign.update(signStr);
    return {
        paySign: sign.sign(cert, "base64"),
        timestamp: timeStamp,
        nonce_str: nonceStr,
        signType: 'RSA',
        package: 'prepay_id=' + prepay_id
    };
}

小程序拉起支付

// 从后端获取到支付参数(上面 createPaySign 生成的数据)
phoneWxRequest(that.form).then(res => {
 wx.requestPayment({
  provider: 'wxpay',
  timeStamp: res.timestamp,
  nonceStr: res.nonce_str,
  package: res.package,
  signType: res.signType,
  paySign: res.paySign,
  success(res) {
   uni.showModal({
    title: '提示',
    content: '支付成功!',
    showCancel: false,
    success: function(res) {
     if (res.confirm) {
      uni.switchTab({
       url: '/pages/index/index'
      })
     }
    }
   });
  },
  fail(err) {
   uni.switchTab({
    url: '/pages/index/index'
   })
   console.log('fail:' + JSON.stringify(err));
  }
 });
})

微信支付回调 (会多次调用)

微信支付通过支付通知接口将用户支付成功消息通知给商户(也就是在这里接收到支付是否成功 去修改订单状态)。
https://pay.weixin.qq.com/docs/merchant/apis/jsapi-payment/payment-notice.html

回调URL: 该链接是通过基础下单接口中的请求参数“notify_url”来设置的,要求必须为HTTPS地址。请确保回调URL是外部可正常访问的,且不能携带后缀参数,否则可能导致商户无法接收到微信的回调通知信息。回调URL示例:“https://qy.xxx.com/v1/payment/wx/success”

微信通知

微信通知交互类似于下图

image.png

  1. 前期准备:微信小程序后台开通微信通知服务并且配置模板,具体方法自行百度

  2. 代码实现:

  • 前端:
    拉起订阅消息板
 // 订阅消息
subscribe() {
 wx.requestSubscribeMessage({
 // 最多配置3个订阅模板
  tmplIds: ['33PJeEz4LvjGkHQHexIEd_T711rx1VEhqNicj620nGc',
   'lYYnUAbolXwHaL6IR3HhWPTiprgmKigGvuwC_cHn61E',
   's8yxlrkibXNKz54tRqzOf4EY02QMCkSHzZSwFXG52KY'
  ],
  success(res) {
   console.log(res)
  },
  fail(err) {
   console.log(err)
  }
 })
},
  • 后端:
    主动发送一次性模板通知消息

注意构建 data 的数据要和模板的数据类型一致,否则会发送失败

// 发送小程序订阅消息
async function sendSubscribeMsg(params) {
    let accessToken = await getWxAccessToken()
    let info = {
        "template_id": params.template_id,
        "touser": params.touser,
        "page": params.page,
        "data": params.data ,
        "miniprogram_state": params.miniprogram,
        "lang": "zh_CN",
    }
    return axios.post(`https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=${accessToken}`,info);
}

消息推送通知返回信息:

// 成功
{"errcode":0,"errmsg":"ok","msgid":3366503134080123000}
// 失败 用户拒绝通知
{"errcode":43101,"errmsg":"user refuse to accept the msg rid: 65ed8179-6b245d4c-493956ff"}

推送成功:

最后

该项目现已上线运营,可支持二开、作为各种管理系统,基础功能都已完成,开箱即用,需要完整源码或者项目合作的同学可联系我哦 😊😊

不明白之处或者觉得处理的不好的地方可以评论区留言,期待和各位大佬的交流😊

联系方式

  • QQ: 1840354092
  • 微信 (备注事由)
话费充值系统/话费直充/快充慢充系统/话费直充系统 立即下载

相关推荐

话费充值系统源码话费直充快充慢充系统源码.zip

话费充值系统/话费直充/快充慢充系统/话费直充系统

微信小程序后端学习笔记——配置篇(MongoDB)

下载版本不要过低要不然有些功能或者API无法使用,最好是5.0以上的版本。用于对MongoDB进行管理,同时用于编写后台管理系统。视频中13分24秒开始对MongoDB配置进行讲解。

qq_69891466的博客 317

nodejs微信扫码支付功能实现

本片文章通过代码示例给大家详细讲述了如何用nodejs写出微信扫码支付这个功能,有兴趣的朋友可以参考下。

基于Node.js的微信小程序运动减肥管理系统设计与实现

本文设计并实现了一个基于Node.js的微信小程序运动减肥管理系统,该系统结合菜谱美食和健康管理的理念,为用户提供个性化的减肥方案、运动建议以及营养菜谱,旨在帮助用户科学、有效地进行运动减肥。为了解决这一问题,本文设计了一个基于Node.js的微信小程序运动减肥管理系统,旨在为用户提供个性化的减肥方案、运动建议以及营养菜谱,帮助用户科学、有效地进行运动减肥。该系统结合菜谱美食和健康管理的理念,为用户提供个性化的减肥方案、运动建议以及营养菜谱,旨在帮助用户科学、有效地进行运动减肥。[此处列出参考的文献]

qq_53797749的博客 1614

基于nodejs实现微信支付功能

主要为大家详细介绍了基于nodejs实现微信支付功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

总结所有的池化(Pooling)方法

为什么池化? 池化(Pooling)层和卷积层、全连接层一样,都是卷积神经网络的组成部分。 卷积神经网络中的卷积层会将卷积Filter应用于输入图像,以便创建特征映射来总结输入中这些特征的存在。 卷积层被证明是非常有效的,在深层模型中叠加卷积层可以让接近输入的层学习低层特征(如线条),在模型中更深(高)的层用于学习高阶或者更抽象的特征,如形状或特定对象。 卷积层特征映射输入的一个局限性是它们只能精确记录特征在输入层的位置。这意味着在输入图像中特征位置的小幅移动将导致不同的特征映射。这可以随着重新裁剪

大脸猫的博客 1万+

Node.js毕业设计——基于nodejs+mongodb+微信小程序的在线书城设计与实现(毕业论文+程序源码)——在线书城

微书是一款基于微信小城序的在线书城,书城数据库使用mongodb存储,书城数据使用nodejs爬虫从网络上爬取,并使用loopback作为后端接口框架。功能上,微信实现以下5个模块,分别是我的书架、书城、个人心中、H5阅读器、登录注册。这些模块中又存在许多子模块,互相连接和配合,为用户提供便捷和舒适的阅读体验,让用户能更简单并且不付费的读到自己想读的书籍。除此之外微书还支持书评以及查看书籍排行榜,帮助用户从浩瀚的书海中找到自己喜欢的书。本论文将介绍所设计的微书,并对本系统进行数据分析和设计。

m0_66238867的博客 1949

【软件逆向】带壳带反调试找flag教程(VMProtect3.0+X64dbg+ScyllaHide)

【软件逆向】带壳带反调试找flag教程(VMProtect 3.0+X64dbg+ScyllaHide)

zhangjiuding的博客 7509

计算机毕业设计基于Node.js的戏曲演员购票微信小程序:传承与发扬中国传统文化的非遗实践

数据库方面,我们选用MongoDB作为存储后端,利用其灵活的数据结构和高效的查询性能,实现戏曲演出信息、用户信息、购票记录等数据的存储和查询。文章首先分析了戏曲演员购票的现状与需求,随后详细阐述了微信小程序的设计、实现过程及其技术特点,并探讨了该小程序在推动中国传统文化非遗传承方面的意义与价值。然而,这些方式存在购票流程繁琐、信息更新不及时、票务管理不规范等问题,不仅影响了戏曲演员的购票体验,也限制了戏曲艺术的推广与普及。因此,开发一款专为戏曲演员设计的购票微信小程序,具有重要的现实意义和应用价值。

qq_53797749的博客 1235

FAST-LIO2实战:从零搭建香港大学火星实验室SLAM框架(附官方数据集测试指南)

本文提供了一份详细的FAST-LIO2实战指南,帮助读者从零开始搭建香港大学火星实验室开源的这一高效激光惯性里程计框架。内容涵盖系统环境配置、依赖安装、源码编译、官方数据集测试以及参数调优,旨在让开发者快速上手并应用于机器人SLAM项目。

ppp33的博客 688

phaser3适配微信小游戏

phaser3适配微信小游戏

SilenzioX的博客 1803

node+mongodb+vue实现一个写寄语小程序

前言 近期利用十一的时候写了一个小程序,把node、mongodb、nginx、vue的知识点复习了一遍,从开发到上线流程梳理了一遍,下面是一些涉及到的易错步骤 1、如何使用multer实现文件上传及回显 2、node server如何实现登录生成token及接口校验token 3、mongoose操作数据 4、centos7 安装mongodb、pm2等 5、nginx http转https 6、nodejs服务获取微信用户openid 完整代码 前端 node服务端 预览 ...

chi1130的博客 297

ADS新手必看:用Filter DesignGuide快速搞定一个4GHz LC低通滤波器(附保姆级避坑指南)

本文为ADS新手提供了4GHz LC低通滤波器的完整设计流程,重点介绍了如何使用Filter DesignGuide避免参数设置陷阱、正确解读仿真结果以及解决实际电路与理论值的偏差问题。通过真实工程案例,详细讲解了工程创建、Filter DesignGuide配置、电路优化、仿真设置及实际工程中的进阶技巧,帮助工程师快速掌握LC滤波器设计。

weixin_30878501的博客 300

微信小程序+nodeJs+express+mongodb踩坑记录 1、后台搭建

一、创建项目 1、安装依赖文件 express service cd service npm install npm i multer mongoose express-jwt jsonwebtoken body-parser ali-oss co -S //multer 上传文件 mongoose 操控mongodb express-jwt token校验中间件 jsonwebtoken token 2、链接数据库 在入口文件 app.js中加入以下代码 const mongoose = requi.

weixin_40305713的博客 1067

从VASP数据到LAMMPS模拟:手把手教你用DeePMD-kit搭建Cr-Si-Fe合金势函数

本文详细介绍了使用DeePMD-kit从VASP数据构建Cr-Si-Fe合金深度势能模型的全流程,包括数据准备、模型训练、优化及LAMMPS集成。通过实战教程,帮助研究者掌握DeePMD-kit训练技巧,实现高精度分子动力学模拟,提升材料计算效率。

weixin_33737134的博客 521

制作一个完整的Shopify主题

Liquid是Shopify的模板语言,用于动态渲染页面内容。Liquid是Shopify的模板语言,用于动态渲染页面内容。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。

luckucu的博客 175

微信小程序(登录、分享、支付)

微信小程序(登录、分享、支付)

JackChan 2314

DeepSeek掘金——用DeepSeek模型构建AI 代理

在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。人工智能领域正在迅速发展,DeepSeek 的模型代表了智能 AI 代理开发的重大进步。在本综合指南中,我们将探讨如何利用 DeepSeek 的功能构建能够以有意义的方式理解、推理和交互的复杂 AI 代理。

3858

简易商城小程序全栈开发(mpvue+koa+mongodb)

前言 接触小程序有一段时间后并且多多少少做了一些项目之后,又开始了vue的旅程,受其核心思想的影响,对数据/状态管理、组件化、跨平台等都有较高的追求,mpvue 是一个使用 Vue.js开发小程序的前端框架,由此开始了mpvue踩坑之旅,想在提高代码可读性的同时,也增加一点vue.js的开发体验。 技术栈 前端: 微信小程序、mpvue 后端:koa 数据库:mongodb 数据库可视化工具:Ro...

weixin_33737774的博客 563

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

基于Node.js的运动记录分享微信小程序:健康减肥打卡系统的设计与实现

其次,系统需要支持用户记录运动数据,包括运动类型、运动时间、运动距离等,并允许用户上传运动成果照片或视频。通过需求分析、系统架构、功能模块、技术实现和性能优化等方面的探讨,展示了一个完整的运动记录分享微信小程序的构建过程。该系统以健康减肥打卡为例,具有记录运动数据、分享减肥成果、激励用户坚持减肥等特点,能够满足广大用户对健康生活的需求。此外,我们还对系统进行了定期的安全检查和漏洞修复,确保系统的安全性。同时,我们还对系统进行了定期的维护和升级,修复漏洞和优化功能,确保系统的持续稳定运行。

qq_53797749的博客 1418

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【源码更新】话费油卡水电小程序系统源码

当然由于小程序基础生活服务业务主要是微信自己掌控,第三方提供此类服务则需要提供业务合作关系如运营商合作协议,或增值电信经营许可证等,所以这款的软件还是有门槛,如我开头写的,没得证的购买上不了线不退款,打当然您也可以看看我们今天推的第四条消息,ICP和EDI代办业务,提前办证长期放心。此软件和我司话费v2界面风格类似,区别是话费v2是公众号H5,今天介绍的这一块是话费油卡小程序系统,由于公众号应用和小程序应用的体验还是有一定的区别,所以该软件的客群也是不一样的,最主要是适合自己才是最好的;...

湖南随心科技 2103

nodejs开发微信小程序支付

点击开始支付就调用微信登录接口,我这里由于是测试支付就直接拉起支付弹窗。wx.login({data: {order: {price: 1, //单位 分。只能是分description: "Image形象店-深圳腾大-QQ公仔"},title: '提示',content: '支付成功!',});},});})})

奇点的博客 1575

【亲测 | 018】京东话费直充系统源码 带教程

移动,联通,电信话费使用微信H5/支付宝H5移动话费/联通话费/电信话费额度支持1-任意额度(不得超过官网所支持的额度)系统实测每分钟订单量订单1500单左右,根据所使用的服务器配置不同有所偏差自动检测号码是否已经完成充值返回官方订单号凭证给供应商反馈充值状态有独立的商户后台和供应商后台可供供应商或商户查询订单以及官网订单号使用实时返回系统协议数据分布式模块式运行,整体系统运行更稳定.可进行慢充,可批量导入号码。

477

nodejs android 推送,Nodejs 微信小程序消息推送的实现

选择或创建订阅消息模板登录到微信小程序里面找到功能->订阅消息。可以在公共模板库里选择需要的模板,如果没有找到自己需要的也可以自己创建然后等待审核、选择完模板查看详情会得到模板ID,以及发送推送时需要的字段、小程序发送订阅的请求需要用到上一步获取的模板Id// 小程序入驻申请// 入驻申请消息订阅messageSubmit = () => {Taro.requestSubscribeM...

weixin_32404293的博客 611

91话费接口API优惠充值源码分享

话费充值接口文档接口版本:1.0。

weixin_47458273的博客 482

Nodejs实现微信小程序支付功能前后端实践 全新的微信支付 APIv3

自己实现一个带支付功能的小程序,前端使用uniapp,后端使用Node.js,将实现微信小程序支付功能的全流程详细记录下来。使用的是全新的微信支付 APIv3,优点是 -使用JSON作为数据交互的格式,不再使用XML。

html0010的博客 4471
上一篇: Nodejs实现微信小程序支付功能前后端实践 全新的微信支付 APIv3
下一篇: 中后台模板Vue3 + ElementPlus + JavaScript搭建尝鲜版
书中枫叶
博客等级 码龄7年 91粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值