个人网站微信支付 V免签部署

发布时间:2024年01月22日

背景

这不前段时间一直在开发个人的网站嘛,目的当然是为了赚点米补贴一下艰难的日子啦,然后去微信支付官网关了一圈,发现所有方式都需要备案或者公司营业许可证,这些东西我一个小小打工人怎么可能有嘛。

初步探索

好,既然官网没有。那我就自己去找找路子,必应、谷歌都搜索了一遍,发现它们的解决方案基本上都是再对接上一个第三方的支付平台,据它们说它们是和微信有合作的??然后它们还要收0.6%的手续费。。。。
想从我手上收钱?门都没有!然后就去github上找找有没有什么开源的项目可以解决。
苍天不负有心人,找到了一个1.4Kstar的项目,看了下项目介绍,貌似确实可以解决。但是这个项目是5年前的呀!作者已经很久没有维护了!!

开始尝试

这是一个php的项目,一共有2个端:web端和安卓端。在本地上进行测试,花了半天的时间安装环境、测试、对接自己项目的接口。
可是部署的时候,遇到难题了,网上的部署方式都是通过宝塔来进行的。一键配置mysql、nginx、php环境。可是我的服务器环境已经搭好了呀,用宝塔就会毁掉我现在的环境,然后重新搭建。
因此,踏上了自己安装php环境、配置nginx的路了。
问题就出现在nginx上,忘记什么问题了,死活配置不上。
因此,放弃了!想再找找有没有其他方式可以解决。

正题

废话不多说了,直接步入整体吧。php版本的放弃了,但是后面找到个java编写的!而且还是同一个作者!!
然后测试,发现微信支付是可以成功监听,但是支付宝的是无法监听成功的。(应该是后面支付宝修改了协议了)。后面又找到了其他其他大佬改写的,测试了一下!终于可以用了!!呜呜~~研究这个东西花了我2天时间。。。。(在此,感谢这两位大佬的开源项目)

开源项目

V免签web端。
V面前安卓端。

介绍

web端:主要是创建支付订单、显示个人收款码、配置个人数据等。
安卓端:监听手机收到的通知信息、回调指定接口。

流程图

在这里插入图片描述
我这边的做法是:用户输入金额后,提交——调用创建订单接口(携带上用户id),支付成功后,异步调用指定接口修改数据。同步调用用于跳转回首页。(项目无支付成功页面的)

进一步优化

因为项目使用的是H2数据库,是一款基于内存的数据库。(也支持持久化)
但是为了方便管理,我将它修改成MySQL数据库了。

具体做法

修改数据库配置

spring:
  datasource:
    password: ''
    url: ''
    username: ''

引入maven

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>

CREATE TABLE `tmp_price` (
  `price` varchar(255) NOT NULL,
  PRIMARY KEY (`price`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `setting` (
  `vkey` varchar(255) NOT NULL,
  `vvalue` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`vkey`) USING BTREE
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `pay_qrcode` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `pay_url` varchar(255) DEFAULT NULL,
  `price` double NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
CREATE TABLE `pay_order` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `close_date` bigint(20) NOT NULL,
  `create_date` bigint(20) NOT NULL,
  `is_auto` int(11) NOT NULL,
  `notify_url` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `order_id` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `param` varchar(30) CHARACTER SET utf8 DEFAULT NULL,
  `pay_date` bigint(20) NOT NULL,
  `pay_id` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `pay_url` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `price` double NOT NULL,
  `really_price` double NOT NULL,
  `return_url` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `state` int(11) NOT NULL,
  `type` int(11) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;

这里其实可以不用tmp_price表的,这张表的目的是为了区分不同的用户。(2个用户同时创建5元订单时,有一个人是5.01的)。但是我们可以在param中传入用户id。(需要另外修改V免签web端的项目代码)

最终效果

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_42323982/article/details/135734620
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。