结冰的离季
本帖最后由 结冰的离季 于 2023-2-15 21:49 编辑

SakuraPurchase

简介

这不是一个支付平台, 而是由你自己来运营支付服务端, 你需要有营业z书并到wechat\支付宝申请接口。

本项目基于 SpringBoot 提供wechat、支付宝二维码付款方式的 RESTful 集成 API

本项目为练手项目,可能存在一些问题,但不意味我放弃了这个项目,我会一直维护的

项目处于早期阶段,目前只实现了bukkit端的二维码支付

特点

  • 简易后台管理、统计界面
  • 通过knif4j提供好看的网页API接口文档
  • 目前提供了bukkit端的接入插件
  • SpringBoot -- 企业都在用的框架以保证稳定性

画饼

  • 更多支付方式
  • 直接在网页购买游戏内商品
  • ...

其他

  • 本项目使用了best-pay-sdk支付但经过我个人修复bug与修改。
  • 感谢 Springboot、Knife4j、Mybtais、Mybatis plus、thymeleaf
  • 等项目提供了便利的工具让程序员专注于 业 务 代码

截图

bukkit端插件接入的游戏内支付 https://www.mcbbs.net/thread-1425075-1-1.html



本人不会前端,以下是改自模板



安装&配置

SakuraPurchaseServer

这是支付服务端,负责向wechat、支付宝发起支付请求,处理数据

前往 Release

下载 SakuraPurchaseServer-x.x.x-xx.jar

-full 后缀的是全包; -thin 的是瘦身包,启动时会下载依赖

选择一个即可

如果要使用前端界面则下载 web.zip 文件放到同目录下

并放到服务器的任意文件夹中,创建并配置好文件 application.yml

  1. server:
  2.   # 端口号
  3.   port: 80
  4. spring:
  5.   thymeleaf:
  6.     cache: true
  7.     prefix: file:templates/ #如果使用前端管理界面则位前端资源的路径
  8.   profiles:
  9.     active: dev
  10.   security:
  11.     user:
  12.       #配置 账户给bukkit端使用
  13.       name: test   # 用户名
  14.       password: 123456  # 密码
  15.       roles: # 角色
  16.         - API
  17.         - ADMIN
  18.   # 数据库设置
  19.   datasource:
  20.     driver-class-name: com.mysql.cj.jdbc.Driver
  21.     url: jdbc:mysql://localhost:3306/sakura_purchase?useSSL=false&allowPublicKeyRetrieval=true
  22.     username: username
  23.     password: password
  24.   # 初始化数据库,如果你不清楚这是什么请不要动
  25.   sql:
  26.     init:
  27.       mode: always
  28.       schema-locations: classpath:db/schema.sql
  29.   mvc:
  30.     static-path-pattern: /static/**

  31. # 支付宝支付,自行注册申请 https://certifyweb.alipay.com/certify/reg/guide#/
  32. alipay:
  33.   # 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号,在沙箱应用中获取
  34.   appId:
  35.   # 商户私钥,您的PKCS8格式RSA2私钥,通过开发助手生成的应用私钥
  36.   privateKey:
  37.   # 支付宝公钥,在沙箱应用获取,通过应用公钥生成支付宝公钥
  38.   aliPayPublicKey:
  39.   # 服务器异步回调接口,不填也没事 需https://格式的完整路径
  40.   notifyUrl: http://localhost:80/api/pay/notify
  41.   # 签名方式
  42.   sandbox: false

  43. # ** 支付设置 APIv2,自行去申请 https://pay.weixin.qq.com/index.php/apply/applyment_home/guide_normal
  44. wechat:
  45.   appId:
  46.   mchId:
  47.   mchKey:
  48.   # 证书pkcs12格式 apiclient_cert.p12
  49.   keyPath: 'C:\Users\Iseason2000\Desktop\apiclient_cert.p12'
  50.   # 服务器异步回调接口,不填也没事 http://格式的完整路径
  51.   notifyUrl: http://localhost:80/api/pay/notify

  52. #日志管理
  53. logging:
  54.   file:
  55.     path: ./logs
  56.   level:
  57.     root: info
  58.     okhttp3: warn
  59.     com.lly835.bestpay: warn
  60.   logback:
  61.     rollingpolicy:
  62.       max-history: 7
  63.       max-file-size: 10MB
  64.       clean-history-on-start: true
复制代码

接口API文档

API文档由 Knife4j 生成
请运行服务端然后输入: 服务端地址/doc.html



http://localhost:80/doc.html




启动服务端

创建启动脚本 Windows start.bat

  1. java -Dthin.root=. -jar SakuraPurchaseServer-1.x.x.jar
  2. pause
复制代码

Linux start.sh

  1. java -Dthin.root=. -jar SakuraPurchaseServer-1.x.x.jar
  2. pause
复制代码

其中 -Dthin.root 参数表示依赖存放位置,设置为.表示当前路径下 其他参数见此

最后运行 start.sh / start.bat 即可,如果是thin版第一次启动需要下载依赖




项目部分代码来自第三方库,但主要接口逻辑均为原创,MIT协议




倾奥
本帖最后由 倾奥 于 2023-2-17 13:49 编辑

Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_351]
        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) ~[na:1.8.0_351]
        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) ~[na:1.8.0_351]
        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.8.0_351]
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_351]
        at java.net.PlainSocketImpl.connect(Unknown Source) ~[na:1.8.0_351]
        at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.8.0_351]
        at java.net.Socket.connect(Unknown Source) ~[na:1.8.0_351]
        at com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:153) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
        at com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63) ~[mysql-connector-java-8.0.30.jar!/:8.0.30]
        ... 51 common frames omitted
如何解决emm

结冰的离季
倾奥 发表于 2023-2-17 13:44
Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.DualStackPlainSocketI ...

数据库配置不对

是控控吗
本帖最后由 是控控吗 于 2023-2-24 14:03 编辑

发错地方了,详见
https://www.mcbbs.net/forum.php? ... 75&pid=28134020