nodeJS版个人支付免签系统 技术栈 Koa2 + Vue + Mysql + Redis
-
解决支付宝二维码生成次数限制,无需手动上传二维码,实时回调收款通知,并且支持h5唤醒支付;
-
提供完整的服务端源代码,并提供详细Api文档和代码注释,已更新视频教程;
-
后台代码开源,你可以随时下载服务端最新的代码!
-
已经购买客户端的可以直接使用Api版;
此项目主要用来解决没有营业执照,想使用微信和支付宝收款的个人开发者,此项目综合了订单系统,和商品系统,如果你仅需要接入订单支付请使用Api版,支持回调通知;
特点:支付回调通知,0手续费实时到账(不经过任何第三方,直接到账微信/支付宝余额),全部服务端源代码,支持php/java/python等语言直接接入(请使用Api版本傻瓜式接入),监听方式非xp框架HOOK的方式,独立App监听安全无风险,无需root权限;
实现原理: 当收到支付宝、微信、实时收款信息,客户端会实时通知服务器收款金额和方式,服务器收到有效期订单金额后处理订单状态,使用随机减免的方式区分订单(5分钟订单有效期内有相同金额的订单会随机减免0.01 - 0.10的方式用来区分订单);
后台Demo地址: http://pay.yio.me 账号密码 admin
支付Demo地址: http://pay.yio.me/#/goods/DwnNGCW4VLk1CjemIiUqf
客户端地址: http://pay.yio.me/#/goods/74ct1zBzZBW8YGFBKe-Yf
此项目和Api版的区别
(此项目)
1.传统上传固定收款金额二维码;
2.有商品和处理订单的能力;
3.动手能力不强的谨慎使用此版本,强烈推荐使用API版;
(Api版)
1.只保留订单的创建、支付通知、订单列表、功能;
2.支付宝无需上传二维码,支持h5唤醒支付;
如果你需要了解客户端推送内容或想自己接收处理客户端推送的内容,客户端收款推送的逻辑在/api/addons/pay.js文件里;
接收客户端通知需要两个步骤
1):验证客户端
请求地址: http(s)://你的服务器地址/addons/pay/api/setting
请求方式: get
请求参数:
sign // 客户端加密后的密匙 加密方式 md5(md5(apiurl) + secretkey));
apiurl // 客户端填写的Api地址 务必填写 http(s)://你的服务器地址/addons/pay/ 必须"/"结尾;
服务端处理参数:
secretkey 是服务端配置的加密secretkey,需要和客户端填写的secretkey一致;
判断逻辑如下
if (sign == md5(md5(apiurl) + secretkey)) // 当客户端加密的sign 和服务器加密的 sign一直则通过,加密方式 md5(md5(apiurl) + secretkey)
响应值
{
code: 1, // 1成功 0 失败
msg: '配置成功!', // 提示信息
data: '', // 默认
url: '', // 默认
wait: 3 // 默认
}
2):当客户端配置成功后,监听到收款信息就会向服务端推送信息,如下;
请求地址: http(s)://你的服务器地址/addons/pay/api/notify
请求方式: get
请求参数:
sign // 客户端加密后的密匙 加密方式 md5(md5(price + type) + secretkey));
price // 支付宝/微信收款到账金额;
type // wechat 或者 alipay 对应微信和支付宝
服务端处理参数:
secretkey 是服务端配置的加密secretkey,客户端填写的secretkey需要和服务端的secretkey一致,一致即配置成功;
if (sign == md5(md5(price + type) + secretkey)) // 后面就可以处理你的订单状态了
响应值
{
code: 1, // 1成功 0 失败
msg: '收款处理成功!', // 提示信息
data: '', // 默认
url: '', // 默认
wait: 3 // 默认
}
参考:/api/addons/pay.js
!!! 依赖nodeJS(必须) + mysql(必须) + redis 环境 (Api版本没有限制下单频率非必须Redis)
1.下载全部源码;
2.修改 /com目录中 config.js 和 email.js 文件;
3.在项目根目录中运行 npm install 安装依赖;
4.解压前端源代码压缩包(vue.js开发),修改 src/main.js 里面的 Vue.prototype.$staticUrl = ‘七牛云加速域名’ ,就是你对象存储的空间绑定的域名;
5.打开前端源代码根目录执行 npm install 安装依赖 然后执行 npm run build 打包后的文件在dist目录,将dist目录所有文件放入www文件目录;
6.在根目录中使用管理员权限运行 node app.js 默认端口80,没有错误信息,访问服务器地址即可访问,如果80端口被占用,请开启其他端口或使用Nginx转发;
7.监听运行建议使用 pm2 ;
1.添加商品
注意,这里的价格设置的是一元
2.上传收款二维码
为了避免同一金额在同一时间被支付,使用随机立减的方式在5分钟内,不会重复生成订单,在商品的金额上随机下调不超过0.10元;
那么一个1元的商品需要上传 1.00、0.99、0.98 ... 0.92 、0.91 十个微信+支付宝收款二维码;
3.商品的地址统一是
http://你的服务器地址/#/goods/DwnNGCW4VLk1CjemIiUqf
"DwnNGCW4VLk1CjemIiUqf"是商品nanoid
4.客户端配置说明
api 地址填写: http(s)://你的服务器地址/addons/pay/ 注意:必须以反斜杠结尾
签名密匙填写: config.js里的 secretkey 值
点击保存提示配置成功即可,没有其他设置!
5.请把支付宝/微信/收款客户端加入手机清理白名单,并保持网络畅通;
6.请开启微信/支付宝收款通知
开启方式
微信->钱包->二维码收款->开启收款到账语音提醒
注:(如果微信在PC登录了,请在手机微信中关闭手机静音,或退出PC微信)
支付宝->收钱->开启收款到账语音提醒
7.全部代码是开源的,客户端需要赞助使用;
8.如遇问题联系a@yio.me我会在第一时间回复;
#疑问
问:资金多久到账?
答: 实时到账,直接到账微信/支付宝余额,不经过任何第三方;
问:会掉单吗?
答: 保持客户端和服务端网络畅通99.99%不会掉单!
问:这个服务端是什么意思,客户端是什么意思?
答: 服务端源码是用来接收客户端推送收款信息,客户端是监听支付宝和微信的收款信息并实时推送到服务器;
问: 微信公众号可以使用吗?
答: 可以
最后:
客户端需赞助地址
http://pay.yio.me/#/goods/74ct1zBzZBW8YGFBKe-Yf